moved to personal fennel config for awesome and added qutebrowser
This commit is contained in:
parent
403cb92b7d
commit
688748f8a6
502 changed files with 8576 additions and 9597 deletions
351
awes2/module/exit-screen.lua
Normal file
351
awes2/module/exit-screen.lua
Normal file
|
@ -0,0 +1,351 @@
|
|||
local awful = require('awful')
|
||||
local gears = require('gears')
|
||||
local wibox = require('wibox')
|
||||
local beautiful = require('beautiful')
|
||||
|
||||
local dpi = beautiful.xresources.apply_dpi
|
||||
|
||||
local icons = require('theme.icons')
|
||||
local apps = require('configuration.apps')
|
||||
local clickable_container = require('widget.clickable-container')
|
||||
|
||||
local filesystem = gears.filesystem
|
||||
local config_dir = filesystem.get_configuration_dir()
|
||||
local widget_icon_dir = config_dir .. 'configuration/user-profile/'
|
||||
|
||||
|
||||
local greeter_message = wibox.widget {
|
||||
markup = 'Choose wisely!',
|
||||
font = 'SF Pro Text UltraLight 48',
|
||||
align = 'center',
|
||||
valign = 'center',
|
||||
widget = wibox.widget.textbox
|
||||
}
|
||||
|
||||
local profile_name = wibox.widget {
|
||||
markup = 'user@hostname',
|
||||
font = 'SF Pro Text Regular 12',
|
||||
align = 'center',
|
||||
valign = 'center',
|
||||
widget = wibox.widget.textbox
|
||||
}
|
||||
|
||||
local profile_imagebox = wibox.widget {
|
||||
image = widget_icon_dir .. 'default.svg',
|
||||
resize = true,
|
||||
forced_height = dpi(110),
|
||||
clip_shape = gears.shape.circle,
|
||||
widget = wibox.widget.imagebox
|
||||
}
|
||||
|
||||
local profile_imagebox_bg = wibox.widget {
|
||||
bg = beautiful.groups_bg,
|
||||
forced_width = dpi(120),
|
||||
forced_height = dpi(120),
|
||||
shape = gears.shape.circle,
|
||||
widget = wibox.container.background
|
||||
}
|
||||
|
||||
local update_profile_pic = function()
|
||||
awful.spawn.easy_async_with_shell(
|
||||
apps.bins.update_profile,
|
||||
function(stdout)
|
||||
stdout = stdout:gsub('%\n','')
|
||||
if not stdout:match("default") then
|
||||
profile_imagebox:set_image(stdout)
|
||||
else
|
||||
profile_imagebox:set_image(widget_icon_dir .. 'default.svg')
|
||||
end
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
update_profile_pic()
|
||||
|
||||
local update_user_name = function()
|
||||
awful.spawn.easy_async_with_shell(
|
||||
"printf \"$(whoami)@$(hostname)\"",
|
||||
function(stdout)
|
||||
local stdout = stdout:gsub('%\n','')
|
||||
local username = stdout:match("(.*)@")
|
||||
username = username:sub(1, 1):upper() .. username:sub(2)
|
||||
greeter_message:set_markup('Choose wisely, ' .. username .. '!')
|
||||
profile_name:set_markup(stdout)
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
update_user_name()
|
||||
|
||||
local build_button = function(icon, name)
|
||||
|
||||
local button_text = wibox.widget {
|
||||
text = name,
|
||||
font = beautiful.font,
|
||||
align = 'center',
|
||||
valign = 'center',
|
||||
widget = wibox.widget.textbox
|
||||
}
|
||||
|
||||
local a_button = wibox.widget {
|
||||
{
|
||||
{
|
||||
{
|
||||
{
|
||||
image = icon,
|
||||
widget = wibox.widget.imagebox
|
||||
},
|
||||
margins = dpi(16),
|
||||
widget = wibox.container.margin
|
||||
},
|
||||
bg = beautiful.groups_bg,
|
||||
widget = wibox.container.background
|
||||
},
|
||||
shape = gears.shape.rounded_rect,
|
||||
forced_width = dpi(90),
|
||||
forced_height = dpi(90),
|
||||
widget = clickable_container
|
||||
},
|
||||
left = dpi(24),
|
||||
right = dpi(24),
|
||||
widget = wibox.container.margin
|
||||
}
|
||||
|
||||
local build_a_button = wibox.widget {
|
||||
layout = wibox.layout.fixed.vertical,
|
||||
spacing = dpi(5),
|
||||
a_button,
|
||||
button_text
|
||||
}
|
||||
|
||||
return build_a_button
|
||||
end
|
||||
|
||||
local suspend_command = function()
|
||||
awesome.emit_signal("module::exit_screen_hide")
|
||||
awful.spawn.with_shell(apps.default.lock .. ' & systemctl suspend')
|
||||
end
|
||||
|
||||
local exit_command = function()
|
||||
awesome.quit()
|
||||
end
|
||||
|
||||
local lock_command = function()
|
||||
awesome.emit_signal("module::exit_screen_hide")
|
||||
awful.spawn.with_shell('sleep 1 && ' .. apps.default.lock)
|
||||
end
|
||||
|
||||
local poweroff_command = function()
|
||||
awful.spawn.with_shell('poweroff')
|
||||
awesome.emit_signal("module::exit_screen_hide")
|
||||
end
|
||||
|
||||
local reboot_command = function()
|
||||
awful.spawn.with_shell('reboot')
|
||||
awesome.emit_signal("module::exit_screen_hide")
|
||||
end
|
||||
|
||||
local poweroff = build_button(icons.power, 'Shutdown')
|
||||
poweroff:connect_signal(
|
||||
'button::release',
|
||||
function()
|
||||
poweroff_command()
|
||||
end
|
||||
)
|
||||
|
||||
local reboot = build_button(icons.restart, 'Restart')
|
||||
reboot:connect_signal(
|
||||
'button::release',
|
||||
function()
|
||||
reboot_command()
|
||||
end
|
||||
)
|
||||
|
||||
local suspend = build_button(icons.sleep, 'Sleep')
|
||||
suspend:connect_signal(
|
||||
'button::release',
|
||||
function()
|
||||
suspend_command()
|
||||
end
|
||||
)
|
||||
|
||||
local exit = build_button(icons.logout, 'Logout')
|
||||
exit:connect_signal(
|
||||
'button::release',
|
||||
function()
|
||||
exit_command()
|
||||
end
|
||||
)
|
||||
|
||||
local lock = build_button(icons.lock, 'Lock')
|
||||
lock:connect_signal(
|
||||
'button::release',
|
||||
function()
|
||||
lock_command()
|
||||
end
|
||||
)
|
||||
|
||||
screen.connect_signal(
|
||||
"request::desktop_decoration",
|
||||
function(s)
|
||||
|
||||
s.exit_screen = wibox
|
||||
{
|
||||
screen = s,
|
||||
type = 'splash',
|
||||
visible = false,
|
||||
ontop = true,
|
||||
bg = beautiful.background,
|
||||
fg = beautiful.fg_normal,
|
||||
height = s.geometry.height,
|
||||
width = s.geometry.width,
|
||||
x = s.geometry.x,
|
||||
y = s.geometry.y
|
||||
}
|
||||
|
||||
local exit_screen_hide = function()
|
||||
awesome.emit_signal("module::exit_screen_hide")
|
||||
|
||||
end
|
||||
|
||||
|
||||
local exit_screen_grabber = awful.keygrabber {
|
||||
|
||||
auto_start = true,
|
||||
stop_event = 'release',
|
||||
keypressed_callback = function(self, mod, key, command)
|
||||
|
||||
if key == 's' then
|
||||
suspend_command()
|
||||
|
||||
elseif key == 'e' then
|
||||
exit_command()
|
||||
|
||||
elseif key == 'l' then
|
||||
lock_command()
|
||||
|
||||
elseif key == 'p' then
|
||||
poweroff_command()
|
||||
|
||||
elseif key == 'r' then
|
||||
reboot_command()
|
||||
|
||||
elseif key == 'Escape' or key == 'q' or key == 'x' then
|
||||
awesome.emit_signal("module::exit_screen_hide")
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
}
|
||||
|
||||
awesome.connect_signal(
|
||||
"module::exit_screen_show",
|
||||
function()
|
||||
for s in screen do
|
||||
s.exit_screen.visible = false
|
||||
end
|
||||
awful.screen.focused().exit_screen.visible = true
|
||||
exit_screen_grabber:start()
|
||||
end
|
||||
)
|
||||
|
||||
awesome.connect_signal(
|
||||
"module::exit_screen_hide",
|
||||
function()
|
||||
exit_screen_grabber:stop()
|
||||
for s in screen do
|
||||
s.exit_screen.visible = false
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
s.exit_screen : buttons(
|
||||
gears.table.join(
|
||||
awful.button(
|
||||
{},
|
||||
2,
|
||||
function()
|
||||
awesome.emit_signal("module::exit_screen_hide")
|
||||
end
|
||||
),
|
||||
awful.button(
|
||||
{},
|
||||
3,
|
||||
function()
|
||||
awesome.emit_signal("module::exit_screen_hide")
|
||||
end
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
s.exit_screen : setup {
|
||||
nil,
|
||||
{
|
||||
nil,
|
||||
{
|
||||
{
|
||||
nil,
|
||||
{
|
||||
layout = wibox.layout.fixed.vertical,
|
||||
spacing = dpi(5),
|
||||
{
|
||||
profile_imagebox_bg,
|
||||
{
|
||||
layout = wibox.layout.align.vertical,
|
||||
expand = 'none',
|
||||
nil,
|
||||
{
|
||||
layout = wibox.layout.align.horizontal,
|
||||
expand = 'none',
|
||||
nil,
|
||||
profile_imagebox,
|
||||
nil
|
||||
},
|
||||
nil
|
||||
},
|
||||
layout = wibox.layout.stack
|
||||
},
|
||||
profile_name
|
||||
},
|
||||
nil,
|
||||
expand = 'none',
|
||||
layout = wibox.layout.align.horizontal
|
||||
},
|
||||
{
|
||||
layout = wibox.layout.align.horizontal,
|
||||
expand = 'none',
|
||||
nil,
|
||||
{
|
||||
{
|
||||
greeter_message,
|
||||
{
|
||||
poweroff,
|
||||
reboot,
|
||||
suspend,
|
||||
exit,
|
||||
lock,
|
||||
layout = wibox.layout.fixed.horizontal
|
||||
},
|
||||
spacing = dpi(30),
|
||||
layout = wibox.layout.fixed.vertical
|
||||
},
|
||||
spacing = dpi(40),
|
||||
layout = wibox.layout.fixed.vertical
|
||||
},
|
||||
nil
|
||||
},
|
||||
spacing = dpi(40),
|
||||
layout = wibox.layout.fixed.vertical
|
||||
},
|
||||
nil,
|
||||
expand = 'none',
|
||||
layout = wibox.layout.align.horizontal
|
||||
},
|
||||
nil,
|
||||
expand = 'none',
|
||||
layout = wibox.layout.align.vertical
|
||||
}
|
||||
|
||||
end
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue