diff options
Diffstat (limited to 'logout-widget/logout.lua')
| -rw-r--r-- | logout-widget/logout.lua | 39 | 
1 files changed, 29 insertions, 10 deletions
| diff --git a/logout-widget/logout.lua b/logout-widget/logout.lua index 98892f5..f4cae9e 100644 --- a/logout-widget/logout.lua +++ b/logout-widget/logout.lua @@ -40,12 +40,14 @@ local phrase_widget = wibox.widget{      widget = wibox.widget.textbox  } -local function create_button(icon_name, action_name, color, onclick) +local function create_button(icon_name, action_name, color, onclick, icon_size, icon_margin)      local button = awesomebuttons.with_icon {          type = 'basic',          icon = icon_name,          color = color, +        icon_size = icon_size, +        icon_margin = icon_margin,          onclick = function()              onclick()              w.visible = false @@ -63,6 +65,8 @@ local function launch(args)      local accent_color = args.accent_color or beautiful.bg_focus      local text_color = args.text_color or beautiful.fg_normal      local phrases = args.phrases or {'Goodbye!'} +    local icon_size = args.icon_size or 40 +    local icon_margin = args.icon_margin or 16      local onlogout = args.onlogout or function () awesome.quit() end      local onlock = args.onlock or function() awful.spawn.with_shell("systemctl suspend") end @@ -71,18 +75,20 @@ local function launch(args)      local onpoweroff = args.onpoweroff or function() awful.spawn.with_shell("shutdown now") end      w:set_bg(bg_color) -    phrase_widget:set_markup('<span color="'.. text_color .. '" size="20000">' .. phrases[ math.random( #phrases ) ] .. '</span>') +    if #phrases > 0 then +        phrase_widget:set_markup('<span color="'.. text_color .. '" size="20000">' .. phrases[ math.random( #phrases ) ] .. '</span>') +    end      w:setup {          {              phrase_widget,              {                  { -                    create_button('log-out', 'Log Out', accent_color, onlogout), -                    create_button('lock', 'Lock', accent_color, onlock), -                    create_button('refresh-cw', 'Reboot', accent_color, onreboot), -                    create_button('moon', 'Suspend', accent_color, onsuspend), -                    create_button('power', 'Power Off', accent_color, onpoweroff), +                    create_button('log-out', 'Log Out (l)', accent_color, onlogout, icon_size, icon_margin), +                    create_button('lock', 'Lock (k)', accent_color, onlock, icon_size, icon_margin), +                    create_button('refresh-cw', 'Reboot (r)', accent_color, onreboot, icon_size, icon_margin), +                    create_button('moon', 'Suspend (u)', accent_color, onsuspend, icon_size, icon_margin), +                    create_button('power', 'Power Off (s)', accent_color, onpoweroff, icon_size, icon_margin),                      id = 'buttons',                      spacing = 8,                      layout = wibox.layout.fixed.horizontal @@ -110,9 +116,22 @@ local function launch(args)      capi.keygrabber.run(function(_, key, event)          if event == "release" then return end          if key then -            phrase_widget:set_text('') -            capi.keygrabber.stop() -            w.visible = false +            if key == 'Escape' then +                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 + +            if key == 'Escape' or string.match("srukl", key) then +                phrase_widget:set_text('') +                capi.keygrabber.stop() +                w.visible = false +            end          end      end)  end | 
