]> git.madduck.net Git - etc/awesome.git/blobdiff - .awesomerc.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:

keep track of HEAD
[etc/awesome.git] / .awesomerc.lua
index efe4f9460f84500d96f43f1cc02dfc405860cd2e..216f8aea24622c7872ce3e264950b56b86f13622 100644 (file)
@@ -1,14 +1,14 @@
 -- awesome 3 configuration file
 
 AWESOME_DATADIR = "/home/madduck/code"
-package.path = AWESOME_DATADIR .. "/awesome/?.lua;" .. package.path
+package.path = AWESOME_DATADIR .. "/awesome/lib/?.lua;" .. package.path
 
 -- Include awesome library, with lots of useful function!
 require("awful")
 require("tabulous")
 
 -- Uncomment this to activate autotabbing
-tabulous.autotab_start()
+-- tabulous.autotab_start()
 
 -- {{{ Variable definitions
 -- This is used later as the default terminal to run.
@@ -35,8 +35,18 @@ layouts =
     "floating"
 }
 
+-- Table of clients that should be set floating
+floatings =
+{
+    ["mplayer"] = true,
+    ["pinentry"] = true,
+    ["GIMP"] = true,
+    ["twinkle"] = true,
+    ["Add-ons"] = true
+}
+
 -- Color & Appearance definitions, we use these later to display things
-font = "RotisSansSerif 8"
+font = "RotisSansSerif 10"
 border_width = 1
 
 bg_normal = "#222222"
@@ -50,7 +60,6 @@ border_marked = "#91231C"
 
 awesome.font_set(font)
 awesome.colors_set({ fg = fg_normal, bg = bg_normal })
-awesome.resizehints_set(true)
 
 -- }}}
 
@@ -64,7 +73,8 @@ for s = 1, screen.count() do
     for tagnumber = 1, 9 do
         tags[s][tagnumber] = tag.new({ name = tagnumber })
         -- Add tags to screen one by one
-        tags[s][tagnumber]:mwfact_set(0.618033988769)
+        -- split at 0.5/50% exactly
+        tags[s][tagnumber]:mwfact_set(0.5)
         tags[s][tagnumber]:add(s)
     end
     -- I'm sure you want to see at least one tag.
@@ -81,24 +91,24 @@ mytaglist:mouse_add(mouse.new({}, 3, function (object, tag) tag:view(not tag:iss
 mytaglist:mouse_add(mouse.new({ modkey }, 3, function (object, tag) awful.client.toggletag(tag) end))
 mytaglist:mouse_add(mouse.new({ }, 4, awful.tag.viewnext))
 mytaglist:mouse_add(mouse.new({ }, 5, awful.tag.viewprev))
-mytaglist:set("text_focus", "<bg color='"..bg_focus.."'/> <span color='"..fg_focus.."'><title/></span> ")
+mytaglist:text_set({ ["focus"] = "<bg color='"..bg_focus.."'/> <span color='"..fg_focus.."'><title/></span> " })
 
 -- Create a tasklist widget
 mytasklist = widget.new({ type = "tasklist", name = "mytasklist" })
 mytasklist:mouse_add(mouse.new({ }, 1, function (object, c) c:focus_set(); c:raise() end))
 mytasklist:mouse_add(mouse.new({ }, 4, function () awful.client.focus(1) end))
 mytasklist:mouse_add(mouse.new({ }, 5, function () awful.client.focus(-1) end))
-mytasklist:set("text_focus", "<bg color='"..bg_focus.."'/> <span color='"..fg_focus.."'><title/></span> ")
+mytasklist:text_set({ ["focus"] = "<bg color='"..bg_focus.."'/> <span color='"..fg_focus.."'><title/></span> " })
 
 -- Create a textbox widget
 mytextbox = widget.new({ type = "textbox", name = "mytextbox", align = "right" })
 -- Set the default text in textbox
-mytextbox:set("text", "<b><small> awesome " .. AWESOME_VERSION .. " </small></b>")
-mymenubox = widget.new({ type = "textbox", name = "mytextbox", align = "left" })
+mytextbox:text_set("<b><small> awesome " .. AWESOME_VERSION .. " </small></b>")
+mypromptbox = widget.new({ type = "textbox", name = "mypromptbox", align = "left" })
 
 -- Create an iconbox widget
-myiconbox = widget.new({ type = "iconbox", name = "myiconbox", align = "left" })
-myiconbox:set("image", AWESOME_DATADIR .. "/awesome/icons/awesome16.png")
+myiconbox = widget.new({ type = "textbox", name = "myiconbox", align = "left" })
+myiconbox:text_set("<bg image=\"/usr/local/share/awesome/icons/awesome16.png\" resize=\"true\"/>")
 
 -- Create a systray
 mysystray = widget.new({ type = "systray", name = "mysystray", align = "right" })
@@ -107,12 +117,12 @@ mysystray = widget.new({ type = "systray", name = "mysystray", align = "right" }
 -- We need one layoutbox per screen.
 mylayoutbox = {}
 for s = 1, screen.count() do
-    mylayoutbox[s] = widget.new({ type = "iconbox", name = "myiconbox", align = "right" })
+    mylayoutbox[s] = widget.new({ type = "textbox", name = "mylayoutbox", align = "right" })
     mylayoutbox[s]:mouse_add(mouse.new({ }, 1, function () awful.layout.inc(layouts, 1) end))
     mylayoutbox[s]:mouse_add(mouse.new({ }, 3, function () awful.layout.inc(layouts, -1) end))
     mylayoutbox[s]:mouse_add(mouse.new({ }, 4, function () awful.layout.inc(layouts, 1) end))
     mylayoutbox[s]:mouse_add(mouse.new({ }, 5, function () awful.layout.inc(layouts, -1) end))
-    mylayoutbox[s]:set("image", AWESOME_DATADIR .. "/awesome/icons/layouts/tilew.png")
+    mylayoutbox[s]:text_set("<bg image=\"/usr/local/share/awesome/icons/layouts/tilew.png\" resize=\"true\"/>")
 end
 
 -- Create a statusbar for each screen and add it
@@ -124,7 +134,7 @@ for s = 1, screen.count() do
     mystatusbar[s]:widget_add(mytaglist)
     mystatusbar[s]:widget_add(myiconbox)
     mystatusbar[s]:widget_add(mytasklist)
-    mystatusbar[s]:widget_add(mymenubox)
+    mystatusbar[s]:widget_add(mypromptbox)
     mystatusbar[s]:widget_add(mytextbox)
     mystatusbar[s]:widget_add(mylayoutbox[s])
     mystatusbar[s]:add(s)
@@ -188,14 +198,15 @@ keybinding.new({ modkey, "Control" }, "r", awesome.restart):add()
 keybinding.new({ modkey, "Shift" }, "q", awesome.quit):add()
 
 -- Client manipulation
-keybinding.new({ modkey, "Shift" }, "c", function () client.focus_get():kill() end):add()
-keybinding.new({ modkey }, "j", function () awful.client.focus(1); client.focus_get():raise() end):add()
-keybinding.new({ modkey }, "k", function () awful.client.focus(-1);  client.focus_get():raise() end):add()
-keybinding.new({ modkey, "Shift" }, "j", function () awful.client.swap(1) end):add()
-keybinding.new({ modkey, "Shift" }, "k", function () awful.client.swap(-1) end):add()
-keybinding.new({ modkey, "Control" }, "j", function () awful.screen.focus(1) end):add()
-keybinding.new({ modkey, "Control" }, "k", function () awful.screen.focus(-1) end):add()
+keybinding.new({ modkey, "Shift" }, "Escape", function () client.focus_get():kill() end):add()
+keybinding.new({ modkey }, "k", function () awful.client.focus(1); client.focus_get():raise() end):add()
+keybinding.new({ modkey }, "j", function () awful.client.focus(-1);  client.focus_get():raise() end):add()
+keybinding.new({ modkey, "Shift" }, "k", function () awful.client.swap(1) end):add()
+keybinding.new({ modkey, "Shift" }, "j", function () awful.client.swap(-1) end):add()
+keybinding.new({ modkey, "Control" }, "k", function () awful.screen.focus(1) end):add()
+keybinding.new({ modkey, "Control" }, "j", function () awful.screen.focus(-1) end):add()
 keybinding.new({ modkey, "Control" }, "space", awful.client.togglefloating):add()
+keybinding.new({ modkey, "Control" }, "Return", function () client.focus_get():swap(awful.client.master()) end):add()
 keybinding.new({ modkey }, "o", awful.client.movetoscreen):add()
 
 -- Layout manipulation
@@ -208,9 +219,13 @@ keybinding.new({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end
 keybinding.new({ modkey }, "space", function () awful.layout.inc(layouts, 1) end):add()
 keybinding.new({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end):add()
 
--- Menu
-keybinding.new({ modkey }, "F1", function () awful.menu("Run: ", mymenubox, awful.spawn) end):add()
-keybinding.new({ modkey }, "F4", function () awful.menu("Run Lua code: ", mymenubox, awful.eval) end):add()
+-- Prompt
+keybinding.new({ modkey }, "F1", function ()
+                                     awful.prompt({ prompt = "Run: ", cursor_fg = fg_focus, cursor_bg = bg_focus }, mypromptbox, awful.spawn, awful.completion.bash)
+                                 end):add()
+keybinding.new({ modkey }, "F4", function ()
+                                     awful.prompt({ prompt = "Run Lua code: ", cursor_fg = fg_focus, cursor_bg = bg_focus }, mypromptbox, awful.eval, awful.prompt.bash)
+                                 end):add()
 
 --- Tabulous, tab manipulation
 keybinding.new({ modkey, "Control" }, "y", function ()
@@ -297,7 +312,7 @@ function hook_unmarked(c)
     c:border_set({ width = border_width, color = border_focus })
 end
 
--- Hook function to exeucte when the mouse is over a client.
+-- Hook function to execute when the mouse is over a client.
 function hook_mouseover(c)
     -- Sloppy focus, but disabled for magnifier layout
     if awful.layout.get(c:screen_get()) ~= "magnifier" then
@@ -315,24 +330,43 @@ function hook_manage(c)
     -- if they're not focusable, so set border anyway.
     c:border_set({ width = border_width, color = border_normal })
     c:focus_set()
-    if c:name_get():lower():find("mplayer") then
+    if floatings[c:name_get():lower()] then
         c:floating_set(true)
     end
+    -- Honor size hints
+    c:honorsizehints_set(true)
 end
 
 -- Hook function to execute when arranging the screen
 -- (tag switch, new client, etc)
 function hook_arrange(screen)
     local layout = awful.layout.get(screen)
-    mylayoutbox[screen]:set("image", AWESOME_DATADIR .. "/awesome/icons/layouts/" .. layout .. "w.png")
+    mylayoutbox[screen]:text_set("<bg image=\"/usr/local/share/awesome/icons/layouts/" .. layout .. "w.png\" resize=\"true\"/>")
+
+    -- Uncomment if you want mouse warping
+    --[[
+    local sel = client.focus_get()
+    if sel then
+        local c_c = sel:coords_get()
+        local m_c = mouse.coords_get()
+
+        if m_c.x < c_c.x or m_c.x >= c_c.x + c_c.width or
+            m_c.y < c_c.y or m_c.y >= c_c.y + c_c.height then
+            if table.maxn(m_c.buttons) == 0 then
+                mouse.coords_set(c_c.x + 5, c_c.y + 5)
+            end
+        end
+    end
+    ]]
 end
 
+
 -- Hook called every second
 function hook_timer ()
     -- For unix time_t lovers
-    -- mytextbox:set("text", " " .. os.time() .. " time_t ")
+    -- mytextbox:text_set(" " .. os.time() .. " time_t ")
     -- Otherwise use:
-    mytextbox:set("text", " " .. os.date() .. " ")
+    mytextbox:text_set(" " .. os.date() .. " ")
 end
 
 -- Set up some hooks