]> git.madduck.net Git - etc/awesome.git/commitdiff

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:

follow config changes
authormartin f. krafft <madduck@madduck.net>
Tue, 23 Sep 2008 13:00:57 +0000 (15:00 +0200)
committermartin f. krafft <madduck@madduck.net>
Tue, 23 Sep 2008 13:00:57 +0000 (15:00 +0200)
.config/awesome/rc.lua

index 554ecbbce94a0eb9349a17bf031fca7f3aada56b..46f6d57deb295c081b6f236e41af4429023a1f6e 100644 (file)
@@ -1,8 +1,5 @@
 -- awesome 3 configuration file
 
-AWESOME_DATADIR = "/home/madduck/code/awesome"
-package.path = AWESOME_DATADIR .. "/lib/?.lua;" .. package.path
-
 -- Include awesome library, with lots of useful function!
 require("awful")
 require("tabulous")
@@ -10,7 +7,7 @@ require("beautiful")
 
 -- {{{ Variable definitions
 -- This is a file path to a theme file which will defines colors.
-theme_path = AWESOME_DATADIR .. "/themes/default"
+theme_path = "/home/madduck/code/awesome/share/awesome/themes/default"
 
 -- This is used later as the default terminal to run.
 terminal = "x-terminal-emulator"
@@ -29,6 +26,8 @@ layouts =
     "tileleft",
     "tilebottom",
     "tiletop",
+    "fairh",
+    "fairv",
     "magnifier",
     "max",
 --    "spiral",
@@ -103,7 +102,7 @@ for s = 1, screen.count() do
     tags[s] = {}
     -- Create 9 tags per screen.
     for tagnumber = 1, 9 do
-        tags[s][tagnumber] = tag({ name = tagnumber, layout = layouts[1] })
+        tags[s][tagnumber] = tag({ name = tagnumber, layout = layouts[6] })
         -- Add tags to screen one by one
         -- split at 0.5/50% exactly
         -- tags[s][tagnumber].mwfact = 0.5
@@ -117,19 +116,23 @@ end
 -- {{{ Statusbar
 -- Create a taglist widget
 mytaglist = widget({ type = "taglist", name = "mytaglist" })
-mytaglist:mouse_add(mouse({}, 1, function (object, tag) awful.tag.viewonly(tag) end))
-mytaglist:mouse_add(mouse({ modkey }, 1, function (object, tag) awful.client.movetotag(tag) end))
-mytaglist:mouse_add(mouse({}, 3, function (object, tag) tag.selected = not tag.selected end))
-mytaglist:mouse_add(mouse({ modkey }, 3, function (object, tag) awful.client.toggletag(tag) end))
-mytaglist:mouse_add(mouse({ }, 4, awful.tag.viewnext))
-mytaglist:mouse_add(mouse({ }, 5, awful.tag.viewprev))
+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:mouse_add(mouse({ }, 1, function (object, c) client.focus = c; c:raise() end))
-mytasklist:mouse_add(mouse({ }, 4, function () awful.client.focusbyidx(1) end))
-mytasklist:mouse_add(mouse({ }, 5, function () awful.client.focusbyidx(-1) end))
+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
 
 -- Create a textbox widget
@@ -137,9 +140,10 @@ mytimebox = widget({ type = "textbox", name = "mytimebox", align = "right" })
 mybatterybox = widget({ type = "textbox", name = "mybatterybox", align = "right" })
 mypromptbox = widget({ type = "textbox", name = "mypromptbox", align = "left" })
 
--- Create an iconbox widget
-myiconbox = widget({ type = "textbox", name = "myiconbox", align = "left" })
-myiconbox.text = "<bg image=\"" .. AWESOME_DATADIR .. "/icons/awesome16.png\" resize=\"true\"/>"
+-- Create a laucher widget
+mylauncher = awful.widget.launcher({ name = "mylauncher",
+                                     image = "/home/madduck/code/awesome/share/awesome/icons/awesome16.png",
+                                     command = terminal .. " -e man awesome"})
 
 -- Create a systray
 mysystray = widget({ type = "systray", name = "mysystray", align = "right" })
@@ -148,12 +152,14 @@ mysystray = widget({ type = "systray", name = "mysystray", align = "right" })
 -- We need one layoutbox per screen.
 mylayoutbox = {}
 for s = 1, screen.count() do
-    mylayoutbox[s] = widget({ type = "textbox", name = "mylayoutbox", align = "right" })
-    mylayoutbox[s]:mouse_add(mouse({ }, 1, function () awful.layout.inc(layouts, 1) end))
-    mylayoutbox[s]:mouse_add(mouse({ }, 3, function () awful.layout.inc(layouts, -1) end))
-    mylayoutbox[s]:mouse_add(mouse({ }, 4, function () awful.layout.inc(layouts, 1) end))
-    mylayoutbox[s]:mouse_add(mouse({ }, 5, function () awful.layout.inc(layouts, -1) end))
-    mylayoutbox[s].text = "<bg image=\"" .. AWESOME_DATADIR .. "/layouts/tilew.png\" resize=\"true\"/>"
+    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")
 end
 
 --Battery widget
@@ -179,15 +185,15 @@ batterywidget:bar_properties_set('bat', {
 -- Create a statusbar for each screen and add it
 mystatusbar = {}
 for s = 1, screen.count() do
-    mystatusbar[s] = statusbar({ position = "top", name = "mystatusbar" .. s,
-                                 fg = beautiful.fg_normal, bg = beautiful.bg_normal })
+    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,
+--        mybatterybox,
         mytimebox,
         mylayoutbox[s],
         s == screen.count() and mysystray or nil
@@ -197,9 +203,11 @@ end
 -- }}}
 
 -- {{{ Mouse bindings
-awesome.mouse_add(mouse({ }, 3, function () awful.spawn(terminal) end))
-awesome.mouse_add(mouse({ }, 4, awful.tag.viewnext))
-awesome.mouse_add(mouse({ }, 5, awful.tag.viewprev))
+awesome.buttons({
+    button({ }, 3, function () awful.spawn(terminal) end),
+    button({ }, 4, awful.tag.viewnext),
+    button({ }, 5, awful.tag.viewprev)
+})
 -- }}}
 
 -- {{{ Key bindings
@@ -228,19 +236,17 @@ for i = 1, keynumber do
                    end):add()
     keybinding({ modkey, "Shift" }, i,
                    function ()
-                       local sel = client.focus
-                       if sel then
-                           if tags[sel.screen][i] then
-                               awful.client.movetotag(tags[sel.screen][i])
+                       if client.focus then
+                           if tags[client.focus.screen][i] then
+                               awful.client.movetotag(tags[client.focus.screen][i])
                            end
                        end
                    end):add()
     keybinding({ modkey, "Control", "Shift" }, i,
                    function ()
-                       local sel = client.focus
-                       if sel then
-                           if tags[sel.screen][i] then
-                               awful.client.toggletag(tags[sel.screen][i])
+                       if client.focus then
+                           if tags[client.focus.screen][i] then
+                               awful.client.toggletag(tags[client.focus.screen][i])
                            end
                        end
                    end):add()
@@ -258,6 +264,7 @@ 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()
@@ -368,49 +375,50 @@ end
 
 -- {{{ Hooks
 -- Hook function to execute when focusing a client.
-function hook_focus(c)
+awful.hooks.focus.register(function (c)
     if not awful.client.ismarked(c) then
         c.border_color = beautiful.border_focus
     end
-end
+end)
 
 -- Hook function to execute when unfocusing a client.
-function hook_unfocus(c)
+awful.hooks.unfocus.register(function (c)
     if not awful.client.ismarked(c) then
         c.border_color = beautiful.border_normal
     end
-end
+end)
 
 -- Hook function to execute when marking a client
-function hook_marked(c)
+awful.hooks.marked.register(function (c)
     c.border_color = beautiful.border_marked
-end
+end)
 
 -- Hook function to execute when unmarking a client
-function hook_unmarked(c)
+awful.hooks.unmarked.register(function (c)
     c.border_color = beautiful.border_focus
-end
+end)
 
 -- Hook function to execute when the mouse is over a client.
-function hook_mouseover(c)
+awful.hooks.mouse_over.register(function (c)
     -- Sloppy focus, but disabled for magnifier layout
-    if awful.layout.get(c.screen) ~= "magnifier" then
+    if awful.layout.get(c.screen) ~= "magnifier"
+        and awful.client.focus.filter(c) then
         client.focus = c
     end
-end
+end)
 
 -- Hook function to execute when a new client appears.
-function hook_manage(c)
-    -- Set floating placement to be smart!
-    c.floating_placement = "smart"
+awful.hooks.manage.register(function (c)
     if use_titlebar then
         -- Add a titlebar
         awful.titlebar.add(c, { modkey = modkey })
     end
     -- Add mouse bindings
-    c:mouse_add(mouse({ }, 1, function (c) client.focus = c; c:raise() end))
-    c:mouse_add(mouse({ modkey }, 1, function (c) c:mouse_move() end))
-    c:mouse_add(mouse({ modkey }, 3, function (c) c:mouse_resize() end))
+    c:buttons({
+        button({ }, 1, function (c) client.focus = c; c:raise() end),
+        button({ modkey }, 1, function (c) c:mouse_move() end),
+        button({ modkey }, 3, function (c) c:mouse_resize() end)
+    })
     -- New client may not receive focus
     -- if they're not focusable, so set border anyway.
     c.border_width = beautiful.border_width
@@ -442,27 +450,31 @@ function hook_manage(c)
         awful.client.movetotag(tags[target.screen][target.tag], c)
     end
 
-    -- Honor size hints
+    -- 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.              |      if maxapps[inst] or maxapps[cls] then                                                              
     c.honorsizehints = true
 
     -- Maximise some
     if maxapps[inst] or maxapps[cls] then
       awful.client.maximize(c)
     end
-end
+end)
 
 -- Hook function to execute when arranging the screen
 -- (tag switch, new client, etc)
-function hook_arrange(screen)
+awful.hooks.arrange.register(function (screen)
     local layout = awful.layout.get(screen)
     if layout then
-        mylayoutbox[screen].text =
-            "<bg image=\"/home/madduck/code/awesome/share/awesome/icons/layouts/" .. awful.layout.get(screen) .. "w.png\" resize=\"true\"/>"
-        else
-            mylayoutbox[screen].text = "No layout."
+        mylayoutbox[screen].image = image("/home/madduck/code/awesome/share/awesome/icons/layouts/" .. layout .. "w.png")
+    else
+        mylayoutbox[screen].image = nil
     end
 
-    -- If no window has focus, give focus to the latest in history
+    -- 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
@@ -470,9 +482,8 @@ function hook_arrange(screen)
 
     -- Uncomment if you want mouse warping
     --[[
-    local sel = client.focus
-    if sel then
-        local c_c = sel:coords()
+    if client.focus then
+        local c_c = client.focus:coords()
         local m_c = mouse.coords()
 
         if m_c.x < c_c.x or m_c.x >= c_c.x + c_c.width or
@@ -483,15 +494,15 @@ function hook_arrange(screen)
         end
     end
     ]]
-end
+end)
 
 -- Hook called every second
-function hook_timer()
+awful.hooks.timer.register(1, function ()
     -- For unix time_t lovers
     -- mytextbox.text = " " .. os.time() .. " time_t "
     -- Otherwise use:
     mytimebox.text = " " .. os.date() .. " "
-end
+end)
 
 -- Hook called every sixty seconds
 function hook_battery()
@@ -558,14 +569,6 @@ end
 --}}}
 
 -- Set up some hooks
-awful.hooks.focus.register(hook_focus)
-awful.hooks.unfocus.register(hook_unfocus)
-awful.hooks.marked.register(hook_marked)
-awful.hooks.unmarked.register(hook_unmarked)
-awful.hooks.manage.register(hook_manage)
-awful.hooks.mouseover.register(hook_mouseover)
-awful.hooks.arrange.register(hook_arrange)
-awful.hooks.timer.register(1, hook_timer)
 awful.hooks.timer.register(120, hook_battery)
 -- awful.hooks.timer.register(5, get_bat)
 -- }}}