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)