Advertisement
Guest User

rc.lua

a guest
Jan 17th, 2013
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 21.52 KB | None | 0 0
  1. -- Standard awesome library
  2. local gears = require("gears")
  3. local awful = require("awful")
  4. awful.rules = require("awful.rules")
  5. require("awful.autofocus")
  6. -- Theme handling library
  7. local beautiful = require("beautiful")
  8. -- Notification library
  9. local naughty = require("naughty")
  10. local vicious = require("vicious")
  11. local menubar = require("menubar")
  12. -- Widget and layout library
  13. local wibox = require("wibox")
  14. -- }}}
  15.  
  16. -- {{{ Variable definitions
  17. local home   = os.getenv("HOME")
  18. local exec   = awful.util.spawn_with_shell
  19. local sexec  = awful.util.spawn_with_shell
  20.  
  21. -- Themes define colours, icons, and wallpapers
  22. beautiful.init("/home/atilton2/.config/awesome/themes/sky/theme.lua")
  23.  
  24. -- This is used later as the default terminal and editor to run.
  25. terminal = "urxvtc"
  26. editor = "vim"
  27. editor_cmd = terminal .. " -e " .. editor
  28.  
  29. -- {{{ Error handling
  30. -- Check if awesome encountered an error during startup and fell back to
  31. -- another config (This code will only ever execute for the fallback config)
  32. if awesome.startup_errors then
  33.     naughty.notify({ preset = naughty.config.presets.critical,
  34.                      title = "Oops, there were errors during startup!",
  35.                      text = awesome.startup_errors })
  36. end
  37.  
  38. -- Handle runtime errors after startup
  39. do
  40.     local in_error = false
  41.     awesome.connect_signal("debug::error", function (err)
  42.         -- Make sure we don't go into an endless error loop
  43.         if in_error then return end
  44.         in_error = true
  45.  
  46.         naughty.notify({ preset = naughty.config.presets.critical,
  47.                          title = "Oops, an error happened!",
  48.                          text = err })
  49.         in_error = false
  50.     end)
  51. end
  52. -- }}}
  53.  
  54. -- Default modkey.
  55. -- Usually, Mod4 is the key with a logo between Control and Alt.
  56. -- If you do not like this or do not have such a key,
  57. -- I suggest you to remap Mod4 to another key using xmodmap or other tools.
  58. -- However, you can use another modifier like Mod1, but it may interact with others.
  59. modkey = "Mod1"
  60.  
  61. -- Table of layouts to cover with awful.layout.inc, order matters.
  62. layouts =
  63. {
  64.     awful.layout.suit.tile,             --1
  65.     awful.layout.suit.tile.left,        --2
  66.     awful.layout.suit.tile.bottom,      --3
  67.     awful.layout.suit.tile.top,         --4
  68.     awful.layout.suit.fair,             --5
  69.     awful.layout.suit.fair.horizontal,  --6
  70.     awful.layout.suit.spiral,           --7
  71.     awful.layout.suit.spiral.dwindle,   --8
  72.     awful.layout.suit.max,              --9
  73.     awful.layout.suit.max.fullscreen,   --10
  74.     awful.layout.suit.magnifier,        --11
  75.     awful.layout.suit.floating          --12
  76. }
  77. -- }}}
  78.  
  79. -- {{{ Tags
  80. -- Define a tag table which hold all screen tags.
  81. tags = {}
  82. for s = 1, screen.count() do
  83.     -- Each screen has its own tag table.
  84.     tags[s] = awful.tag({
  85.      "1 systerm", "2 sysweb", "3 workterm",
  86.      "4 workweb", "5 misc", "6 misc",
  87.      "7 misc", "8 misc", "9 misc"}, s,
  88.     {layouts[3], layouts[1], layouts[1], -- Tags: 1, 2, 3
  89.      layouts[1], layouts[1], layouts[1], --       4, 5 ,6
  90.      layouts[1], layouts[1], layouts[1]  --       7, 8, 9
  91.     })
  92. end
  93. -- }}}
  94.  
  95. -- {{{ Menu
  96. -- Create a laucher widget and a main menu
  97. myawesomemenu = {
  98.    { "manual", terminal .. " -e man awesome" },
  99.    { "edit config", editor_cmd .. " " .. awesome.conffile },
  100.    { "restart", awesome.restart },
  101.    { "quit", awesome.quit }
  102. }
  103.  
  104. mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
  105.                                     { "open terminal", terminal }
  106.                                   }
  107.                         })
  108.  
  109. mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
  110.                                      menu = mymainmenu })
  111.  
  112. -- Menubar configuration
  113. menubar.utils.terminal = terminal -- Set the terminal for applications that require it
  114. -- }}}
  115.  
  116. -- {{{ Wibox
  117. -- {{{ Widgets configuration
  118. -- {{{ Reusable separators
  119. local spacer         = wibox.widget.textbox(" ")
  120. local separator      = wibox.widget.textbox(" <span foreground='red'></span> ")
  121. -- }}}
  122.  
  123. -- {{{ CPU load
  124. local cpuwidget = wibox.widget.textbox()
  125. vicious.register(cpuwidget, vicious.widgets.cpu," <span foreground='#e2eeea'>load: </span><span foreground='#2e3436'>$2%</span><span foreground='#e2eeea'> - </span><span foreground='#2e3436'>$3%</span><span foreground='#e2eeea'> - </span><span foreground='#2e3436'>$4%</span><span foreground='#e2eeea'> - </span><span foreground='#2e3436'>$5%</span><span foreground='#e2eeea'> - </span><span foreground='#2e3436'>$6%</span><span foreground='#e2eeea'> - </span><span foreground='#2e3436'>$7%</span>")
  126. -- }}}
  127.  
  128. -- {{{ CPU temperature
  129. local thermalwidget  = wibox.widget.textbox()
  130. vicious.register(thermalwidget, vicious.widgets.thermal, " <span foreground='#e2eeea'>temp: </span> <span foreground='#2e3436'>$1°C</span>", 20, { "coretemp.0", "core"} )
  131. -- }}}
  132.  
  133. -- {{{ Date and time
  134. local datewidget = wibox.widget.textbox()
  135. vicious.register(datewidget, vicious.widgets.date, "<span foreground='#2e3436'>%a, %m.%d.%y - %H:%M</span>", 5)
  136. -- }}}
  137.  
  138. -- {{{ Volume widget
  139. local volwidget = wibox.widget.textbox()
  140. vicious.register(volwidget, vicious.widgets.volume, "<span foreground='#e2eeea'>vol: </span><span foreground='#2e3436'>$1%</span>", 1, 'Master')
  141. -- }}}
  142.  
  143. -- {{{ System tray
  144. systray = wibox.widget.textbox()
  145. -- }}}
  146.  
  147. -- {{{ Uptime Widget
  148. local uptimewidget = wibox.widget.textbox()
  149.   vicious.register(uptimewidget, vicious.widgets.uptime,
  150.     function (widget, args)
  151.       return string.format("<span foreground='#e2eeea'>uptime: </span><span foreground='#2e3436'>%2dd %02d:%02d</span> ", args[1], args[2], args[3], args[4])
  152.     end, 61)
  153. -- }}}
  154.  
  155. -- {{{ Pacman Widget
  156. local pacwidget = wibox.widget.textbox()
  157. pacwidget_t = awful.tooltip({ objects = { pacwidget},})
  158. vicious.register(pacwidget, vicious.widgets.pkg,
  159.                 function(widget,args)
  160.                     local io = { popen = io.popen }
  161.                     local s = io.popen("pacman -Qu")
  162.                     local str = ''
  163.  
  164.                     for line in s:lines() do
  165.                         str = str .. line .. "\n"
  166.                     end
  167.                     pacwidget_t:set_text(str)
  168.                     s:close()
  169.                     return string.format("<span foreground='#e2eeea'>updates: </span><span foreground='#2e3436'>%d</span>", args[1])
  170.                 end, 1800, "Arch")
  171.  
  172.                 --'1800' means check every 30 minutes
  173. -- }}}
  174.  
  175. -- {{{ Top Box
  176. local wibox     = {}
  177. local promptbox = {}
  178. local layoutbox = {}
  179. local taglist   = {}
  180. taglist.buttons = awful.util.table.join(
  181.                     awful.button({ }, 1, awful.tag.viewonly),
  182.                     awful.button({ modkey }, 1, awful.client.movetotag),
  183.                     awful.button({ }, 3, awful.tag.viewtoggle),
  184.                     awful.button({ modkey }, 3, awful.client.toggletag),
  185.                     awful.button({ }, 4, awful.tag.viewnext),
  186.                     awful.button({ }, 5, awful.tag.viewprev))
  187.  
  188. local tasklist = {}
  189. tasklist.buttons = awful.util.table.join(
  190.                 awful.button({ }, 1,
  191.                         function(c)
  192.                                 if not c:isvisible() then
  193.                                         awful.tag.viewonly(c:tags()[1])
  194.                                 end
  195.                                 client.focus = c
  196.                                 c:raise()
  197.                         end),
  198.                  awful.button({ }, 3,
  199.                         function()
  200.                                 if instance then
  201.                                         instance:hide()
  202.                                         instance = nil
  203.                                 else
  204.                                         instance = awful.menu.clients({ width = 250 })
  205.                                 end
  206.                         end),
  207.                  awful.button({ }, 4,
  208.                         function()
  209.                                 awful.client.focus.byidx(1)
  210.                                 if client.focus then
  211.                                         client.focus:raise()
  212.                                 end
  213.                         end),
  214.                  awful.button({ }, 5,
  215.                         function()
  216.                                 awful.client.focus.byidx(-1)
  217.                                 if client.focus then
  218.                                         client.focus:raise()
  219.                                 end
  220.                 end)
  221. )
  222.  
  223. for s = 1, screen.count() do
  224.     -- Create a promptbox
  225.     promptbox[s] = awful.widget.prompt()
  226.     -- Create a layoutbox
  227.     layoutbox[s] = awful.widget.layoutbox(s)
  228.     layoutbox[s]:buttons(awful.util.table.join(
  229.                            awful.button({ }, 1, function () awful.layout.inc(layouts, 1) end),
  230.                            awful.button({ }, 3, function () awful.layout.inc(layouts, -1) end),
  231.                            awful.button({ }, 4, function () awful.layout.inc(layouts, 1) end),
  232.                            awful.button({ }, 5, function () awful.layout.inc(layouts, -1) end)
  233.     ))
  234.  
  235.     -- Create a taglist widget
  236.     taglist[s] = awful.widget.taglist(s, awful.widget.taglist.filter.all, taglist.buttons)
  237.  
  238.     -- Create a tasklist widget
  239.     tasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, tasklist.buttons)
  240.  
  241.     -- Create the wibox
  242.     -- wibox[s] = awful.wibox({
  243.     --     position = "top", screen = s,
  244.     --     fg = beautiful.fg_normal, bg = beautiful.bg_normal, height=beautiful.widget_height
  245.     -- })
  246.     -- Create the wibox
  247.     wibox[s] = awful.wibox({ position = "top", screen = s })
  248.     --
  249.     -- Widgets that are aligned to the left
  250.     local left_layout = wibox.layout.fixed.horizontal()
  251.     left_layout:add(launcher)
  252.     left_layout:add(taglist[s])
  253.     -- left_layout:add(layoutbox[s])
  254.     left_layout:add(promptbox[s])
  255.     -- left_layout:add(layout[s])
  256.    
  257.     -- Widgets that are aligned to the right
  258.     local right_layout = wibox.layout.fixed.horizontal()
  259.     if s == 1 then right_layout:add(wibox.widget.systray()) end
  260.     right_layout:add(spacer)
  261.     right_layout:add(datewidget)
  262.     right_layout:add(seperator)
  263.     right_layout:add(volwidget)
  264.     right_layout:add(seperator)
  265.     right_layout:add(cpuwidget)
  266.     right_layout:add(seperator)
  267.     right_layout:add(thermalwidget)
  268.    
  269.     -- Now bring it all together (with the tasklist in the middle)
  270.     local layout = wibox.layout.align.horizontal()
  271.     layout:set_left(left_layout)
  272.     layout:set_middle(tasklist[s])
  273.     layout:set_right(right_layout)
  274.     --
  275. end
  276. -- }}}
  277.  
  278. -- {{{ Bottom Box
  279. local bottomwibox = {}
  280.  
  281. for s = 1, screen.count() do
  282.     -- Create the wibox
  283.     bottomwibox[s] = awful.wibox({
  284.         position = "bottom", screen = 1,
  285.         fg = beautiful.fg_normal, bg = beautiful.bg_normal, height=beautiful.widget_height
  286.     })
  287.  
  288.     -- Add widgets to the wibox
  289.     bottomwibox[s].widgets = {
  290.         spacer, uptimewidget, separator, pacwidget,
  291.         layout = awful.widget.layout.horizontal.leftright
  292.     }
  293. end
  294.  
  295. -- }}}
  296. -- }}}
  297. -- }}}
  298.  
  299. -- {{{ Mouse bindings
  300. root.buttons(awful.util.table.join(
  301.     awful.button({ }, 3, function () mymainmenu:toggle() end),
  302.     awful.button({ }, 4, awful.tag.viewnext),
  303.     awful.button({ }, 5, awful.tag.viewprev)
  304. ))
  305. -- }}}
  306.  
  307. -- {{{ Key bindings
  308. globalkeys = awful.util.table.join(
  309.     awful.key({}, "XF86AudioMute", function() sexec("amixer sset Master toggle") end ),
  310.     awful.key({}, "XF86AudioRaiseVolume", function() sexec("amixer set Master 2%+") end ),
  311.     awful.key({}, "XF86AudioLowerVolume", function() sexec("amixer set Master 2%-") end ),
  312.     awful.key({}, "XF86AudioNext", function() sexec("cmus-remote --next") end ),
  313.     awful.key({}, "XF86AudioPrev", function() sexec("cmus-remote --prev") end ),
  314.     awful.key({}, "XF86AudioPlay", function() sexec("cmus-remote --pause") end ),
  315.     awful.key({}, "XF86HomePage", function() sexec("xlock -mode blank") end ),                   --fn - f2
  316.     -- awful.key({}, "XF86AudioStop", function() sexec("scrot -e 'mv $f ~/bilder/screenshots'") end ), --fn - up
  317.     -- awful.key({}, "XF86Tools", function() sexec("") end ),
  318.     -- awful.key({}, "XF86Calculator", function() sexec("") end ),
  319.     -- awful.key({}, "XF86Launch1", function() sexec("") end ),    --ThinkVantage
  320.     -- awful.key({}, "XF86Sleep", function() sexec("sudo pm-suspend") end ),                           --fn - f4
  321.     -- awful.key({}, "XF86WebCam", function() sexec("~/bin/bluetooth-toggle.sh") end ),                --fn - f6
  322.     -- awful.key({}, "XF86Display", function() sexec("") end ),                       --fn - f7
  323.     --awful.key({}, "XF86TouchpadToggle", function() sexec("~/bin/touchpad-toggle.sh") end ),         --fn - f8
  324.    -- awful.key({}, "XF86MyComputer", function() sexec(commands.fileman) end ),
  325.    -- awful.key({}, "XF86Mail", function() sexec(commands.mail) end ),
  326.    -- awful.key({}, "XF86HomePage", function() sexec(commands.browser) end ),
  327.    -- awful.key({}, "XF86Sleep", function() sexec(commands.lock) end ),
  328.    -- awful.key({"Control", "Mod1"}, "l", function() sexec(commands.lock) end ),
  329.  
  330.     --default bindings
  331.     awful.key({ modkey, "Control" }, "Left",   awful.tag.viewprev       ),
  332.     awful.key({ modkey, "Control" }, "Right",  awful.tag.viewnext       ),
  333.     awful.key({ modkey,           }, "Escape", awful.tag.history.restore),
  334.  
  335.     awful.key({ modkey,           }, "n",
  336.         function ()
  337.             awful.client.focus.byidx( 1)
  338.             if client.focus then client.focus:raise() end
  339.         end),
  340.     awful.key({ modkey,           }, "k",
  341.         function ()
  342.             awful.client.focus.byidx(-1)
  343.             if client.focus then client.focus:raise() end
  344.         end),
  345.     awful.key({ modkey,           }, "w", function () mymainmenu:show(true)        end),
  346.  
  347.     -- Layout manipulation
  348.     awful.key({ modkey, "Shift"   }, "n", function () awful.client.swap.byidx(  1)    end),
  349.     awful.key({ modkey, "Shift"   }, "k", function () awful.client.swap.byidx( -1)    end),
  350.     awful.key({ modkey, "Control" }, "n", function () awful.screen.focus_relative( 1) end),
  351.     awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end),
  352.     awful.key({ modkey,           }, "u", awful.client.urgent.jumpto),
  353.     awful.key({ modkey,           }, "Tab",
  354.         function ()
  355.             awful.client.focus.history.previous()
  356.             if client.focus then
  357.                 client.focus:raise()
  358.             end
  359.         end),
  360.  
  361.     -- Standard program
  362.     awful.key({ modkey,           }, "Return", function () exec(terminal) end),
  363.     awful.key({ modkey, "Control" }, "r", awesome.restart),
  364.     awful.key({ modkey, "Shift"   }, "q", awesome.quit),
  365.     awful.key({ modkey,           }, "l",     function () awful.tag.incmwfact( 0.05)    end),
  366.     awful.key({ modkey,           }, "h",     function () awful.tag.incmwfact(-0.05)    end),
  367.     awful.key({ modkey, "Shift"   }, "h",     function () awful.tag.incnmaster( 1)      end),
  368.     awful.key({ modkey, "Shift"   }, "l",     function () awful.tag.incnmaster(-1)      end),
  369.     awful.key({ modkey, "Control" }, "h",     function () awful.tag.incncol( 1)         end),
  370.     awful.key({ modkey, "Control" }, "l",     function () awful.tag.incncol(-1)         end),
  371.     awful.key({ modkey,           }, "space", function () awful.layout.inc(layouts,  1) end),
  372.     awful.key({ modkey, "Shift"   }, "space", function () awful.layout.inc(layouts, -1) end),
  373.  
  374.     -- Prompt
  375.     awful.key({ modkey },     "p",     function () promptbox[mouse.screen]:run() end),
  376.     -- Run stuff in a Terminal
  377.     awful.key({ modkey }, "x",
  378.     function ()
  379.      awful.prompt.run({ prompt = "Run in Terminal: " },
  380.      promptbox[mouse.screen].widget,
  381.      function (prog)
  382.       sexec(terminal .. " -name " .. prog .. " -e /bin/zsh -c " .. prog)
  383.      end)
  384.     end)
  385. )
  386.  
  387. clientkeys = awful.util.table.join(
  388.     awful.key({ modkey,           }, "f",      function (c) c.fullscreen = not c.fullscreen  end),
  389.     awful.key({ modkey, "Shift"   }, "c",      function (c) c:kill()                         end),
  390.     awful.key({ modkey, "Control" }, "space",  awful.client.floating.toggle                     ),
  391.     awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end),
  392.     awful.key({ modkey,           }, "o",      awful.client.movetoscreen                        ),
  393.     awful.key({ modkey, "Shift"   }, "r",      function (c) c:redraw()                       end),
  394.     awful.key({ modkey,           }, "j",      function (c) c.minimized = not c.minimized    end),
  395.     awful.key({ modkey,           }, "m",
  396.         function (c)
  397.             c.maximized_horizontal = not c.maximized_horizontal
  398.             c.maximized_vertical   = not c.maximized_vertical
  399.         end),
  400.  
  401.  
  402.     -- Two Screen Full Screen
  403.     awful.key({ modkey, "Shift" }, "f",        
  404.  
  405.            function (c)
  406.                awful.client.floating.toggle(c)
  407.                if awful.client.floating.get(c) then
  408.                    local clientX = screen[1].workarea.x
  409.                    local clientY = screen[1].workarea.y
  410.                    local clientWidth = 0
  411.                    -- look at http://www.rpm.org/api/4.4.2.2/llimits_8h-source.html
  412.                    local clientHeight = 2147483640
  413.                    for s = 1, screen.count() do
  414.                        clientHeight = math.min(clientHeight, screen[s].workarea.height)
  415.                        clientWidth = clientWidth + screen[s].workarea.width
  416.                    end
  417.                    local t = c:geometry({x = clientX, y = clientY, width = clientWidth, height = clientHeight})
  418.                else
  419.                    --apply the rules to this client so he can return to the right tag if there is a rule for that.
  420.                    awful.rules.apply(c)
  421.                end
  422.                -- focus our client
  423.                client.focus = c
  424.            end)
  425.  
  426. )
  427.  
  428. -- Compute the maximum number of digit we need, limited to 9
  429. keynumber = 0
  430. for s = 1, screen.count() do
  431.    keynumber = math.min(9, math.max(#tags[s], keynumber));
  432. end
  433.  
  434. -- Bind all key numbers to tags.
  435. -- Be careful: we use keycodes to make it works on any keyboard layout.
  436. -- This should map on the top row of your keyboard, usually 1 to 9.
  437. for i = 1, keynumber do
  438.     globalkeys = awful.util.table.join(globalkeys,
  439.         awful.key({ modkey }, "#" .. i + 9,
  440.                   function ()
  441.                         local screen = mouse.screen
  442.                         if tags[screen][i] then
  443.                             awful.tag.viewonly(tags[screen][i])
  444.                         end
  445.                   end),
  446.         awful.key({ modkey, "Control" }, "#" .. i + 9,
  447.                   function ()
  448.                       local screen = mouse.screen
  449.                       if tags[screen][i] then
  450.                           awful.tag.viewtoggle(tags[screen][i])
  451.                       end
  452.                   end),
  453.         awful.key({ modkey, "Shift" }, "#" .. i + 9,
  454.                   function ()
  455.                       if client.focus and tags[client.focus.screen][i] then
  456.                           awful.client.movetotag(tags[client.focus.screen][i])
  457.                       end
  458.                   end),
  459.         awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
  460.                   function ()
  461.                       if client.focus and tags[clent.focus.screen][i] then
  462.                           awful.client.toggletag(tags[client.focus.screen][i])
  463.                       end
  464.                   end))
  465. end
  466.  
  467. clientbuttons = awful.util.table.join(
  468.     awful.button({ }, 1, function (c) client.focus = c; c:raise() end),
  469.     awful.button({ modkey }, 1, awful.mouse.client.move),
  470.     awful.button({ modkey }, 3, awful.mouse.client.resize))
  471.  
  472. -- Set keys
  473. root.keys(globalkeys)
  474. -- }}}
  475.  
  476. -- {{{ Rules
  477. awful.rules.rules = {
  478.     -- All clients will match this rule.
  479.     { rule = { },
  480.       properties = { border_width = beautiful.border_width,
  481.                      border_color = beautiful.border_normal,
  482.                      focus = true,
  483.                      keys = clientkeys,
  484.                      buttons = clientbuttons } },
  485.     { rule = { class = "MPlayer" },
  486.       properties = { floating = true } },
  487.     { rule = { class = "pinentry" },
  488.       properties = { floating = true } },
  489.     { rule = { class = "gimp" },
  490.       properties = { floating = true } },
  491.     -- Set Firefox to always map on tags number 2 of screen 1.
  492.     -- { rule = { class = "Firefox" },
  493.     --   properties = { tag = tags[1][2] } },
  494. }
  495. -- }}}
  496.  
  497. -- {{{ Signals
  498. -- Signal function to execute when a new client appears.
  499. client.add_signal("manage", function (c, startup)
  500.     -- Add a titlebar
  501.     -- awful.titlebar.add(c, { modkey = modkey })
  502.  
  503.     -- Enable sloppy focus
  504.     c:add_signal("mouse::enter", function(c)
  505.         if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
  506.             and awful.client.focus.filter(c) then
  507.             client.focus = c
  508.         end
  509.     end)
  510.  
  511.     if not startup then
  512.         -- Set the windows at the slave,
  513.         -- i.e. put it at the end of others instead of setting it master.
  514.         -- awful.client.setslave(c)
  515.  
  516.         -- Put windows in a smart way, only if they does not set an initial position.
  517.         if not c.size_hints.user_position and not c.size_hints.program_position then
  518.             awful.placement.no_overlap(c)
  519.             awful.placement.no_offscreen(c)
  520.         end
  521.     end
  522. end)
  523.  
  524. client.add_signal("focus", function(c) c.border_color = beautiful.border_focus end)
  525. client.add_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
  526. -- }}}
  527.  
  528. -- {{{ Multiple Monitors
  529. -- }}}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement