Created
November 9, 2012 02:44
-
-
Save anonymous/4043393 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| require('awful') | |
| require('awful.autofocus') | |
| require('awful.rules') | |
| require('beautiful') | |
| require('naughty') | |
| require('obvious.battery') | |
| require('debian.menu') | |
| beautiful.init('.config/awesome/themes/custom/theme.lua') | |
| mod = 'Mod4' | |
| shift = 'Shift' | |
| ctrl = 'Control' | |
| keys = { | |
| global_prev_tag = { { mod }, 'h' }, | |
| global_next_tag = { { mod }, 'l' }, | |
| global_prev_win = { { mod }, 'k' }, | |
| global_next_win = { { mod }, 'j' }, | |
| global_main_menu = { { mod }, 'space' }, | |
| global_run = { { mod, ctrl }, 'space' }, | |
| global_fancy_run = { { mod, shift }, 'space' }, | |
| global_swap_prev = { { mod, shift }, 'k' }, | |
| global_swap_next = { { mod, shift }, 'j' }, | |
| global_goto_last = { { mod }, '\'' }, | |
| global_goto_master = { { mod }, ';' }, | |
| global_run_terminal = { { mod }, 'Return' }, | |
| global_run_browser = { { mod, ctrl }, 'Return' }, | |
| global_quit = { { mod, ctrl }, 'BackSpace' }, | |
| global_restart = { { mod, shift }, 'BackSpace' }, | |
| global_grow_master = { { mod, ctrl }, 'l' }, | |
| global_shrink_master = { { mod, ctrl }, 'h' }, | |
| global_inc_masters = { { mod }, ']' }, | |
| global_dec_masters = { { mod }, '[' }, | |
| global_inc_cols = { { mod, ctrl }, ']' }, | |
| global_dec_cols = { { mod, ctrl }, '[' }, | |
| global_vert_tile = { { mod }, 't' }, | |
| global_horiz_tile = { { mod, ctrl }, 't' }, | |
| global_float = { { mod }, 'f' }, | |
| global_run_lua = { { mod }, '/' }, | |
| global_reset_geom = { { mod }, '0' }, | |
| global_toggle_panel = { { mod }, '`' }, | |
| global_win_menu = { { mod }, 'Tab' }, | |
| global_goto_urgent = { { mod }, 'u' }, | |
| global_video_autoconf = { { }, 'XF86Display' }, | |
| win_close = { { mod }, 'BackSpace' }, | |
| win_toggle_float = { { mod }, '\\' }, | |
| win_toggle_max = { { mod }, '=' }, | |
| win_toggle_min = { { mod }, '-' }, | |
| win_swap_master = { { mod, shift }, ';' }, | |
| } | |
| buttons = { | |
| tag_select = { { }, 1 }, | |
| tag_move_win = { { shift }, 1 }, | |
| tag_toggle_win = { { ctrl }, 1 }, | |
| tag_toggle_shown = { { }, 3 }, | |
| tag_prev = { { }, 4 }, | |
| tag_next = { { }, 5 }, | |
| winlist_select = { { }, 1 }, | |
| winlist_toggle_max = { { ctrl }, 1 }, | |
| winlist_toggle_float = { { }, 2 }, | |
| winlist_close = { { ctrl }, 2 }, | |
| winlist_menu = { { }, 3 }, | |
| winlist_toggle_min = { { ctrl }, 3 }, | |
| winlist_prev = { { }, 4 }, | |
| winlist_next = { { }, 5 }, | |
| layout_prev_click = { { }, 1 }, | |
| layout_prev_scroll = { { }, 4 }, | |
| layout_next_click = { { }, 3 }, | |
| layout_next_scroll = { { }, 5 }, | |
| desk_main_menu = { { }, 3 }, | |
| desk_prev_tag = { { }, 4 }, | |
| desk_next_tag = { { }, 5 }, | |
| win_select = { { }, 1 }, | |
| win_move = { { mod }, 1 }, | |
| win_close = { { mod, ctrl }, 2 }, | |
| win_resize = { { mod }, 3 }, | |
| win_toggle_float = { { mod }, 2 }, | |
| win_toggle_max = { { mod, ctrl }, 1 }, | |
| win_toggle_min = { { mod, ctrl }, 3 }, | |
| } | |
| awful.menu.menu_keys.up = { 'k', 'Up' } | |
| awful.menu.menu_keys.down = { 'j', 'Down' } | |
| awful.menu.menu_keys.back = { 'h', 'Left' } | |
| awful.menu.menu_keys.exec = { 'l', 'Right', 'Return' } | |
| awful.menu.menu_keys.close = { 'Escape' } | |
| terminal = 'roxterm' | |
| browser = 'firefox' | |
| myconfigmenu = { | |
| { 'audio', 'pavucontrol' }, | |
| { 'video', 'arandr' }, | |
| } | |
| myawesomemenu = { | |
| { 'restart', awesome.restart }, | |
| { 'quit', awesome.quit }, | |
| } | |
| mymainmenu = awful.menu({ | |
| items = { | |
| { 'terminal', terminal }, | |
| { 'web', browser }, | |
| { 'config', myconfigmenu }, | |
| { 'debian', debian.menu.Debian_menu.Debian }, | |
| { 'awesome', myawesomemenu }, | |
| } | |
| }) | |
| function key(k, f) return awful.key(keys[k][1], keys[k][2], f) end | |
| function button(b, f) return awful.button(buttons[b][1], buttons[b][2], f) end | |
| layouts = { | |
| awful.layout.suit.tile, | |
| awful.layout.suit.tile.bottom, | |
| awful.layout.suit.max, | |
| } | |
| tags = {} | |
| for s = 1, screen.count() do | |
| tags[s] = awful.tag({ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, s, layouts[1]) | |
| end | |
| mylauncher = awful.widget.launcher({ | |
| image = image(beautiful.awesome_icon), | |
| menu = mymainmenu, | |
| }) | |
| mytextclock = awful.widget.textclock({ align = 'right' }, " %F %H:%M") | |
| mybattery = obvious.battery() | |
| mysystray = widget({ type = 'systray' }) | |
| mywibox = {} | |
| mypromptbox = {} | |
| mylayoutbox = {} | |
| mytaglist = {} | |
| mytaglist.buttons = awful.util.table.join( | |
| button('tag_select', awful.tag.viewonly), | |
| button('tag_toggle_win', awful.client.toggletag), | |
| button('tag_move_win', awful.client.movetotag), | |
| button('tag_toggle_shown', awful.tag.viewtoggle), | |
| button('tag_prev', awful.tag.viewprev), | |
| button('tag_next', awful.tag.viewnext) | |
| ) | |
| mytasklist = {} | |
| mytasklist.buttons = awful.util.table.join( | |
| button('winlist_select', function(c) | |
| if not c:isvisible() then | |
| awful.tag.viewonly(c:tags()[1]) | |
| end | |
| client.focus = c | |
| c:raise() | |
| end), | |
| button('winlist_toggle_max', function(c) | |
| c.maximized_vertical = not c.maximized_vertical | |
| c.maximized_horizontal = not c.maximized_horizontal | |
| end), | |
| button('winlist_toggle_float', awful.client.floating.toggle), | |
| button('winlist_close', function(c) c:kill() end), | |
| button('winlist_menu', function() | |
| if instance then | |
| instance:hide() | |
| instance = nil | |
| else | |
| instance = awful.menu.clients({ width = 256 }) | |
| end | |
| end), | |
| button('winlist_toggle_min', function(c) c.minimized = not c.minimized end), | |
| button('winlist_prev', function() | |
| awful.client.focus.byidx(-1) | |
| if client.focus then | |
| client.focus:raise() | |
| end | |
| end), | |
| button('winlist_next', function() | |
| awful.client.focus.byidx(1) | |
| if client.focus then | |
| client.focus:raise() | |
| end | |
| end) | |
| ) | |
| for s = 1, screen.count() do | |
| mypromptbox[s] = awful.widget.prompt( | |
| { layout = awful.widget.layout.horizontal.leftright } | |
| ) | |
| mylayoutbox[s] = awful.widget.layoutbox(s) | |
| mylayoutbox[s]:buttons(awful.util.table.join( | |
| button('layout_prev_click', function() awful.layout.inc(layouts, -1) end), | |
| button('layout_next_click', function() awful.layout.inc(layouts, 1) end), | |
| button('layout_prev_scroll', function() awful.layout.inc(layouts, -1) end), | |
| button('layout_next_scroll', function() awful.layout.inc(layouts, 1) end) | |
| )) | |
| mytaglist[s] = | |
| awful.widget.taglist(s, awful.widget.taglist.label.all, mytaglist.buttons) | |
| mytasklist[s] = awful.widget.tasklist( | |
| function(c) return awful.widget.tasklist.label.currenttags(c, s) end, | |
| mytasklist.buttons | |
| ) | |
| mywibox[s] = awful.wibox({ position = 'top', screen = s }) | |
| mywibox[s].widgets = { | |
| { | |
| mylauncher, | |
| mytaglist[s], | |
| mypromptbox[s], | |
| layout = awful.widget.layout.horizontal.leftright, | |
| }, | |
| mylayoutbox[s], | |
| mytextclock, | |
| mybattery, | |
| s == 1 and mysystray or nil, | |
| mytasklist[s], | |
| layout = awful.widget.layout.horizontal.rightleft, | |
| } | |
| awful.widget.layout.margins[mytextclock] = { right = 8 } | |
| awful.widget.layout.margins[mybattery] = { left = 8, right = 8 } | |
| end | |
| root.buttons(awful.util.table.join( | |
| button('desk_main_menu', function() mymainmenu:toggle() end), | |
| button('desk_prev_tag', awful.tag.viewnext), | |
| button('desk_next_tag', awful.tag.viewprev) | |
| )) | |
| globalkeys = awful.util.table.join( | |
| key('global_prev_tag', awful.tag.viewprev), | |
| key('global_next_tag', awful.tag.viewnext), | |
| key('global_prev_win', function() | |
| awful.client.focus.byidx(-1) | |
| if client.focus then | |
| client.focus:raise() | |
| end | |
| end), | |
| key('global_next_win', function() | |
| awful.client.focus.byidx(1) | |
| if client.focus then | |
| client.focus:raise() | |
| end | |
| end), | |
| key('global_main_menu', function() | |
| mymainmenu:show({ keygrabber = true, coords = { x = 0, y = 0 } }) | |
| end), | |
| key('global_swap_prev', function() awful.client.swap.byidx(-1) end), | |
| key('global_swap_next', function() awful.client.swap.byidx(1) end), | |
| key('global_goto_urgent', awful.client.urgent.jumpto), | |
| key('global_goto_last', function() | |
| awful.client.focus.history.previous() | |
| if client.focus then | |
| client.focus:raise() | |
| end | |
| end), | |
| key('global_goto_master', function() | |
| client.focus = awful.client.getmaster() | |
| end), | |
| key('global_run_terminal', function() awful.util.spawn(terminal) end), | |
| key('global_run_browser', function() awful.util.spawn(browser) end), | |
| key('global_restart', awesome.restart), | |
| key('global_quit', awesome.quit), | |
| key('global_grow_master', function() awful.tag.incmwfact(0.05) end), | |
| key('global_shrink_master', function() awful.tag.incmwfact(-0.05) end), | |
| key('global_inc_masters', function() awful.tag.incnmaster(1) end), | |
| key('global_dec_masters', function() awful.tag.incnmaster(-1) end), | |
| key('global_inc_cols', function() awful.tag.incncol(1) end), | |
| key('global_dec_cols', function() awful.tag.incncol(-1) end), | |
| key('global_vert_tile', function() awful.layout.set(layouts[1]) end), | |
| key('global_horiz_tile', function() awful.layout.set(layouts[2]) end), | |
| key('global_float', function() awful.layout.set(layouts[3]) end), | |
| key('global_run', function() mypromptbox[mouse.screen]:run() end), | |
| key('global_fancy_run', function() awful.util.spawn('gmrun') end), | |
| key('global_run_lua', function() | |
| awful.prompt.run( | |
| { prompt = 'Lua: ' }, | |
| mypromptbox[mouse.screen].widget, | |
| awful.util.eval, | |
| nil, | |
| awful.util.getdir('cache') .. '/history_eval' | |
| ) | |
| end), | |
| key('global_reset_geom', function() | |
| awful.tag.setnmaster(1) | |
| awful.tag.setncol(1) | |
| awful.tag.setmwfact(0.5) | |
| awful.tag.getdata(awful.tag.selected()).windowfact = {} | |
| end), | |
| key('global_toggle_panel', function() | |
| for s = 1, screen.count() do | |
| mywibox[s].visible = not mywibox[s].visible | |
| end | |
| end), | |
| key('global_win_menu', function () | |
| awful.menu.clients( | |
| { width = 512 }, | |
| { keygrabber = true, coords = { x = 0, y = 0 } } | |
| ) | |
| end), | |
| key('global_video_autoconf', function() awful.util.spawn('xrandr --auto') end) | |
| ) | |
| clientkeys = awful.util.table.join( | |
| key('win_close', function(c) c:kill() end), | |
| key('win_toggle_float', awful.client.floating.toggle), | |
| key('win_toggle_max', function(c) | |
| c.maximized_vertical = not c.maximized_vertical | |
| c.maximized_horizontal = not c.maximized_horizontal | |
| end), | |
| key('win_toggle_min', function(c) c.minimized = not c.minimized end), | |
| key('win_swap_master', function(c) c:swap(awful.client.getmaster()) end) | |
| ) | |
| keynumber = 0 | |
| for s = 1, screen.count() do | |
| keynumber = math.min(9, math.max(#tags[s], keynumber)) | |
| end | |
| for i = 1, keynumber do | |
| globalkeys = awful.util.table.join( | |
| globalkeys, | |
| awful.key({ mod }, '#' .. i + 9, function() | |
| local screen = mouse.screen | |
| if tags[screen][i] then | |
| awful.tag.viewonly(tags[screen][i]) | |
| end | |
| end), | |
| awful.key({ mod, ctrl }, '#' .. i + 9, function() | |
| local screen = mouse.screen | |
| if tags[screen][i] then | |
| awful.tag.viewtoggle(tags[screen][i]) | |
| end | |
| end), | |
| awful.key({ mod, 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({ mod, ctrl, 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( | |
| button('win_select', function(c) | |
| client.focus = c | |
| c:raise() | |
| end), | |
| button('win_move', awful.mouse.client.move), | |
| button('win_close', function(c) c:kill() end), | |
| button('win_resize', awful.mouse.client.resize), | |
| button('win_toggle_max', function(c) | |
| c.maximized_vertical = not c.maximized_vertical | |
| c.maximized_horizontal = not c.maximized_horizontal | |
| end), | |
| button('win_toggle_min', function(c) c.minimized = not c.minimized end), | |
| button('win_toggle_float', awful.client.floating.toggle) | |
| ) | |
| root.keys(globalkeys) | |
| awful.rules.rules = { | |
| { | |
| rule = {}, | |
| properties = { | |
| border_width = beautiful.border_width, | |
| border_color = beautiful.border_normal, | |
| focus = true, | |
| keys = clientkeys, | |
| buttons = clientbuttons, | |
| size_hints_honor = false, | |
| } | |
| }, | |
| { | |
| rule = { class = 'MPlayer' }, | |
| properties = { floating = true }, | |
| }, | |
| { | |
| rule = { class = 'pinentry' }, | |
| properties = { floating = true }, | |
| }, | |
| { | |
| rule = { instance = 'plugin-container' }, | |
| properties = { floating = true }, | |
| }, | |
| } | |
| client.add_signal('manage', function(c, startup) | |
| 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 | |
| awful.client.setslave(c) | |
| 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) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment