X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=.config%2Fawesome%2Frc.lua;h=ac7ab6f63026dc2218317cab45138a5dae75474a;hb=391dbf5eab5562e20547e8feae958d3647946812;hp=0c3b1f541b113e44a56b341964b49c8d69f977b7;hpb=8fc895ef3e92b048f792cf0ab6bc1cabb5ee63bf;p=x_base.git diff --git a/.config/awesome/rc.lua b/.config/awesome/rc.lua index 0c3b1f5..ac7ab6f 100644 --- a/.config/awesome/rc.lua +++ b/.config/awesome/rc.lua @@ -1,26 +1,56 @@ -- Standard awesome library -require("awful") +local gears = require("gears") +local awful = require("awful") +awful.rules = require("awful.rules") require("awful.autofocus") -require("awful.rules") +-- Widget and layout library +local wibox = require("wibox") -- Theme handling library -require("beautiful") +local beautiful = require("beautiful") -- Notification library -require("naughty") - -require("obvious.volume_alsa") -require("obvious.battery") - +local naughty = require("naughty") +local menubar = require("menubar") -- Load Debian menu entries require("debian.menu") +-- from https://github.com/tony/awesome-config/blob/master/helpers.lua + +function file_exists(file) + s = awful.util.pread("/bin/dash -c 'if [ -e " .. file .. " ]; then echo true; fi;'"):gsub("\n","") + if s == 'true' then return true else return nil end +end + + -- {{{ Variable definitions -- Themes define colours, icons, and wallpapers beautiful.init("/usr/share/awesome/themes/default/theme.lua") +-- local APW +-- if file_exists("apw/widget.lua") then +local APW = require("apw/widget") +-- end + +-- local vicious +local vicious = require("vicious") + +local cpuwidget = wibox.widget.textbox() +vicious.register(cpuwidget, vicious.widgets.cpu, "$1%CPU ") +local batwidget = wibox.widget.textbox() +local has_battery = false +if file_exists("/sys/class/power_supply/BAT1") then + vicious.register(batwidget,vicious.widgets.bat," $2%$1 $3",120,"BAT1") + has_battery = true +elseif file_exists("/sys/class/power_supply/BAT0") then + vicious.register(batwidget,vicious.widgets.bat," $2%$1 $3",120,"BAT0") + has_battery = true +end -- This is used later as the default terminal and editor to run. terminal = "x-terminal-emulator" editor = os.getenv("EDITOR") or "editor" editor_cmd = terminal .. " -e " .. editor +home = os.getenv("HOME") + +hostname = awful.util.pread("hostname -f"):gsub("\n", "") -- Default modkey. -- Usually, Mod4 is the key with a logo between Control and Alt. @@ -30,7 +60,7 @@ editor_cmd = terminal .. " -e " .. editor modkey = "Mod4" -- Table of layouts to cover with awful.layout.inc, order matters. -layouts = +local layouts = { awful.layout.suit.tile, awful.layout.suit.tile.left, @@ -49,10 +79,12 @@ layouts = -- {{{ Tags -- Define a tag table which hold all screen tags. -tags = {} +tags = {names={"mail","emacs","www","remotes",5,6,7,8,9} + } 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]) + local defaultlayout=layouts[9] + tags[s] = awful.tag(tags.names, s, defaultlayout) end -- }}} @@ -71,19 +103,17 @@ mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesom } }) -mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon), +mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, menu = mymainmenu }) -- }}} -- {{{ Wibox -- Create a textclock widget -mytextclock = awful.widget.textclock({ align = "right" }, " %c ", 1) +mytextclock = awful.widget.textclock() --{ align = "right" }, " %c ", 1) -myvolumealsa = obvious.volume_alsa() -mybattery = obvious.battery() +-- mybattery = obvious.battery() --- Create a systray -mysystray = widget({ type = "systray" }) +-- mytemp = obvious.temp_info() -- Create a wibox for each screen and add it mywibox = {} @@ -126,7 +156,7 @@ mytasklist.buttons = awful.util.table.join( for s = 1, screen.count() do -- Create a promptbox for each screen - mypromptbox[s] = awful.widget.prompt({ layout = awful.widget.layout.horizontal.leftright }) + mypromptbox[s] = awful.widget.prompt() -- Create an imagebox widget which will contains an icon indicating which layout we're using. -- We need one layoutbox per screen. mylayoutbox[s] = awful.widget.layoutbox(s) @@ -136,31 +166,38 @@ for s = 1, screen.count() do 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.label.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(function(c) - return awful.widget.tasklist.label.currenttags(c, s) - end, mytasklist.buttons) + mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons) -- Create the wibox mywibox[s] = awful.wibox({ position = "top", screen = s }) - -- Add widgets to the wibox - order matters - mywibox[s].widgets = { - { - mylauncher, - mytaglist[s], - mypromptbox[s], - layout = awful.widget.layout.horizontal.leftright - }, - mylayoutbox[s], - mytextclock, - myvolumealsa, - mybattery, - s == 1 and mysystray or nil, - mytasklist[s], - layout = awful.widget.layout.horizontal.rightleft - } + + -- Widgets that are aligned to the left + local left_layout = wibox.layout.fixed.horizontal() + left_layout:add(mylauncher) + left_layout:add(mytaglist[s]) + left_layout:add(mypromptbox[s]) + + -- Widgets that are aligned to the right + local right_layout = wibox.layout.fixed.horizontal() + if s == 1 then right_layout:add(wibox.widget.systray()) end + + right_layout:add(cpuwidget) + if has_battery then + right_layout:add(batwidget) + end + right_layout:add(mytextclock) + right_layout:add(mylayoutbox[s]) + + -- 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) end -- }}} @@ -176,8 +213,11 @@ root.buttons(awful.util.table.join( globalkeys = awful.util.table.join( -- awful.key({ modkey, }, "Left", awful.tag.viewprev ), -- awful.key({ modkey, }, "Right", awful.tag.viewnext ), - awful.key({},"XF86AudioRaiseVolume",function () obvious.volume_alsa.raise(0, "Master", 2) end), - awful.key({},"XF86AudioLowerVolume",function () obvious.volume_alsa.lower(0, "Master", 2) end), + awful.key({},"XF86AudioRaiseVolume",APW.Up), + awful.key({},"XF86AudioLowerVolume",APW.Down), + awful.key({},"XF86RotateWindows", function () awful.util.spawn("rotate_monitor") end), + awful.key({},"XF86MonBrightnessUp",function() awful.util.spawn("xbacklight -inc 5") end), + awful.key({},"XF86MonBrightnessDown",function() awful.util.spawn("xbacklight -dec 5") end), awful.key({ modkey, }, "Escape", awful.tag.history.restore), awful.key({ modkey, }, "j", @@ -201,13 +241,22 @@ globalkeys = awful.util.table.join( awful.key({ modkey, }, "Right", 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), - + function () + -- awful.client.focus.history.previous() + awful.client.focus.byidx(-1) + if client.focus then + client.focus:raise() + end + end), + + awful.key({ modkey, "Shift" }, "Tab", + function () + -- awful.client.focus.history.previous() + awful.client.focus.byidx(1) + if client.focus then + client.focus:raise() + end + end), -- Standard program awful.key({ modkey, }, "Return", function () awful.util.spawn(terminal) end), awful.key({ modkey, "Control", "Shift" }, "r", awesome.restart), @@ -223,14 +272,14 @@ globalkeys = awful.util.table.join( awful.key({ modkey, "Shift" }, "n", function () awful.layout.inc(layouts, -1) end), -- resize floats - awful.key({ modkey, "Shift" }, "Down", function () awful.client.moveresize(0, 20, 0, 0) end), - awful.key({ modkey, "Shift" }, "Up", function () awful.client.moveresize(0, -20, 0, 0) end), - awful.key({ modkey, "Shift" }, "Left", function () awful.client.moveresize(-20, 0, 0, 0) end), - awful.key({ modkey, "Shift" }, "Right", function () awful.client.moveresize(20, 0, 0, 0) end), - awful.key({ modkey, "Control" }, "Down", function () awful.client.moveresize(0, 0, 0, -20) end), - awful.key({ modkey, "Control" }, "Up", function () awful.client.moveresize(0, 0, 0, 20) end), - awful.key({ modkey, "Control" }, "Left", function () awful.client.moveresize(0, 0, -20, 0) end), - awful.key({ modkey, "Control" }, "Right", function () awful.client.moveresize(0, 0, 20, 0) end), + awful.key({ modkey, "Control" }, "Down", function () awful.client.moveresize(0, 20, 0, 0) end), + awful.key({ modkey, "Control" }, "Up", function () awful.client.moveresize(0, -20, 0, 0) end), + awful.key({ modkey, "Control" }, "Left", function () awful.client.moveresize(-20, 0, 0, 0) end), + awful.key({ modkey, "Control" }, "Right", function () awful.client.moveresize(20, 0, 0, 0) end), + awful.key({ modkey, "Control" , "Shift" }, "Down", function () awful.client.moveresize(0, 0, 0, -20) end), + awful.key({ modkey, "Control" , "Shift" }, "Up", function () awful.client.moveresize(0, 0, 0, 20) end), + awful.key({ modkey, "Control" , "Shift" }, "Left", function () awful.client.moveresize(0, 0, -20, 0) end), + awful.key({ modkey, "Control" , "Shift" }, "Right", function () awful.client.moveresize(0, 0, 20, 0) end), -- Prompt awful.key({ modkey }, "r", function () mypromptbox[mouse.screen]:run() end), @@ -249,6 +298,8 @@ clientkeys = awful.util.table.join( awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle ), awful.key({ modkey, }, "space", function (c) c:swap(awful.client.getmaster()) end), awful.key({ modkey, }, "o", awful.client.movetoscreen ), + awful.key({ modkey, "Shift" }, "Right", function(c) awful.client.movetoscreen(c,c.screen-1 % screen.count()) end), + awful.key({ modkey, "Shift" }, "Left", function(c) awful.client.movetoscreen(c,c.screen+1 % screen.count()) end), awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end), awful.key({ modkey, "Shift" }, "r", function (c) c:redraw() end), awful.key({ modkey, "Shift" }, "m", function (c) c.minimized = not c.minimized end), @@ -359,7 +410,7 @@ function warp_mouse() c = client.focus if c then local g = c:geometry() - mouse.coords({ x = g.x + 30, y = g.y + 30}, true) + mouse.coords({ x = g.x + 1, y = g.y + 1}, true) end end @@ -373,3 +424,31 @@ end client.add_signal("focus", function(c) c.border_color = beautiful.border_focus end) client.add_signal("unfocus", function(c) c.border_color = beautiful.border_normal end) -- }}} + + +wallpaper_dir = home .. "/media/background" +if (not file_exists(wallpaper_dir)) then + wallpaper_dir = "/usr/share/awesome/themes/default/background.png" +end + +wallpaper_cmd = "find " .. wallpaper_dir .. + " -xtype f \\( -iname '*.jpg' -o -iname '*.png' \\) " .. + " -not -name '.*' -print0 | shuf -n" .. screen.count() .. " -z | xargs -0 feh --draw-exif -d --bg-max" + +-- set up the wallpaper timer +-- wallpaper_timer = timer({ timeout = 0 }) +-- wallpaper_timer:add_signal("timeout", +-- function() +-- -- tell awsetbg to randomly choose a wallpaper from your wallpaper directory +-- os.execute(wallpaper_cmd) +-- -- stop the timer (we don't need multiple instances running at the same time) +-- wallpaper_timer:stop() +-- +-- -- define the interval in which the next wallpaper change should occur in seconds +-- -- (in this case anytime between 10 and 20 minutes) +-- --restart the timer +-- wallpaper_timer.timeout = math.random(600,1200) +-- wallpaper_timer:start() +-- end +-- ) +-- wallpaper_timer:start();