You are not logged in.
Its bmpanel with my own theme, can share it if anyone is interessted.
Here I am. Could you share it?
Offline
@everyone running awesome3 mind sharing some rc.lua files? I can't really find a lot of configs that really work out-of-the-box and I don't know sufficient lua to start writing one myself...
rc.lua:
-- Standard awesome library
require("awful")
-- Theme handling library
require("beautiful")
-- Notification library
require("naughty")
-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
-- The default is a dark theme
-- theme_path = "/usr/share/awesome/themes/default/theme"
-- Uncommment this for a lighter theme
-- theme_path = "/usr/share/awesome/themes/sky/theme"
-- micha theme
theme_path = "/home/micha/.config/awesome/themes/default"
-- Actually load theme
beautiful.init(theme_path)
-- This is used later as the default terminal and editor to run.
-- terminal = "xterm"
-- editor = os.getenv("EDITOR") or "nano"
-- editor_cmd = terminal .. " -e " .. editor
terminal = "urxvt -fg white -sh 60 +sb"
editor = os.getenv("EDITOR") or "geany"
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.max,
awful.layout.suit.max.fullscreen,
awful.layout.suit.magnifier,
awful.layout.suit.floating
}
-- Table of clients that should be set floating. The index may be either
-- the application class or instance. The instance is useful when running
-- a console app in a terminal like (Music on Console)
-- xterm -name mocp -e mocp
floatapps =
{
-- by class
["MPlayer"] = true,
["pinentry"] = true,
["gimp"] = true,
["gajim"] = true,
["pidgin"] = true,
["Qt-subapplication"] = true,
["vlc"] = true,
["thunderbird"] = false,
["firefox"] = false,
-- by instance
["mocp"] = true,
["Qt-subapplication"] = true,
["gajim"] = true,
["gimp"] = true,
["vlc"] = true,
["thunderbird"] = false,
["firefox"] = false,
["pidgin"] = true
}
-- Applications to be moved to a pre-defined tag by class or instance.
-- Use the screen and tags indices.
apptags =
{
-- ["Firefox"] = { screen = 1, tag = 2 },
-- ["mocp"] = { screen = 2, tag = 4 },
}
-- Define if we want to use titlebar on all applications.
use_titlebar = false
-- }}}
-- {{{ Tags
-- Define tags table.
tags = {}
for s = 1, screen.count() do
-- Each screen has its own tag table.
tags[s] = {}
-- Create 6 tags per screen.
for tagnumber = 1, 6 do
tags[s][tagnumber] = tag(tagnumber)
-- Add tags to screen one by one
tags[s][tagnumber].screen = s
awful.layout.set(layouts[1], tags[s][tagnumber])
end
-- I'm sure you want to see at least one tag.
tags[s][1].selected = true
end
-- }}}
-- {{{ Wibox
-- Create a textbox widget
mytextbox = widget({ type = "textbox", align = "right" })
-- Set the default text in textbox
mytextbox.text = "<b><small> " .. AWESOME_RELEASE .. " </small></b>"
-- 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.new({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
{ "open terminal", terminal }
}
})
mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
menu = mymainmenu })
-- Create a systray
mysystray = widget({ type = "systray", align = "right" })
-- Create a wibox for each screen and add it
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = { button({ }, 1, awful.tag.viewonly),
button({ modkey }, 1, awful.client.movetotag),
button({ }, 3, function (tag) tag.selected = not tag.selected end),
button({ modkey }, 3, awful.client.toggletag),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev) }
mytasklist = {}
mytasklist.buttons = { button({ }, 1, function (c)
if not c:isvisible() then
awful.tag.viewonly(c:tags()[1])
end
client.focus = c
c:raise()
end),
button({ }, 3, function () if instance then instance:hide() end instance = awful.menu.clients({ width=250 }) end),
button({ }, 4, function ()
awful.client.focus.byidx(1)
if client.focus then client.focus:raise() end
end),
button({ }, 5, function ()
awful.client.focus.byidx(-1)
if client.focus then client.focus:raise() end
end) }
for s = 1, screen.count() do
-- Create a promptbox for each screen
mypromptbox[s] = widget({ type = "textbox", align = "left" })
-- Create an imagebox widget which will contains an icon indicating which layout we're using.
-- We need one layoutbox per screen.
mylayoutbox[s] = widget({ type = "imagebox", align = "right" })
mylayoutbox[s]:buttons({ button({ }, 1, function () awful.layout.inc(layouts, 1) end),
button({ }, 3, function () awful.layout.inc(layouts, -1) end),
button({ }, 4, function () awful.layout.inc(layouts, 1) end),
button({ }, 5, function () awful.layout.inc(layouts, -1) end) })
-- Create a taglist widget
mytaglist[s] = awful.widget.taglist.new(s, awful.widget.taglist.label.all, mytaglist.buttons)
-- Create a tasklist widget
mytasklist[s] = awful.widget.tasklist.new(function(c)
return awful.widget.tasklist.label.currenttags(c, s)
end, mytasklist.buttons)
-- Create the wibox
mywibox[s] = wibox({ position = "top", fg = beautiful.fg_normal, bg = beautiful.bg_normal })
-- Add widgets to the wibox - order matters
mywibox[s].widgets = { mylauncher,
mytaglist[s],
mytasklist[s],
mypromptbox[s],
mytextbox,
mylayoutbox[s],
s == 1 and mysystray or nil }
mywibox[s].screen = s
end
-- }}}
-- {{{ Mouse bindings
root.buttons({
button({ }, 3, function () mymainmenu:toggle() end),
button({ }, 1, function () awful.util.spawn(terminal) end),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev)
})
-- }}}
-- {{{ Key bindings
globalkeys =
{
key({ modkey, }, "Left", awful.tag.viewprev ),
key({ modkey, }, "Right", awful.tag.viewnext ),
key({ modkey, }, "Escape", awful.tag.history.restore),
key({ modkey, }, "j",
function ()
awful.client.focus.byidx( 1)
if client.focus then client.focus:raise() end
end),
key({ modkey, }, "k",
function ()
awful.client.focus.byidx(-1)
if client.focus then client.focus:raise() end
end),
-- Layout manipulation
key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end),
key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end),
key({ modkey, "Control" }, "j", function () awful.screen.focus( 1) end),
key({ modkey, "Control" }, "k", function () awful.screen.focus(-1) end),
key({ modkey, }, "u", awful.client.urgent.jumpto),
key({ modkey, }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end),
-- Standard program
key({ modkey, "Shift", "Control" }, "n", function () awful.util.spawn("sudo reboot") end),
key({ modkey, "Shift", "Control" }, "q", function () awful.util.spawn("sudo shutdown -h now") end),
key({ modkey, "Shift", "Control" }, "F10", function () awful.util.spawn("sudo pm-suspend") end),
key({ modkey, }, "Return", function () awful.util.spawn(terminal) end),
key({ modkey, }, "g", function () awful.util.spawn("gmrun") end),
key({ modkey, }, "F2", function () awful.util.spawn("firefox") end),
key({ modkey, }, "F3", function () awful.util.spawn("thunderbird") end),
key({ modkey, }, "F4", function () awful.util.spawn("thunar") end),
key({ modkey, }, "F5", function () awful.util.spawn("geany") end),
key({ modkey, }, "F6", function () awful.util.spawn("urxvt -e mocp") end),
key({ modkey, }, "F7", function () awful.util.spawn("urxvt -e mc") end),
key({ modkey, }, "F9", function () awful.util.spawn("dmenfm") end),
key({ modkey, "Control" }, "r", awesome.restart),
key({ modkey, "Shift" }, "q", awesome.quit),
key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end),
key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end),
key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1) end),
key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end),
key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1) end),
key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end),
key({ modkey, }, "space", function () awful.layout.inc(layouts, 1) end),
key({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end),
-- Load revelation
-- require("revelation")
-- Add mod + F8 key binding to start revelation
-- key({ modkey }, "F8", revelation.revelation):add()
-- Prompt
key({ modkey }, "F1",
function ()
awful.prompt.run({ prompt = "Run: " },
mypromptbox[mouse.screen],
awful.util.spawn, awful.completion.bash,
awful.util.getdir("cache") .. "/history")
end),
key({ modkey }, "F11",
function ()
awful.prompt.run({ prompt = "Run Lua code: " },
mypromptbox[mouse.screen],
awful.util.eval, awful.prompt.bash,
awful.util.getdir("cache") .. "/history_eval")
end),
}
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
clientkeys =
{
key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen end),
key({ modkey, "Shift" }, "c", function (c) c:kill() end),
key({ modkey, "Control" }, "space", awful.client.floating.toggle ),
key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end),
key({ modkey, }, "o", awful.client.movetoscreen ),
key({ modkey, "Shift" }, "r", function (c) c:redraw() end),
key({ modkey }, "t", awful.client.togglemarked),
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
for i = 1, keynumber do
table.insert(globalkeys,
key({ modkey }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end))
table.insert(globalkeys,
key({ modkey, "Control" }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
tags[screen][i].selected = not tags[screen][i].selected
end
end))
table.insert(globalkeys,
key({ modkey, "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end))
table.insert(globalkeys,
key({ modkey, "Control", "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.toggletag(tags[client.focus.screen][i])
end
end))
end
for i = 1, keynumber do
table.insert(globalkeys, key({ modkey, "Shift" }, "F" .. i,
function ()
local screen = mouse.screen
if tags[screen][i] then
for k, c in pairs(awful.client.getmarked()) do
awful.client.movetotag(tags[screen][i], c)
end
end
end))
end
-- Set keys
root.keys(globalkeys)
-- }}}
-- {{{ Hooks
-- Hook function to execute when focusing a client.
awful.hooks.focus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_focus
end
end)
-- Hook function to execute when unfocusing a client.
awful.hooks.unfocus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_normal
end
end)
-- Hook function to execute when marking a client
awful.hooks.marked.register(function (c)
c.border_color = beautiful.border_marked
end)
-- Hook function to execute when unmarking a client.
awful.hooks.unmarked.register(function (c)
c.border_color = beautiful.border_focus
end)
-- Hook function to execute when the mouse enters a client.
awful.hooks.mouse_enter.register(function (c)
-- Sloppy focus, but disabled for magnifier layout
if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
and awful.client.focus.filter(c) then
client.focus = c
end
end)
-- Hook function to execute when a new client appears.
awful.hooks.manage.register(function (c, startup)
-- If we are not managing this application at startup,
-- move it to the screen where the mouse is.
-- We only do it for filtered windows (i.e. no dock, etc).
if not startup and awful.client.focus.filter(c) then
c.screen = mouse.screen
end
if use_titlebar then
-- Add a titlebar
awful.titlebar.add(c, { modkey = modkey })
end
-- Add mouse bindings
c:buttons({
button({ }, 1, function (c) client.focus = c; c:raise() end),
button({ modkey }, 1, awful.mouse.client.move),
button({ modkey }, 3, awful.mouse.client.resize)
})
-- New client may not receive focus
-- if they're not focusable, so set border anyway.
c.border_width = beautiful.border_width
c.border_color = beautiful.border_normal
-- Check if the application should be floating.
local cls = c.class
local inst = c.instance
if floatapps[cls] then
awful.client.floating.set(c, floatapps[cls])
elseif floatapps[inst] then
awful.client.floating.set(c, floatapps[inst])
end
-- Check application->screen/tag mappings.
local target
if apptags[cls] then
target = apptags[cls]
elseif apptags[inst] then
target = apptags[inst]
end
if target then
c.screen = target.screen
awful.client.movetotag(tags[target.screen][target.tag], c)
end
-- Do this after tag mapping, so you don't see it on the wrong tag for a split second.
client.focus = c
-- Set key bindings
c:keys(clientkeys)
-- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master.
-- awful.client.setslave(c)
-- Honor size hints: if you want to drop the gaps between windows, set this to false.
-- c.size_hints_honor = false
end)
-- Hook function to execute when arranging the screen.
-- (tag switch, new client, etc)
awful.hooks.arrange.register(function (screen)
local layout = awful.layout.getname(awful.layout.get(screen))
if layout and beautiful["layout_" ..layout] then
mylayoutbox[screen].image = image(beautiful["layout_" .. layout])
else
mylayoutbox[screen].image = nil
end
-- Give focus to the latest client in history if no window has focus
-- or if the current window is a desktop or a dock one.
if not client.focus then
local c = awful.client.focus.history.get(screen, 0)
if c then client.focus = c end
end
end)
-- Hook called every minute
awful.hooks.timer.register(60, function ()
mytextbox.text = os.date(" %a %b %d, %H:%M ")
end)
-- }}}
theme (it is still called default but is modified):
---------------------------
-- Default awesome theme --
---------------------------
font = Zekton 8
bg_normal = #222222
bg_focus = #696969
bg_urgent = #ff0000
fg_normal = #aaaaaa
fg_focus = #0096d1
fg_urgent = #ffffff
border_width = 1
border_normal = #000000
border_focus = #0096d1
border_marked = #0096d1
# There are another variables sets
# overriding the default one when
# defined, the sets are:
# [taglist|tasklist]_[bg|fg]_[focus|urgent]
# titlebar_[bg|fg]_[normal|focus]
# Example:
#taglist_bg_focus = #ff0000
# Display the taglist squares
taglist_squares_sel = /usr/share/awesome/themes/default/taglist/squarefw.png
taglist_squares_unsel = /usr/share/awesome/themes/default/taglist/squarew.png
tasklist_floating_icon = /usr/share/awesome/themes/default/tasklist/floatingw.png
# Variables set for theming menu
# menu_[bg|fg]_[normal|focus]
# menu_[border_color|border_width]
menu_submenu_icon = /usr/share/awesome/themes/default/submenu.png
menu_height = 15
menu_width = 100
# You can add as many variables as
# you wish and access them by using
# beautiful.variable in your rc.lua
#bg_widget = #cc0000
# Define the image to load
titlebar_close_button_normal = /usr/share/awesome/themes/default/titlebar/close.png
titlebar_close_button_focus = /usr/share/awesome/themes/default/titlebar/closer.png
# You can use your own command to set your wallpaper
#wallpaper_cmd = awsetbg /usr/share/awesome/themes/default/background.png
wallpaper_cmd = awsetbg /home/micha/system/wallpaper/the_darkness/td_1680x1050.png
#wallpaper_cmd = awsetbg /home/micha/system/wallpaper/darkwood/darkwood.jpg
#wallpaper_cmd = awsetbg /home/micha/system/wallpaper/nogods1680.png
# You can use your own layout icons like this:
layout_dwindle = /usr/share/awesome/themes/default/layouts/dwindlew.png
layout_fairh = /usr/share/awesome/themes/default/layouts/fairhw.png
layout_fairv = /usr/share/awesome/themes/default/layouts/fairvw.png
layout_floating = /usr/share/awesome/themes/default/layouts/floatingw.png
layout_magnifier = /usr/share/awesome/themes/default/layouts/magnifierw.png
layout_max = /usr/share/awesome/themes/default/layouts/maxw.png
layout_spiral = /usr/share/awesome/themes/default/layouts/spiralw.png
layout_tilebottom = /usr/share/awesome/themes/default/layouts/tilebottomw.png
layout_tileleft = /usr/share/awesome/themes/default/layouts/tileleftw.png
layout_tile = /usr/share/awesome/themes/default/layouts/tilew.png
layout_tiletop = /usr/share/awesome/themes/default/layouts/tiletopw.png
awesome_icon = /usr/share/awesome/icons/awesome16.png
as you can see it is almost standard but i like it this way.
i do not need any fancy widgets for cpu-usage or similar stuff.
here is an "old" screenshot (with one 1680x1050 and one 1280x1024 monitor in dualview):
Offline
Gimp'd this http://www.flickr.com/photos/ravanderende/3466665218/ into a decent wall for dwm..
Offline
@everyone running awesome3 mind sharing some rc.lua files? I can't really find a lot of configs that really work out-of-the-box and I don't know sufficient lua to start writing one myself...
In my personal experience, it's almost easier to start from awesome's standard config and build it up to what you want. There's a lot of good notes in the comments, and when in doubt there's always the wiki.
awesome 3.3pre20090421-1
-- Standard awesome library
require("awful")
-- Theme handling library
require("beautiful")
-- Notification library
require("naughty")
-- Wicked for widgets
require("wicked")
-- Volume widget
function volume (mode, widget)
local cardid = 0
local channel = "PCM"
if mode == "update" then
local status = io.popen("amixer -c " .. cardid .. " -- sget " .. channel):read("*all")
local volume = tonumber(string.match(status, "(%d?%d?%d)%%"))
status = string.match(status, "%[(o[^%]]*)%]")
local color = "#FF0000"
if string.find(status, "on", 1, true) then
color = "#00FF00"
end
status = ""
for i = 1, math.floor(volume / 10) do
status = status .. "*"
end
for i = math.floor(volume / 10) + 1, 10 do
status = status .. "."
end
status = "[Vol: " ..status .. "]"
widget.text = "" .. status .. "|"
elseif mode == "up" then
os.execute("amixer -q -c " .. cardid .. " sset " .. channel .. " 5%+")
volume("update", widget)
elseif mode == "down" then
os.execute("amixer -q -c " .. cardid .. " sset " .. channel .. " 5%-")
volume("update", widget)
else
os.execute("amixer -c " .. cardid .. " sset " .. channel .. " toggle")
volume("update", widget)
end
end
awful.hooks.timer.register(10, function () volume("update", tb_volume) end)
-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
-- The default is a dark theme
-- theme_path = "/usr/share/awesome/themes/default/theme"
-- Uncommment this for a lighter theme
-- theme_path = "/usr/share/awesome/themes/sky/theme"
theme_path = "/home/phill/.awesome/themes/default/theme"
-- Actually load theme
beautiful.init(theme_path)
-- This is used later as the default terminal and editor to run.
terminal = "urxvtc"
editor = os.getenv("EDITOR") or "vim"
editor_cmd = terminal .. " -e " .. editor
browser = "firefox"
manager = "pcmanfm"
music = terminal .. " -name mocp -e mocp"
wifi = terminal .. " -e sudo wifi-select eth0"
menu = "dmenu_run"
-- 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.max,
-- awful.layout.suit.max.fullscreen,
-- awful.layout.suit.magnifier,
awful.layout.suit.floating
}
-- Table of clients that should be set floating. The index may be either
-- the application class or instance. The instance is useful when running
-- a console app in a terminal like (Music on Console)
-- xterm -name mocp -e mocp
floatapps =
{
-- by class
-- ["MPlayer"] = true,
-- ["pinentry"] = true,
--"gimp"] = true,
-- by instance
-- ["mocp"] = true
}
-- Applications to be moved to a pre-defined tag by class or instance.
-- Use the screen and tags indices.
apptags =
{
["Gran Paradiso"] = { screen = 1, tag = 2 },
["mocp"] = { screen = 1, tag = 5 },
["pcmanfm"] = {screen = 1, tag = 3 },
["mirage"] = {screen = 1, tag = 3 },
["easytag"] = {screen = 1, tag = 3 },
}
-- Define if we want to use titlebar on all applications.
use_titlebar = false
-- }}}
-- {{{ Tags
-- Define tags table.
mytags = {}
mytags[1] = { name = "main", layout = layouts[1] }
mytags[2] = { name = "web", layout = layouts[1] }
mytags[3] = { name = "file", layout = layouts[1] }
mytags[4] = { name = "text", layout = layouts[1] }
mytags[5] = { name = "media", layout = layouts[1] }
mytags[6] = { name = "misc", layout = layouts[1] }
tags = {}
for s = 1, screen.count() do
-- Each screen has its own tag table.
tags[s] = {}
-- Create 5 tags per screen.
for tagnumber = 1, 6 do
-- Create the tag with name from table above
tags[s][tagnumber] = tag(mytags[tagnumber].name)
-- Add tags to screen one by one
tags[s][tagnumber].screen = s
-- Set layout
if mytags[tagnumber].layout then
awful.layout.set(mytags[tagnumber].layout, tags[s][tagnumber])
else
awful.layout.set(layouts[1], tags[s][tagnumber])
end
if mytags[tagnumber].mwfact then
awful.tag.setmwfact(mytags[tagnumber].mwfact, tags[s][tagnumber])
end
if mytags[tagnumber].nmaster then
awful.tag.setnmaster(mytags[tagnumber].nmaster, tags[s][tagnumber])
end
end
-- I'm sure you want to see at least one tag.
tags[s][1].selected = true
end
-- }}}
-- {{{ Tags
-- Define tags table.
--tags = {}
--for s = 1, screen.count() do
-- Each screen has its own tag table.
-- tags[s] = {}
-- Create tags, add layout and set screen.
-- for tagnumber = 1, 6 do
-- tags[s][tagnumber] = tag(tagnumber)
-- Add tags to screen one by one
-- tags[s][tagnumber].screen = s
-- awful.layout.set(layouts[1], tags[s][tagnumber])
-- end
-- I'm sure you want to see at least one tag.
-- tags[s][1].selected = true
--end
-- }}}
-- {{{ Wibox
-- Create a textbox widget
-- mytextbox = widget({ type = "textbox", align = "right" })
-- Set the default text in textbox
-- mytextbox.text = "<b><small> " .. AWESOME_RELEASE .. " </small></b>"
-- 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.new({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
{ "open terminal", terminal }
}
})
mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
menu = mymainmenu })
-- Create a systray
mysystray = widget({ type = "systray", align = "right" })
-- 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, function (tag) tag.selected = not tag.selected end),
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
-- Create a promptbox for each screen
mypromptbox[s] = widget({ type = "textbox", align = "left" })
-- Create an imagebox widget which will contains an icon indicating which layout we're using.
-- We need one layoutbox per screen.
mylayoutbox[s] = widget({ type = "imagebox", align = "right" })
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.new(s, awful.widget.taglist.label.all, mytaglist.buttons)
-- Create a tasklist widget
mytasklist[s] = awful.widget.tasklist.new(function(c)
return awful.widget.tasklist.label.currenttags(c, s)
end, mytasklist.buttons)
-- Create the wibox
mywibox[s] = wibox({ position = "top", fg = beautiful.fg_normal, bg = beautiful.bg_normal })
-- Add widgets to the wibox - order matters
mywibox[s].widgets = { mylauncher,
mytaglist[s],
mytasklist[s],
mypromptbox[s],
-- mytextbox,
mylayoutbox[s],
s == 1 and mysystray or nil }
mywibox[s].screen = s
end
-- }}}
-- {{{ 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(true) 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( 1) end),
awful.key({ modkey, "Control" }, "k", function () awful.screen.focus(-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, "Shift" }, "e", function () awful.util.spawn(terminal .. " -e " .. editor .. " ~/.config/awesome/rc.lua") end),
awful.key({ modkey, "Shift" }, "f", function () awful.util.spawn(browser) end),
awful.key({ modkey, "Shift" }, "p", function () awful.util.spawn(manager) end),
awful.key({ modkey, "Shift" }, "m", function () awful.util.spawn(music) end),
awful.key({ modkey, "Shift" }, "w", function () awful.util.spawn(wifi) end),
awful.key({ modkey, "Shift" }, "t", function () awful.util.spawn(terminal .. " -e htop") end),
awful.key({ modkey, "Shift" }, "s", function () awful.util.spawn(terminal .. " -e slurm -i eth0") end),
awful.key({ modkey, "Shift" }, "d", function () awful.util.spawn(menu .. " -b -nb #3f3f3f -nf #dcdccc -sb #1e2320 -sf #f0dfaf") end),
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),
-- Media keys
awful.key({ }, "#123", function () volume("up", tb_volume) end),
awful.key({ }, "#122", function () volume("down", tb_volume) end),
awful.key({ }, "#121", function () volume("mute", tb_volume) end),
awful.key({ }, "#172", function () awful.util.spawn('mocp -G') end),
awful.key({ }, "#173", function () awful.util.spawn('mocp -r') end),
awful.key({ }, "#171", function () awful.util.spawn('mocp -f') end),
awful.key({ }, "#174", function () awful.util.spawn('mocp -s') end),
-- Prompt
awful.key({ modkey }, "r",
function ()
awful.prompt.run({ prompt = "Run: " },
mypromptbox[mouse.screen],
awful.util.spawn, awful.completion.shell,
awful.util.getdir("cache") .. "/history")
end),
awful.key({ modkey }, "x",
function ()
awful.prompt.run({ prompt = "Run Lua code: " },
mypromptbox[mouse.screen],
awful.util.eval, nil,
awful.util.getdir("cache") .. "/history_eval")
end)
)
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
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", awful.client.togglemarked),
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
for i = 1, keynumber do
table.foreach(awful.key({ modkey }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ modkey, "Control" }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
tags[screen][i].selected = not tags[screen][i].selected
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ modkey, "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ modkey, "Control", "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.toggletag(tags[client.focus.screen][i])
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ modkey, "Shift" }, "F" .. i,
function ()
local screen = mouse.screen
if tags[screen][i] then
for k, c in pairs(awful.client.getmarked()) do
awful.client.movetotag(tags[screen][i], c)
end
end
end), function(_, k) table.insert(globalkeys, k) end)
end
-- Set keys
root.keys(globalkeys)
-- }}}
-- {{{ Hooks
-- Hook function to execute when focusing a client.
awful.hooks.focus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_focus
end
end)
-- Hook function to execute when unfocusing a client.
awful.hooks.unfocus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_normal
end
end)
-- Hook function to execute when marking a client
awful.hooks.marked.register(function (c)
c.border_color = beautiful.border_marked
end)
-- Hook function to execute when unmarking a client.
awful.hooks.unmarked.register(function (c)
c.border_color = beautiful.border_focus
end)
-- Hook function to execute when the mouse enters a client.
awful.hooks.mouse_enter.register(function (c)
-- Sloppy focus, but disabled for magnifier layout
if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
and awful.client.focus.filter(c) then
client.focus = c
end
end)
-- Hook function to execute when a new client appears.
awful.hooks.manage.register(function (c, startup)
-- If we are not managing this application at startup,
-- move it to the screen where the mouse is.
-- We only do it for filtered windows (i.e. no dock, etc).
if not startup and awful.client.focus.filter(c) then
c.screen = mouse.screen
end
if use_titlebar then
-- Add a titlebar
awful.titlebar.add(c, { modkey = modkey })
end
-- Add mouse bindings
c:buttons(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)
))
-- New client may not receive focus
-- if they're not focusable, so set border anyway.
c.border_width = beautiful.border_width
c.border_color = beautiful.border_normal
-- Check if the application should be floating.
local cls = c.class
local inst = c.instance
if floatapps[cls] then
awful.client.floating.set(c, floatapps[cls])
elseif floatapps[inst] then
awful.client.floating.set(c, floatapps[inst])
end
-- Check application->screen/tag mappings.
local target
if apptags[cls] then
target = apptags[cls]
elseif apptags[inst] then
target = apptags[inst]
end
if target then
c.screen = target.screen
awful.client.movetotag(tags[target.screen][target.tag], c)
end
-- Do this after tag mapping, so you don't see it on the wrong tag for a split second.
client.focus = c
-- Set key bindings
c:keys(clientkeys)
-- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master.
-- awful.client.setslave(c)
-- Honor size hints: if you want to drop the gaps between windows, set this to false.
-- c.size_hints_honor = false
end)
-- Hook function to execute when arranging the screen.
-- (tag switch, new client, etc)
awful.hooks.arrange.register(function (screen)
local layout = awful.layout.getname(awful.layout.get(screen))
if layout and beautiful["layout_" ..layout] then
mylayoutbox[screen].image = image(beautiful["layout_" .. layout])
else
mylayoutbox[screen].image = nil
end
-- Give focus to the latest client in history if no window has focus
-- or if the current window is a desktop or a dock one.
if not client.focus then
local c = awful.client.focus.history.get(screen, 0)
if c then client.focus = c end
end
end)
-- Hook called every minute
--awful.hooks.timer.register(60, function ()
-- mytextbox.text = os.date(" %a %b %d, %H:%M ")
-- end)
-- Widgets using wicked
memwidget = widget({
type = 'textbox',
name = 'memwidget',
align = "right"
})
wicked.register(memwidget, wicked.widgets.mem,
'[Memory: $1%]')
--date
datewidget = widget({
type = 'textbox',
name = 'datewidget',
})
wicked.register(datewidget, wicked.widgets.date,
'[%a %b %d, %H:%M]')
-- mocp widget
mocpwidget = widget({
type = 'textbox',
name = 'mocpwidget',
align = "left"
})
function run_script()
local filedescriptor = io.popen('/home/phill/.scripts/mocsong.sh')
local value = filedescriptor:read()
filedescriptor:close()
return {value}
end
--call mocp widget
wicked.register(mocpwidget, run_script, "$1", 5)
-- file system
fswidget = widget({
type = 'textbox',
name = 'fswidget',
align = "right"
})
wicked.register(fswidget, wicked.widgets.fs,
'[/: ${/ usep}%][/home: ${/home usep}%]', 30)
--Dropbox Widget - calls ~/.scripts/drop.sh
dbwidget = widget({
type = 'textbox',
name = 'dbwidget',
align = "right"
})
function run_script()
local filedescriptor = io.popen('/home/phill/.scripts/drop.sh')
local value = filedescriptor:read()
filedescriptor:close()
return {value}
end
-- Runs 'my_nifty_script.py' every 10 seconds and puts its output into the widget
wicked.register(dbwidget, run_script, "[/Dropbox: $1%]", 30)
-- cpu
cpuwidget = widget({
type = 'textbox',
name = 'cpuwidget',
align = "right"
})
wicked.register(cpuwidget, wicked.widgets.cpu,
'[CPU: $1%]')
-- battery
batterywidget = widget({type = "textbox", name = "batterywidget", align = "right" })
function batteryInfo(adapter)
spacer = " "
local fcur = io.open("/sys/class/power_supply/"..adapter.."/charge_now")
local fcap = io.open("/sys/class/power_supply/"..adapter.."/charge_full")
local fsta = io.open("/sys/class/power_supply/"..adapter.."/status")
local cur = fcur:read()
local cap = fcap:read()
local sta = fsta:read()
local battery = math.floor(cur * 100 / cap)
if sta:match("Charging") then
dir = "^"
battery = "A/C ("..battery..")"
elseif sta:match("Discharging") then
dir = "v"
if tonumber(battery) > 25 and tonumber(battery) < 75 then
battery = battery
elseif tonumber(battery) < 25 then
if tonumber(battery) < 10 then
naughty.notify({ title = "Battery Warning"
, text = "Battery low!"..spacer..battery.."%"..spacer.."left!"
, timeout = 5
, position = "top_right"
, fg = beautiful.fg_focus
, bg = beautiful.bg_focus
})
end
battery = battery
else
battery = battery
end
else
dir = "="
battery = "A/C"
end
batterywidget.text = "[Bat:"..spacer..dir..battery..dir.."]"
fcur:close()
fcap:close()
fsta:close()
end
awful.hooks.timer.register(20, function()
batteryInfo("BAT0")
end)
wifiwidget = widget({type = "textbox", name = "wifiwidget", align = "right" })
function wifiInfo(adapter)
spacer = " "
local f = io.open("/sys/class/net/"..adapter.."/wireless/link")
local wifiStrength = f:read()
if wifiStrength == "0" then
wifiStrength = "Network Down"
else
wifiStrength = "Wifi:"..spacer..wifiStrength.."%"
end
wifiwidget.text = "["..wifiStrength.."]"
f:close()
end
awful.hooks.timer.register(30, function() wifiInfo("eth0")
end)
tb_volume = widget({ type = "textbox", name = "tb_volume", align = "right" })
tb_volume:buttons({
button({ }, 4, function () volume("up", tb_volume) end),
button({ }, 5, function () volume("down", tb_volume) end),
button({ }, 1, function () volume("mute", tb_volume) end)
})
volume("update", tb_volume)
-- statebar in the bottom
mystatebar = wibox( {position = "bottom", fg = beautiful.fg_focus, bg = beautiful.bg_focus} )
mystatebar.widgets = {
datewidget,
mocpwidget,
fswidget,
dbwidget,
cpuwidget,
memwidget,
wifiwidget,
batterywidget,
tb_volume,
}
mystatebar.screen = 1
-- }}}
Offline
@Icair: Wall, please? It rocks.
urxvtc / wmii / zsh / configs / onebluecat.net
Arch will not hold your hand
Offline
How did you get your Firefox tab-bar like that? Like the way it was before native Linux widgets?
Mine looks like this for 3.1b3-PGO: http://fc02.deviantart.com/fs45/f/2009/ … 93a234.png
http://fc05.deviantart.com/fs43/f/2009/ … 15a064.png
http://fc01.deviantart.com/fs45/f/2009/ … 404c94.png
http://fc01.deviantart.com/fs44/f/2009/ … 468379.png
Last edited by methuselah (2009-05-05 03:10:40)
Offline
What GTK theme is that, Methuselah?
Offline
What GTK theme is that, Methuselah?
It's one that I made using murrine-svn. I plan on releasing a few of these soon.
Here is my gallery of murrine-svn themes and emerald themes that I have made: http://crimesaucer.deviantart.com/gallery/
Last edited by methuselah (2009-05-05 03:30:23)
Offline
Methuselah:
Could you tell a bit more about your config? I think it's conky on the right side, isn't it?
Could you post the config? And which applets are you using on the left side, the clock is
really nice! Or is it a special them for the applets? And what applet displays the places, I
never saw something like that before.
Thanks in advance!
Thomas
Offline
@koch and capnmoney:
Thanks a lot, this means I can finally start configuring awesome
I'll play around with both your configs today...
My coding blog (or an attempt at it)
Archer start page (or an attempt at it)
Offline
Same as the end of last month. TMNT were the ultimate of cool when I was a kid, and with this picture...they still are!
you can share the config of the bmpanel??
Offline
Methuselah:
Could you tell a bit more about your config? I think it's conky on the right side, isn't it?
Could you post the config? And which applets are you using on the left side, the clock is
really nice! Or is it a special them for the applets? And what applet displays the places, I
never saw something like that before.Thanks in advance!
Thomas
Yes, it's just a normal conky app on the right using the weather script that I customized.
The screenlets: http://aur.archlinux.org/packages.php?ID=15048 I use are customized to match the conky look of text on the wallpaper.
It's easy to do. I had to change the font used in the python scripts for the 'ClearCalendar' to match the font of conky (then I used the no back setting to draw it on the wallpaper).
For the 'Clock' I made my background image "bg.svg" to 100% transparent to give the same look as the way conky draws it's self onto the wallpaper..... (it is also very easy to customize the clock face and hands to any color, check out my deviantART gallery http://crimesaucer.deviantart.com/gallery/ to see all of the way's that I have changed these screenlets from simple edits to the python script and the svg images).
As for the 'Places' screenlet it is basically using the defaul settings with the Opacity turned to 0%. I think I downloaded it from gnome-looks....
The 4th screenlet I use is the 'Pager' screenlet which I also edit. I change the RGBA colors in the python script to use different colors and opacity settings.... and I usually changed the bg.svg image to look better because the one that comes with it is sloppily done (this time I just made my image 100% transparent to match the conky look).
The window theme is an Emerald theme I made.... like I said above check out my gallery to see some themes that I want to upload in a package of themes: http://crimesaucer.deviantart.com/gallery/
Also, here is my ~/.conkyrc file:
# Archlinux-CONKY
# A comprehensive conky script, configured for use on
# Archlinux, without the need for any external scripts.
#
# Based on the conky settings and conky variables web pages.
# INCLUDES:
# - battery stats, cached memory, uptime, date/time, file system stats
#
#
#
#
# Create own window instead of using desktop (required in nautilus)
own_window yes
own_window_transparent yes
#own_window_type normal
own_window_type override
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes
# fiddle with window
# I think the "use spacer" option only works with mono fonts.
use_spacer none
use_xft yes
# Xft font when Xft is enabled
#xftfont Bitstream Vera Sans Mono:size=4
#xftfont URW Gothic L:bold:size=7
xftfont Lucida MAC Bold:bold:size=7
# Update interval in seconds
update_interval 3.0
# Minimum size of text area
minimum_size 760
maximum_width 150
# Draw shades? was yes
draw_shades no
# Draw outlines?
draw_outline no
# Draw borders around text
draw_borders no
# Text stuff
# amplifies text if yes was no
# draw_outline no
# draw_borders no
uppercase no # set to yes if you want all text to be in uppercase
# border margins
#border_margin 5
# border width
#border_width 1
# Default colors and also border colors
#default_shade_color 000000
#default_outline_color 158DBB
default_color FFFFFF
# Text alignment, other possible values are commented
#alignment top_left
alignment top_right
#alignment bottom_left
#alignment bottom_right
# Gap between borders of screen and text
gap_x 24
gap_y 74
# Text alpha when using Xft
xftalpha 1
# drawn 1 pixel border around graphs or not was no on screenshot guide
draw_graph_borders no
# stuff after 'TEXT' will be formatted on screen
# Subtract file system buffers from used memory?
no_buffers yes
# number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 2
# number of net samples to average
# set to 1 to disable averaging
net_avg_samples 2
# Force UTF8? note that UTF8 support required XFT
override_utf8_locale yes
# Add spaces to keep things from moving about? This only affects certain objects.
#use_spacer yes
stippled_borders
TEXT
${time %b. %d, %Y}${alignr 3}${time %l:%M %p}
${voffset 5}${alignc}${execi 3600 python ~/scripts/conkyForecast.py --location=USDC0001 --datatype=CC -n}
${offset 52}${font Weather:size=46}${execi 3600 python ~/scripts/conkyForecast.py --location=USDC0001 --datatype=WF -n}${font}
Temp:${alignr 3}${execi 3600 python ~/scripts/conkyForecast.py --location=USDC0001 --datatype=HT -i -n}
Wind:${alignr 3}${execi 3600 python ~/scripts/conkyForecast.py --location=USDC0001 --datatype=WD -n}
Speed:${alignr 3}${execi 3600 python ~/scripts/conkyForecast.py --location=USDC0001 --datatype=WS -i -n}
Gusts:${alignr 3}${execi 3600 python ~/scripts/conkyForecast.py --location=USDC0001 --datatype=WG -i -n}
Sunrise:${alignr 3}${execi 3600 python ~/scripts/conkyForecast.py --location=USDC0001 --datatype=SR}
Sunset:${alignr 3}${execi 3600 python ~/scripts/conkyForecast.py --location=USDC0001 --datatype=SS}
Arch x86_64${alignr 3} ${fs_size}
${offset 24}used =${alignr 3}${fs_used}
${offset 24}free =${alignr 3}${fs_free}
Vista 64bit${alignr 3} ${fs_size /mnt/windows}
${offset 24}used =${alignr 3}${fs_used /mnt/windows}
${offset 24}free =${alignr 3}${fs_free /mnt/windows}
RAM TOTAL${alignr 3}${memmax}
RAM${alignr 3}${mem}
CACHE${alignr 3}${cached}
SWAP TOTAL${alignr 3}${swapmax}
SWAP${alignr 3}${swap}
BATTERY${alignr 3}${battery}
NVIDIA GPU TEMP:
+${execi 1 nvidia-settings -q [GPU:0]/GPUCoreTemp | grep Attribute | cut -d ' ' -f 6 | cut -c 1-2} Celsius
Turion 64 X2 Core 1 TEMP:
${execi 1 sensors | grep "Core0" | cut -c14-20}
Turion 64 X2 Core 2 TEMP:
${execi 1 sensors | grep "Core1" | cut -c14-20}
Core 1 CPU:${alignr 3} ${cpu cpu0}% ${cpubar cpu0 5,50}
Core 2 CPU:${alignr 3} ${cpu cpu1}% ${cpubar cpu1 5,50}
${stippled_hr}
TOP APPS${alignr 3}CPU
${stippled_hr}
${top name 1}${alignr 3}${top cpu 1}%
${top name 2}${alignr 3}${top cpu 2}%
${top name 3}${alignr 3}${top cpu 3}%
${top name 4}${alignr 3}${top cpu 4}%
${stippled_hr}
TOP APPS${alignr 3}MEM
${stippled_hr}
${top_mem name 1}${alignr 3}${top_mem mem 1}%
${top_mem name 2}${alignr 3}${top_mem mem 2}%
${top_mem name 3}${alignr 3}${top_mem mem 3}%
${top_mem name 4}${alignr 3}${top_mem mem 4}%
You need to have the conkyForecast.py from here (follow README directions): http://sen7.deviantart.com/art/Conky-Mira-100078939
I hope this helps.
Last edited by methuselah (2009-05-05 06:31:31)
Offline
adamruss wrote:How did you get your Firefox tab-bar like that? Like the way it was before native Linux widgets?
i dont understand the question... the tab bar? i didnt do anything to it, i use jimmy ff3 theme for firefox and modified the userchorme.css a little for the menu's to fit the "new wave" theme. if you meant the bookmark bar.. i use "smart bookmark bar" addon, but you can also do this with stylish.
btw, i have seen you't screenshot before at compiz forums, they are really nice, you should release them allready i'll be happy to use them
Offline
@everyone running awesome3 mind sharing some rc.lua files? I can't really find a lot of configs that really work out-of-the-box and I don't know sufficient lua to start writing one myself...
Here is mine. My config works for awesome 3.3pre2009*keeps going*, that is in repositorys right now. I tried out awesome 3.3-rc1 and it did not work, there is (very) minor changes in config file syntax, but the big part is, from rc1 theme file will be in lua. Anyways, it looks like this:
rc.lua:
require("awful")
require("beautiful")
require("naughty")
require("wicked")
require('invaders')
-- {{{ Variable definitions
theme_path = "/home/oscar/.config/awesome/themes/arch"
beautiful.init(theme_path)
terminal = "urxvtc"
editor = os.getenv("EDITOR") or "vi"
editor_cmd = terminal .. " -e " .. editor
modkey = "Mod4"
layouts =
{
awful.layout.suit.tile, -- 1
awful.layout.suit.tile.left, -- 2
awful.layout.suit.tile.bottom, -- 3
awful.layout.suit.tile.top, -- 4
awful.layout.suit.fair, -- 5
awful.layout.suit.fair.horizontal, -- 6
awful.layout.suit.max, -- 7
awful.layout.suit.max.fullscreen, -- 8
awful.layout.suit.magnifier, -- 9
awful.layout.suit.floating -- 10
}
floatapps =
{
-- by class
["MPlayer"] = true,
["feh"] = true,
["Heroes3.exe"] = true,
["Wine"] = true,
-- by instance
["mocp"] = true,
["H5_Game.exe"] = true
}
apptags =
{
["Gran Paradiso"] = { screen = 1, tag = 2 },
["Thunderbird-bin"] = { screen = 1, tag = 4 },
["Mplayer"] = { screen = 1, tag = 3 },
-- ["Heroes3.exe"] = { screen = 1, tag = 3 },
}
use_titlebar = false
-- }}}
-- {{{ Tags
-- Define tags table.
tags = {}
tags.settings = {
{ name = "urxvt", layout = layouts[1], },
{ name = "www", layout = layouts[7], },
{ name = "media", layout = layouts[8] },
{ name = "mail", layout = layouts[7], },
{ name = "other", layout = layouts[10], setslave = true },
}
-- Initialize tags
for s = 1, screen.count() do
tags[s] = {}
for i, v in ipairs(tags.settings) do
tags[s][i] = tag(v.name)
tags[s][i].screen = s
awful.tag.setproperty(tags[s][i], "layout", v.layout)
awful.tag.setproperty(tags[s][i], "setslave", v.setslave)
awful.tag.setproperty(tags[s][i], "mwfact", v.mwfact)
end
tags[s][1].selected = true
end
-- }}}
-- {{{ Wibox
-- Create a textbox widget
mytextbox = widget({ type = "textbox", align = "right" })
-- Set the default text in textbox
mytextbox.text = "<b><small> " .. AWESOME_RELEASE .. " </small></b>"
-- 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.new({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
{ "open terminal", terminal }
}
})
mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
menu = mymainmenu })
-- Create a systray
mysystray = widget({ type = "systray", align = "right" })
-- 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, function (tag) tag.selected = not tag.selected end),
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
-- Create a promptbox for each screen
mypromptbox[s] = widget({ type = "textbox", align = "left" })
-- Create an imagebox widget which will contains an icon indicating which layout we're using.
-- We need one layoutbox per screen.
mylayoutbox[s] = widget({ type = "imagebox", align = "right" })
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.new(s, awful.widget.taglist.label.all, mytaglist.buttons)
-- Create a date widget
-- mydatewidget = widget({
-- type = "textbox",
-- name = "mydatewidget",
-- align = "right" })
-- wicked.register(mydatewidget, wicked.widgets.date, " :: %b %e, %R ::", 60)
-- MPD
mpdwidget = widget({
type = 'textbox',
name = 'mpdwidget',
align = 'right',
})
wicked.register(mpdwidget, wicked.widgets.mpd,
' <span color="#e2baf1">Now Playing:</span> $1 ::')
-- Mousebindings for MPD
mpdwidget:buttons(awful.util.table.join(
awful.button({ }, 1, function () awful.util.spawn("mpc toggle") end),
awful.button({ }, 4, function () awful.util.spawn("aumix -v +3") end),
awful.button({ }, 5, function () awful.util.spawn("aumix -v -3") end),
awful.button({ }, 8, function () awful.util.spawn("mpc prev") end),
awful.button({ }, 9, function () awful.util.spawn("mpc next") end)))
-- Create a tasklist widget
mytasklist[s] = awful.widget.tasklist.new(function(c)
return awful.widget.tasklist.label.currenttags(c, s)
end, mytasklist.buttons)
-- Create the wibox
mywibox[s] = wibox({ position = "top", fg = beautiful.fg_normal, bg = beautiful.bg_normal })
-- Add widgets to the wibox - order matters
mywibox[s].widgets = { mylauncher,
mytaglist[s],
-- mytasklist[s],
mpdwidget,
-- mydatewidget,
mypromptbox[s],
mytextbox,
mylayoutbox[s],
s == 1 and mysystray or nil }
mywibox[s].screen = s
end
-- }}}
-- {{{ 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(true) 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( 1) end),
awful.key({ modkey, "Control" }, "k", function () awful.screen.focus(-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),
-- Mina
awful.key({ }, "XF86AudioPlay", function () awful.util.spawn("mpc toggle") end),
awful.key({ }, "XF86AudioStop", function () awful.util.spawn("mpc stop") end),
awful.key({ }, "XF86AudioNext", function () awful.util.spawn("mpc next") end),
awful.key({ }, "XF86AudioPrev", function () awful.util.spawn("mpc prev") end),
awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn("aumix -v -3") end),
awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("aumix -v +3") end),
awful.key({ }, "XF86HomePage", function () awful.util.spawn("firefox") end),
awful.key({ }, "XF86Mail", function () awful.util.spawn("thunderbird") end),
-- Prompt
awful.key({ modkey }, "r",
function ()
awful.prompt.run({ prompt = "Run: " },
mypromptbox[mouse.screen],
awful.util.spawn, awful.completion.shell,
awful.util.getdir("cache") .. "/history")
end),
awful.key({ modkey }, "x",
function ()
awful.prompt.run({ prompt = "Run Lua code: " },
mypromptbox[mouse.screen],
awful.util.eval, nil,
awful.util.getdir("cache") .. "/history_eval")
end)
)
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
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", awful.client.togglemarked),
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
for i = 1, keynumber do
table.foreach(awful.key({ modkey }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ modkey, "Control" }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
tags[screen][i].selected = not tags[screen][i].selected
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ modkey, "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ modkey, "Control", "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.toggletag(tags[client.focus.screen][i])
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ modkey, "Shift" }, "F" .. i,
function ()
local screen = mouse.screen
if tags[screen][i] then
for k, c in pairs(awful.client.getmarked()) do
awful.client.movetotag(tags[screen][i], c)
end
end
end), function(_, k) table.insert(globalkeys, k) end)
end
-- Set keys
root.keys(globalkeys)
-- }}}
-- {{{ Hooks
-- Hook function to execute when focusing a client.
awful.hooks.focus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_focus
end
end)
-- Hook function to execute when unfocusing a client.
awful.hooks.unfocus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_normal
end
end)
-- Hook function to execute when marking a client
awful.hooks.marked.register(function (c)
c.border_color = beautiful.border_marked
end)
-- Hook function to execute when unmarking a client.
awful.hooks.unmarked.register(function (c)
c.border_color = beautiful.border_focus
end)
-- Hook function to execute when a new client appears.
awful.hooks.manage.register(function (c, startup)
-- If we are not managing this application at startup,
-- move it to the screen where the mouse is.
-- We only do it for filtered windows (i.e. no dock, etc).
if not startup and awful.client.focus.filter(c) then
c.screen = mouse.screen
end
if use_titlebar then
-- Add a titlebar
awful.titlebar.add(c, { modkey = modkey })
end
-- Add mouse bindings
c:buttons(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)
))
-- New client may not receive focus
-- if they're not focusable, so set border anyway.
c.border_width = beautiful.border_width
c.border_color = beautiful.border_normal
-- Check if the application should be floating.
local cls = c.class
local inst = c.instance
if floatapps[cls] then
awful.client.floating.set(c, floatapps[cls])
elseif floatapps[inst] then
awful.client.floating.set(c, floatapps[inst])
end
-- Check application->screen/tag mappings.
local target
if apptags[cls] then
target = apptags[cls]
elseif apptags[inst] then
target = apptags[inst]
end
if target then
c.screen = target.screen
awful.client.movetotag(tags[target.screen][target.tag], c)
end
-- Do this after tag mapping, so you don't see it on the wrong tag for a split second.
client.focus = c
-- Set key bindings
c:keys(clientkeys)
-- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master.
-- awful.client.setslave(c)
-- Honor size hints: if you want to drop the gaps between windows, set this to false.
c.size_hints_honor = false
end)
-- Hook function to execute when arranging the screen.
-- (tag switch, new client, etc)
awful.hooks.arrange.register(function (screen)
local layout = awful.layout.getname(awful.layout.get(screen))
if layout and beautiful["layout_" ..layout] then
mylayoutbox[screen].image = image(beautiful["layout_" .. layout])
else
mylayoutbox[screen].image = nil
end
-- Give focus to the latest client in history if no window has focus
-- or if the current window is a desktop or a dock one.
if not client.focus then
local c = awful.client.focus.history.get(screen, 0)
if c then client.focus = c end
end
end)
-- Hook called every minute
awful.hooks.timer.register(60, function ()
mytextbox.text = os.date(" %a %b %d, %H:%M ")
end)
-- }}}
-- {{ Quick'n'Dirty Autostart
awful.util.spawn("xset r rate 200 30")
awful.util.spawn("numlockx")
awful.util.spawn("setxkbmap se")
-- awful.util.spawn("xrandr --output LVDS --off")
-- awful.util.spawn("xrandr --output VGA-0 --mode 1680x1050")
awful.util.spawn("mount /media/usb")
awful.util.spawn("mpd")
awful.util.spawn("urxvtd -q -f -o")
awful.util.spawn("nm-applet")
awful.util.spawn("xsetroot -cursor_name obsidian")
awful.util.spawn("xrdb -merge ~/.Xdefaults")
-- }}
theme:
------------------------
-- arch awesome theme --
------------------------
font = snap 9
bg_normal = #000000
bg_focus = #000000
bg_urgent = #000000
fg_normal = #afd700
fg_focus = #e2baf1
fg_urgent = #ff0000
border_width = 1
border_normal = #000000
border_focus = #e2baf1
border_marked = #ff0000
# There are another variables sets
# overriding the default one when
# defined, the sets are:
# [taglist|tasklist]_[bg|fg]_[focus|urgent]
# titlebar_[bg|fg]_[normal|focus]
# Example:
#taglist_bg_focus = #ff0000
# Display the taglist squares
taglist_squares_sel = /usr/share/awesome/themes/default/taglist/squarefw.png
taglist_squares_unsel = /usr/share/awesome/themes/default/taglist/squarew.png
tasklist_floating_icon = /usr/share/awesome/themes/default/tasklist/floatingw.png
# Variables set for theming menu
# menu_[bg|fg]_[normal|focus]
# menu_[border_color|border_width]
menu_submenu_icon = /usr/share/awesome/themes/default/submenu.png
menu_height = 15
menu_width = 100
# You can add as many variables as
# you wish and access them by using
# beautiful.variable in your rc.lua
#bg_widget = #cc0000
# Define the image to load
titlebar_close_button_normal = /usr/share/awesome/themes/default/titlebar/close.png
titlebar_close_button_focus = /usr/share/awesome/themes/default/titlebar/closer.png
# You can use your own command to set your wallpaper
#wallpaper_cmd = xsetroot -solid #252525
#wallpaper_cmd = awsetbg -c ~/My\ Shit/Pics/Wallpaper/Start_Small_by_Jarki.jpg
wallpaper_cmd = eval `cat ~/.fehbg`
# You can use your own layout icons like this:
layout_dwindle = /usr/share/awesome/themes/default/layouts/dwindlew.png
layout_fairh = /usr/share/awesome/themes/default/layouts/fairhw.png
layout_fairv = /usr/share/awesome/themes/default/layouts/fairvw.png
layout_floating = /usr/share/awesome/themes/default/layouts/floatingw.png
layout_magnifier = /usr/share/awesome/themes/default/layouts/magnifierw.png
layout_max = /usr/share/awesome/themes/default/layouts/maxw.png
layout_spiral = /usr/share/awesome/themes/default/layouts/spiralw.png
layout_tilebottom = /usr/share/awesome/themes/default/layouts/tilebottomw.png
layout_tileleft = /usr/share/awesome/themes/default/layouts/tileleftw.png
layout_tile = /usr/share/awesome/themes/default/layouts/tilew.png
layout_tiletop = /usr/share/awesome/themes/default/layouts/tiletopw.png
# awesome_icon = /usr/share/awesome/icons/awesome16.png
awesome_icon = /home/oscar/.config/awesome/arch.png
Offline
methuselah wrote:adamruss wrote:How did you get your Firefox tab-bar like that? Like the way it was before native Linux widgets?
i dont understand the question... the tab bar? i didnt do anything to it, i use jimmy ff3 theme for firefox and modified the userchorme.css a little for the menu's to fit the "new wave" theme. if you meant the bookmark bar.. i use "smart bookmark bar" addon, but you can also do this with stylish.
btw, i have seen you't screenshot before at compiz forums, they are really nice, you should release them allready i'll be happy to use them
Thank you. I still plan on releasing these soon.... and I was going to message you at the compiz forum with the theme you asked about.... in fact this is sort of the theme that it evolved into.
As for my question about your Firefox tab-bar..... It's just that your tab bar has that old look from Firefox 2.0.... with that beveled look and the tab connecting to a window frame.
All of these pictures below are default Firefox with no theme installed using the Linux gtk of clearlooks and murrine.
This is a picture of the old Firefox before native widgets:
Another picture of the old Firefox before native widgets:
A.) The tab connects to a window frame that separates it from the page.
B.) There is a reverse gradient used to have a smooth beveled look.
C.) The window frame separates the page and the tab bar, and the tabs look better that way like in the first photo above.
This is how the tab-bar and tabs have looked since Firefox started to use the native Linux widgets.
Offline
@everyone running awesome3 mind sharing some rc.lua files? I can't really find a lot of configs that really work out-of-the-box and I don't know sufficient lua to start writing one myself...
Sure, my basic rc.lua (which has worked for me for all awesome3 versions except the newest git, since it seems to change the syntax for the theme file):
-- Standard awesome library
require("awful")
-- Theme handling library
require("beautiful")
-- Notification library
require("naughty")
--Widgets
require("wicked")
--{{ Functions for Widgets
--}}
-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
-- The default is a dark theme
theme_path = "/home/lswest/.config/awesome/lswest/theme"
-- Uncommment this for the default theme
-- theme_path = "/usr/share/awesome/themes/default/theme"
-- Actually load theme
beautiful.init(theme_path)
--Autorun programs
autorun = true
autorunApps =
{
"dropbox",
"checkgmail",
"xscreensaver -no-splash",
"conky",
"xcompmgr",
"conky -c .conkyrc_coding"
}
if autorun then
for app = 1, #autorunApps do
awful.util.spawn(autorunApps[app])
end
end
-- 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, --1
awful.layout.suit.tile.left, --2
awful.layout.suit.tile.bottom, --3
awful.layout.suit.tile.top, --4
awful.layout.suit.fair, --5
awful.layout.suit.fair.horizontal, --6
awful.layout.suit.max, --7
awful.layout.suit.max.fullscreen, --8
awful.layout.suit.magnifier, --9
awful.layout.suit.floating --10
}
-- Table of clients that should be set floating. The index may be either
-- the application class or instance. The instance is useful when running
-- a console app in a terminal like (Music on Console)
-- xterm -name mocp -e mocp
floatapps =
{
-- by class
["MPlayer"] = true,
["pinentry"] = true,
["gimp-2.6"] = true,
["amsn"] = true,
["."] = true,
[","] = true,
[""] = true,
["vlc"] = true,
["VLC"] = true,
["VLC (XVideo output)"] = true,
["VirtualBox"] = true,
-- by instance
["mocp"] = true,
["skype"] = true,
["Download"] = true,
["pidgin"] = true
}
-- Applications to be moved to a pre-defined tag by class or instance.
-- Use the screen and tags indices.
apptags =
{
["Firefox"] = { screen = 1, tag = 2 },
["mocp"] = { screen = 1, tag = 6 },
["pidgin"] = { screen = 1, tag = 3 },
}
-- Define if we want to use titlebar on all applications.
use_titlebar = false
-- }}}
-- {{{ Tags
-- Define tags table.
mytags = {}
mytags[1] = { name = "main", layout = layouts[1] }
mytags[2] = { name = "www", layout = layouts[1] }
mytags[3] = { name = "chat", layout = layouts[1] }
mytags[4] = { name = "urxvt", layout = layouts[1] }
mytags[5] = { name = "misc", layout = layouts[1] }
mytags[6] = { name = "mocp", layout = layouts[1] }
tags = {}
for s = 1, screen.count() do
-- Each screen has its own tag table.
tags[s] = {}
-- Create 9 tags per screen.
for tagnumber = 1, 6 do
-- Create the tag with name from table above
tags[s][tagnumber] = tag(mytags[tagnumber].name)
-- Add tags to screen one by one
tags[s][tagnumber].screen = s
-- Set layout
if mytags[tagnumber].layout then
awful.layout.set(mytags[tagnumber].layout, tags[s][tagnumber])
else
awful.layout.set(layouts[1], tags[s][tagnumber])
end
if mytags[tagnumber].mwfact then
awful.tag.setmwfact(mytags[tagnumber].mwfact, tags[s][tagnumber])
end
if mytags[tagnumber].nmaster then
awful.tag.setnmaster(mytags[tagnumber].nmaster, tags[s][tagnumber])
end
end
-- I'm sure you want to see at least one tag.
tags[s][1].selected = true
end
-- }}}
-- {{{ Wibox
-- Create a textbox widget
mytextbox = widget({ type = "textbox", align = "right" })
-- Set the default text in textbox
mytextbox.text = "<b><small> " .. AWESOME_RELEASE .. " </small></b>"
-- 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 }
}
myapplicationmenu = {
{ "Nautilus", "nautilus --no-desktop" },
{ "Firefox", "firefox" },
{ "Skype", "skype" }
}
mymainmenu = awful.menu.new({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
{ "applications", myapplicationmenu },
{ "open terminal", terminal }
}
})
mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
menu = mymainmenu })
-- Create a systray
mysystray = widget({ type = "systray", align = "right" })
-- Create a wibox for each screen and add it
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = { button({ }, 1, awful.tag.viewonly),
button({ modkey }, 1, awful.client.movetotag),
button({ }, 3, function (tag) tag.selected = not tag.selected end),
button({ modkey }, 3, awful.client.toggletag),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev) }
mytasklist = {}
mytasklist.buttons = { button({ }, 1, function (c)
if not c:isvisible() then
awful.tag.viewonly(c:tags()[1])
end
client.focus = c
c:raise()
end),
button({ }, 3, function () if instance then instance:hide() end instance = awful.menu.clients({ width=250 }) end),
button({ }, 4, function () awful.client.focus.byidx(1) end),
button({ }, 5, function () awful.client.focus.byidx(-1) end) }
for s = 1, screen.count() do
-- Create a promptbox for each screen
mypromptbox[s] = widget({ type = "textbox", align = "left" })
-- Create an imagebox widget which will contains an icon indicating which layout we're using.
-- We need one layoutbox per screen.
mylayoutbox[s] = widget({ type = "imagebox", align = "right" })
mylayoutbox[s]:buttons({ button({ }, 1, function () awful.layout.inc(layouts, 1) end),
button({ }, 3, function () awful.layout.inc(layouts, -1) end),
button({ }, 4, function () awful.layout.inc(layouts, 1) end),
button({ }, 5, function () awful.layout.inc(layouts, -1) end) })
-- Create a taglist widget
mytaglist[s] = awful.widget.taglist.new(s, awful.widget.taglist.label.all, mytaglist.buttons)
-- Create a tasklist widget
mytasklist[s] = awful.widget.tasklist.new(function(c)
return awful.widget.tasklist.label.currenttags(c, s)
end, mytasklist.buttons)
-- Create the wibox
mywibox[s] = wibox({ position = "top", fg = beautiful.fg_normal, bg = beautiful.bg_normal })
-- Add widgets to the wibox - order matters
mywibox[s].widgets = { mylauncher,
mytaglist[s],
mytasklist[s],
mypromptbox[s],
s == 1 and mysystray or nil,
mylayoutbox[s],
mytextbox }
mywibox[s].screen = s
end
-- }}}
-- {{{ Mouse bindings
root.buttons({
button({ }, 3, function () mymainmenu:toggle() end),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev)
})
-- }}}
-- {{{ Key bindings
-- Bind keyboard digits
-- 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
globalkeys = {
-- Applications
key({ modkey }, "F12", function () awful.util.spawn("xscreensaver-command -lock") end),
key({}, "XF86AudioPrev", function () awful.util.spawn("mocp -r") end),
key({}, "XF86AudioNext", function () awful.util.spawn("mocp -f") end),
key({}, "XF86AudioPlay", function () awful.util.spawn("mocp -G") end),
key({}, "XF86AudioStop", function () awful.util.spawn("mocp -s") end),
key({}, "XF86AudioLowerVolume", function () awful.util.spawn("dvol -d 5") end),
key({}, "XF86AudioRaiseVolume", function () awful.util.spawn("dvol -i 5") end),
key({}, "XF86AudioMute", function () awful.util.spawn("dvol -t") end),
key({}, "Print", function () awful.util.spawn("scrot -q 100 -t 25 '%Y-%m-%d-%H-%M-%S.png' -e 'mv $f $m ~/Pictures/Screenshots/'") end),
key({ modkey }, "w", function () awful.util.spawn("firefox") end),
key({ modkey }, "s", function () awful.util.spawn("skype") end),
key({ modkey }, "q", function () awful.util.spawn("urxvt -e mocp") end),
key({ modkey }, "d", function () awful.util.spawn("nautilus --no-desktop") end)
}
clientkeys = {}
for i = 1, keynumber do
table.insert(globalkeys,
key({ modkey }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end))
table.insert(globalkeys,
key({ modkey, "Control" }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
tags[screen][i].selected = not tags[screen][i].selected
end
end))
table.insert(globalkeys,
key({ modkey, "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end))
table.insert(globalkeys,
key({ modkey, "Control", "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.toggletag(tags[client.focus.screen][i])
end
end))
end
table.insert(globalkeys, key({ modkey }, "Left", awful.tag.viewprev))
table.insert(globalkeys, key({ modkey }, "Right", awful.tag.viewnext))
table.insert(globalkeys, key({ modkey }, "Escape", awful.tag.history.restore))
table.insert(globalkeys, key({ modkey }, "j", function () awful.client.focus.byidx(1); if client.focus then client.focus:raise() end end))
table.insert(globalkeys, key({ modkey }, "k", function () awful.client.focus.byidx(-1); if client.focus then client.focus:raise() end end))
table.insert(globalkeys, key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx(1) end))
table.insert(globalkeys, key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx(-1) end))
table.insert(globalkeys, key({ modkey, "Control" }, "j", function () awful.screen.focus(1) end))
table.insert(globalkeys, key({ modkey, "Control" }, "k", function () awful.screen.focus(-1) end))
table.insert(globalkeys, key({ modkey }, "Tab", function () awful.client.focus.history.previous(); if client.focus then client.focus:raise() end end))
table.insert(globalkeys, key({ modkey }, "u", awful.client.urgent.jumpto))
-- Standard program
table.insert(globalkeys, key({ modkey }, "Return", function () awful.util.spawn(terminal) end))
table.insert(globalkeys, key({ modkey, "Control" }, "r", function ()
mypromptbox[mouse.screen].text =
awful.util.escape(awful.util.restart())
end))
table.insert(globalkeys, key({ modkey, "Shift" }, "q", awesome.quit))
-- Client manipulation
table.insert(clientkeys, key({ modkey }, "m", function (c) c.maximized_horizontal = not c.maximized_horizontal
c.maximized_vertical = not c.maximized_vertical end))
table.insert(clientkeys, key({ modkey }, "f", function (c) c.fullscreen = not c.fullscreen end))
table.insert(clientkeys, key({ modkey, "Shift" }, "c", function (c) c:kill() end))
table.insert(clientkeys, key({ modkey, "Control" }, "space", awful.client.floating.toggle))
table.insert(clientkeys, key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end))
table.insert(clientkeys, key({ modkey }, "o", awful.client.movetoscreen))
table.insert(clientkeys, key({ modkey, "Shift" }, "r", function (c) c:redraw() end))
-- Layout manipulation
table.insert(globalkeys, key({ modkey }, "l", function () awful.tag.incmwfact(0.05) end))
table.insert(globalkeys, key({ modkey }, "h", function () awful.tag.incmwfact(-0.05) end))
table.insert(globalkeys, key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster(1) end))
table.insert(globalkeys, key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end))
table.insert(globalkeys, key({ modkey, "Control" }, "h", function () awful.tag.incncol(1) end))
table.insert(globalkeys, key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end))
table.insert(globalkeys, key({ modkey }, "space", function () awful.layout.inc(layouts, 1) end))
table.insert(globalkeys, key({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end))
-- Prompt
table.insert(globalkeys, key({ modkey }, "F1", function ()
awful.prompt.run({ prompt = "Run: " },
mypromptbox[mouse.screen],
awful.util.spawn, awful.completion.bash,
awful.util.getdir("cache") .. "/history")
end))
table.insert(globalkeys, key({ modkey }, "F4", function ()
awful.prompt.run({ prompt = "Run Lua code: " },
mypromptbox[mouse.screen],
awful.util.eval, awful.prompt.bash,
awful.util.getdir("cache") .. "/history_eval")
end))
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
table.insert(clientkeys, key({ modkey }, "t", awful.client.togglemarked))
for i = 1, keynumber do
table.insert(globalkeys, key({ modkey, "Shift" }, "F" .. i,
function ()
local screen = mouse.screen
if tags[screen][i] then
for k, c in pairs(awful.client.getmarked()) do
awful.client.movetotag(tags[screen][i], c)
end
end
end))
end
-- Set keys
root.keys(globalkeys)
-- }}}
-- {{{ Hooks
-- Hook function to execute when focusing a client.
awful.hooks.focus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_focus
end
end)
-- Hook function to execute when unfocusing a client.
awful.hooks.unfocus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_normal
end
end)
-- Hook function to execute when marking a client
awful.hooks.marked.register(function (c)
c.border_color = beautiful.border_marked
end)
-- Hook function to execute when unmarking a client.
awful.hooks.unmarked.register(function (c)
c.border_color = beautiful.border_focus
end)
-- Hook function to execute when the mouse enters a client.
awful.hooks.mouse_enter.register(function (c)
-- Sloppy focus, but disabled for magnifier layout
if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
and awful.client.focus.filter(c) then
client.focus = c
end
end)
-- Hook function to execute when a new client appears.
awful.hooks.manage.register(function (c, startup)
-- If we are not managing this application at startup,
-- move it to the screen where the mouse is.
-- We only do it for filtered windows (i.e. no dock, etc).
if not startup and awful.client.focus.filter(c) then
c.screen = mouse.screen
end
if use_titlebar then
-- Add a titlebar
awful.titlebar.add(c, { modkey = modkey })
end
-- Add mouse bindings
c:buttons({
button({ }, 1, function (c) client.focus = c; c:raise() end),
button({ modkey }, 1, awful.mouse.client.move),
button({ modkey }, 3, awful.mouse.client.resize)
})
-- New client may not receive focus
-- if they're not focusable, so set border anyway.
c.border_width = beautiful.border_width
c.border_color = beautiful.border_normal
-- Check if the application should be floating.
local cls = c.class
local inst = c.instance
if floatapps[cls] then
awful.client.floating.set(c, floatapps[cls])
elseif floatapps[inst] then
awful.client.floating.set(c, floatapps[inst])
end
-- Check application->screen/tag mappings.
local target
if apptags[cls] then
target = apptags[cls]
elseif apptags[inst] then
target = apptags[inst]
end
if target then
c.screen = target.screen
awful.client.movetotag(tags[target.screen][target.tag], c)
end
-- Do this after tag mapping, so you don't see it on the wrong tag for a split second.
client.focus = c
-- Set key bindings
c:keys(clientkeys)
-- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master.
-- awful.client.setslave(c)
-- Honor size hints: if you want to drop the gaps between windows, set this to false.
c.size_hints_honor = false
end)
-- Hook function to execute when arranging the screen.
-- (tag switch, new client, etc)
awful.hooks.arrange.register(function (screen)
local layout = awful.layout.getname(awful.layout.get(screen))
if layout and beautiful["layout_" ..layout] then
mylayoutbox[screen].image = image(beautiful["layout_" .. layout])
else
mylayoutbox[screen].image = nil
end
-- Give focus to the latest client in history if no window has focus
-- or if the current window is a desktop or a dock one.
if not client.focus then
local c = awful.client.focus.history.get(screen, 0)
if c then client.focus = c end
end
end)
-- Hook called every second
awful.hooks.timer.register(1, function ()
-- For unix time_t lovers
-- mytextbox.text = " " .. os.time() .. " time_t "
-- Otherwise use:
mytextbox.text = " " .. os.date() .. " "
end)
-- }}}
Sorry about the lack of comments in the file. Honestly, I don't know lua properly either Lots of googling before messing around with the file for me, but it works.
The theme it refers to was a copy of /usr/share/awesome/themes/default (or whatever the path to the original default theme is) where I changed the background and the awesome_icon. The theme file is below:
---------------------------
-- Default awesome theme --
---------------------------
font = sans 8
bg_normal = #222222
bg_focus = #535d6c
bg_urgent = #ff0000
bg_minimize = #444444
fg_normal = #aaaaaa
fg_focus = #ffffff
fg_urgent = #ffffff
fg_minimize = #ffffff
border_width = 1
border_normal = #000000
border_focus = #535d6c
border_marked = #91231c
-- There are another variables sets
-- overriding the default one when
-- defined, the sets are:
-- [taglist|tasklist]_[bg|fg]_[focus|urgent]
-- titlebar_[bg|fg]_[normal|focus]
-- Example:
-- taglist_bg_focus = #ff0000
-- Display the taglist squares
taglist_squares_sel = /home/lswest/.config/awesome/lswest/taglist/squarefw.png
taglist_squares_unsel = /home/lswest/.config/awesome/lswest/taglist/squarew.png
tasklist_floating_icon = /home/lswest/.config/awesome/lswest/tasklist/floatingw.png
-- Variables set for theming menu
-- menu_[bg|fg]_[normal|focus]
-- menu_[border_color|border_width]
menu_submenu_icon = /home/lswest/.config/awesome/lswest/submenu.png
menu_height = 15
menu_width = 100
-- You can add as many variables as
-- you wish and access them by using
-- beautiful.variable in your rc.lua
-- bg_widget = #cc0000
-- Define the image to load
titlebar_close_button_normal = /home/lswest/.config/awesome/lswest/titlebar/close.png
titlebar_close_button_focus = /home/lswest/.config/awesome/lswest/titlebar/closer.png
-- You can use your own command to set your wallpaper
wallpaper_cmd = awsetbg "/home/lswest/Pictures/Hyperion/Wallpapers/GIMP'd/shattered ice2.jpg"
-- You can use your own layout icons like this:
layout_fairh = /home/lswest/.config/awesome/lswest/layouts/fairhw.png
layout_fairv = /home/lswest/.config/awesome/lswest/layouts/fairvw.png
layout_floating = /home/lswest/.config/awesome/lswest/layouts/floatingw.png
layout_magnifier = /home/lswest/.config/awesome/lswest/layouts/magnifierw.png
layout_max = /home/lswest/.config/awesome/lswest/layouts/maxw.png
layout_tilebottom = /home/lswest/.config/awesome/lswest/layouts/tilebottomw.png
layout_tileleft = /home/lswest/.config/awesome/lswest/layouts/tileleftw.png
layout_tile = /home/lswest/.config/awesome/lswest/layouts/tilew.png
layout_tiletop = /home/lswest/.config/awesome/lswest/layouts/tiletopw.png
-- awesome_icon = /usr/share/awesome/icons/awesome64.png
awesome_icon = /home/lswest/Pictures/icons/archlinux-icon-crystal-256.png
Last edited by lswest (2009-05-05 07:58:49)
Lswest <- the first letter of my username is a lowercase "L".
"...the Linux philosophy is "laugh in the face of danger". Oops. Wrong one. "Do it yourself". That's it." - Linus Torvalds
Offline
Offline
Its bmpanel with my own theme, can share it if anyone is interessted.
Please share your theme with us, it is so great!
Offline
Now with home-made smart placement of floating windows! I love extending XMonad .
That's by far the cleanest xmonad setup I've seen. Congrats
I'd go for named workspaces though . 1 2 3 4 etc. is just mediocre
MacGregor DESPITE THEM!
7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Offline
Now with home-made smart placement of floating windows! I love extending XMonad .
Care to share your xmonad.hs and .conkyrc ?
The day Microsoft makes a product that doesn't suck, is the day they make a vacuum cleaner.
--------------------------------------------------------------------------------------------------------------
But if they tell you that I've lost my mind, maybe it's not gone just a little hard to find...
Offline