local M = {} local awful = require("awful") local naughty = require("naughty") -- mapping from logical screen indices to indices corresponding to their -- physical layout function M.screen_physical(n) local function screen_cmp(s1, s2) return s1.geometry.x < s2.geometry.x end local screens = {} for s in screen do screens[s.index] = s end table.sort(screens, screen_cmp) if screens[n] ~= nil then return screens[n] end return nil end function M.screen_focus_physical(n) local s = M.screen_physical(n) if s then awful.screen.focus(s) end end -- audio control functions function M.vol_control(n) local cmd = string.format("amixer -q set Master %d%%", math.abs(n)) .. (n < 0 and "-" or "+") awful.spawn(cmd) end function M.vol_mute_toggle() awful.spawn("amixer -q set Master toggle") end function M.spawn_current(command) awful.spawn(command, {tag = mouse.screen.selected_tag}) end function M.screen_lock() awful.spawn.easy_async("xscreensaver-command -lock", function(stdout, stderr, exitreason, exitcode) if exitcode ~= 0 then naughty.notify({ preset = naughty.config.presets.critical, title = "Error locking the screen", text = table.concat({stdout, stderr}, "\n") }) end end) end return M