X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/648541413429f405df2d7ab94a03e75b39dd0b23..e6c131412457053db897288f3b03f7c8944a8690:/.config/awesome/rc.lua diff --git a/.config/awesome/rc.lua b/.config/awesome/rc.lua index d262bf7..57e9f76 100644 --- a/.config/awesome/rc.lua +++ b/.config/awesome/rc.lua @@ -65,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, @@ -94,6 +94,20 @@ local function client_menu_toggle_fn() 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 @@ -135,9 +149,6 @@ menubar.utils.terminal = terminal -- Set the terminal for applications that requ -- Create a textclock widget mytextclock = wibox.widget.textclock("%a %d %b %H:%M:%S", 1) --- Keyboard map indicator and switcher -mykeyboardlayout = awful.widget.keyboardlayout() - -- Create a wibox for each screen and add it mywibox = {} mypromptbox = {} @@ -188,6 +199,39 @@ mytasklist.buttons = awful.util.table.join( -- }}} -- {{{ 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 @@ -200,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() @@ -441,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) -- }}} @@ -457,44 +533,84 @@ awful.rules.rules = { 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 + }, } -- }}} @@ -565,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