-- 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.
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,
-- {{{ 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
-- }}}
}
})
-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 = {}
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)
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
-- }}}
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",
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),
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),
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),
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
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();