diff options
author | McSinyx <vn.mcsinyx@gmail.com> | 2016-05-30 16:55:41 +0700 |
---|---|---|
committer | Raphael McSinyx <vn.mcsinyx@gmail.com> | 2016-11-20 16:43:38 +0700 |
commit | 33f963509eb04b956c0dfa1283d0a4d31c347bea (patch) | |
tree | 8d37374b8644e1ceaa59f636df472414be22263c /awesome/.config/awesome/rc.lua | |
parent | 57a8d8360c85528fb477e76ef1a5f2eeb151be14 (diff) | |
download | dotfiles-33f963509eb04b956c0dfa1283d0a4d31c347bea.tar.gz |
Update 20160530
Diffstat (limited to 'awesome/.config/awesome/rc.lua')
-rw-r--r-- | awesome/.config/awesome/rc.lua | 763 |
1 files changed, 474 insertions, 289 deletions
diff --git a/awesome/.config/awesome/rc.lua b/awesome/.config/awesome/rc.lua index 7b41742..4785931 100644 --- a/awesome/.config/awesome/rc.lua +++ b/awesome/.config/awesome/rc.lua @@ -5,64 +5,78 @@ awful.rules = require("awful.rules") require("awful.autofocus") -- Widget and layout library local wibox = require("wibox") +local vicious = require("vicious") -- Theme handling library local beautiful = require("beautiful") -- Notification library local naughty = require("naughty") local menubar = require("menubar") --- Vicious and Lain -local vicious = require("vicious") -- Load Debian menu entries require("debian.menu") --- Launch a composting manager ---awful.util.spawn_with_shell("compton -r 6 -o .50 -l -9 -t -9 -c -C &") - -- {{{ Error handling -- Check if awesome encountered an error during startup and fell back to -- another config (This code will only ever execute for the fallback config) if awesome.startup_errors then - naughty.notify({ preset = naughty.config.presets.critical, - title = "Oops, there were errors during startup!", - text = awesome.startup_errors }) + naughty.notify({ + preset = naughty.config.presets.critical, + title = "Oops, there were errors during startup!", + text = awesome.startup_errors + }) end -- Handle runtime errors after startup do local in_error = false - awesome.connect_signal("debug::error", function (err) - -- Make sure we don't go into an endless error loop - if in_error then return end - in_error = true - - naughty.notify({ preset = naughty.config.presets.critical, - title = "Oops, an error happened!", - text = err }) - in_error = false - end) + awesome.connect_signal( + "debug::error", + function(err) + -- Make sure we don't go into an endless error loop + if in_error then return end + in_error = true + + naughty.notify({ + preset = naughty.config.presets.critical, + title = "Oops, an error happened!", + text = err + }) + in_error = false + end + ) end -- }}} -- {{{ Variable definitions -- Themes define colours, icons, font and wallpapers. -beautiful.init("~/.config/awesome/themes/gruvbox/theme.lua") - +beautiful.init("/home/cnx/.config/awesome/themes/gruvbox/theme.lua") + +-- This is used later as the default terminal and editor to run. +terminal = "x-terminal-emulator" +editor = "gvim" +editor_cmd = terminal .. " -e vim" + +-- 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. -local layouts = -{ - --lain.layout.uselessfair, - --lain.layout.uselessfair.horizontal, +local layouts = { + --awful.layout.suit.floating, + --awful.layout.suit.tile.left, + --awful.layout.suit.tile.top, awful.layout.suit.fair, awful.layout.suit.fair.horizontal, - awful.layout.suit.magnifier, + --awful.layout.suit.spiral, + --awful.layout.suit.spiral.dwindle, + --awful.layout.suit.max, awful.layout.suit.max.fullscreen, awful.layout.suit.tile.bottom, awful.layout.suit.tile, - --lain.layout.uselesstile.bottom, - --lain.layout.uselesstile + awful.layout.suit.magnifier } -- }}} @@ -80,37 +94,37 @@ awful.util.spawn_with_shell("hsetroot -solid '#282828'") 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]) + 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 -mymainmenu = awful.menu( debian.menu.Debian_menu.Debian ) +myawesomemenu = { + {"manual", terminal .. " -e man awesome"}, + {"edit config", editor_cmd .. " " .. awesome.conffile}, + {"restart", awesome.restart}, + {"quit", awesome.quit} +} + +mymainmenu = awful.menu({items = { + {"awesome", myawesomemenu, beautiful.awesome_icon}, + {"Debian", debian.menu.Debian_menu.Debian}, + {"open terminal", terminal} +}}) + +mylauncher = awful.widget.launcher({ + image = beautiful.awesome_icon, + menu = mymainmenu +}) -- Menubar configuration ---menubar.utils.terminal = "uxterm" -- Set the terminal for applications that require it +menubar.utils.terminal = terminal -- Set the terminal for applications that require it -- }}} -- {{{ Wibox --- 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, function(t) awful.tag.viewnext(awful.tag.getscreen(t)) end), - awful.button({ }, 5, function(t) awful.tag.viewprev(awful.tag.getscreen(t)) end) - ) - -- Create a textclock widget -myclock_text = awful.widget.textclock( - "<span color='#3c3836'> #%u %FT%R</span>", - 60) +myclock_text = awful.widget.textclock("<span color='#3c3836'> #%u %FT%R</span>") myclock = wibox.widget.background() myclock:set_widget(myclock_text) myclock:set_bg("#d65d0e") @@ -123,7 +137,8 @@ vicious.register( function(widget, args) return("<span color='#3c3836'> CPU%03d%%</span>"):format(args[1]) end, - 5) + 5 +) mycpuwidget = wibox.widget.background() mycpuwidget:set_widget(mycpuwidget_text) mycpuwidget:set_bg("#d79921") @@ -136,7 +151,8 @@ vicious.register( function(widget, args) return("<span color='#3c3836'> MEM%03d%%</span>"):format(args[1]) end, - 5) + 5 +) mymemwidget = wibox.widget.background() mymemwidget:set_widget(mymemwidget_text) mymemwidget:set_bg("#98971a") @@ -147,72 +163,36 @@ vicious.register( mybatwidget_text, vicious.widgets.bat, function(widget, args) - return("<span color='#3c3836'> %s%03d%%</span>"):format(args[1], - args[2]) + return("<span color='#3c3836'> %s%03d%%</span>"):format( + args[1], + args[2] + ) end, 5, - "C11F") + "C11F" +) mybatwidget = wibox.widget.background() mybatwidget:set_widget(mybatwidget_text) mybatwidget:set_bg("#689d6a") -- Create a volume widget ---function update_volume(widget) --- local fd = io.popen("amixer sget Master") --- local status = fd:read("*all") --- fd:close() --- -- local volume = tonumber(string.match(status, "(%d?%d?%d)%%")) / 100 --- local volume = string.match(status, "(%d?%d?%d)%%") --- volume = string.format("VOL%03d", volume) --- status = string.match(status, "%[(o[^%]]*)%]") --- if string.find(status, "on", 1, true) then --- volume = volume .. "%" --- else --- volume = volume .. "M" --- end --- widget:set_markup("<span color='#3c3836'> " .. volume .. "</span>") ---end - myvolwidget_text = wibox.widget.textbox() ---update_volume(myvolwidget_text) vicious.register( myvolwidget_text, vicious.widgets.volume, function(widget, args) - return("<span color='#3c3836'> %s%03d%%</span>"):format(args[2], - args[1]) + return("<span color='#3c3836'> %s%03d%%</span>"):format( + args[2], + args[1] + ) end, 1, - "Master") + "Master" +) myvolwidget = wibox.widget.background() myvolwidget:set_widget(myvolwidget_text) myvolwidget:set_bg("#458588") --- Create network usage widgets ---myupwidget_text = wibox.widget.textbox() ---vicious.register( --- myupwidget_text, --- vicious.widgets.net, --- function (widget, args) --- return ("<span color='#3c3836'> ↑%04.0fkB</span>"):format(args["{wlp2s2 up_kb}"]) --- end, --- 1) ---myupwidget = wibox.widget.background() ---myupwidget:set_widget(myupwidget_text) ---myupwidget:set_bg("#689d6a") --- ---mydownwidget_text = wibox.widget.textbox() ---vicious.register( --- mydownwidget_text, --- vicious.widgets.net, --- function (widget, args) --- return ("<span color='#3c3836'> ↓%04.0fkB</span>"):format(args["{wlp2s2 down_kb}"]) --- end, --- 1) ---mydownwidget = wibox.widget.background() ---mydownwidget:set_widget(mydownwidget_text) ---mydownwidget:set_bg("#458588") - -- Arrows myarrow0 = wibox.widget.imagebox() myarrow0:set_image(beautiful.arrow0) @@ -227,6 +207,85 @@ myarrow4:set_image(beautiful.arrow4) myarrow5 = wibox.widget.imagebox() myarrow5:set_image(beautiful.arrow5) +-- 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, + function(t) + awful.tag.viewnext(awful.tag.getscreen(t)) + end + ), + awful.button( + {}, + 5, + function(t) + awful.tag.viewprev(awful.tag.getscreen(t)) + end + ) +) +mytasklist = {} +mytasklist.buttons = awful.util.table.join( + awful.button( + {}, + 1, + function(c) + if c == client.focus then + c.minimized = true + else + -- Without this, the following + -- :isvisible() makes no sense + c.minimized = false + if not c:isvisible() then + awful.tag.viewonly(c:tags()[1]) + end + -- This will also un-minimize + -- the client, if needed + client.focus = c + c:raise() + end + end + ), + awful.button( + {}, + 3, + function() + if instance then + instance:hide() + instance = nil + else + instance = awful.menu.clients({ + theme = {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({prompt = " "}) @@ -234,30 +293,40 @@ for s = 1, screen.count() do -- 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))) + 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.filter.all, mytaglist.buttons) + mytaglist[s] = awful.widget.taglist( + s, + awful.widget.taglist.filter.all, + mytaglist.buttons + ) + + -- Create a tasklist widget + mytasklist[s] = awful.widget.tasklist( + s, + awful.widget.tasklist.filter.currenttags, + mytasklist.buttons + ) -- Create the wibox - mywibox[s] = awful.wibox({ position = "top", height = "24", screen = s }) + mywibox[s] = awful.wibox({position = "top", height = "24", screen = s}) -- Widgets that are aligned to the left local left_layout = wibox.layout.fixed.horizontal() + --left_layout:add(mylauncher) left_layout:add(myclock) - --left_layout:add(myarrow0) left_layout:add(myarrow1) left_layout:add(mycpuwidget) left_layout:add(myarrow2) left_layout:add(mymemwidget) left_layout:add(myarrow3) - --left_layout:add(myupwidget) left_layout:add(mybatwidget) left_layout:add(myarrow4) left_layout:add(myvolwidget) - --left_layout:add(mydownwidget) left_layout:add(myarrow5) left_layout:add(mypromptbox[s]) @@ -270,6 +339,7 @@ for s = 1, screen.count() do -- Now bring it all together (with the tasklist in the middle) local layout = wibox.layout.align.horizontal() layout:set_left(left_layout) + --layout:set_middle(mytasklist[s]) layout:set_right(right_layout) mywibox[s]:set_widget(layout) @@ -278,172 +348,264 @@ 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) + 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, }, "0", function () awful.screen.focus_relative( 1) end), - awful.key({ modkey, }, "j", - function () + 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 () + end + ), + awful.key( + {modkey}, + "k", + function() awful.client.focus.byidx(-1) if client.focus then client.focus:raise() end - end), - awful.key({ modkey, "Shift" }, "w", function () mymainmenu:show() end), + end + ), + awful.key({modkey}, "w", function() mymainmenu:show() 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, }, "u", awful.client.urgent.jumpto), - awful.key({ modkey, }, "Tab", - function () + 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}, "0", 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), + if client.focus then client.focus:raise() end + end + ), -- Standard program - awful.key({ modkey, }, "t", function () awful.util.spawn("uxterm") end), - awful.key({ modkey, "Shift" }, "t", function () awful.util.spawn("uxterm -e su -") end), - awful.key({ modkey, }, "b", function () awful.util.spawn("x-www-browser") end), - awful.key({ modkey, }, "v", function () awful.util.spawn("gvim") end), - awful.key({ modkey, }, "f", function () awful.util.spawn("spacefm") end), - awful.key({ modkey, }, "p", function () awful.util.spawn("uxterm -e python3") end), - awful.key({ modkey, }, "m", function () awful.util.spawn("uxterm -e mutt") end), - awful.key({ modkey, }, "r", function () awful.util.spawn("uxterm -e ranger") end), - awful.key({ modkey, }, "c", function () awful.util.spawn("uxterm -e cmus") end), - awful.key({ modkey, }, "w", function () awful.util.spawn("uxterm -e weechat") end), - awful.key({ modkey, }, "s", function () awful.util.spawn("slock xset dpms force off") end), - awful.key({ modkey, "Shift" }, "s", function () awful.util.spawn("slock systemctl suspend -i") end), - awful.key({ modkey, "Shift" }, "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, }, "Return", function () awful.layout.inc(layouts, 1) end), - awful.key({ modkey, "Shift" }, "Return", function () awful.layout.inc(layouts, -1) end), - - awful.key({ modkey, "Shift" }, "n", awful.client.restore), - + awful.key({modkey, "Control"}, "r", awesome.restart), + -- Not needed / Too dangerous + --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}, "Return", function() awful.layout.inc(layouts, 1) end), + awful.key( + {modkey, "Shift"}, + "Return", + function() awful.layout.inc(layouts, -1) end + ), + -- Not used + --awful.key({modkey, "Control"}, "n", awful.client.restore), -- Prompt - awful.key({ modkey, "Shift" }, ";", 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) + awful.key( + {modkey, "Shift"}, + ";", + 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 + ), -- Menubar - -- awful.key({ modkey }, "p", function() menubar.show() end) + awful.key({modkey, "Shift"}, "p", function() menubar.show() end), + + -- Applications + awful.key({modkey}, "t", function() awful.util.spawn(terminal) end), + awful.key( + {modkey, "Shift"}, + "t", + function() awful.util.spawn(terminal .. " -e su -") end + ), + awful.key( + {modkey}, + "p", + function() awful.util.spawn(terminal .. " -e python3") end + ), + awful.key( + {modkey}, + "r", + function() awful.util.spawn(terminal .. " -e ranger") end + ), + awful.key( + {modkey}, + "c", + function() awful.util.spawn(terminal .. " -e cmus") end + ), + awful.key( + {modkey}, + "m", + function() awful.util.spawn(terminal .. " -e mutt") end + ), + awful.key({modkey}, "v", function() awful.util.spawn(editor) end), + awful.key({modkey}, "f", function() awful.util.spawn("firefox") end), + awful.key({modkey}, "z", function() awful.util.spawn("zathura") end), + awful.key({modkey}, "s", function() awful.util.spawn("slock") end), + awful.key( + {modkey, "Shift"}, + "s", + function() awful.util.spawn("slock systemctl -i suspend") end + ) ) -- Adjusting volumes -globalkeys = awful.util.table.join(globalkeys, awful.key({ }, "XF86AudioRaiseVolume", function() - awful.util.spawn("amixer sset Master 5%+", false) - --update_volume(myvolwidget_text) -end)) -globalkeys = awful.util.table.join(globalkeys, awful.key({ }, "XF86AudioLowerVolume", function() - awful.util.spawn("amixer sset Master 5%-", false) - --update_volume(myvolwidget_text) -end)) -globalkeys = awful.util.table.join(globalkeys, awful.key({ }, "XF86AudioMute", function() - awful.util.spawn("amixer sset Master toggle", false) - -- The 2 following lines were needed at least on my configuration, otherwise it would get stuck muted - -- However, if the channel you're using is "Speaker" or "Headpphone" - -- instead of "Master", you'll have to comment out their corresponding line below. - awful.util.spawn("amixer sset Speaker unmute", false) - awful.util.spawn("amixer sset Headphone unmute", false) - --update_volume(myvolwidget_text) -end)) +globalkeys = awful.util.table.join( + globalkeys, + awful.key({}, "XF86AudioRaiseVolume", + function() awful.util.spawn("amixer sset Master 5%+", false) end) +) +globalkeys = awful.util.table.join( + globalkeys, + awful.key( + {}, + "XF86AudioLowerVolume", + function() awful.util.spawn("amixer sset Master 5%-", false) end + ) +) +globalkeys = awful.util.table.join( + globalkeys, + awful.key( + {}, + "XF86AudioMute", + function() + awful.util.spawn("amixer sset Master toggle", false) + -- The 2 following lines were needed at least on my configuration, + -- otherwise it would get stuck muted. However, if the channel + -- you're using is "Speaker" or "Headpphone" instead of "Master", + -- you'll have to comment out their corresponding line below. + awful.util.spawn("amixer sset Speaker unmute", false) + awful.util.spawn("amixer sset Headphone unmute", false) + end + ) +) clientkeys = awful.util.table.join( - awful.key({ modkey, "Shift" }, "f", function (c) c.fullscreen = not c.fullscreen end), - awful.key({ modkey, }, "q", function (c) c:kill() end), - --awful.key({ modkey, "Control" }, "Return", awful.client.floating.toggle ), - awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end), - awful.key({ modkey, "Shift" }, "0", awful.client.movetoscreen ), - --awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end), - --awful.key({ modkey, }, "m", - -- function (c) + awful.key({modkey}, "q", function(c) c:kill() end), + awful.key( + {modkey, "Control"}, + "Return", + function(c) c:swap(awful.client.getmaster()) end + ), + awful.key({modkey, "Shift"}, "0", awful.client.movetoscreen), + awful.key( + {modkey, "Control"}, + "t", + function(c) awful.titlebar.toggle(c) end + ) + -- Not used + --awful.key({modkey}, "f", function(c) c.fullscreen = not c.fullscreen end), + --awful.key({modkey, "Control"}, "space", awful.client.floating.toggle), + --awful.key({modkey}, "t", function(c) c.ontop = not c.ontop end), + --awful.key( + -- {modkey}, + -- "n", + -- function(c) + -- -- The client currently has the input focus, so it cannot be + -- -- minimized, since minimized clients can't have the focus. + -- c.minimized = true + -- end + --), + --awful.key( + -- {modkey}, + -- "m", + -- function(c) -- c.maximized_horizontal = not c.maximized_horizontal -- c.maximized_vertical = not c.maximized_vertical - -- end), - awful.key({ modkey, }, "n", - function (c) - -- The client currently has the input focus, so it cannot be - -- minimized, since minimized clients can't have the focus. - c.minimized = true - end) + -- 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, 9 do - globalkeys = awful.util.table.join(globalkeys, + globalkeys = awful.util.table.join( + globalkeys, -- View tag only. - awful.key({ modkey }, "#" .. i + 9, - function () - local screen = mouse.screen - local tag = awful.tag.gettags(screen)[i] - if tag then - awful.tag.viewonly(tag) - end - end), + awful.key( + {modkey}, + "#" .. i + 9, + function() + local screen = mouse.screen + local tag = awful.tag.gettags(screen)[i] + if tag then + awful.tag.viewonly(tag) + end + end + ), -- Toggle tag. - awful.key({ modkey, "Control" }, "#" .. i + 9, - function () - local screen = mouse.screen - local tag = awful.tag.gettags(screen)[i] - if tag then - awful.tag.viewtoggle(tag) - end - end), + awful.key( + {modkey, "Control"}, + "#" .. i + 9, + function() + local screen = mouse.screen + local tag = awful.tag.gettags(screen)[i] + if tag then + awful.tag.viewtoggle(tag) + end + end + ), -- Move client to tag. - awful.key({ modkey, "Shift" }, "#" .. i + 9, - function () - if client.focus then - local tag = awful.tag.gettags(client.focus.screen)[i] - if tag then - awful.client.movetotag(tag) - end - end - end), + awful.key( + {modkey, "Shift"}, + "#" .. i + 9, + function() + if client.focus then + local tag = awful.tag.gettags(client.focus.screen)[i] + if tag then + awful.client.movetotag(tag) + end + end + end + ), -- Toggle tag. - awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9, - function () - if client.focus then - local tag = awful.tag.gettags(client.focus.screen)[i] - if tag then - awful.client.toggletag(tag) - end - end - end)) + awful.key( + {modkey, "Control", "Shift"}, + "#" .. i + 9, + function() + if client.focus then + local tag = awful.tag.gettags(client.focus.screen)[i] + if tag then + awful.client.toggletag(tag) + end + 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)) + 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) @@ -453,78 +615,90 @@ root.keys(globalkeys) -- Rules to apply to new clients (through the "manage" signal). awful.rules.rules = { -- All clients will match this rule. - { rule = { }, - properties = { border_width = beautiful.border_width, - border_color = beautiful.border_normal, - focus = awful.client.focus.filter, - size_hints_honor = false, - raise = true, - keys = clientkeys, - buttons = clientbuttons } }, - --{ rule = { class = "X-terminal-emulator" }, - -- properties = { size_hints_honor = false } }, - --{ rule = { class = "Gvim" }, - -- properties = { size_hints_honor = false } }, - { rule = { class = "Volti-mixer" }, - properties = { floating = true } }, - { rule = { class = "vlc" }, - properties = { floating = true } }, - { rule = { class = "Gcolor2" }, - properties = { floating = true } }, - { rule = { class = "pinentry" }, - properties = { floating = true } }, - { rule = { class = "Twf" }, - properties = { floating = true } }, - { rule = { class = "Galculator" }, - properties = { floating = true } }, + { + rule = {}, + properties = { + border_width = beautiful.border_width, + border_color = beautiful.border_normal, + size_hints_honor = false, + focus = awful.client.focus.filter, + raise = 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 = "Gcolor2"}, properties = {floating = true}}, + {rule = {class = "Torbrowser-launcher"}, properties = {floating = true}}, + {rule = {class = "Twf"}, properties = {floating = true}}, -- Set Firefox to always map on tags number 2 of screen 1. - -- { rule = { class = "Firefox" }, - -- properties = { tag = tags[1][2] } }, + --{rule = {class = "Firefox"}, properties = {tag = tags[1][2]}}, } -- }}} -- {{{ Signals --- Signal function to execute when a new client appears. -client.connect_signal("manage", function (c, startup) - -- Enable sloppy focus - c:connect_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) +-- Signal functionto execute when a new client appears. +client.connect_signal( + "manage", + function(c, startup) + -- Enable sloppy focus + c:connect_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 + -- 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 - elseif not c.size_hints.user_position and not c.size_hints.program_position then + elseif not c.size_hints.user_position + and not c.size_hints.program_position then -- Prevent clients from being unreachable after screen count change awful.placement.no_offscreen(c) end - --local titlebars_enabled = true - --if titlebars_enabled and (c.type == "normal" or c.type == "dialog") then - if awful.client.floating.get(c) then + local titlebars_enabled = true + if titlebars_enabled and (c.type == "normal" or c.type == "dialog") then -- buttons for the titlebar local buttons = awful.util.table.join( - awful.button({ }, 1, function() + awful.button( + {}, + 1, + function() client.focus = c c:raise() awful.mouse.client.move(c) - end), - awful.button({ }, 3, function() + end + ), + awful.button( + {}, + 3, + function() client.focus = c c:raise() awful.mouse.client.resize(c) - end) - ) + end + ) + ) + + -- Widgets that are aligned to the right + local right_layout = wibox.layout.fixed.horizontal() + --right_layout:add(awful.titlebar.widget.iconwidget(c)) + right_layout:buttons(buttons) -- Widgets that are aligned to the left local left_layout = wibox.layout.fixed.horizontal() @@ -536,20 +710,31 @@ client.connect_signal("manage", function (c, startup) -- The title goes in the middle local middle_layout = wibox.layout.flex.horizontal() - local title = awful.titlebar.widget.titlewidget(c) - title:set_align("center") - middle_layout:add(title) + --local title = awful.titlebar.widget.titlewidget(c) + --title:set_align("center") + --middle_layout:add(title) middle_layout:buttons(buttons) -- Now bring it all together local layout = wibox.layout.align.horizontal() layout:set_left(left_layout) + layout:set_right(right_layout) layout:set_middle(middle_layout) - awful.titlebar(c):set_widget(layout) + awful.titlebar(c, {size = "6"}):set_widget(layout) + end + + if not awful.client.floating.get(c) then + awful.titlebar.hide(c) end end) -client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end) -client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end) +client.connect_signal( + "focus", + function(c) c.border_color = beautiful.border_focus end +) +client.connect_signal( + "unfocus", + function(c) c.border_color = beautiful.border_normal end +) -- }}} |