You are not logged in.
I'm new to Awesome myself: would I need to insert that into the functions of the widgets, or can the line just follow the initialization text?
I too was previously unaware of this, so I just tried it out.
That code will work anywhere. Well so long as your widgets have already been defined. You could put it just before the wibox loop, in the loop, after it, whatever.
Offline
ANOKNUSA wrote:I'm new to Awesome myself: would I need to insert that into the functions of the widgets, or can the line just follow the initialization text?
I too was previously unaware of this, so I just tried it out.
That code will work anywhere. Well so long as your widgets have already been defined. You could put it just before the wibox loop, in the loop, after it, whatever.
Thanks, Guff. Kudos on the naughty meters for volume and brightness, too; once I have status widgets figured out, I'm gonna try to get naughty set up properly (right now, only Transmission gives me notifications when a transfer has finished; probably some dbus issue I'm overlooking or something).
Offline
Offline
Feeling a little brighter than usual.
I've seen all your setups and i have to ask, where do you find such awesome wallpapers?
Offline
Him wrote:Feeling a little brighter than usual.
I've seen all your setups and i have to ask, where do you find such awesome wallpapers?
Hours, upon hours, upon hours, at wallbase.
A world without what makes us, us. One without you or me.
A world with no differences, this is the world I see.
Offline
I finally took some time to polish the awesome theme, colorize some icons for widgets/bars and match the gtk theme.
Last edited by demian (2011-06-22 13:04:39)
no place like /home
github
Offline
Ah, nifty. So the notifications worked alright?
And in case you haven't seen, I did update the code a bit. Rather than having a function for each notification, I consolidated it into a more generic function that takes a percentage, a function that chooses the icon to use, and a notification handle (so that naughty knows which notification to replace) and returns the notification.
Not a big deal, but it should be easier to add other types of fancy notifications if one so desires.
Offline
@demian: nice
Offline
Feeling a little brighter than usual.
can you share the icons for battery and tell me how change them the color?
Offline
Offline
@Him - Would you mind sharing your rc.lua? Also you need to change/update your "Website" link.
Last edited by anonymous_user (2011-06-26 00:50:30)
Offline
Offline
@anon
I know about the website link. I need to renew my domain.
-- Standard awesome library
require("awful")
require("awful.autofocus")
require("awful.rules")
-- Theme handling library
require("beautiful")
-- Notification library
require("naughty")
--Wiget Library
require("vicious")
-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
beautiful.init("/home/him/.config/awesome/default/theme.lua")
-- This is used later as the default terminal and editor to run.
terminal = "urxvt"
editor = os.getenv("EDITOR") or "nano"
editor_cmd = terminal .. " -e " .. editor
-- Default modkey.
-- Usually, Mod4 is the key with a logo between Control and Alt.
-- If you do not like this or do not have such a key,
-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
-- However, you can use another modifier like Mod1, but it may interact with others.
modkey = "Mod4"
-- Table of layouts to cover with awful.layout.inc, order matters.
layouts =
{
awful.layout.suit.tile,
awful.layout.suit.tile.left,
awful.layout.suit.tile.bottom,
awful.layout.suit.tile.top,
awful.layout.suit.fair,
awful.layout.suit.fair.horizontal,
awful.layout.suit.magnifier,
awful.layout.suit.floating
}
-- }}}
-- {{{ Tags
-- Define a tag table which will hold all screen tags.
tags = {
names = { "⌘", "♐", "⌥", "ℵ"},
layout = { layouts[1], layouts[1], layouts[1], layouts[1]
}}
for s = 1, screen.count() do
tags[s] = awful.tag(tags.names, s, tags.layout)
end
-- }}}
-- {{{ Menu
-- Create a laucher widget and a main menu
myawesomemenu = {
{ "manual", terminal .. " -e man awesome" },
{ "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
{ "restart", awesome.restart },
{ "quit", awesome.quit }
}
mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
{ "open terminal", terminal }
}
})
mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
menu = mymainmenu })
-- }}}
-- Separators
spacer = widget({ type = "textbox" })
seperator = widget({ type = "textbox" })
dash = widget({ type = "textbox" })
spacer.text = " "
seperator.text = "|"
dash.text = "-"
-- {{{ Wibox
--Create a Volume Widget
volicon = widget({ type = "imagebox" })
volicon.image = image("/home/him/images/icons/awesome/vol.png")
--Initialize widget
volbar = awful.widget.progressbar()
--Progressbar settings
volbar:set_width(8)
volbar:set_height(18)
volbar:set_vertical(true)
volbar:set_ticks(true)
volbar:set_ticks_gap(1)
volbar:set_ticks_size(2)
volbar:set_background_color("#000000")
volbar:set_border_color("#000000")
volbar:set_color("#D9D9D9")
volbar:set_gradient_colors({ "#D9D9D9", "#D9D9D9", "#D9D9D9" })
--Register widget
vicious.register(volbar, vicious.widgets.volume, "$1", 2, "Master")
-- MPD Widget
mpdicon = widget({ type = "imagebox" })
mpdicon.image = image("/home/him/images/icons/awesome/mpd.png")
-- Initialize widget
mpdwidget = widget({ type = "textbox" })
-- Register Widget
vicious.register(mpdwidget, vicious.widgets.mpd, "<span color='#039FC7'> ♪</span> ${Title}, ${Artist}", 13)
--vicious.register(mpdwidget, vicious.widgets.mpd, " ♪ ${Title}, ${Artist}", 13)
-- Wifiwidget
wifiwidget = widget({ type = "textbox" })
-- Register Widget
vicious.register(wifiwidget, vicious.widgets.wifi, "<span color='#039FC7'>~</span> ${link}%", 5, "eth1")
--vicious.register(wifiwidget, vicious.widgets.wifi, "~ ${link}%", 5, "eth1")
--Seperator
spicon = widget({ type = "imagebox" })
spicon.image = image("/home/him/images/icons/awesome/separator.png")
-- Create a netwidget (usage)
dnicon = widget({ type = "imagebox" })
upicon = widget({ type = "imagebox" })
dnicon.image = image("/home/him/images/icons/awesome/down.png")
upicon.image = image("/home/him/images/icons/awesome/up.png")
-- Initialize widget
netwidget = widget({ type = "textbox" })
-- Register widget
vicious.register(netwidget, vicious.widgets.net, "${eth1 down_kb} / ${eth1 up_kb}", 1)
-- Create a battery widget
baticon = widget({ type = "imagebox" })
baticon.image = image("/home/him/images/icons/awesome/bat.png")
--Initialize widget
batwidget = widget({ type = "textbox" })
--Register widget
vicious.register(batwidget, vicious.widgets.bat, "$1$2", 32, "BAT1")
--Create a cpuwidget
cpuicon = widget({ type = "imagebox" })
cpuicon.image = image("/home/him/images/icons/awesome/cpuinfo.png")
--Initialize widget
cpuwidget = widget({ type = "textbox" })
--Register widget
vicious.register(cpuwidget, vicious.widgets.cpu, "$1%", 2)
-- Create a textclock widget
mytextclock = awful.widget.textclock({ align = "right" })
-- Create a systray
mysystray = widget({ type = "systray" })
-- Create a wibox for each screen and add it
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = awful.util.table.join(
awful.button({ }, 1, awful.tag.viewonly),
awful.button({ modkey }, 1, awful.client.movetotag),
awful.button({ }, 3, awful.tag.viewtoggle),
awful.button({ modkey }, 3, awful.client.toggletag),
awful.button({ }, 4, awful.tag.viewnext),
awful.button({ }, 5, awful.tag.viewprev)
)
mytasklist = {}
mytasklist.buttons = awful.util.table.join(
awful.button({ }, 1, function (c)
if not c:isvisible() then
awful.tag.viewonly(c:tags()[1])
end
client.focus = c
c:raise()
end),
awful.button({ }, 3, function ()
if instance then
instance:hide()
instance = nil
else
instance = awful.menu.clients({ width=250 })
end
end),
awful.button({ }, 4, function ()
awful.client.focus.byidx(1)
if client.focus then client.focus:raise() end
end),
awful.button({ }, 5, function ()
awful.client.focus.byidx(-1)
if client.focus then client.focus:raise() end
end))
for s = 1, screen.count() do
-- Set a screen margin for borders
awful.screen.padding( screen[s], {top = 0} )
-- Create a promptbox for each screen
mypromptbox[s] = awful.widget.prompt({ layout = awful.widget.layout.horizontal.leftright, prompt = "" })
-- Create an imagebox widget which will contains an icon indicating which layout we're using.
-- We need one layoutbox per screen.
mylayoutbox[s] = awful.widget.layoutbox(s)
mylayoutbox[s]:buttons(awful.util.table.join(
awful.button({ }, 1, function () awful.layout.inc(layouts, 1) end),
awful.button({ }, 3, function () awful.layout.inc(layouts, -1) end),
awful.button({ }, 4, function () awful.layout.inc(layouts, 1) end),
awful.button({ }, 5, function () awful.layout.inc(layouts, -1) end)))
-- Create a taglist widget
mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.label.all, mytaglist.buttons)
-- Create a tasklist widget
mytasklist[s] = awful.widget.tasklist(function(c)
return awful.widget.tasklist.label.currenttags(c, s)
end, mytasklist.buttons)
-- Create the wibox
mywibox[s] = awful.wibox({ position = "top", screen = s, border_width = 0, border_color = "#FFFFFF" })
-- Add widgets to the wibox - order matters
mywibox[s].widgets = {
{
mytaglist[s], spacer, mpdwidget, spacer,
-- mytaglist[s], spacer,
mypromptbox[s],
layout = awful.widget.layout.horizontal.leftright
},
s == 1 and mysystray or nil, mytextclock,
seperator, spacer, cpuwidget, spacer, cpuicon, spacer, seperator, upicon, netwidget, dnicon, seperator, spacer, wifiwidget, spacer, seperator, spacer,
batwidget, baticon,
layout = awful.widget.layout.horizontal.rightleft
}
end
-- }}}
--mylayoutbox[s],
-- {{{ Mouse bindings
root.buttons(awful.util.table.join(
awful.button({ }, 3, function () mymainmenu:toggle() end),
awful.button({ }, 4, awful.tag.viewnext),
awful.button({ }, 5, awful.tag.viewprev)
))
-- }}}
-- {{{ Key bindings
globalkeys = awful.util.table.join(
awful.key({ modkey, }, "Left", awful.tag.viewprev ),
awful.key({ modkey, }, "Right", awful.tag.viewnext ),
awful.key({ modkey, }, "Escape", awful.tag.history.restore),
awful.key({ modkey, }, "j",
function ()
awful.client.focus.byidx( 1)
if client.focus then client.focus:raise() end
end),
awful.key({ modkey, }, "k",
function ()
awful.client.focus.byidx(-1)
if client.focus then client.focus:raise() end
end),
awful.key({ modkey, }, "w", function () mymainmenu:show({keygrabber=true}) end),
--Volume manipulation
awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer set Master 5+") end),
awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn("amixer set Master 5-") end),
-- Layout manipulation
awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end),
awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end),
awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end),
awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end),
awful.key({ modkey, }, "u", awful.client.urgent.jumpto),
awful.key({ modkey, }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end),
-- Standard program
awful.key({ modkey, }, "Return", function () awful.util.spawn(terminal) end),
awful.key({ modkey, "Control" }, "r", awesome.restart),
awful.key({ modkey, "Shift" }, "q", awesome.quit),
awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end),
awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end),
awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1) end),
awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end),
awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1) end),
awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end),
awful.key({ modkey, }, "space", function () awful.layout.inc(layouts, 1) end),
awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end),
-- Prompt
awful.key({ modkey }, "r", function () mypromptbox[mouse.screen]:run() end),
awful.key({ modkey }, "x",
function ()
awful.prompt.run({ prompt = "Run Lua code: " },
mypromptbox[mouse.screen].widget,
awful.util.eval, nil,
awful.util.getdir("cache") .. "/history_eval")
end)
)
clientkeys = awful.util.table.join(
awful.key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen end),
awful.key({ modkey, "Shift" }, "c", function (c) c:kill() end),
awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle ),
awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end),
awful.key({ modkey, }, "o", awful.client.movetoscreen ),
awful.key({ modkey, "Shift" }, "r", function (c) c:redraw() end),
awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end),
awful.key({ modkey, }, "n", function (c) c.minimized = not c.minimized end),
awful.key({ modkey, }, "m",
function (c)
c.maximized_horizontal = not c.maximized_horizontal
c.maximized_vertical = not c.maximized_vertical
end)
)
-- Compute the maximum number of digit we need, limited to 9
keynumber = 0
for s = 1, screen.count() do
keynumber = math.min(9, math.max(#tags[s], keynumber));
end
-- Bind all key numbers to tags.
-- Be careful: we use keycodes to make it works on any keyboard layout.
-- This should map on the top row of your keyboard, usually 1 to 9.
for i = 1, keynumber do
globalkeys = awful.util.table.join(globalkeys,
awful.key({ modkey }, "#" .. i + 9,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end),
awful.key({ modkey, "Control" }, "#" .. i + 9,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewtoggle(tags[screen][i])
end
end),
awful.key({ modkey, "Shift" }, "#" .. i + 9,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end),
awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.toggletag(tags[client.focus.screen][i])
end
end))
end
clientbuttons = awful.util.table.join(
awful.button({ }, 1, function (c) client.focus = c; c:raise() end),
awful.button({ modkey }, 1, awful.mouse.client.move),
awful.button({ modkey }, 3, awful.mouse.client.resize))
-- Set keys
root.keys(globalkeys)
-- }}}
-- {{{ Rules
awful.rules.rules = {
-- All clients will match this rule.
{ rule = { },
properties = { border_width = beautiful.border_width,
border_color = beautiful.border_normal,
size_hints_honor = false,
focus = true,
keys = clientkeys,
buttons = clientbuttons } },
{ rule = { class = "MPlayer" },
properties = { floating = true } },
{ rule = { class = "pinentry" },
properties = { floating = true } },
{ rule = { class = "gimp" },
properties = { floating = true } },
-- Set Firefox to always map on tags number 2 of screen 1.
-- { rule = { class = "Firefox" },
-- properties = { tag = tags[1][2] } },
}
-- }}}
-- {{{ Signals
-- Signal function to execute when a new client appears.
client.add_signal("manage", function (c, startup)
-- Add a titlebar
-- awful.titlebar.add(c, { modkey = modkey })
-- Enable sloppy focus
c:add_signal("mouse::enter", function(c)
if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
and awful.client.focus.filter(c) then
client.focus = c
end
end)
if not startup then
-- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master.
-- awful.client.setslave(c)
-- Put windows in a smart way, only if they does not set an initial position.
if not c.size_hints.user_position and not c.size_hints.program_position then
awful.placement.no_overlap(c)
awful.placement.no_offscreen(c)
end
end
end)
client.add_signal("focus", function(c) c.border_color = beautiful.border_focus end)
client.add_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
-- {{{ Tag signal handler - selection
-- - ASCII tags 1 [2] 3 4...
-- - start with tag 1 named [1] in tag setup
--for s = 1, screen.count() do
-- for t = 1, #tags[s] do
-- tags[s][t]:add_signal("property::selected", function ()
-- if tags[s][t].selected then
-- tags[s][t].name = "[" .. tags[s][t].name .. "]"
-- else
-- tags[s][t].name = tags[s][t].name:gsub("[%[%]]", "")
-- end
-- end)
-- end
--end
-- }}}
A world without what makes us, us. One without you or me.
A world with no differences, this is the world I see.
Offline
One more thing: can you share the icons you use for widgets? Or are they available somewhere?
Offline
One more thing: can you share the icons you use for widgets?
Of course. You can find them here.
A world without what makes us, us. One without you or me.
A world with no differences, this is the world I see.
Offline
Finally got my theme to look the way I wanted:
http://dl.dropbox.com/u/21802312/DESKTOPS/ellieawesome/Screenshot00-thumb.png http://dl.dropbox.com/u/21802312/DESKTOPS/ellieawesome/Screenshot01-thumb.pngBut then I got bored of the grey, so I redid it:
http://dl.dropbox.com/u/21802312/DESKTOPS/awesomeferris/Screenshot00-thumb.png http://dl.dropbox.com/u/21802312/DESKTOPS/awesomeferris/Screenshot01-thumb.png
very nice!
how did you make this monochrome systray look?
Offline
I've just switched to Awesome (from KDE, having also tried Fluxbox and DWM) in the last week.
Running: vim, emacs, vicious widgets, dropbox, firefox, urxvt.
Offline
@ibrunton
can you share your wallpaper? TIA
Sure! Right here.
Offline
Offline
I dig the colors in this one; yet another fine setup.
Offline