diff --git a/logout-popup-widget/README.md b/logout-popup-widget/README.md index de82cc0c..aa24f34c 100644 --- a/logout-popup-widget/README.md +++ b/logout-popup-widget/README.md @@ -66,6 +66,12 @@ Then | `onreboot` | `function() awful.spawn.with_shell("reboot") end` | Function which is called when the reboot button is pressed | | `onsuspend` | `function() awful.spawn.with_shell("systemctl suspend") end` | Function which is called when the suspend button is pressed | | `onpoweroff` | `function() awful.spawn.with_shell("shutdown now") end` | Function which is called when the poweroff button is pressed | +| `onlogout_key` | l | Keybinding to execute the logout function | +| `onlock_key` | k | Keybinding to execute the lock function | +| `onreboot_key` | r | Keybinding to execute the reboot function | +| `onsuspend_key` | u | Keybinding to execute the suspend function | +| `onpoweroff_key` | s | Keybinding to execute the poweroff function | +| `ignore_case` | true | Ignore if CAPS LOCK is enabled | Some color themes for inspiration: diff --git a/logout-popup-widget/logout-popup.lua b/logout-popup-widget/logout-popup.lua index 1462484d..54825cf6 100644 --- a/logout-popup-widget/logout-popup.lua +++ b/logout-popup-widget/logout-popup.lua @@ -81,6 +81,15 @@ local function launch(args) local onsuspend = args.onsuspend or function() awful.spawn.with_shell("systemctl suspend") end local onpoweroff = args.onpoweroff or function() awful.spawn.with_shell("shutdown now") end + local onlogout_key = args.onlogout_key or 'l' + local onlock_key = args.onlock_key or 'k' + local onreboot_key = args.onreboot_key or 'r' + local onsuspend_key = args.onsuspend_key or 'u' + local onpoweroff_key = args.onpoweroff_key or 's' + local all_keys = onlogout_key .. onlock_key .. onreboot_key .. onsuspend_key .. onpoweroff_key + + local ignore_case = args.ignore_case or true + w:set_bg(bg_color) if #phrases > 0 then phrase_widget:set_markup( @@ -92,15 +101,15 @@ local function launch(args) phrase_widget, { { - create_button('log-out', 'Log Out (l)', + create_button('log-out', 'Log Out (' .. onlogout_key .. ')', accent_color, label_color, onlogout, icon_size, icon_margin), - create_button('lock', 'Lock (k)', + create_button('lock', 'Lock (' .. onlock_key .. ')', accent_color, label_color, onlock, icon_size, icon_margin), - create_button('refresh-cw', 'Reboot (r)', + create_button('refresh-cw', 'Reboot (' .. onreboot_key .. ')', accent_color, label_color, onreboot, icon_size, icon_margin), - create_button('moon', 'Suspend (u)', + create_button('moon', 'Suspend (' .. onsuspend_key .. ')', accent_color, label_color, onsuspend, icon_size, icon_margin), - create_button('power', 'Power Off (s)', + create_button('power', 'Power Off (' .. onpoweroff_key .. ')', accent_color, label_color, onpoweroff, icon_size, icon_margin), id = 'buttons', spacing = 8, @@ -141,17 +150,29 @@ local function launch(args) phrase_widget:set_text('') capi.keygrabber.stop() w.visible = false - elseif key == 's' then onpoweroff() - elseif key == 'r' then onreboot() - elseif key == 'u' then onsuspend() - elseif key == 'k' then onlock() - elseif key == 'l' then onlogout() - end + else + if ignore_case then + key = string.lower(key) + onlogout_key = string.lower(onlogout_key) + onlock_key = string.lower(onlock_key) + onreboot_key = string.lower(onreboot_key) + onsuspend_key = string.lower(onsuspend_key) + onpoweroff_key = string.lower(onpoweroff_key) + all_keys = string.lower(all_keys) + end - if key == 'Escape' or string.match("srukl", key) then - phrase_widget:set_text('') - capi.keygrabber.stop() - w.visible = false + if key == onpoweroff_key then onpoweroff() + elseif key == onreboot_key then onreboot() + elseif key == onsuspend_key then onsuspend() + elseif key == onlock_key then onlock() + elseif key == onlogout_key then onlogout() + end + + if string.match(all_keys, key) then + phrase_widget:set_text('') + capi.keygrabber.stop() + w.visible = false + end end end end)