X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/2b19c159535536be04336009fdec4f39937a811a..e6c131412457053db897288f3b03f7c8944a8690:/.config/awesome/rc.lua?ds=sidebyside diff --git a/.config/awesome/rc.lua b/.config/awesome/rc.lua index 66f5d4b..57e9f76 100644 --- a/.config/awesome/rc.lua +++ b/.config/awesome/rc.lua @@ -1,3 +1,4 @@ +-- {{{ Imports -- Standard awesome library local gears = require("gears") local awful = require("awful") @@ -10,6 +11,7 @@ local beautiful = require("beautiful") local naughty = require("naughty") local menubar = require("menubar") local hotkeys_popup = require("awful.hotkeys_popup").widget +-- }}} -- {{{ Error handling -- Check if awesome encountered an error during startup and fell back to @@ -63,7 +65,7 @@ awful.layout.layouts = { -- awful.layout.suit.spiral, -- awful.layout.suit.spiral.dwindle, awful.layout.suit.max, - awful.layout.suit.max.fullscreen, + -- awful.layout.suit.max.fullscreen, -- awful.layout.suit.magnifier, -- awful.layout.suit.corner.nw, -- awful.layout.suit.corner.ne, @@ -91,6 +93,33 @@ local function client_menu_toggle_fn() end end end + +local function sorted_pairs(t, f) + local a = {} + for n in pairs(t) do table.insert(a, n) end + table.sort(a, f) + local i = 0 -- iterator variable + local iter = function () -- iterator function + i = i + 1 + if a[i] == nil then return nil + else return a[i], t[a[i]] + end + end + return iter +end + +local function print_table(tbl, indent) + if not indent then indent = 0 end + for k, v in pairs(tbl) do + formatting = string.rep(" ", indent) .. k .. ": " + if type(v) == "table" then + print(formatting) + print_table(v, indent+1) + else + print(formatting .. tostring(v)) + end + end +end -- }}} -- {{{ Menu @@ -110,14 +139,12 @@ mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesom mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, menu = mymainmenu }) +-- }}} --- Menubar configuration +-- {{{ Menubar configuration menubar.utils.terminal = terminal -- Set the terminal for applications that require it -- }}} --- Keyboard map indicator and switcher -mykeyboardlayout = awful.widget.keyboardlayout() - -- {{{ Wibox -- Create a textclock widget mytextclock = wibox.widget.textclock("%a %d %b %H:%M:%S", 1) @@ -169,6 +196,42 @@ mytasklist.buttons = awful.util.table.join( awful.button({ }, 5, function () awful.client.focus.byidx(-1) end)) +-- }}} + +-- {{{ Tags +tags = {} +tags.config = {} +tags.config["main"] = { + t1 = { layout = layout_default, selected = true }, + t2 = { layout = layout_default }, + t3 = { layout = layout_tiled }, + t4 = { layout = layout_tiled }, + t5 = { layout = layout_tiled }, + t6 = { layout = layout_floating }, + t7 = { layout = layout_maximised }, + t8 = { layout = layout_maximised }, + t9 = { layout = layout_maximised }, +} +tags.config["aux"] = { + t1 = { layout = layout_default, selected = true }, + t2 = { layout = layout_default }, + t3 = { layout = layout_tiled }, + t4 = { layout = layout_floating }, + t5 = { layout = layout_floating }, + t6 = { layout = layout_floating }, + t7 = { layout = layout_floating }, + t8 = { layout = layout_floating }, + t9 = { layout = layout_maximised }, +} + +screentags = {} +screentags[1] = tags.config["main"] +if screen.count() == 2 then -- aux screen is on the right + screentags[2] = tags.config["aux"] +elseif screen.count() == 3 then -- main screen is still #1 in the middle + screentags[2] = tags.config["aux"] + screentags[3] = tags.config["aux"] +end awful.screen.connect_for_each_screen(function(s) -- Wallpaper @@ -181,12 +244,14 @@ awful.screen.connect_for_each_screen(function(s) --DISABLED-- gears.wallpaper.maximized(wallpaper, s, true) --DISABLED--end - -- Each screen has its own tag table. - tags = awful.tag.new({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, layout_default) - tags[7].layout = layout_maximised - tags[8].layout = layout_maximised - tags[9].layout = layout_maximised - tags[1].selected = true + if not tags[s.index] then + tags[s.index] = {} + end + for n,p in sorted_pairs(screentags[s.index]) do + p["screen"] = s + n = string.sub(n, 2) -- remove leading 't' needed for syntax in table + table.insert(tags[s.index], awful.tag.add(n, p)) + end -- Create a promptbox for each screen mypromptbox[s] = awful.widget.prompt() @@ -212,7 +277,7 @@ awful.screen.connect_for_each_screen(function(s) layout = wibox.layout.align.horizontal, { -- Left widgets layout = wibox.layout.fixed.horizontal, - mylauncher, + -- mylauncher, mytaglist[s], mypromptbox[s], }, @@ -422,6 +487,36 @@ clientbuttons = awful.util.table.join( awful.button({ modkey }, 1, awful.mouse.client.move), awful.button({ modkey }, 3, awful.mouse.client.resize)) +-- misc apps +globalkeys = awful.util.table.join(globalkeys, +awful.key({ cmdkey }, "n", function () awful.spawn("firefox") end), +awful.key({ cmdkey }, "m", function () awful.spawn("chromium") end), +awful.key({ cmdkey }, "y", function () awful.spawn(terminal .. " -e python") end), +awful.key({ cmdkey }, "c", function () awful.spawn("icedove") end), +awful.key({ cmdkey }, "r", function () mypromptbox[mouse.screen]:run() end), +awful.key({ cmdkey }, "g", function () awful.spawn("gscan2pdf") end), +awful.key({ cmdkey }, "v", function () awful.spawn("virt-manager") end), +awful.key({ cmdkey }, "l", function () awful.spawn("libreoffice") end), +awful.key({ cmdkey }, "i", function () awful.spawn(terminal .. " -title irc -name irc -e env MOSH_TITLE_NOPREFIX=true mosh -4 -- irc-host screen -dr irc") end), +awful.key({ cmdkey }, "x", function () awful.spawn.with_shell("/sbin/start-stop-daemon --start --background --exec /usr/bin/xscreensaver -- -no-capture-stderr; sleep 2; xscreensaver-command -lock") end), +awful.key({ cmdkey, "Shift" }, "x", function () awful.spawn("xscreensaver-command -exit") end), + +-- function keys +awful.key(nil, "XF86ScreenSaver", function () awful.spawn("xset dpms force off") end), +awful.key(nil, "XF86AudioMute", function () awful.spawn("pactl set-sink-mute 0 toggle") end), +awful.key(nil, "XF86AudioLowerVolume", function () awful.spawn("pactl set-sink-volume 0 -2%") end), +awful.key(nil, "XF86AudioRaiseVolume", function () awful.spawn("pactl set-sink-volume 0 +2%") end), +awful.key(nil, "XF86AudioMicMute", function () awful.spawn("pactl set-source-mute 1 toggle") end), +awful.key(nil, "XF86MonBrightnessDown", function () awful.spawn("xbacklight -dec 5%") end), +awful.key(nil, "XF86MonBrightnessUp", function () awful.spawn("xbacklight -inc 5%") end), +awful.key(nil, "XF86Display", function () awful.spawn("") end), +awful.key(nil, "XF86WLAN", function () awful.spawn("") end), +awful.key(nil, "XF86Tools", function () awful.spawn("") end), +awful.key(nil, "XF86Search", function () awful.spawn("") end), +awful.key(nil, "XF86LaunchA", function () awful.spawn("") end), +awful.key(nil, "XF86Explorer", function () awful.spawn("") end) +) + -- Set keys root.keys(globalkeys) -- }}} @@ -434,47 +529,88 @@ awful.rules.rules = { 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, - placement = awful.placement.no_overlap+awful.placement.no_offscreen + placement = awful.placement.no_overlap+awful.placement.no_offscreen, } }, -- Floating clients. { rule_any = { instance = { - "DTA", -- Firefox addon DownThemAll. - "copyq", -- Includes session name in class. + "DTA", -- Firefox addon DownThemAll. + "copyq", -- Includes session name in class. }, class = { - "Arandr", - "Gpick", - "Kruler", - "MessageWin", -- kalarm. - "Sxiv", - "Wpa_gui", - "pinentry", - "veromix", - "xtightvncviewer"}, + "Arandr", + "Gpick", + "Kruler", + "MessageWin", -- kalarm. + "Sxiv", + "Wpa_gui", + "pinentry", + "veromix", + "xtightvncviewer", + "MuPDF", + "vlc", + "Wicd-client.py", + "Blueman-manager" + }, name = { - "Event Tester", -- xev. + "Event Tester", -- xev. }, role = { - "AlarmWindow", -- Thunderbird's calendar. - "pop-up", -- e.g. Google Chrome's (detached) Developer Tools. + "AlarmWindow", -- Thunderbird's calendar. + "pop-up", -- e.g. Google Chrome's (detached) Developer Tools. } }, properties = { floating = true }}, -- Add titlebars to normal clients and dialogs - { rule_any = {type = { "normal", "dialog" } - }, properties = { titlebars_enabled = false } - }, - - -- Set Firefox to always map on the tag named "2" on screen 1. - -- { rule = { class = "Firefox" }, - -- properties = { screen = 1, tag = "2" } }, + --DISABLED-- { rule_any = {type = { "normal", "dialog" } + --DISABLED-- }, properties = { titlebars_enabled = true } + --DISABLED-- }, + + { rule = { type = "dialog" }, + properties = { placement = awful.placement.centered }}, + + { rule = { class = "URxvt", instance = "irc" }, + properties = { +-- screen = screen.count(), +-- tag = screen.count() == 1 and "2" or "1" + }, + callback = function(c) c:move_to_tag(tags[1][2]) end + }, + { rule = { class = "Firefox" }, + properties = { +-- screen = screen.count(), +-- tag = screen.count() == 1 and "2" or "1" + }, + callback = function(c) c:move_to_tag(tags[1][9]) end + }, + { rule = { class = "Icedove" }, + properties = { +-- screen = screen.count(), +-- tag = screen.count() == 1 and "2" or "1" + }, + callback = function(c) c:move_to_tag(tags[1][8]) end + }, + { rule = { class = "chromium" }, + properties = { +-- screen = screen.count(), +-- tag = screen.count() == 1 and "2" or "1" + }, + callback = function(c) c:move_to_tag(tags[1][9]) end + }, + { rule = { class = "Gscan2pdf" }, + properties = { + screen = 1, + tag = "7" + }, +-- callback = function(c) c:move_to_tag(tags[1][9]) end + }, } -- }}} @@ -545,6 +681,15 @@ 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) + +-- https://www.mail-archive.com/awesome@naquadah.org/msg08285.html +client.disconnect_signal("request::activate", awful.ewmh.activate) +client.connect_signal("request::activate", function(c, context, hints) + if c.class == "Firefox" and context == "ewmh" then + return + end + return awful.ewmh.activate(c, context, hints) +end) -- }}} -- vim:ft=lua:sw=4:sts=4:ts=4:et