diff --git a/modules/home/roles/default.nix b/modules/home/roles/default.nix index 7d487ce..fc66a30 100644 --- a/modules/home/roles/default.nix +++ b/modules/home/roles/default.nix @@ -92,6 +92,7 @@ in ataraxia.wayland.hyprland.enable = mkDefault true; ataraxia.wayland.mako.enable = mkDefault true; ataraxia.wayland.waybar.enable = mkDefault true; + ataraxia.wayland.wlogout.enable = mkDefault true; }; in mkMerge [ diff --git a/modules/home/workspace/wayland/wlogout/default.nix b/modules/home/workspace/wayland/wlogout/default.nix new file mode 100644 index 0000000..3e7741a --- /dev/null +++ b/modules/home/workspace/wayland/wlogout/default.nix @@ -0,0 +1,117 @@ +{ config, lib, ... }: +let + inherit (lib) mkEnableOption mkIf; + inherit (config.theme) colors fonts; + + cfg = config.ataraxia.wayland.wlogout; +in +{ + options.ataraxia.wayland.wlogout = { + enable = mkEnableOption "Enable wlogout"; + }; + + config = mkIf cfg.enable { + programs.wlogout = { + enable = true; + layout = [ + { + label = "lock"; + action = ""; + text = "Lock"; + } + { + label = "reboot"; + action = "systemctl reboot"; + text = "Reboot"; + } + { + label = "shutdown"; + action = "systemctl poweroff"; + text = "Shutdown"; + } + { + label = "logout"; + action = "hyprctl dispatch exit 0"; + text = "Logout"; + } + { + label = "suspend"; + action = "systemctl suspend"; + text = "Suspend"; + } + ]; + style = mkIf (!config.catppuccin.wlogout.enable) '' + window { + font-family: "${fonts.mono.family}"; + font-size: 18pt; + color: ${colors.color5}; + background-color: alpha(${colors.color0}, 0.8); + } + button { + background-repeat: no-repeat; + background-position: center; + background-size: 25%; + border: none; + background-color: alpha(${colors.color0}, 0); + color: ${colors.color14}; + } + button:hover { + background-color: alpha(${colors.color2}, 0.1); + } + button:focus { + background-color: ${colors.color14}; + color: ${colors.color0}; + } + #lock { + background-image: image(url("${./lock.png}")); + padding: 35px; + } + #lock:focus { + background-image: image(url("${./lock-hover.png}")); + padding: 35px; + } + #logout { + background-image: image(url("${./logout.png}")); + padding: 30px; + } + #logout:focus { + background-image: image(url("${./logout-hover.png}")); + padding: 30px; + } + #suspend { + background-image: image(url("${./sleep.png}")); + padding: 30px; + } + #suspend:focus { + background-image: image(url("${./sleep-hover.png}")); + padding: 30px; + } + #shutdown { + background-image: image(url("${./power.png}")); + padding: 30px; + } + #shutdown:focus { + background-image: image(url("${./power-hover.png}")); + padding: 30px; + } + #reboot { + background-image: image(url("${./restart.png}")); + padding: 30px; + } + #reboot:focus { + background-image: image(url("${./restart-hover.png}")); + padding: 30px; + } + ''; + }; + catppuccin.wlogout = { + iconStyle = "wlogout"; + extraStyle = '' + window { + font-family: "${fonts.mono.family}"; + font-size: 18pt; + } + ''; + }; + }; +} diff --git a/modules/home/workspace/wayland/wlogout/lock-hover.png b/modules/home/workspace/wayland/wlogout/lock-hover.png new file mode 100644 index 0000000..8fb86fe Binary files /dev/null and b/modules/home/workspace/wayland/wlogout/lock-hover.png differ diff --git a/modules/home/workspace/wayland/wlogout/lock.png b/modules/home/workspace/wayland/wlogout/lock.png new file mode 100644 index 0000000..430451c Binary files /dev/null and b/modules/home/workspace/wayland/wlogout/lock.png differ diff --git a/modules/home/workspace/wayland/wlogout/logout-hover.png b/modules/home/workspace/wayland/wlogout/logout-hover.png new file mode 100644 index 0000000..9e570a9 Binary files /dev/null and b/modules/home/workspace/wayland/wlogout/logout-hover.png differ diff --git a/modules/home/workspace/wayland/wlogout/logout.png b/modules/home/workspace/wayland/wlogout/logout.png new file mode 100644 index 0000000..128c995 Binary files /dev/null and b/modules/home/workspace/wayland/wlogout/logout.png differ diff --git a/modules/home/workspace/wayland/wlogout/power-hover.png b/modules/home/workspace/wayland/wlogout/power-hover.png new file mode 100644 index 0000000..122d331 Binary files /dev/null and b/modules/home/workspace/wayland/wlogout/power-hover.png differ diff --git a/modules/home/workspace/wayland/wlogout/power.png b/modules/home/workspace/wayland/wlogout/power.png new file mode 100644 index 0000000..ce56166 Binary files /dev/null and b/modules/home/workspace/wayland/wlogout/power.png differ diff --git a/modules/home/workspace/wayland/wlogout/restart-hover.png b/modules/home/workspace/wayland/wlogout/restart-hover.png new file mode 100644 index 0000000..3e18536 Binary files /dev/null and b/modules/home/workspace/wayland/wlogout/restart-hover.png differ diff --git a/modules/home/workspace/wayland/wlogout/restart.png b/modules/home/workspace/wayland/wlogout/restart.png new file mode 100644 index 0000000..7855d40 Binary files /dev/null and b/modules/home/workspace/wayland/wlogout/restart.png differ diff --git a/modules/home/workspace/wayland/wlogout/sleep-hover.png b/modules/home/workspace/wayland/wlogout/sleep-hover.png new file mode 100644 index 0000000..0fd3bad Binary files /dev/null and b/modules/home/workspace/wayland/wlogout/sleep-hover.png differ diff --git a/modules/home/workspace/wayland/wlogout/sleep.png b/modules/home/workspace/wayland/wlogout/sleep.png new file mode 100644 index 0000000..6a3d607 Binary files /dev/null and b/modules/home/workspace/wayland/wlogout/sleep.png differ