X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/ac23353125e9b9812ae33243e15a0e40883547bc..75745f24ce9e5adfcd1173d1b7f3b95256f96c8c:/.config/awesome/rc.lua diff --git a/.config/awesome/rc.lua b/.config/awesome/rc.lua index 5e1b06a..c34be92 100644 --- a/.config/awesome/rc.lua +++ b/.config/awesome/rc.lua @@ -11,6 +11,9 @@ local beautiful = require("beautiful") local naughty = require("naughty") local menubar = require("menubar") local hotkeys_popup = require("awful.hotkeys_popup").widget +local lain = require("lain") +local dkjson = require("lain.util").dkjson +local math = require("math") -- }}} -- {{{ Error handling @@ -120,6 +123,49 @@ local function print_table(tbl, indent) end end end + +local lain_bat = lain.widgets.bat({ + batteries = {"BAT0", "BAT1"}, + settings = function() + local delim = "↓" + if bat_now.status == "Charging" then delim = "↑" + elseif bat_now.status == "Unknown" then delim = "٭" end + widget:set_text(bat_now.perc .. "% " .. delim .. " " .. bat_now.time) + end, +}) + +local function poloniex_price(output, pair, prec) + local xc, pos, err = dkjson.decode(output, 1, nil) + if not prec then prec = 4 end + val = (xc and xc[pair]["last"]) or 0 + val = math.floor(val*10^prec+0.5)/10^prec + return (not err and val) or "n/a" +end + +local eth_widget = lain.widgets.abase({ + cmd = "curl -m5 -s 'https://poloniex.com/public?command=returnTicker'", + timeout = 600, + settings = function() + widget:set_text(poloniex_price(output, 'BTC_ETH') .. " Ƀ/Ξ") + end +}) + +local function coindesk_price(output, base, prec) + local xc, pos, err = dkjson.decode(output, 1, nil) + if not prec then prec = 4 end + val = (xc and xc["bpi"][base]["rate_float"]) or 0 + val = math.floor(val*10^prec+0.5)/10^prec + return (not err and val) or "n/a" +end + +local btc_widget = lain.widgets.abase({ + cmd = "curl -m5 -Ls 'https://api.coindesk.com/v1/bpi/currentprice/EUR.json'", + timeout = 600, + settings = function() + widget:set_text(coindesk_price(output, "EUR", 2) .. " €/Ƀ") + end +}) + -- }}} -- {{{ Menu @@ -146,6 +192,8 @@ menubar.utils.terminal = terminal -- Set the terminal for applications that requ -- }}} -- {{{ Wibox +local spacer = wibox.widget.textbox() +spacer:set_text(' | ') -- Create a textclock widget mytextclock = wibox.widget.textclock("%a %d %b %H:%M:%S", 1) @@ -175,7 +223,8 @@ mytasklist = {} mytasklist.buttons = awful.util.table.join( awful.button({ }, 1, function (c) if c == client.focus then - c.minimized = true + -- I don't like click-minimising + -- c.minimized = true else -- Without this, the following -- :isvisible() makes no sense @@ -286,6 +335,12 @@ awful.screen.connect_for_each_screen(function(s) layout = wibox.layout.fixed.horizontal, mykeyboardlayout, wibox.widget.systray(), + btc_widget, + spacer, + eth_widget, + spacer, + lain_bat.widget, + spacer, mytextclock, mylayoutbox[s], }, @@ -492,11 +547,12 @@ 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 }, "c", function () awful.spawn("thunderbird") 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 }, "f", function () awful.spawn("thunar") 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), @@ -504,9 +560,13 @@ awful.key({ cmdkey, "Shift" }, "x", function () awful.spawn("xscreensaver-comman -- 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({ cmdkey }, "End", 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({ cmdkey }, "Next", 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({ cmdkey }, "Prior", 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({ cmdkey }, "Home", 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), @@ -539,10 +599,10 @@ awful.rules.rules = { raise = true, keys = clientkeys, buttons = clientbuttons, + screen = awful.screen.preferred, placement = awful.placement.no_overlap+awful.placement.no_offscreen, - -- https://github.com/awesomeWM/awesome/issues/1091#issuecomment-246933520 - screen = function (c) return awesome.startup and c.screen or awful.screen.focused() end, - } + floating = true + }, }, -- Add titlebars to normal clients and dialogs @@ -560,23 +620,23 @@ awful.rules.rules = { } }, { rule = { class = "URxvt", instance = "irc" }, properties = { - switch_to_tag = true + switchtotag = true }, callback = move_to_tag(screen.count(), screen.count() == 1 and 2 or 1) }, - { rule = { class = "Firefox" }, + { rule = { class = "Firefox", instance = "Navigator" }, properties = { floating = false, }, callback = move_to_tag(screen.count() == 1 and 1 or 2, 9) }, - { rule = { class = "Icedove" }, + { rule = { class = "Thunderbird", instance = "Mail" }, properties = { floating = false, }, callback = move_to_tag(screen.count() == 1 and 1 or 2, 8) }, - { rule = { class = "chromium" }, + { rule = { class = "Chromium", instance = "chromium" }, properties = { floating = false, }, @@ -584,8 +644,7 @@ awful.rules.rules = { }, { rule = { class = "Gscan2pdf" }, properties = { - screen = 1, - tag = "5" + switchtotag = true }, callback = move_to_tag(1, 5) }, @@ -593,7 +652,11 @@ awful.rules.rules = { properties = { floating = false, }, - callback = move_to_tag(1, 5) + }, + { rule = { class = "Thunar", type = "normal" }, + properties = { + floating = false, + }, }, } -- }}} @@ -666,14 +729,8 @@ 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) +awful.ewmh.add_activate_filter(function(c, context, hints) + if context == "ewmh" and c.class == "Firefox" then return false end end) --- }}} -- vim:ft=lua:sw=4:sts=4:ts=4:et