summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian C. (anrxc) <anrxc@sysphere.org>2024-05-27 17:08:20 +0200
committerAdrian C. (anrxc) <anrxc@sysphere.org>2024-05-27 17:08:23 +0200
commit6a5354e09fcf0a89e2d48bd80ecd494fc52c7b48 (patch)
tree165d9d04cd667fc602296e144769a7b44aa13041
parent51f463b71d29ec2cb25bb2eb7c10396aabdee324 (diff)
downloadawesome-configs-6a5354e09fcf0a89e2d48bd80ecd494fc52c7b48.tar.xz
rc.lua: port to awesomev4
Old awesomewm v3 configuration moved to branch awesomev3.
-rw-r--r--osk.lua90
-rw-r--r--rc.lua981
-rw-r--r--scratch/drop.lua134
-rw-r--r--scratch/init.lua14
-rw-r--r--scratch/pad.lua137
-rw-r--r--zenburn.lua144
6 files changed, 511 insertions, 989 deletions
diff --git a/osk.lua b/osk.lua
deleted file mode 100644
index e4c608d..0000000
--- a/osk.lua
+++ /dev/null
@@ -1,90 +0,0 @@
-----------------------------------------------------
--- On Screen Keyboard for the awesome window manager
-----------------------------------------------------
--- Coded by: Farhaven <gbe@ring0.de>
--- Hacked by: Adrian C. <anrxc@sysphere.org>
--- Licensed under the WTFPL version 2
--- * http://sam.zoy.org/wtfpl/COPYING
-----------------------------------------------------
--- To use this module add:
--- require("osk")
--- to your rc.lua, and call it from a keybinding:
--- osk(position, screen)
---
--- Parameters:
--- position - optional, "bottom" by default
--- screen - optional, screen.count() by default
-----------------------------------------------------
-
--- Grab environment
-local util = require("awful.util")
-local wibox = require("awful.wibox")
-local button = require("awful.button")
-local layout = require("awful.widget.layout")
-local table = table
-local ipairs = ipairs
-local tostring = tostring
-local setmetatable = setmetatable
-local capi = {
- widget = widget,
- screen = screen,
- fake_input = root.fake_input
-}
-
--- OSK: On Screen Keyboard for the awesome window manager
-module("osk")
-
--- Variable definitions
-local kbd = {}
-kbd.codes = {
- q=24, w=25, e=26, r=27, t=28, z=52, u=30, i=31, o=32, p=33, ["."]=60,
- a=38, s=39, d=40, f=41, g=42, h=43, j=44, k=45, l=46,
- Caps=66, y=29, x=53, c=54, v=55, b=56, n=57, m=58, Spc=65, Ret=36, Del=22,
-}
-
--- Create a chain of key widgets for an OSK row
-local function create_button_row(...)
- local widgets = { layout = layout.horizontal.flex }
-
- for _, i in ipairs(arg) do
- local w = capi.widget({ type = "textbox" })
- w:margin({ top = 10, left = 10, right = 10, bottom = 10 })
- w.border_width = 1
- w.text_align = "center"
- w.border_color = "#1E2320"
- w.text = util.escape(tostring(i))
- w:buttons(util.table.join(
- button({ }, 1, nil, function ()
- capi.fake_input("key_press", kbd.codes[i])
- capi.fake_input("key_release", kbd.codes[i])
- end)
- ))
-
- table.insert(widgets, w)
- end
-
- return widgets
-end
-
--- Create a wibox holding OSK rows and toggle its visibility
-setmetatable(_M, { __call = function (_, pos, scr)
- if not kbd.init then
- kbd.box = wibox({
- height = 100,
- position = pos or "bottom",
- screen = scr or capi.screen.count(),
- fg = "#F0DFAF",
- bg = "#4F4F4F",
- widgets = {
- { create_button_row("q", "w", "e", "r", "t", "z", "u", "i", "o", "p", ".") },
- { create_button_row("a", "s", "d", "f", "g", "h", "j", "k", "l") },
- { create_button_row("Caps", "y", "x", "c", "v", "b", "n", "m", "Spc", "Ret", "Del") },
- layout = layout.vertical.flex
- }
- })
- kbd.init = true
- kbd.box.visible = false
- end
-
- kbd.box.visible = not kbd.box.visible
-end })
diff --git a/rc.lua b/rc.lua
index c2347ca..1601c2e 100644
--- a/rc.lua
+++ b/rc.lua
@@ -1,6 +1,6 @@
-- {{{ License
--
--- Awesome configuration, using awesome 3.4.14 on Arch GNU/Linux
+-- Awesome configuration, using awesome 4.3-7 on Debian GNU/Linux
-- * Adrian C. <anrxc@sysphere.org>
-- Screenshot: http://sysphere.org/gallery/snapshots
@@ -11,556 +11,597 @@
-- {{{ Libraries
-require("awful")
-require("awful.rules")
+pcall(require, "luarocks.loader")
+-- Standard awesome library
+local gears = require("gears")
+local awful = require("awful")
require("awful.autofocus")
--- User libraries
-vicious = require("vicious")
-scratch = require("scratch")
+-- Widget and layout libraries
+local wibox = require("wibox")
+local vicious = require("vicious")
+-- Theme handling library
+local beautiful = require("beautiful")
+-- Notification library
+--local naughty = require("naughty")
+--local menubar = require("menubar")
-- }}}
-
-- {{{ Variable definitions
-local altkey = "Mod1"
-local modkey = "Mod4"
-
-local home = os.getenv("HOME")
-local exec = awful.util.spawn
-local sexec = awful.util.spawn_with_shell
-local scount = screen.count()
+terminal = "/usr/bin/urxvt"
+editor = "emacs"
+editor_cmd = terminal .. " -e emacs -nw"
+modkey = "Mod4"
+altkey = "Mod1"
+exec = awful.spawn
+scount = screen.count()
-- Beautiful theme
-beautiful.init(home .. "/.config/awesome/zenburn.lua")
+beautiful.init(gears.filesystem.get_themes_dir() .. "zenburn/theme.lua")
-- Window management layouts
-layouts = {
- awful.layout.suit.tile, -- 1
- awful.layout.suit.tile.bottom, -- 2
- awful.layout.suit.fair, -- 3
- awful.layout.suit.max, -- 4
- awful.layout.suit.magnifier, -- 5
- awful.layout.suit.floating -- 6
+awful.layout.layouts = {
+ awful.layout.suit.floating, -- 1
+ awful.layout.suit.tile, -- 2
+ awful.layout.suit.tile.left, -- 3
+ awful.layout.suit.tile.bottom, -- 4
+ awful.layout.suit.tile.top, -- 5
+ awful.layout.suit.fair, -- 6
+ awful.layout.suit.fair.horizontal, -- 7
+ awful.layout.suit.spiral, -- 8
+ awful.layout.suit.spiral.dwindle, -- 9
+ awful.layout.suit.max, -- 10
+ awful.layout.suit.max.fullscreen, -- 11
+ awful.layout.suit.magnifier, -- 12
+ awful.layout.suit.corner.nw, -- 13
+ -- awful.layout.suit.corner.ne,
+ -- awful.layout.suit.corner.sw,
+ -- awful.layout.suit.corner.se,
}
-- }}}
-
--- {{{ Tags
-tags = {
- names = { "term", "emacs", "web", "mail", "im", 6, 7, "rss", "media" },
- layout = { layouts[2], layouts[1], layouts[1], layouts[4], layouts[1],
- layouts[6], layouts[6], layouts[5], layouts[6]
-}}
-
-for s = 1, scount do
- tags[s] = awful.tag(tags.names, s, tags.layout)
- for i, t in ipairs(tags[s]) do
- awful.tag.setproperty(t, "mwfact", i==5 and 0.13 or 0.5)
- awful.tag.setproperty(t, "hide", (i==6 or i==7) and true)
- end
-end
+-- {{{ Menu
+--menubar.utils.terminal = terminal
-- }}}
--- {{{ Wibox
---
--- {{{ Widgets configuration
+-- {{{ Wibar
--
-- {{{ Reusable separator
-separator = widget({ type = "imagebox" })
-separator.image = image(beautiful.widget_sep)
--- }}}
-
--- {{{ CPU usage and temperature
-cpuicon = widget({ type = "imagebox" })
-cpuicon.image = image(beautiful.widget_cpu)
--- Initialize widgets
-cpugraph = awful.widget.graph()
-tzswidget = widget({ type = "textbox" })
--- Graph properties
-cpugraph:set_width(40):set_height(14)
-cpugraph:set_background_color(beautiful.fg_off_widget)
-cpugraph:set_gradient_angle(0):set_gradient_colors({
- beautiful.fg_end_widget, beautiful.fg_center_widget, beautiful.fg_widget
-}) -- Register widgets
-vicious.register(cpugraph, vicious.widgets.cpu, "$1")
-vicious.register(tzswidget, vicious.widgets.thermal, " $1C", 19, "thermal_zone0")
--- }}}
-
--- {{{ Battery state
-baticon = widget({ type = "imagebox" })
-baticon.image = image(beautiful.widget_bat)
--- Initialize widget
-batwidget = widget({ type = "textbox" })
--- Register widget
-vicious.register(batwidget, vicious.widgets.bat, "$1$2%", 61, "BAT0")
--- }}}
-
--- {{{ Memory usage
-memicon = widget({ type = "imagebox" })
-memicon.image = image(beautiful.widget_mem)
--- Initialize widget
-membar = awful.widget.progressbar()
--- Pogressbar properties
-membar:set_vertical(true):set_ticks(true)
-membar:set_height(12):set_width(8):set_ticks_size(2)
-membar:set_background_color(beautiful.fg_off_widget)
-membar:set_gradient_colors({ beautiful.fg_widget,
- beautiful.fg_center_widget, beautiful.fg_end_widget
-}) -- Register widget
-vicious.register(membar, vicious.widgets.mem, "$1", 13)
--- }}}
-
--- {{{ File system usage
-fsicon = widget({ type = "imagebox" })
-fsicon.image = image(beautiful.widget_fs)
--- Initialize widgets
-fs = {
- b = awful.widget.progressbar(), r = awful.widget.progressbar(),
- h = awful.widget.progressbar(), s = awful.widget.progressbar()
-}
--- Progressbar properties
-for _, w in pairs(fs) do
- w:set_vertical(true):set_ticks(true)
- w:set_height(14):set_width(5):set_ticks_size(2)
- w:set_border_color(beautiful.border_widget)
- w:set_background_color(beautiful.fg_off_widget)
- w:set_gradient_colors({ beautiful.fg_widget,
- beautiful.fg_center_widget, beautiful.fg_end_widget
- }) -- Register buttons
- w.widget:buttons(awful.util.table.join(
- awful.button({ }, 1, function () exec("rox", false) end)
- ))
-end -- Enable caching
-vicious.cache(vicious.widgets.fs)
--- Register widgets
-vicious.register(fs.b, vicious.widgets.fs, "${/boot used_p}", 599)
-vicious.register(fs.r, vicious.widgets.fs, "${/ used_p}", 599)
-vicious.register(fs.h, vicious.widgets.fs, "${/home used_p}", 599)
-vicious.register(fs.s, vicious.widgets.fs, "${/mnt/storage used_p}", 599)
+myseparator = wibox.widget.imagebox("/home/anrxc/.config/awesome/icons/separator.png", false)
-- }}}
--- {{{ Network usage
-dnicon = widget({ type = "imagebox" })
-upicon = widget({ type = "imagebox" })
-dnicon.image = image(beautiful.widget_net)
-upicon.image = image(beautiful.widget_netup)
+-- {{{ CPU temperature
+mycpuicon = wibox.widget.imagebox("/home/anrxc/.config/awesome/icons/cpu.png", false)
-- Initialize widget
-netwidget = widget({ type = "textbox" })
+mycpuwidget = wibox.widget.textbox()
-- Register widget
-vicious.register(netwidget, vicious.widgets.net, '<span color="'
- .. beautiful.fg_netdn_widget ..'">${eth0 down_kb}</span> <span color="'
- .. beautiful.fg_netup_widget ..'">${eth0 up_kb}</span>', 3)
+vicious.register(mycpuwidget, vicious.widgets.thermal, "$1C", 19, "thermal_zone0")
-- }}}
--- {{{ Mail subject
-mailicon = widget({ type = "imagebox" })
-mailicon.image = image(beautiful.widget_mail)
+-- {{{ Battery state
+mybaticon = wibox.widget.imagebox("/home/anrxc/.config/awesome/icons/bat.png", false)
-- Initialize widget
-mailwidget = widget({ type = "textbox" })
+mybatwidget = wibox.widget.textbox()
-- Register widget
-vicious.register(mailwidget, vicious.widgets.mbox, "$1", 181, {home .. "/mail/Inbox", 15})
--- Register buttons
-mailwidget:buttons(awful.util.table.join(
- awful.button({ }, 1, function () exec("urxvt -T Alpine -e alpine.exp") end)
-))
+vicious.register(mybatwidget, vicious.widgets.bat, "$1$2%", 61, "BAT0")
-- }}}
--- {{{ Org-mode agenda
-orgicon = widget({ type = "imagebox" })
-orgicon.image = image(beautiful.widget_org)
--- Initialize widget
-orgwidget = widget({ type = "textbox" })
--- Configure widget
-local orgmode = {
- files = { home.."/.org/computers.org",
- home.."/.org/index.org", home.."/.org/personal.org",
- },
- color = {
- past = '<span color="'..beautiful.fg_urgent..'">',
- today = '<span color="'..beautiful.fg_normal..'">',
- soon = '<span color="'..beautiful.fg_widget..'">',
- future = '<span color="'..beautiful.fg_netup_widget..'">'
-}} -- Register widget
-vicious.register(orgwidget, vicious.widgets.org,
- orgmode.color.past..'$1</span>-'..orgmode.color.today .. '$2</span>-' ..
- orgmode.color.soon..'$3</span>-'..orgmode.color.future.. '$4</span>', 601,
- orgmode.files
-) -- Register buttons
-orgwidget:buttons(awful.util.table.join(
- awful.button({ }, 1, function () exec("emacsclient --eval '(org-agenda-list)'") end),
- awful.button({ }, 3, function () exec("emacsclient --eval '(make-remember-frame)'") end)
-))
--- }}}
-
--- {{{ Volume level
-volicon = widget({ type = "imagebox" })
-volicon.image = image(beautiful.widget_vol)
+-- {{{ Date and time
+mydateicon = wibox.widget.imagebox("/home/anrxc/.config/awesome/icons/time.png", false)
-- Initialize widgets
-volbar = awful.widget.progressbar()
-volwidget = widget({ type = "textbox" })
--- Progressbar properties
-volbar:set_vertical(true):set_ticks(true)
-volbar:set_height(12):set_width(8):set_ticks_size(2)
-volbar:set_background_color(beautiful.fg_off_widget)
-volbar:set_gradient_colors({ beautiful.fg_widget,
- beautiful.fg_center_widget, beautiful.fg_end_widget
-}) -- Enable caching
-vicious.cache(vicious.widgets.volume)
+mydatewidget = wibox.widget.textbox()
+mydatestwidget = wibox.widget.textbox()
-- Register widgets
-vicious.register(volbar, vicious.widgets.volume, "$1", 2, "PCM")
-vicious.register(volwidget, vicious.widgets.volume, " $1%", 2, "PCM")
--- Register buttons
-volbar.widget:buttons(awful.util.table.join(
- awful.button({ }, 1, function () exec("kmix") end),
- awful.button({ }, 4, function () exec("amixer -q set PCM 1dB+", false) end),
- awful.button({ }, 5, function () exec("amixer -q set PCM 1dB-", false) end)
-)) -- Register assigned buttons
-volwidget:buttons(volbar.widget:buttons())
+vicious.register(mydatewidget, vicious.widgets.date, "%R", 61) -- Amsterdam
+vicious.register(mydatestwidget, vicious.widgets.date, "%R", 61, -21600) -- New York
-- }}}
--- {{{ Date and time
-dateicon = widget({ type = "imagebox" })
-dateicon.image = image(beautiful.widget_date)
--- Initialize widget
-datewidget = widget({ type = "textbox" })
--- Register widget
-vicious.register(datewidget, vicious.widgets.date, "%R", 61)
--- Register buttons
-datewidget:buttons(awful.util.table.join(
- awful.button({ }, 1, function () exec("pylendar.py") end)
-))
--- }}}
-
--- {{{ System tray
-systray = widget({ type = "systray" })
--- }}}
--- }}}
-- {{{ Wibox initialisation
-wibox = {}
-promptbox = {}
-layoutbox = {}
-taglist = {}
-taglist.buttons = awful.util.table.join(
- awful.button({ }, 1, awful.tag.viewonly),
- awful.button({ modkey }, 1, awful.client.movetotag),
- awful.button({ }, 3, awful.tag.viewtoggle),
- awful.button({ modkey }, 3, awful.client.toggletag),
- awful.button({ }, 4, awful.tag.viewnext),
- awful.button({ }, 5, awful.tag.viewprev
-))
+local taglist_buttons = gears.table.join(
+ awful.button({ }, 1, function(t) t:view_only() end),
+ awful.button({ modkey }, 1, function(t)
+ if client.focus then
+ client.focus:move_to_tag(t)
+ end
+ end),
+ awful.button({ }, 3, awful.tag.viewtoggle),
+ awful.button({ modkey }, 3, function(t)
+ if client.focus then
+ client.focus:toggle_tag(t)
+ end
+ end),
+ awful.button({ }, 4, function(t) awful.tag.viewnext(t.screen) end),
+ awful.button({ }, 5, function(t) awful.tag.viewprev(t.screen) end)
+ )
+
+local tasklist_buttons = gears.table.join(
+ awful.button({ }, 1, function (c)
+ if c == client.focus then
+ c.minimized = true
+ else
+ c:emit_signal(
+ "request::activate",
+ "tasklist",
+ {raise = true}
+ )
+ end
+ end),
+ awful.button({ }, 3, function()
+ awful.menu.client_list({ theme = { width = 250 } })
+ end),
+ awful.button({ }, 4, function ()
+ awful.client.focus.byidx(1)
+ end),
+ awful.button({ }, 5, function ()
+ awful.client.focus.byidx(-1)
+ end))
+-- Wallpaper signal handler
+local function set_wallpaper(s)
+ if beautiful.wallpaper then
+ local wallpaper = beautiful.wallpaper
+ if type(wallpaper) == "function" then
+ wallpaper = wallpaper(s)
+ end
+ gears.wallpaper.maximized(wallpaper, s, true)
+ end
+end
+screen.connect_signal("property::geometry", set_wallpaper)
+
+awful.screen.connect_for_each_screen(function(s)
+ set_wallpaper(s)
+
+ -- Tags
+ local names = { "term", "emacs", "web", "mail", "im", "6", "7", "ssh", "media" }
+ local ly = awful.layout.suit
+ local llayouts = { ly.tile, ly.tile, ly.tile, ly.magnifier, ly.tile, ly.floating, ly.floating, ly.fair, ly.floating }
+ awful.tag(names, s, llayouts)
-for s = 1, scount do
-- Create a promptbox
- promptbox[s] = awful.widget.prompt({ layout = awful.widget.layout.horizontal.leftright })
+ s.mypromptbox = awful.widget.prompt()
+
-- Create a layoutbox
- layoutbox[s] = awful.widget.layoutbox(s)
- layoutbox[s]:buttons(awful.util.table.join(
- awful.button({ }, 1, function () awful.layout.inc(layouts, 1) end),
- awful.button({ }, 3, function () awful.layout.inc(layouts, -1) end),
- awful.button({ }, 4, function () awful.layout.inc(layouts, 1) end),
- awful.button({ }, 5, function () awful.layout.inc(layouts, -1) end)
+ s.mylayoutbox = awful.widget.layoutbox(s)
+ s.mylayoutbox:buttons(gears.table.join(
+ awful.button({ }, 1, function () awful.layout.inc( 1) end),
+ awful.button({ }, 3, function () awful.layout.inc(-1) end),
+ awful.button({ }, 4, function () awful.layout.inc( 1) end),
+ awful.button({ }, 5, function () awful.layout.inc(-1) end)
))
-- Create the taglist
- taglist[s] = awful.widget.taglist(s, awful.widget.taglist.label.all, taglist.buttons)
+ s.mytaglist = awful.widget.taglist {
+ screen = s,
+ filter = awful.widget.taglist.filter.all,
+ buttons = taglist_buttons
+ }
+
+ -- Create the tasklist
+ s.mytasklist = awful.widget.tasklist {
+ screen = s,
+ filter = awful.widget.tasklist.filter.currenttags,
+ buttons = tasklist_buttons
+ }
+
-- Create the wibox
- wibox[s] = awful.wibox({ screen = s,
- fg = beautiful.fg_normal, height = 12,
- bg = beautiful.bg_normal, position = "top",
- border_color = beautiful.border_focus,
- border_width = beautiful.border_width
- })
+ -- * theme font "Terminus 8" or "ProFont 8" for this widget bar height
+ s.mywibox = awful.wibar({ position = "top", screen = s, height = 12 })
+
-- Add widgets to the wibox
- wibox[s].widgets = {
- { taglist[s], layoutbox[s], separator, promptbox[s],
- ["layout"] = awful.widget.layout.horizontal.leftright
+ s.mywibox:setup {
+ layout = wibox.layout.align.horizontal,
+ { -- Left widgets
+ layout = wibox.layout.fixed.horizontal,
+ s.mytaglist,
+ s.mylayoutbox,
+ myseparator,
+ s.mypromptbox,
+ },
+ s.mytasklist, -- Middle widget
+ { -- Right widgets
+ layout = wibox.layout.fixed.horizontal,
+ myseparator,
+ mycpuicon,
+ mycpuwidget,
+ myseparator,
+ mybaticon,
+ mybatwidget,
+ myseparator,
+ mydateicon,
+ mydatestwidget,
+ myseparator,
+ mydateicon,
+ mydatewidget,
+ myseparator,
+ s == scount and wibox.widget.systray() or nil,
},
- s == 1 and systray or nil,
- separator, datewidget, dateicon,
- separator, volwidget, volbar.widget, volicon,
- separator, orgwidget, orgicon,
- separator, mailwidget, mailicon,
- separator, upicon, netwidget, dnicon,
- separator, fs.s.widget, fs.h.widget, fs.r.widget, fs.b.widget, fsicon,
- separator, membar.widget, memicon,
- separator, batwidget, baticon,
- separator, tzswidget, cpugraph.widget, cpuicon,
- separator, ["layout"] = awful.widget.layout.horizontal.rightleft
}
-end
+end)
-- }}}
-- }}}
-
-- {{{ Mouse bindings
-root.buttons(awful.util.table.join(
+root.buttons(gears.table.join(
awful.button({ }, 4, awful.tag.viewnext),
awful.button({ }, 5, awful.tag.viewprev)
))
-
--- Client bindings
-clientbuttons = awful.util.table.join(
- awful.button({ }, 1, function (c) client.focus = c; c:raise() end),
- awful.button({ modkey }, 1, awful.mouse.client.move),
- awful.button({ modkey }, 3, awful.mouse.client.resize)
-)
-- }}}
-
-- {{{ Key bindings
---
--- {{{ Global keys
-globalkeys = awful.util.table.join(
- -- {{{ Applications
- awful.key({ modkey }, "e", function () exec("emacsclient -n -c") end),
- awful.key({ modkey }, "r", function () exec("rox", false) end),
- awful.key({ modkey }, "w", function () exec("firefox") end),
- awful.key({ altkey }, "F1", function () exec("urxvt") end),
- awful.key({ altkey }, "#49", function () scratch.drop("urxvt", "bottom", nil, nil, 0.30) end),
- awful.key({ modkey }, "a", function () exec("urxvt -T Alpine -e alpine.exp") end),
- awful.key({ modkey }, "g", function () sexec("GTK2_RC_FILES=~/.gtkrc-gajim gajim") end),
- awful.key({ modkey }, "q", function () exec("emacsclient --eval '(make-remember-frame)'") end),
- awful.key({ altkey }, "#51", function () if boosk then osk(nil, mouse.screen)
- else boosk, osk = pcall(require, "osk") end
- end),
- -- }}}
-
- -- {{{ Multimedia keys
- --awful.key({}, "#160", function () exec("kscreenlocker --forcelock") end),
- --awful.key({}, "#121", function () exec("pvol.py -m") end),
- awful.key({}, "#122", function () exec("pvol.py -p -c -2") end),
- awful.key({}, "#123", function () exec("pvol.py -p -c 2") end),
- awful.key({}, "#232", function () exec("plight.py -s") end),
- awful.key({}, "#233", function () exec("plight.py -s") end),
- --awful.key({}, "#150", function () exec("sudo /usr/bin/pm-suspend") end),
- awful.key({}, "#213", function () exec("sudo /usr/bin/pm-hibernate") end),
- --awful.key({}, "#235", function () exec("xset dpms force off") end),
- awful.key({}, "#235", function () exec("pypres.py") end),
- awful.key({}, "#244", function () sexec("acpitool -b | xmessage -timeout 10 -file -") end),
- -- }}}
-
- -- {{{ Prompt menus
- awful.key({ altkey }, "F2", function ()
- awful.prompt.run({ prompt = "Run: " }, promptbox[mouse.screen].widget,
- function (...) promptbox[mouse.screen].text = exec(unpack(arg), false) end,
- awful.completion.shell, awful.util.getdir("cache") .. "/history")
- end),
- awful.key({ altkey }, "F3", function ()
- awful.prompt.run({ prompt = "Dictionary: " }, promptbox[mouse.screen].widget,
- function (words)
- sexec("crodict "..words.." | ".."xmessage -timeout 10 -file -")
- end)
- end),
- awful.key({ altkey }, "F4", function ()
- awful.prompt.run({ prompt = "Web: " }, promptbox[mouse.screen].widget,
- function (command)
- sexec("firefox 'http://yubnub.org/parser/parse?command="..command.."'")
- awful.tag.viewonly(tags[scount][3])
- end)
- end),
- awful.key({ altkey }, "F5", function ()
- awful.prompt.run({ prompt = "Lua: " }, promptbox[mouse.screen].widget,
- awful.util.eval, nil, awful.util.getdir("cache") .. "/history_eval")
- end),
- -- }}}
-
- -- {{{ Awesome controls
- awful.key({ modkey }, "b", function ()
- wibox[mouse.screen].visible = not wibox[mouse.screen].visible
- end),
- awful.key({ modkey, "Shift" }, "q", awesome.quit),
- awful.key({ modkey, "Shift" }, "r", function ()
- promptbox[mouse.screen].text = awful.util.escape(awful.util.restart())
- end),
- -- }}}
-
- -- {{{ Tag browsing
- awful.key({ altkey }, "n", awful.tag.viewnext),
- awful.key({ altkey }, "p", awful.tag.viewprev),
- awful.key({ altkey }, "Tab", awful.tag.history.restore),
- -- }}}
-
- -- {{{ Layout manipulation
- awful.key({ modkey }, "l", function () awful.tag.incmwfact( 0.05) end),
- awful.key({ modkey }, "h", function () awful.tag.incmwfact(-0.05) end),
- awful.key({ modkey, "Shift" }, "l", function () awful.client.incwfact(-0.05) end),
- awful.key({ modkey, "Shift" }, "h", function () awful.client.incwfact( 0.05) end),
- awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end),
- awful.key({ modkey }, "space", function () awful.layout.inc(layouts, 1) end),
- -- }}}
-
- -- {{{ Focus controls
- awful.key({ modkey }, "p", function () awful.screen.focus_relative(1) end),
- awful.key({ modkey }, "s", function () scratch.pad.toggle() end),
- awful.key({ modkey }, "u", awful.client.urgent.jumpto),
- awful.key({ modkey }, "j", function ()
- awful.client.focus.byidx(1)
- if client.focus then client.focus:raise() end
- end),
- awful.key({ modkey }, "k", function ()
- awful.client.focus.byidx(-1)
- if client.focus then client.focus:raise() end
- end),
- awful.key({ modkey }, "Tab", function ()
- awful.client.focus.history.previous()
- if client.focus then client.focus:raise() end
- end),
- awful.key({ altkey }, "Escape", function ()
- awful.menu.menu_keys.down = { "Down", "Alt_L" }
- local cmenu = awful.menu.clients({width=230}, { keygrabber=true, coords={x=525, y=330} })
- end),
- awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx(1) end),
- awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx(-1) end)
- -- }}}
+globalkeys = gears.table.join(
+ -- Tag browsing
+ awful.key({ altkey, }, "p", awful.tag.viewprev,
+ {description = "view previous", group = "tag"}),
+ awful.key({ altkey, }, "n", awful.tag.viewnext,
+ {description = "view next", group = "tag"}),
+ awful.key({ altkey, }, "Tab", awful.tag.history.restore,
+ {description = "go back", group = "tag"}),
+
+ -- Focus controls
+ awful.key({ modkey, }, "j",
+ function ()
+ awful.client.focus.byidx( 1)
+ end,
+ {description = "focus next by index", group = "client"}
+ ),
+ awful.key({ modkey, }, "k",
+ function ()
+ awful.client.focus.byidx(-1)
+ end,
+ {description = "focus previous by index", group = "client"}
+ ),
+ awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end,
+ {description = "swap with next client by index", group = "client"}),
+ awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end,
+ {description = "swap with previous client by index", group = "client"}),
+ awful.key({ modkey }, "p", function () awful.screen.focus_relative( 1) end,
+ {description = "focus the next screen", group = "screen"}),
+ awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end,
+ {description = "focus the previous screen", group = "screen"}),
+ awful.key({ modkey, }, "u", awful.client.urgent.jumpto,
+ {description = "jump to urgent client", group = "client"}),
+ awful.key({ modkey, }, "Tab",
+ function ()
+ awful.client.focus.history.previous()
+ if client.focus then
+ client.focus:raise()
+ end
+ end,
+ {description = "go back", group = "client"}),
+
+ -- Multimedia keys
+ awful.key({}, "#151", function () awful.spawn("xdg-screensaver lock") end,
+ {description = "lock the screen", group = "launcher"}),
+ awful.key({}, "#198", function () awful.spawn("amixer set Capture toggle") end,
+ {description = "mute the microphone", group = "launcher"}),
+
+ -- Applications
+ awful.key({ altkey, }, "F1", function () awful.spawn(terminal) end,
+ {description = "open a terminal", group = "launcher"}),
+ awful.key({ modkey, }, "w", function () awful.spawn("firefox") end,
+ {description = "open a browser", group = "launcher"}),
+ awful.key({ modkey, }, "n", function () awful.spawn("urxvt -T Terminal1 -e terminal1-expect-script") end,
+ {description = "open ssh terminal1", group = "launcher"}),
+ awful.key({ modkey, }, "v", function () awful.spawn("urxvt -T Terminal2 -e ssh terminal2") end,
+ {description = "open ssh terminal2", group = "launcher"}),
+ awful.key({ modkey, }, "a", function () awful.spawn("urxvt -T Alpine -e alpine") end,
+ {description = "open e-mail client", group = "launcher"}),
+ awful.key({ modkey, }, "e", function () awful.spawn("emacs") end,
+ {description = "open emacs", group = "launcher"}),
+
+ -- Awesome controls
+ awful.key({ modkey, "Shift" }, "r", awesome.restart,
+ {description = "reload awesome", group = "awesome"}),
+ awful.key({ modkey, "Shift" }, "q", awesome.quit,
+ {description = "quit awesome", group = "awesome"}),
+
+ awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end,
+ {description = "increase master width factor", group = "layout"}),
+ awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end,
+ {description = "decrease master width factor", group = "layout"}),
+ awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end,
+ {description = "increase the number of master clients", group = "layout"}),
+ awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end,
+ {description = "decrease the number of master clients", group = "layout"}),
+ awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end,
+ {description = "increase the number of columns", group = "layout"}),
+ awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end,
+ {description = "decrease the number of columns", group = "layout"}),
+ awful.key({ modkey, }, "space", function () awful.layout.inc( 1) end,
+ {description = "select next", group = "layout"}),
+ awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(-1) end,
+ {description = "select previous", group = "layout"}),
+
+ awful.key({ modkey, "Control" }, "n",
+ function ()
+ local c = awful.client.restore()
+ if c then
+ c:emit_signal(
+ "request::activate", "key.unminimize", {raise = true}
+ )
+ end
+ end,
+ {description = "restore minimized", group = "client"}),
+
+ -- Prompt menus
+ awful.key({ altkey }, "F2", function () awful.screen.focused().mypromptbox:run() end,
+ {description = "run prompt", group = "launcher"}),
+
+ awful.key({ altkey }, "F5",
+ function ()
+ awful.prompt.run {
+ prompt = "Run Lua code: ",
+ textbox = awful.screen.focused().mypromptbox.widget,
+ exe_callback = awful.util.eval,
+ history_path = awful.util.get_cache_dir() .. "/history_eval"
+ }
+ end,
+ {description = "lua execute prompt", group = "awesome"})
+ -- Menubar
+ --awful.key({ modkey, "Control" }, "j", function() menubar.show() end,
+ -- {description = "show the menubar", group = "launcher"})
)
--- }}}
-- {{{ Client manipulation
-clientkeys = awful.util.table.join(
- awful.key({ modkey }, "c", function (c) c:kill() end),
- awful.key({ modkey }, "d", function (c) scratch.pad.set(c, 0.60, 0.60, true) end),
- awful.key({ modkey }, "f", function (c) c.fullscreen = not c.fullscreen end),
- awful.key({ modkey }, "m", function (c)
- c.maximized_horizontal = not c.maximized_horizontal
- c.maximized_vertical = not c.maximized_vertical
- end),
- awful.key({ modkey }, "o", awful.client.movetoscreen),
- awful.key({ modkey }, "Next", function () awful.client.moveresize( 20, 20, -40, -40) end),
- awful.key({ modkey }, "Prior", function () awful.client.moveresize(-20, -20, 40, 40) end),
- awful.key({ modkey }, "Down", function () awful.client.moveresize( 0, 20, 0, 0) end),
- awful.key({ modkey }, "Up", function () awful.client.moveresize( 0, -20, 0, 0) end),
- awful.key({ modkey }, "Left", function () awful.client.moveresize(-20, 0, 0, 0) end),
- awful.key({ modkey }, "Right", function () awful.client.moveresize( 20, 0, 0, 0) end),
- awful.key({ modkey, "Control"},"r", function (c) c:redraw() end),
- awful.key({ modkey, "Shift" }, "0", function (c) c.sticky = not c.sticky end),
- awful.key({ modkey, "Shift" }, "m", function (c) c:swap(awful.client.getmaster()) end),
- awful.key({ modkey, "Shift" }, "c", function (c) exec("kill -CONT " .. c.pid) end),
- awful.key({ modkey, "Shift" }, "s", function (c) exec("kill -STOP " .. c.pid) end),
- awful.key({ modkey, "Shift" }, "t", function (c)
- if c.titlebar then awful.titlebar.remove(c)
- else awful.titlebar.add(c, { modkey = modkey }) end
- end),
- awful.key({ modkey, "Shift" }, "f", function (c) if awful.client.floating.get(c)
- then awful.client.floating.delete(c); awful.titlebar.remove(c)
- else awful.client.floating.set(c, true); awful.titlebar.add(c) end
- end)
+clientkeys = gears.table.join(
+ awful.key({ modkey, }, "f",
+ function (c)
+ c.fullscreen = not c.fullscreen
+ c:raise()
+ end,
+ {description = "toggle fullscreen", group = "client"}),
+ awful.key({ modkey, }, "c", function (c) c:kill() end,
+ {description = "kill client", group = "client"}),
+ awful.key({ modkey, "Shift" }, "f", awful.client.floating.toggle ,
+ {description = "toggle floating", group = "client"}),
+ awful.key({ modkey, "Shift" }, "m", function (c) c:swap(awful.client.getmaster()) end,
+ {description = "move to master", group = "client"}),
+ awful.key({ modkey, "Control" }, "r", function (c) c:redraw() end,
+ {description = "redraw client", group = "client"}),
+ awful.key({ modkey, }, "o", function (c) c:move_to_screen() end,
+ {description = "move to screen", group = "client"}),
+ awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end,
+ {description = "toggle keep on top", group = "client"}),
+
+ awful.key({ modkey, }, "Next", function (c) awful.client.moveresize( 20, 20, -40, -40) end,
+ {description = "resize client PgUP", group = "client"}),
+ awful.key({ modkey, }, "Prior", function (c) awful.client.moveresize(-20, -20, 40, 40) end,
+ {description = "resize client PgDN", group = "client"}),
+ awful.key({ modkey, }, "Down", function (c) awful.client.moveresize(0, 20, 0, 0) end,
+ {description = "move client down", group = "client"}),
+ awful.key({ modkey, }, "Up", function (c) awful.client.moveresize(0, -20, 0, 0) end,
+ {description = "move client up", group = "client"}),
+ awful.key({ modkey, }, "Left", function (c) awful.client.moveresize(-20, 0, 0, 0) end,
+ {description = "move client left", group = "client"}),
+ awful.key({ modkey, }, "Right", function (c) awful.client.moveresize(20, 0, 0, 0) end,
+ {description = "move client right", group = "client"}),
+
+ awful.key({ modkey, "Shift" }, "t", function (c) awful.titlebar.toggle(c) end,
+ {description = "remove client titlebar", group = "client"}),
+
+ awful.key({ modkey, }, "m",
+ function (c)
+ c.maximized = not c.maximized
+ c:raise()
+ end ,
+ {description = "(un)maximize", group = "client"})
+ --awful.key({ modkey, "Control" }, "m",
+ -- function (c)
+ -- c.maximized_vertical = not c.maximized_vertical
+ -- c:raise()
+ -- end ,
+ -- {description = "(un)maximize vertically", group = "client"}),
+ --awful.key({ modkey, "Shift" }, "m",
+ -- function (c)
+ -- c.maximized_horizontal = not c.maximized_horizontal
+ -- c:raise()
+ -- end ,
+ -- {description = "(un)maximize horizontally", group = "client"})
)
-- }}}
--- {{{ Keyboard digits
-local keynumber = 0
-for s = 1, scount do
- keynumber = math.min(9, math.max(#tags[s], keynumber));
-end
--- }}}
-
-- {{{ Tag controls
-for i = 1, keynumber do
- globalkeys = awful.util.table.join( globalkeys,
- awful.key({ modkey }, "#" .. i + 9, function ()
- local screen = mouse.screen
- if tags[screen][i] then awful.tag.viewonly(tags[screen][i]) end
- end),
- awful.key({ modkey, "Control" }, "#" .. i + 9, function ()
- local screen = mouse.screen
- if tags[screen][i] then awful.tag.viewtoggle(tags[screen][i]) end
- end),
- awful.key({ modkey, "Shift" }, "#" .. i + 9, function ()
- if client.focus and tags[client.focus.screen][i] then
- awful.client.movetotag(tags[client.focus.screen][i])
- end
- end),
- awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9, function ()
- if client.focus and tags[client.focus.screen][i] then
- awful.client.toggletag(tags[client.focus.screen][i])
- end
- end))
+for i = 1, 9 do
+ globalkeys = gears.table.join(globalkeys,
+ awful.key({ modkey }, "#" .. i + 9,
+ function ()
+ local screen = awful.screen.focused()
+ local tag = screen.tags[i]
+ if tag then
+ tag:view_only()
+ end
+ end,
+ {description = "view tag #"..i, group = "tag"}),
+ awful.key({ modkey, "Control" }, "#" .. i + 9,
+ function ()
+ local screen = awful.screen.focused()
+ local tag = screen.tags[i]
+ if tag then
+ awful.tag.viewtoggle(tag)
+ end
+ end,
+ {description = "toggle tag #" .. i, group = "tag"}),
+ awful.key({ modkey, "Shift" }, "#" .. i + 9,
+ function ()
+ if client.focus then
+ local tag = client.focus.screen.tags[i]
+ if tag then
+ client.focus:move_to_tag(tag)
+ end
+ end
+ end,
+ {description = "move focused client to tag #"..i, group = "tag"}),
+ awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
+ function ()
+ if client.focus then
+ local tag = client.focus.screen.tags[i]
+ if tag then
+ client.focus:toggle_tag(tag)
+ end
+ end
+ end,
+ {description = "toggle focused client on tag #" .. i, group = "tag"})
+ )
end
--- }}}
+
+clientbuttons = gears.table.join(
+ awful.button({ }, 1, function (c)
+ c:emit_signal("request::activate", "mouse_click", {raise = true})
+ end),
+ awful.button({ modkey }, 1, function (c)
+ c:emit_signal("request::activate", "mouse_click", {raise = true})
+ awful.mouse.client.move(c)
+ end),
+ awful.button({ modkey }, 3, function (c)
+ c:emit_signal("request::activate", "mouse_click", {raise = true})
+ awful.mouse.client.resize(c)
+ end)
+)
-- Set keys
root.keys(globalkeys)
-- }}}
-
-- {{{ Rules
awful.rules.rules = {
- { rule = { }, properties = {
- focus = true, size_hints_honor = false,
- keys = clientkeys, buttons = clientbuttons,
- border_width = beautiful.border_width,
- border_color = beautiful.border_normal }
+ { rule = { },
+ properties = { border_width = beautiful.border_width,
+ border_color = beautiful.border_normal,
+ focus = awful.client.focus.filter,
+ size_hints_honor = false,
+ raise = true,
+ keys = clientkeys,
+ buttons = clientbuttons,
+ screen = awful.screen.preferred,
+ placement = awful.placement.no_overlap+awful.placement.no_offscreen
+ }
+ },
+
+ { rule = { name = "Alpine" },
+ properties = { screen = 1, tag = "4" } },
+ { rule = { class = "Emacs" },
+ properties = { screen = scount, tag = "2" } },
+ { rule = { class = "Firefox" },
+ properties = { screen = scount, tag = "3" } },
+ { rule = { class = "Slack" },
+ properties = { screen = scount, tag = "5" } },
+
+ { rule_any = {
+ instance = {
+ "xmessage",
+ "pinentry",
+ "plugin-container",
+ },
+
+ class = {
+ "Places", -- firefox downloads, history...
+ "Pinentry.*",
+ "Nautilus",
+ "feh",
+ "ROX-Filer",
+ "Xmessage",
+ },
+
+ name = {
+ "Library", -- firefox downloads, history...
+ "Event Tester", -- xev
+ },
+
+ role = {
+ "AlarmWindow", -- Thunderbird calendar
+ "ConfigManager", -- Thunderbird about:config
+ "pop-up", -- Browser developer tools
+ }
+ }, properties = { floating = true, titlebars_enabled = true }},
+
+ { rule_any = {type = { "normal", "dialog" }
+ }, properties = { titlebars_enabled = true }
},
- { rule = { class = "Firefox", instance = "Navigator" },
- properties = { tag = tags[scount][3] } },
- { rule = { class = "Emacs", instance = "emacs" },
- properties = { tag = tags[1][2] } },
- { rule = { class = "Emacs", instance = "_Remember_" },
- properties = { floating = true }, callback = awful.titlebar.add },
- { rule = { class = "Xmessage", instance = "xmessage" },
- properties = { floating = true }, callback = awful.titlebar.add },
- { rule = { instance = "plugin-container" },
- properties = { floating = true }, callback = awful.titlebar.add },
- { rule = { class = "Akregator" }, properties = { tag = tags[scount][8]}},
- { rule = { name = "Alpine" }, properties = { tag = tags[1][4]} },
- { rule = { class = "Gajim" }, properties = { tag = tags[1][5]} },
- { rule = { class = "Ark" }, properties = { floating = true } },
- { rule = { class = "Geeqie" }, properties = { floating = true } },
- { rule = { class = "ROX-Filer" }, properties = { floating = true } },
- { rule = { class = "Pinentry.*" }, properties = { floating = true } },
}
-- }}}
-
-- {{{ Signals
---
--- {{{ Manage signal handler
-client.add_signal("manage", function (c, startup)
- -- Add titlebar to floaters, but remove those from rule callback
- if awful.client.floating.get(c)
- or awful.layout.get(c.screen) == awful.layout.suit.floating then
- if c.titlebar then awful.titlebar.remove(c)
- else awful.titlebar.add(c, {modkey = modkey}) end
+client.connect_signal("manage", function (c)
+ if not awesome.startup then awful.client.setslave(c) end
+
+ if awesome.startup
+ and not c.size_hints.user_position
+ and not c.size_hints.program_position then
+ awful.placement.no_overlap(c)
+ awful.placement.no_offscreen(c)
end
- -- Enable sloppy focus
- c:add_signal("mouse::enter", function (c)
- if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
- and awful.client.focus.filter(c) then
- client.focus = c
- end
- end)
-
- -- Client placement
- if not startup then
- awful.client.setslave(c)
+ if not awful.client.floating.get(c) then
+ awful.titlebar.hide(c)
+ end
- if not c.size_hints.program_position
- and not c.size_hints.user_position then
- awful.placement.no_overlap(c)
- awful.placement.no_offscreen(c)
- end
+ if awful.layout.get(c.screen) == awful.layout.suit.floating then
+ awful.titlebar.show(c)
end
end)
--- }}}
--- {{{ Focus signal handlers
-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)
+-- New client signal handlers
+client.connect_signal("request::titlebars", function(c)
+ local buttons = gears.table.join(
+ awful.button({ }, 1, function()
+ c:emit_signal("request::activate", "titlebar", {raise = true})
+ awful.mouse.client.move(c)
+ end),
+ awful.button({ }, 3, function()
+ c:emit_signal("request::activate", "titlebar", {raise = true})
+ awful.mouse.client.resize(c)
+ end)
+ )
+
+ -- Theme font "Terminus 8" or "ProFont 8" for this titlebar height
+ awful.titlebar(c, { size = 16}) : setup {
+ { -- Left
+ awful.titlebar.widget.iconwidget(c),
+ buttons = buttons,
+ layout = wibox.layout.fixed.horizontal
+ },
+ { -- Middle
+ { -- Title
+ align = "center",
+ widget = awful.titlebar.widget.titlewidget(c)
+ },
+ buttons = buttons,
+ layout = wibox.layout.flex.horizontal
+ },
+ { -- Right
+ awful.titlebar.widget.floatingbutton (c),
+ awful.titlebar.widget.maximizedbutton(c),
+ awful.titlebar.widget.stickybutton (c),
+ awful.titlebar.widget.ontopbutton (c),
+ awful.titlebar.widget.closebutton (c),
+ layout = wibox.layout.fixed.horizontal()
+ },
+ layout = wibox.layout.align.horizontal
+ }
+end)
+
+-- Enable sloppy focus
+client.connect_signal("mouse::enter", function(c)
+ c:emit_signal("request::activate", "mouse_enter", {raise = false})
+end)
+
+client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
+client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
-- }}}
--- {{{ Arrange signal handler
-for s = 1, scount do screen[s]:add_signal("arrange", function ()
- local clients = awful.client.visible(s)
- local layout = awful.layout.getname(awful.layout.get(s))
- for _, c in pairs(clients) do -- Floaters are always on top
- if awful.client.floating.get(c) or layout == "floating"
- then if not c.fullscreen then c.above = true end
- else c.above = false end
- end
- end)
+-- {{{ Screen padding
+-- * when a laptop is right in front of the monitor and its
+-- LCD is obstructing the view of the bottom of the screen
+-- on the external monitor
+if scount == 2 then
+ awful.screen.padding(screen[1], { bottom = 235 })
end
-- }}}
+
+
+-- {{{ Autostart
+awful.spawn("/usr/bin/xinput set-prop 9 334 0 1 0") -- touchpad single finger scrolling
+awful.spawn("/home/anrxc/bin/autostart-keychain-agent.sh") -- launch the ssh-agent
+awful.spawn("/home/anrxc/bin/autostart-xmodmap-xdefaults.sh") -- xrdb merge defaults and keymap
-- }}}
diff --git a/scratch/drop.lua b/scratch/drop.lua
deleted file mode 100644
index a3e4490..0000000
--- a/scratch/drop.lua
+++ /dev/null
@@ -1,134 +0,0 @@
--------------------------------------------------------------------
--- Drop-down applications manager for the awesome window manager
--------------------------------------------------------------------
--- Coded by: * Lucas de Vries <lucas@glacicle.com>
--- Hacked by: * Adrian C. (anrxc) <anrxc@sysphere.org>
--- Licensed under the WTFPL version 2
--- * http://sam.zoy.org/wtfpl/COPYING
--------------------------------------------------------------------
--- To use this module add:
--- local scratch = require("scratch")
--- to the top of your rc.lua, and call it from a keybinding:
--- scratch.drop(prog, vert, horiz, width, height, sticky, screen)
---
--- Parameters:
--- prog - Program to run; "urxvt", "gmrun", "thunderbird"
--- vert - Vertical; "bottom", "center" or "top" (default)
--- horiz - Horizontal; "left", "right" or "center" (default)
--- width - Width in absolute pixels, or width percentage
--- when <= 1 (1 (100% of the screen) by default)
--- height - Height in absolute pixels, or height percentage
--- when <= 1 (0.25 (25% of the screen) by default)
--- sticky - Visible on all tags, false by default
--- screen - Screen (optional), mouse.screen by default
--------------------------------------------------------------------
-
--- Grab environment
-local pairs = pairs
-local awful = require("awful")
-local setmetatable = setmetatable
-local capi = {
- mouse = mouse,
- client = client,
- screen = screen
-}
-
--- Scratchdrop: drop-down applications manager for the awesome window manager
-local drop = {} -- module scratch.drop
-
-
-local dropdown = {}
-
--- Create a new window for the drop-down application when it doesn't
--- exist, or toggle between hidden and visible states when it does
-function toggle(prog, vert, horiz, width, height, sticky, screen)
- vert = vert or "top"
- horiz = horiz or "center"
- width = width or 1
- height = height or 0.25
- sticky = sticky or false
- screen = screen or capi.mouse.screen
-
- -- Determine signal usage in this version of awesome
- local attach_signal = capi.client.connect_signal or capi.client.add_signal
- local detach_signal = capi.client.disconnect_signal or capi.client.remove_signal
-
- if not dropdown[prog] then
- dropdown[prog] = {}
-
- -- Add unmanage signal for scratchdrop programs
- attach_signal("unmanage", function (c)
- for scr, cl in pairs(dropdown[prog]) do
- if cl == c then
- dropdown[prog][scr] = nil
- end
- end
- end)
- end
-
- if not dropdown[prog][screen] then
- spawnw = function (c)
- dropdown[prog][screen] = c
-
- -- Scratchdrop clients are floaters
- awful.client.floating.set(c, true)
-
- -- Client geometry and placement
- local screengeom = capi.screen[screen].workarea
-
- if width <= 1 then width = screengeom.width * width end
- if height <= 1 then height = screengeom.height * height end
-
- if horiz == "left" then x = screengeom.x
- elseif horiz == "right" then x = screengeom.width - width
- else x = screengeom.x+(screengeom.width-width)/2 end
-
- if vert == "bottom" then y = screengeom.height + screengeom.y - height
- elseif vert == "center" then y = screengeom.y+(screengeom.height-height)/2
- else y = screengeom.y - screengeom.y end
-
- -- Client properties
- c:geometry({ x = x, y = y, width = width, height = height })
- c.ontop = true
- c.above = true
- c.skip_taskbar = true
- if sticky then c.sticky = true end
- if c.titlebar then awful.titlebar.remove(c) end
-
- c:raise()
- capi.client.focus = c
- detach_signal("manage", spawnw)
- end
-
- -- Add manage signal and spawn the program
- attach_signal("manage", spawnw)
- awful.util.spawn(prog, false)
- else
- -- Get a running client
- c = dropdown[prog][screen]
-
- -- Switch the client to the current workspace
- if c:isvisible() == false then c.hidden = true
- awful.client.movetotag(awful.tag.selected(screen), c)
- end
-
- -- Focus and raise if hidden
- if c.hidden then
- -- Make sure it is centered
- if vert == "center" then awful.placement.center_vertical(c) end
- if horiz == "center" then awful.placement.center_horizontal(c) end
- c.hidden = false
- c:raise()
- capi.client.focus = c
- else -- Hide and detach tags if not
- c.hidden = true
- local ctags = c:tags()
- for i, t in pairs(ctags) do
- ctags[i] = nil
- end
- c:tags(ctags)
- end
- end
-end
-
-return setmetatable(drop, { __call = function(_, ...) return toggle(...) end })
diff --git a/scratch/init.lua b/scratch/init.lua
deleted file mode 100644
index f3b3e7e..0000000
--- a/scratch/init.lua
+++ /dev/null
@@ -1,14 +0,0 @@
----------------------------------------------------------------
--- Drop-down applications and scratchpad manager for awesome wm
----------------------------------------------------------------
--- Coded by: * Adrian C. (anrxc) <anrxc@sysphere.org>
--- Licensed under the WTFPL version 2
--- * http://sam.zoy.org/wtfpl/COPYING
----------------------------------------------------------------
-
-local scratch = {} -- module scratch
-
-scratch.pad = require("scratch.pad")
-scratch.drop = require("scratch.drop")
-
-return scratch
diff --git a/scratch/pad.lua b/scratch/pad.lua
deleted file mode 100644
index cdc4c01..0000000
--- a/scratch/pad.lua
+++ /dev/null
@@ -1,137 +0,0 @@
----------------------------------------------------------------
--- Basic scratchpad manager for the awesome window manager
----------------------------------------------------------------
--- Coded by: * Adrian C. (anrxc) <anrxc@sysphere.org>
--- Licensed under the WTFPL version 2
--- * http://sam.zoy.org/wtfpl/COPYING
----------------------------------------------------------------
--- To use this module add:
--- local scratch = require("scratch")
--- to the top of your rc.lua, and call:
--- scratch.pad.set(c, width, height, sticky, screen)
--- from a clientkeys binding, and:
--- scratch.pad.toggle(screen)
--- from a globalkeys binding.
---
--- Parameters:
--- c - Client to scratch or un-scratch
--- width - Width in absolute pixels, or width percentage
--- when <= 1 (0.50 (50% of the screen) by default)
--- height - Height in absolute pixels, or height percentage
--- when <= 1 (0.50 (50% of the screen) by default)
--- sticky - Visible on all tags, false by default
--- screen - Screen (optional), mouse.screen by default
----------------------------------------------------------------
-
--- Grab environment
-local pairs = pairs
-local awful = require("awful")
-local capi = {
- mouse = mouse,
- client = client,
- screen = screen
-}
-
--- Scratchpad: basic scratchpad manager for the awesome window manager
-local pad = {} -- module scratch.pad
-
-
-local scratchpad = {}
-
--- Toggle a set of properties on a client.
-local function toggleprop(c, prop)
- c.ontop = prop.ontop or false
- c.above = prop.above or false
- c.hidden = prop.hidden or false
- c.sticky = prop.stick or false
- c.skip_taskbar = prop.task or false
-end
-
--- Scratch the focused client, or un-scratch and tile it. If another
--- client is already scratched, replace it with the focused client.
-function pad.set(c, width, height, sticky, screen)
- width = width or 0.50
- height = height or 0.50
- sticky = sticky or false
- screen = screen or capi.mouse.screen
-
- -- Determine signal usage in this version of awesome
- local attach_signal = capi.client.connect_signal or capi.client.add_signal
- local detach_signal = capi.client.disconnect_signal or capi.client.remove_signal
-
- local function setscratch(c)
- -- Scratchpad is floating and has no titlebar
- awful.client.floating.set(c, true); awful.titlebar.remove(c)
-
- -- Scratchpad client properties
- toggleprop(c, {ontop=true, above=true, task=true, stick=sticky})
-
- -- Scratchpad geometry and placement
- local screengeom = capi.screen[screen].workarea
- if width <= 1 then width = screengeom.width * width end
- if height <= 1 then height = screengeom.height * height end
-
- c:geometry({ -- Scratchpad is always centered on screen
- x = screengeom.x + (screengeom.width - width) / 2,
- y = screengeom.y + (screengeom.height - height) / 2,
- width = width, height = height
- })
-
- -- Scratchpad should not loose focus
- c:raise(); capi.client.focus = c
- end
-
- -- Prepare a table for storing clients,
- if not scratchpad.pad then scratchpad.pad = {}
- -- add unmanage signal for scratchpad clients
- attach_signal("unmanage", function (c)
- for scr, cl in pairs(scratchpad.pad) do
- if cl == c then scratchpad.pad[scr] = nil end
- end
- end)
- end
-
- -- If the scratcphad is emtpy, store the client,
- if not scratchpad.pad[screen] then
- scratchpad.pad[screen] = c
- -- then apply geometry and properties
- setscratch(c)
- else -- If a client is already scratched,
- local oc = scratchpad.pad[screen]
- -- unscratch, and compare it with the focused client
- awful.client.floating.toggle(oc); toggleprop(oc, {})
- -- If it matches clear the table, if not replace it
- if oc == c then scratchpad.pad[screen] = nil
- else scratchpad.pad[screen] = c; setscratch(c) end
- end
-end
-
--- Move the scratchpad to the current workspace, focus and raise it
--- when it's hidden, or hide it when it's visible.
-function pad.toggle(screen)
- screen = screen or capi.mouse.screen
-
- -- Check if we have a client on storage,
- if scratchpad.pad and
- scratchpad.pad[screen] ~= nil
- then -- and get it out, to play
- local c = scratchpad.pad[screen]
-
- -- If it's visible on another tag hide it,
- if c:isvisible() == false then c.hidden = true
- -- and move it to the current worskpace
- awful.client.movetotag(awful.tag.selected(screen), c)
- end
-
- -- Focus and raise if it's hidden,
- if c.hidden then
- awful.placement.centered(c)
- c.hidden = false
- c:raise(); capi.client.focus = c
- else -- hide it if it's not
- c.hidden = true
- end
- end
-end
-
-return pad
diff --git a/zenburn.lua b/zenburn.lua
deleted file mode 100644
index ba06d4b..0000000
--- a/zenburn.lua
+++ /dev/null
@@ -1,144 +0,0 @@
--------------------------------
--- "Zenburn" awesome theme --
--- By Adrian C. (anrxc) --
--- License: GNU GPL v2 --
--------------------------------
-
-
--- {{{ Main
-theme = {}
-theme.confdir = awful.util.getdir("config")
-theme.wallpaper_cmd = { "/usr/bin/nitrogen --restore" }
---theme.wallpaper_cmd = { "awsetbg /usr/share/awesome/themes/zenburn/zenburn-background.png" }
--- }}}
-
-
--- {{{ Styles
-theme.font = "Profont 8"
-
--- {{{ Colors
-theme.fg_normal = "#DCDCCC"
-theme.fg_focus = "#F0DFAF"
-theme.fg_urgent = "#CC9393"
-theme.bg_normal = "#3F3F3F"
-theme.bg_focus = "#1E2320"
-theme.bg_urgent = theme.bg_normal
--- }}}
-
--- {{{ Borders
-theme.border_width = 1
-theme.border_focus = "#6F6F6F"
-theme.border_normal = theme.bg_normal
-theme.border_marked = theme.fg_urgent
--- }}}
-
--- {{{ Titlebars
-theme.titlebar_bg_focus = theme.bg_normal
-theme.titlebar_bg_normal = theme.bg_normal
--- theme.titlebar_[normal|focus]
--- }}}
-
--- {{{ Widgets
-theme.fg_widget = "#AECF96"
-theme.fg_center_widget = "#88A175"
-theme.fg_end_widget = "#FF5656"
-theme.fg_off_widget = "#494B4F"
-theme.fg_netup_widget = "#7F9F7F"
-theme.fg_netdn_widget = theme.fg_urgent
-theme.bg_widget = theme.bg_normal
-theme.border_widget = theme.bg_normal
--- }}}
-
--- {{{ Mouse finder
-theme.mouse_finder_color = theme.fg_urgent
--- theme.mouse_finder_[timeout|animate_timeout|radius|factor]
--- }}}
-
--- {{{ Tooltips
--- theme.tooltip_[font|opacity|fg_color|bg_color|border_width|border_color]
--- }}}
-
--- {{{ Taglist and Tasklist
--- theme.[taglist|tasklist]_[bg|fg]_[focus|urgent]
--- }}}
-
--- {{{ Menu
--- theme.menu_[bg|fg]_[normal|focus]
--- theme.menu_[height|width|border_color|border_width]
--- }}}
--- }}}
-
-
--- {{{ Icons
---
--- {{{ Taglist icons
-theme.taglist_squares_sel = theme.confdir .. "/icons/taglist/sel.png"
-theme.taglist_squares_unsel = theme.confdir .. "/icons/taglist/unsel.png"
---theme.taglist_squares_resize = "false"
--- }}}
-
--- {{{ Misc icons
---theme.awesome_icon = theme.confdir .. "/icons/awesome.png"
---theme.menu_submenu_icon = "/usr/share/awesome/themes/default/submenu.png"
---theme.tasklist_floating_icon = "/usr/share/awesome/themes/default/tasklist/floatingw.png"
--- }}}
-
--- {{{ Layout icons
-theme.layout_tile = theme.confdir .. "/icons/layouts/tile.png"
-theme.layout_tileleft = theme.confdir .. "/icons/layouts/tileleft.png"
-theme.layout_tilebottom = theme.confdir .. "/icons/layouts/tilebottom.png"
-theme.layout_tiletop = theme.confdir .. "/icons/layouts/tiletop.png"
-theme.layout_fairv = theme.confdir .. "/icons/layouts/fairv.png"
-theme.layout_fairh = theme.confdir .. "/icons/layouts/fairh.png"
-theme.layout_spiral = theme.confdir .. "/icons/layouts/spiral.png"
-theme.layout_dwindle = theme.confdir .. "/icons/layouts/dwindle.png"
-theme.layout_max = theme.confdir .. "/icons/layouts/max.png"
-theme.layout_fullscreen = theme.confdir .. "/icons/layouts/fullscreen.png"
-theme.layout_magnifier = theme.confdir .. "/icons/layouts/magnifier.png"
-theme.layout_floating = theme.confdir .. "/icons/layouts/floating.png"
--- }}}
-
--- {{{ Widget icons
-theme.widget_cpu = theme.confdir .. "/icons/cpu.png"
-theme.widget_bat = theme.confdir .. "/icons/bat.png"
-theme.widget_mem = theme.confdir .. "/icons/mem.png"
-theme.widget_fs = theme.confdir .. "/icons/disk.png"
-theme.widget_net = theme.confdir .. "/icons/down.png"
-theme.widget_netup = theme.confdir .. "/icons/up.png"
-theme.widget_wifi = theme.confdir .. "/icons/wifi.png"
-theme.widget_mail = theme.confdir .. "/icons/mail.png"
-theme.widget_vol = theme.confdir .. "/icons/vol.png"
-theme.widget_org = theme.confdir .. "/icons/cal.png"
-theme.widget_date = theme.confdir .. "/icons/time.png"
-theme.widget_crypto = theme.confdir .. "/icons/crypto.png"
-theme.widget_sep = theme.confdir .. "/icons/separator.png"
--- }}}
-
--- {{{ Titlebar icons
-theme.titlebar_close_button_focus = theme.confdir .. "/icons/titlebar/close_focus.png"
-theme.titlebar_close_button_normal = theme.confdir .. "/icons/titlebar/close_normal.png"
-
-theme.titlebar_ontop_button_focus_active = theme.confdir .. "/icons/titlebar/ontop_focus_active.png"
-theme.titlebar_ontop_button_normal_active = theme.confdir .. "/icons/titlebar/ontop_normal_active.png"
-theme.titlebar_ontop_button_focus_inactive = theme.confdir .. "/icons/titlebar/ontop_focus_inactive.png"
-theme.titlebar_ontop_button_normal_inactive = theme.confdir .. "/icons/titlebar/ontop_normal_inactive.png"
-
-theme.titlebar_sticky_button_focus_active = theme.confdir .. "/icons/titlebar/sticky_focus_active.png"
-theme.titlebar_sticky_button_normal_active = theme.confdir .. "/icons/titlebar/sticky_normal_active.png"
-theme.titlebar_sticky_button_focus_inactive = theme.confdir .. "/icons/titlebar/sticky_focus_inactive.png"
-theme.titlebar_sticky_button_normal_inactive = theme.confdir .. "/icons/titlebar/sticky_normal_inactive.png"
-
-theme.titlebar_floating_button_focus_active = theme.confdir .. "/icons/titlebar/floating_focus_active.png"
-theme.titlebar_floating_button_normal_active = theme.confdir .. "/icons/titlebar/floating_normal_active.png"
-theme.titlebar_floating_button_focus_inactive = theme.confdir .. "/icons/titlebar/floating_focus_inactive.png"
-theme.titlebar_floating_button_normal_inactive = theme.confdir .. "/icons/titlebar/floating_normal_inactive.png"
-
-theme.titlebar_maximized_button_focus_active = theme.confdir .. "/icons/titlebar/maximized_focus_active.png"
-theme.titlebar_maximized_button_normal_active = theme.confdir .. "/icons/titlebar/maximized_normal_active.png"
-theme.titlebar_maximized_button_focus_inactive = theme.confdir .. "/icons/titlebar/maximized_focus_inactive.png"
-theme.titlebar_maximized_button_normal_inactive = theme.confdir .. "/icons/titlebar/maximized_normal_inactive.png"
--- }}}
--- }}}
-
-
-return theme