@farkinid
Sorry for the delay.
Did you try what I posted previously, and did it work?
Any other developments?
Added on March 12, 2011, 9:16 pmOn a side note, I'm posting some of my old configs from other tiling WMs, in case anyone wants to play with em.
This one is for AwesomeWM 3.4.4.
Awesome uses Lua, whic I find very tedious. Plus it tends to change syntax from version to version, so what you see here (3.4.4) might not work for later version. I've lost interest in AwesomeWM, tbh, it tries too hard to be a DE, and it has other "features" that I'm not too fond of... I think it should be renamed AwfulWM, honestly.
Anyways, enough ranting, here's my old ~/.config/awesome/rc.lua
I offer no support whatsoever. If you have questions, search Google or the Awesome/Debian/Ubuntu/Arch forums. I can't be bothered with the sh*t WM anymore, an I take no responsibility over anything that happens.
Pastebin with syntax highlighting =
http://pastebin.com/xZNcm76RSame posted below without highlighting;
CODE
— Standard awesome library
require("awful")
require("awful.autofocus")
require("awful.rules")
— Theme handling library
require("beautiful")
— Notification library
require("naughty")
— Load Debian menu entries
require("debian.menu")
— {{{ Variable definitions
— Themes define colours, icons, and wallpapers
beautiful.init("/usr/share/awesome/themes/default/theme.lua")
— This is used later as the default terminal and editor to run.
terminal = "urxvtc"
editor = os.getenv("EDITOR") or "gvim"
editor_cmd = terminal .. " -e " .. editor
— editor_cmd = gvim
awful.util.spawn(os.getenv('HOME').."/scripts/")
— 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.floating,
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.spiral,
awful.layout.suit.spiral.dwindle,
awful.layout.suit.max,
awful.layout.suit.max.fullscreen,
awful.layout.suit.magnifier
}
— }}}
— { Tags
— Define a tag table which hold all screen tags.
tags = {}
for s = 1, screen.count() do
— Each screen has its own tag table.
tags[s] = awful.tag({ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, s, layouts[1])
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 = { { "Terminal", terminal },
{ "Firefox", ("firefox") }, { "Home", ("thunar") },
{ "Chromium", ("chrome") },
{ "Thunderbird", ("thunderbird") },
{ "awesome", myawesomemenu, beautiful.awesome_icon },
{ "Debian", debian.menu.Debian_menu.Debian },
{ "Exit", ("/home/moogerfooger/.config/awesome/exit") }
}
})
awful.util.spawn(os.getenv("PATH"))
awful.util.spawn_with_shell("urxvtd -q -o -f")
awful.util.spawn_with_shell("mocp -S")
awful.util.spawn_with_shell("gnome-setting-deamon")
awful.util.spawn_with_shell("xbindkeys")
awful.util.spawn_with_shell("xcompmgr")
awful.util.spawn_with_shell("volwheel")
awful.util.spawn_with_shell("nm-applet")
—awful.util.spawn_with_shell("feh —bg-scale /home/moogerfooger/pic/dusk.png")
awful.util.spawn_with_shell("/home/moogerfooger/.config/conky/start.sh")
awful.util.spawn_with_shell("fcitx -d")
mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
menu = mymainmenu })
— }}}
— {{{ Wibox
— 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
— Create a promptbox for each screen
mypromptbox[s] = awful.widget.prompt({ layout = awful.widget.layout.horizontal.leftright })
— 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 })
— Add widgets to the wibox - order matters
mywibox[s].widgets = {
{
mylauncher,
mytaglist[s],
mypromptbox[s],
layout = awful.widget.layout.horizontal.leftright
},
mylayoutbox[s],
mytextclock,
s == 1 and mysystray or nil,
mytasklist[s],
layout = awful.widget.layout.horizontal.rightleft
}
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)
))
volbar.widget:buttons(awful.util.table.join(
awful.button({ }, 1, function () exec("kmix") end),
— awful.button({ }, 2, function () exec("amixer -q sset Master toggle") end),
— awful.button({ }, 4, function () exec("amixer -q sset PCM 2dB+", false) end),
— awful.button({ }, 5, function () exec("amixer -q sset PCM 2dB-", false) end)
)) — Register assigned buttons
volwidget:buttons(volbar.widget:buttons())
— }
— {{{ 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),
—dmenu
awful.key({modkey }, "p", function()
awful.util.spawn_with_shell( "exe=‘dmenu_path | dmenu -nf ’#888888' -nb '#222222' -sf '#ffffff' -sb '#285577'` && exec $exe")
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, }, "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,
focus = true,
keys = clientkeys,
buttons = clientbuttons } },
{ rule = { class = "MPlayer" },
properties = { floating = true } },
{ rule = { class = "pinentry" },
properties = { floating = true } },
{ rule = { class = "gimp" },
properties = { floating = true } },
{ rule = { class = "Kicad" },
properties = { floating = true } },
{ rule = { class = "Dia" },
properties = { floating = true } },
{ rule = { class = "Feh" },
properties = { floating = true } },
{ rule = { class = "gpicview" },
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)
— }}}
This post has been edited by G-17: Mar 12 2011, 09:18 PM