local awful = require "awful" local gears = require "gears" local naughty = require "naughty" local cfg = require "misc.cfg" local insightful = require "ui.insightful" local archaic = require "ui.archaic" local fresnel = require "ui.fresnel" local vars = require "misc.vars" local btn = awful.button.names local recording = { false, "" } client.connect_signal("request::default_mousebindings", function() awful.mouse.append_client_mousebindings { insightful:bind { mods = {}, triggers = btn.LEFT, press = function (c) c:activate { context = "mouse_click" } end, group = "client", desc = "raise client" }, insightful:bind { mods = vars.mods.M, triggers = btn.LEFT, press = function (c) c:activate { context = "mouse_click", action = "mouse_move" } end, group = "client", desc = "move client" }, insightful:bind { mods = vars.mods.M, triggers = btn.RIGHT, press = function (c) c:activate { context = "mouse_click", action = "mouse_resize" } end, group = "client", desc = "resize client" } } end) local globalkeys = gears.table.join( insightful:bind { mods = vars.mods.MC, triggers = "r", press = awesome.restart, group = "awesome", desc = "restart awesome" }, insightful:bind { mods = vars.mods.MC, triggers = "s", press = function() insightful:toggle() end, group = "awesome", desc = "toggle insightful" }, insightful:bind { mods = vars.mods.MC, triggers = "a", press = function() archaic:toggle() end, group = "awesome", desc = "toggle notification center" }, insightful:bind { mods = vars.mods.M, triggers = " ", press = function() fresnel:show() end, group = "awesome", desc = "toggle fresnel" }, insightful:bind { mods = {}, triggers = "XF86AudioMute", press = function() awful.spawn("wpctl set-mute @DEFAULT_SINK@ toggle") end, group = "audio", desc = "mute" }, insightful:bind { mods = {}, triggers = { { "XF86AudioRaiseVolume", true }, { "XF86AudioLowerVolume", false } }, press = function(up) if up then awful.spawn("wpctl set-volume @DEFAULT_SINK@ 5%+") else awful.spawn("wpctl set-volume @DEFAULT_SINK@ 5%-") end end, group = "audio", desc = "increase/decrease volume" }, insightful:bind { mods = {}, triggers = { { "XF86AudioNext", true }, { "XF86AudioPrev", false } }, press = function(next) if next then archaic.playerctl:next() else archaic.playerctl:previous() end end, group = "audio", desc = "previous/next song" }, insightful:bind { mods = {}, triggers = "XF86AudioPlay", press = function() archaic.playerctl:play_pause() end, group = "audio", desc = "(un)pause song" }, insightful:bind { mods = {}, triggers = { { "XF86MonBrightnessUp", true }, { "XF86MonBrightnessDown", false } }, press = function(up) if up then awful.spawn("brightnessctl set +51") else awful.spawn("brightnessctl set 51-") end end, group = "brightness", desc = "increase/decrease brightness" }, insightful:bind { mods = vars.mods.M, triggers = "Return", press = function() awful.spawn(cfg.terminal) end, group = "launcher", desc = "launch terminal" }, insightful:bind { mods = vars.mods.MC, triggers = "q", press = function() local c = client.focus if c then c:kill() end end, group = "client", desc = "close" }, insightful:bind { mods = vars.mods.M, triggers = "m", press = function() local c = client.focus if c then c.maximized = not c.maximized end end, group = "client", desc = "(un)maximize" }, insightful:bind { mods = vars.mods.M, triggers = "n", press = function() local c = client.focus if c then gears.timer.delayed_call(function() c.minimized = true end) end end, group = "client", desc = "minimize" }, insightful:bind { mods = vars.mods.M, triggers = "f", press = function() local c = client.focus if c then c.fullscreen = not c.fullscreen end end, group = "client", desc = "toggle fullscreen" }, insightful:bind { mods = {}, triggers = "Print", press = function() local date = os.date("%Y%m%d_%H%M%S") local path = os.getenv("HOME") .. "/Pictures/" .. date .. ".png" awful.spawn.with_shell("maim --hidecursor " .. path .. " && xclip -selection clipboard -t image/png " .. path) naughty.notification { app_name = "Maim", title = "Screenshot taken", message = "Saved at " .. path } end, group = "screenshot", desc = "take fullscreen screenshot" }, insightful:bind { mods = vars.mods.S, triggers = "Print", press = function() local date = os.date("%Y%m%d_%H%M%S") local path = os.getenv("HOME") .. "/Pictures/" .. date .. ".png" awful.spawn.with_shell("maim --hidecursor -s " .. path .. " && xclip -selection clipboard -t image/png " .. path .. [[ && notify-send -a "Maim" "Screenshot taken" "Saved at ]] .. path .. [["]]) -- naughty.notification { -- app_name = "Maim",r -- title = "Screenshot taken", -- message = "Saved at " .. path -- } end, group = "screenshot", desc = "take region screenshot" }, insightful:bind { mods = vars.mods.M, triggers = "Print", press = function() if recording[1] then awful.spawn("giph --stop") naughty.notification { app_name = "Giph", title = "Recording stopped", message = "Saved at " .. recording[2] } recording[1] = false recording[2] = "" else recording[1] = true recording[2] = os.getenv("HOME") .. "/Videos/" .. os.date("%Y%m%d_%H%M%S") .. ".mp4" awful.spawn("giph --format mp4 --framerate 30 " .. recording[2]) naughty.notification { app_name = "Giph", title = "Recording started" } end end, group = "video", desc = "toggle recording" }, insightful:bind { mods = vars.mods.M, triggers = "k", press = function() awful.spawn("xkblayout-state set +1") end, group = "keyboard", desc = "next keyboard layout" }, insightful:bind { mods = vars.mods.MS, triggers = "k", press = function() awful.spawn("xkblayout-state set -1") end, group = "keyboard", desc = "previous keyboard layout" }, insightful:bind { mods = vars.mods.M, triggers = "Up", press = awful.tag.viewprev, group = "tag", desc = "switch to previous" }, insightful:bind { mods = vars.mods.M, triggers = "Down", press = awful.tag.viewnext, group = "tag", desc = "switch to next" } ) -- gears.debug.dump(insightful:bind.hottriggerss) root.keys(globalkeys)