]> git.madduck.net Git - etc/awesome.git/blobdiff - .config/awesome/rc.lua

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

add awsetbg to PATH
[etc/awesome.git] / .config / awesome / rc.lua
index 46f6d57deb295c081b6f236e41af4429023a1f6e..232909528e5f01395ba1fadc526ca0dd1752ac99 100644 (file)
@@ -9,8 +9,10 @@ require("beautiful")
 -- This is a file path to a theme file which will defines colors.
 theme_path = "/home/madduck/code/awesome/share/awesome/themes/default"
 
 -- This is a file path to a theme file which will defines colors.
 theme_path = "/home/madduck/code/awesome/share/awesome/themes/default"
 
--- This is used later as the default terminal to run.
+-- This is used later as the default terminal and editor to run.
 terminal = "x-terminal-emulator"
 terminal = "x-terminal-emulator"
+editor = "sensible-editor"
+editor_cmd = terminal .. " -e " .. editor
 
 -- Default modkey.
 -- Usually, Mod4 is the key with a logo between Control and Alt.
 
 -- Default modkey.
 -- Usually, Mod4 is the key with a logo between Control and Alt.
@@ -65,7 +67,8 @@ maxapps =
     ["Navigator"] = true,
     -- jpilot is -v
     ["-v"] = true,
     ["Navigator"] = true,
     -- jpilot is -v
     ["-v"] = true,
-    ["Xpdf"] = true
+    ["Xpdf"] = true,
+    ["gscan2pdf"] = true
 }
 
 -- Applications to be moved to a pre-defined tag by class or instance.
 }
 
 -- Applications to be moved to a pre-defined tag by class or instance.
@@ -113,54 +116,80 @@ for s = 1, screen.count() do
 end
 -- }}}
 
 end
 -- }}}
 
--- {{{ Statusbar
--- Create a taglist widget
-mytaglist = widget({ type = "taglist", name = "mytaglist" })
-mytaglist:buttons({
-    button({ }, 1, function (object, tag) awful.tag.viewonly(tag) end),
-    button({ modkey }, 1, function (object, tag) awful.client.movetotag(tag) end),
-    button({ }, 3, function (object, tag) tag.selected = not tag.selected end),
-    button({ modkey }, 3, function (object, tag) awful.client.toggletag(tag) end),
-    button({ }, 4, awful.tag.viewnext),
-    button({ }, 5, awful.tag.viewprev)
-})
-mytaglist.label = awful.widget.taglist.label.all
-
--- Create a tasklist widget
-mytasklist = widget({ type = "tasklist", name = "mytasklist" })
-mytasklist:buttons({
-    button({ }, 1, function (object, c) client.focus = c; c:raise() end),
-    button({ }, 4, function () awful.client.focusbyidx(1) end),
-    button({ }, 5, function () awful.client.focusbyidx(-1) end)
-})
-mytasklist.label = awful.widget.tasklist.label.currenttags
-
+-- {{{ Wibox
 -- Create a textbox widget
 -- Create a textbox widget
-mytimebox = widget({ type = "textbox", name = "mytimebox", align = "right" })
-mybatterybox = widget({ type = "textbox", name = "mybatterybox", align = "right" })
-mypromptbox = widget({ type = "textbox", name = "mypromptbox", align = "left" })
+mytextbox = widget({ type = "textbox", name = "mytextbox", 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 = {
+   {"awesome", myawesomemenu, "/home/madduck/code/awesome/share/awesome/icons/awesome16.png" },
+   {"open terminal", terminal }
+}
 
 
--- Create a laucher widget
 mylauncher = awful.widget.launcher({ name = "mylauncher",
                                      image = "/home/madduck/code/awesome/share/awesome/icons/awesome16.png",
 mylauncher = awful.widget.launcher({ name = "mylauncher",
                                      image = "/home/madduck/code/awesome/share/awesome/icons/awesome16.png",
-                                     command = terminal .. " -e man awesome"})
+                                     menu = { id="mymainmenu", items=mymainmenu } })
 
 -- Create a systray
 mysystray = widget({ type = "systray", name = "mysystray", align = "right" })
 
 
 -- Create a systray
 mysystray = widget({ type = "systray", name = "mysystray", align = "right" })
 
--- Create an iconbox widget which will contains an icon indicating which layout we're using.
--- We need one layoutbox per screen.
+-- Create textbox widgets
+mytimebox = widget({ type = "textbox", name = "mytimebox", align = "right" })
+mybatterybox = widget({ type = "textbox", name = "mybatterybox", align = "right" })
+
+-- Create a wibox for each screen and add it
+mywibox = {}
+mypromptbox = {}
 mylayoutbox = {}
 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) client.focus = c; c:raise() end),
+                       button({ }, 3, function () 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
     mylayoutbox[s] = widget({ type = "imagebox", name = "mylayoutbox", align = "right" })
 for s = 1, screen.count() do
     mylayoutbox[s] = widget({ type = "imagebox", name = "mylayoutbox", 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)
-    })
-    mylayoutbox[s].image = image("/home/madduck/code/awesome/share/awesome/icons/layouts/tilew.png")
+    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 = { mytaglist[s],
+                           mytasklist[s],
+                           mypromptbox[s],
+                           mybatterybox,
+                           mytimebox,
+                           mylayoutbox[s],
+                           s == screen.count() and mysystray or nil }
+    mywibox[s].screen = s
 end
 end
+-- }}}
 
 --Battery widget
 batterywidget = widget({ type = 'progressbar', name = 'batterywidget' })
 
 --Battery widget
 batterywidget = widget({ type = 'progressbar', name = 'batterywidget' })
@@ -182,29 +211,10 @@ batterywidget:bar_properties_set('bat', {
 })
 -- }}}
 
 })
 -- }}}
 
--- Create a statusbar for each screen and add it
-mystatusbar = {}
-for s = 1, screen.count() do
-    mystatusbar[s] = wibox({ position = "top", name = "mystatusbar" .. s,
-                             fg = beautiful.fg_normal, bg = beautiful.bg_normal })
-    -- Add widgets to the statusbar - order matters
-    mystatusbar[s]:widgets({
-        mytaglist,
-        mytasklist,
-        mypromptbox,
---        batterywidget,
---        mybatterybox,
-        mytimebox,
-        mylayoutbox[s],
-        s == screen.count() and mysystray or nil
-    })
-    mystatusbar[s].screen = s
-end
--- }}}
 
 -- {{{ Mouse bindings
 awesome.buttons({
 
 -- {{{ Mouse bindings
 awesome.buttons({
-    button({ }, 3, function () awful.spawn(terminal) end),
+    button({ }, 3, function () awful.menu.new({ id="mymainmenu", items=mymainmenu }) end),
     button({ }, 4, awful.tag.viewnext),
     button({ }, 5, awful.tag.viewprev)
 })
     button({ }, 4, awful.tag.viewnext),
     button({ }, 5, awful.tag.viewprev)
 })
@@ -257,17 +267,20 @@ keybinding({ modkey }, "Right", awful.tag.viewnext):add()
 keybinding({ modkey }, "Escape", awful.tag.history.restore):add()
 
 -- Standard program
 keybinding({ modkey }, "Escape", awful.tag.history.restore):add()
 
 -- Standard program
-keybinding({ modkey }, "Return", function () awful.spawn(terminal) end):add()
+keybinding({ modkey }, "Return", function () awful.util.spawn(terminal) end):add()
 
 
-keybinding({ modkey, "Control" }, "r", awesome.restart):add()
+keybinding({ modkey, "Control" }, "r", function ()
+                                           mypromptbox[mouse.screen].text =
+                                               awful.util.escape(awful.util.restart())
+                                        end):add()
 keybinding({ modkey, "Shift" }, "q", awesome.quit):add()
 
 -- Client manipulation
 keybinding({ modkey }, "m", awful.client.maximize):add()
 keybinding({ modkey }, "f", function () client.focus.fullscreen = not client.focus.fullscreen end):add()
 keybinding({ modkey, "Shift" }, "c", function () client.focus:kill() end):add()
 keybinding({ modkey, "Shift" }, "q", awesome.quit):add()
 
 -- Client manipulation
 keybinding({ modkey }, "m", awful.client.maximize):add()
 keybinding({ modkey }, "f", function () client.focus.fullscreen = not client.focus.fullscreen end):add()
 keybinding({ modkey, "Shift" }, "c", function () client.focus:kill() end):add()
-keybinding({ modkey }, "j", function () awful.client.focusbyidx(1); client.focus:raise() end):add()
-keybinding({ modkey }, "k", function () awful.client.focusbyidx(-1);  client.focus:raise() end):add()
+keybinding({ modkey }, "j", function () awful.client.focus.byidx(1); client.focus:raise() end):add()
+keybinding({ modkey }, "k", function () awful.client.focus.byidx(-1);  client.focus:raise() end):add()
 keybinding({ modkey, "Shift" }, "j", function () awful.client.swap(1) end):add()
 keybinding({ modkey, "Shift" }, "k", function () awful.client.swap(-1) end):add()
 keybinding({ modkey, "Control" }, "j", function () awful.screen.focus(1) end):add()
 keybinding({ modkey, "Shift" }, "j", function () awful.client.swap(1) end):add()
 keybinding({ modkey, "Shift" }, "k", function () awful.client.swap(-1) end):add()
 keybinding({ modkey, "Control" }, "j", function () awful.screen.focus(1) end):add()
@@ -291,24 +304,28 @@ keybinding({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -
 
 -- Prompt
 keybinding({ modkey }, "F1", function ()
 
 -- Prompt
 keybinding({ modkey }, "F1", function ()
-                                 awful.prompt.run({ prompt = "Run: " }, mypromptbox, awful.spawn, awful.completion.bash,
-os.getenv("HOME") .. "/.cache/awesome/history") end):add()
+                                 awful.prompt.run({ prompt = "Run: " }, mypromptbox[mouse.screen], awful.util.spawn, awful.completion.bash,
+                                                  awful.util.getdir("cache") .. "/history")
+                             end):add()
 keybinding({ modkey }, "F4", function ()
 keybinding({ modkey }, "F4", function ()
-                                 awful.prompt.run({ prompt = "Run Lua code: " }, mypromptbox, awful.eval, awful.prompt.bash,
-os.getenv("HOME") .. "/.cache/awesome/history_eval") end):add()
+                                 awful.prompt.run({ prompt = "Run Lua code: " }, mypromptbox[mouse.screen], awful.util.eval, awful.prompt.bash,
+                                                  awful.util.getdir("cache") .. "/history_eval")
+                             end):add()
+
 keybinding({ modkey, "Ctrl" }, "i", function ()
 keybinding({ modkey, "Ctrl" }, "i", function ()
-                                        if mypromptbox.text then
-                                            mypromptbox.text = nil
+                                        local s = mouse.screen
+                                        if mypromptbox[s].text then
+                                            mypromptbox[s].text = nil
                                         else
                                         else
-                                            mypromptbox.text = nil
+                                            mypromptbox[s].text = nil
                                             if client.focus.class then
                                             if client.focus.class then
-                                                mypromptbox.text = "Class: " .. client.focus.class .. " "
+                                                mypromptbox[s].text = "Class: " .. client.focus.class .. " "
                                             end
                                             if client.focus.instance then
                                             end
                                             if client.focus.instance then
-                                                mypromptbox.text = mypromptbox.text .. "Instance: ".. client.focus.instance .. " "
+                                                mypromptbox[s].text = mypromptbox[s].text .. "Instance: ".. client.focus.instance .. " "
                                             end
                                             if client.focus.role then
                                             end
                                             if client.focus.role then
-                                                mypromptbox.text = mypromptbox.text .. "Role: ".. client.focus.role
+                                                mypromptbox[s].text = mypromptbox[s].text .. "Role: ".. client.focus.role
                                             end
                                         end
                                     end):add()
                                             end
                                         end
                                     end):add()
@@ -393,13 +410,13 @@ awful.hooks.marked.register(function (c)
     c.border_color = beautiful.border_marked
 end)
 
     c.border_color = beautiful.border_marked
 end)
 
--- Hook function to execute when unmarking a client
+-- Hook function to execute when unmarking a client.
 awful.hooks.unmarked.register(function (c)
     c.border_color = beautiful.border_focus
 end)
 
 awful.hooks.unmarked.register(function (c)
     c.border_color = beautiful.border_focus
 end)
 
--- Hook function to execute when the mouse is over a client.
-awful.hooks.mouse_over.register(function (c)
+-- 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) ~= "magnifier"
         and awful.client.focus.filter(c) then
     -- Sloppy focus, but disabled for magnifier layout
     if awful.layout.get(c.screen) ~= "magnifier"
         and awful.client.focus.filter(c) then
@@ -454,7 +471,7 @@ awful.hooks.manage.register(function (c)
     -- i.e. put it at the end of others instead of setting it master.
     -- awful.client.setslave(c)
 
     -- 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.              |      if maxapps[inst] or maxapps[cls] then                                                              
+    -- Honor size hints: if you want to drop the gaps between windows, set this to false.
     c.honorsizehints = true
 
     -- Maximise some
     c.honorsizehints = true
 
     -- Maximise some
@@ -463,7 +480,7 @@ awful.hooks.manage.register(function (c)
     end
 end)
 
     end
 end)
 
--- Hook function to execute when arranging the screen
+-- Hook function to execute when arranging the screen.
 -- (tag switch, new client, etc)
 awful.hooks.arrange.register(function (screen)
     local layout = awful.layout.get(screen)
 -- (tag switch, new client, etc)
 awful.hooks.arrange.register(function (screen)
     local layout = awful.layout.get(screen)
@@ -483,7 +500,7 @@ awful.hooks.arrange.register(function (screen)
     -- Uncomment if you want mouse warping
     --[[
     if client.focus then
     -- Uncomment if you want mouse warping
     --[[
     if client.focus then
-        local c_c = client.focus:coords()
+        local c_c = client.focus:geometry()
         local m_c = mouse.coords()
 
         if m_c.x < c_c.x or m_c.x >= c_c.x + c_c.width or
         local m_c = mouse.coords()
 
         if m_c.x < c_c.x or m_c.x >= c_c.x + c_c.width or
@@ -521,7 +538,7 @@ function get_acpibatt()
     local s = f:read('*l')
     f:close()
     if not s then
     local s = f:read('*l')
     f:close()
     if not s then
-      return laststring;
+      return '-';
     end
 
     -- Battery 0: Discharging, 89%, 00:02:14 remaining
     end
 
     -- Battery 0: Discharging, 89%, 00:02:14 remaining
@@ -544,7 +561,7 @@ function get_acpibatt()
     elseif status == 'Discarching' then
       status = 'd';
     else
     elseif status == 'Discarching' then
       status = 'd';
     else
-      status = '';
+      status = '-';
     end
 
     return percent; -- .. ' (' .. status .. ')'; -- .. ' ' .. time .. ' left';
     end
 
     return percent; -- .. ' (' .. status .. ')'; -- .. ' ' .. time .. ' left';
@@ -576,27 +593,27 @@ awful.hooks.timer.register(120, hook_battery)
 cmdmodkey = "Mod3"
 
 -- xmms2 & sound
 cmdmodkey = "Mod3"
 
 -- xmms2 & sound
-keybinding({ cmdmodkey }, "Prior", function () awful.spawn("amixer set Master 2+") end):add()
-keybinding({ cmdmodkey }, "Next", function () awful.spawn("amixer set Master 2-") end):add()
-keybinding({ cmdmodkey }, "Up", function () awful.spawn("amixer set PCM 2+") end):add()
-keybinding({ cmdmodkey }, "Down", function () awful.spawn("amixer set PCM 2-") end):add()
-keybinding({ cmdmodkey }, "Home", function () awful.spawn("amixer set Mic toggle") end):add()
-keybinding({ cmdmodkey }, "End", function () awful.spawn("amixer set Master toggle") end):add()
-keybinding({ cmdmodkey }, "Left", function () awful.spawn("xmms2 prev") end):add()
-keybinding({ cmdmodkey }, "Right", function () awful.spawn("xmms2 next") end):add()
-keybinding({ cmdmodkey }, "space", function () awful.spawn("xmms2 toggleplay") end):add()
-keybinding({ cmdmodkey }, "backslash", function () awful.spawn("xmms2 current | head -1 | xmessage -nearmouse -timeout 5 -file -") end):add()
-keybinding({ cmdmodkey, "Shift" }, "backslash", function () awful.spawn("xmms2 list | xmessage -nearmouse -timeout 5 -file -") end):add()
+keybinding({ cmdmodkey }, "Prior", function () awful.util.spawn("amixer set Master 2+") end):add()
+keybinding({ cmdmodkey }, "Next", function () awful.util.spawn("amixer set Master 2-") end):add()
+keybinding({ cmdmodkey }, "Up", function () awful.util.spawn("amixer set PCM 2+") end):add()
+keybinding({ cmdmodkey }, "Down", function () awful.util.spawn("amixer set PCM 2-") end):add()
+keybinding({ cmdmodkey }, "Home", function () awful.util.spawn("amixer set Mic toggle") end):add()
+keybinding({ cmdmodkey }, "End", function () awful.util.spawn("amixer set Master toggle") end):add()
+keybinding({ cmdmodkey }, "Left", function () awful.util.spawn("xmms2 prev") end):add()
+keybinding({ cmdmodkey }, "Right", function () awful.util.spawn("xmms2 next") end):add()
+keybinding({ cmdmodkey }, "space", function () awful.util.spawn("xmms2 toggleplay") end):add()
+keybinding({ cmdmodkey }, "backslash", function () awful.util.spawn("xmms2 current | head -1 | xmessage -nearmouse -timeout 5 -file -") end):add()
+keybinding({ cmdmodkey, "Shift" }, "backslash", function () awful.util.spawn("xmms2 list | xmessage -nearmouse -timeout 5 -file -") end):add()
 
 -- misc apps
 
 -- misc apps
-keybinding({ cmdmodkey }, "n", function () awful.spawn("sensible-browser") end):add()
-keybinding({ cmdmodkey }, "m", function () awful.spawn(terminal .. " -e mutt -f =store") end):add()
-keybinding({ cmdmodkey }, "t", function () awful.spawn(terminal) end):add()
-keybinding({ cmdmodkey }, "c", function () awful.spawn(terminal .. " -e python") end):add()
-keybinding({ cmdmodkey }, "r", function () awful.spawn("gmrun") end):add()
-keybinding({ cmdmodkey }, "j", function () awful.spawn("jpilot") end):add()
-keybinding({ cmdmodkey }, "x", function () awful.spawn("/sbin/start-stop-daemon --start --background --exec /usr/bin/xscreensaver; xscreensaver-command -lock") end):add()
-keybinding({ cmdmodkey, "Shift" }, "x", function () awful.spawn("xscreensaver-command -exit") end):add()
+keybinding({ cmdmodkey }, "n", function () awful.util.spawn("sensible-browser") end):add()
+keybinding({ cmdmodkey }, "m", function () awful.util.spawn(terminal .. " -e mutt -f =store") end):add()
+keybinding({ cmdmodkey }, "t", function () awful.util.spawn(terminal) end):add()
+keybinding({ cmdmodkey }, "c", function () awful.util.spawn(terminal .. " -e python") end):add()
+keybinding({ cmdmodkey }, "r", function () awful.util.spawn("gmrun") end):add()
+keybinding({ cmdmodkey }, "j", function () awful.util.spawn("jpilot") end):add()
+keybinding({ cmdmodkey }, "x", function () awful.util.spawn("/sbin/start-stop-daemon --start --background --exec /usr/bin/xscreensaver; xscreensaver-command -lock") end):add()
+keybinding({ cmdmodkey, "Shift" }, "x", function () awful.util.spawn("xscreensaver-command -exit") end):add()
 
 -- Highlight statusbars on the screen that has focus, 
 -- set this to false if you only have one screen or 
 
 -- Highlight statusbars on the screen that has focus, 
 -- set this to false if you only have one screen or