From a100b41085703983b1f24dbcbca6879a03c6bee5 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Mon, 26 Jan 2026 13:56:54 -0600 Subject: feat(hyprland): add wlogout exit menu with dupre theme - Add wlogout config with nerd font icons and dupre colors - Add wofi power-menu as alternative (disabled) - Use pgrep to prevent multiple instances - Theme: gold highlight on hover, invisible borders Co-Authored-By: Claude Opus 4.5 --- dotfiles/hyprland/.config/hypr/hyprland.conf | 4 +- dotfiles/hyprland/.config/wlogout/layout | 36 +++++++++++++++ dotfiles/hyprland/.config/wlogout/style.css | 37 +++++++++++++++ dotfiles/hyprland/.config/wofi/power-menu.css | 65 +++++++++++++++++++++++++++ dotfiles/hyprland/.local/bin/power-menu | 45 +++++++++++++++++++ 5 files changed, 185 insertions(+), 2 deletions(-) create mode 100644 dotfiles/hyprland/.config/wlogout/layout create mode 100644 dotfiles/hyprland/.config/wlogout/style.css create mode 100644 dotfiles/hyprland/.config/wofi/power-menu.css create mode 100755 dotfiles/hyprland/.local/bin/power-menu (limited to 'dotfiles') diff --git a/dotfiles/hyprland/.config/hypr/hyprland.conf b/dotfiles/hyprland/.config/hypr/hyprland.conf index 13fa7f2..4a94ad1 100644 --- a/dotfiles/hyprland/.config/hypr/hyprland.conf +++ b/dotfiles/hyprland/.config/hypr/hyprland.conf @@ -303,8 +303,8 @@ bind = $mod, ESCAPE, exec, hyprlock # Touchpad toggle bind = $mod, F9, exec, toggle-touchpad -# Exit/session (from DWM) -bind = $mod SHIFT, Q, exec, printf "Exit\nCancel" | fuzzel --dmenu --prompt "Exit Hyprland? " | grep -q "Exit" && hyprctl dispatch exit +# Exit/session +bind = $mod SHIFT, Q, exec, pgrep -x wlogout || wlogout -b 3 -T 600 -B 600 -L 1200 -R 1200 -c 20 -r 20 bind = $mod SHIFT, BACKSPACE, exit bind = $mod SHIFT, ESCAPE, exec, hyprctl reload diff --git a/dotfiles/hyprland/.config/wlogout/layout b/dotfiles/hyprland/.config/wlogout/layout new file mode 100644 index 0000000..878e75d --- /dev/null +++ b/dotfiles/hyprland/.config/wlogout/layout @@ -0,0 +1,36 @@ +{ + "label" : "lock", + "action" : "hyprlock", + "text" : "󰌾", + "keybind" : "l" +} +{ + "label" : "logout", + "action" : "hyprctl dispatch exit", + "text" : "󰍃", + "keybind" : "e" +} +{ + "label" : "suspend", + "action" : "systemctl suspend", + "text" : "󰒲", + "keybind" : "u" +} +{ + "label" : "hibernate", + "action" : "systemctl hibernate", + "text" : "󰖔", + "keybind" : "h" +} +{ + "label" : "reboot", + "action" : "systemctl reboot", + "text" : "󰜉", + "keybind" : "r" +} +{ + "label" : "shutdown", + "action" : "systemctl poweroff", + "text" : "󰐥", + "keybind" : "s" +} diff --git a/dotfiles/hyprland/.config/wlogout/style.css b/dotfiles/hyprland/.config/wlogout/style.css new file mode 100644 index 0000000..658e3c9 --- /dev/null +++ b/dotfiles/hyprland/.config/wlogout/style.css @@ -0,0 +1,37 @@ +/* wlogout style - Dupre theme */ +/* Dupre palette: + bg: #151311, black: #252321, br_black: #474544, muted: #58574e + steel: #969385, white: #d0cbc0, fg: #f0fef0, gold: #d7af5f + red: #d47c59, green: #a4ac64, blue: #67809c, magenta: #b294bb +*/ + +* { + background-image: none; + box-shadow: none; + font-family: "BerkeleyMono Nerd Font", monospace; +} + +window { + background-color: rgba(21, 19, 17, 0.6); +} + +button { + border-radius: 10px; + border-color: #151311; + color: #969385; + background-color: #151311; + border-style: solid; + border-width: 2px; + font-size: 96px; +} + +button:hover, button:focus { + background-color: #151311; + border-color: #d7af5f; + color: #d7af5f; + outline-style: none; +} + +button:active { + background-color: #474544; +} diff --git a/dotfiles/hyprland/.config/wofi/power-menu.css b/dotfiles/hyprland/.config/wofi/power-menu.css new file mode 100644 index 0000000..a9dd9ba --- /dev/null +++ b/dotfiles/hyprland/.config/wofi/power-menu.css @@ -0,0 +1,65 @@ +/* Wofi power menu - Dupre theme */ +/* Dupre palette: + bg: #151311, black: #252321, br_black: #474544, muted: #58574e + steel: #969385, white: #d0cbc0, fg: #f0fef0, gold: #d7af5f +*/ + +* { + font-family: "BerkeleyMono Nerd Font", monospace; +} + +window { + margin: 0px; + border: 2px solid #67809c; + border-radius: 0px; + background-color: rgba(21, 19, 17, 0.9); +} + +#input { + margin: 0px; + padding: 0px; + border: none; + background-color: transparent; + color: transparent; + min-height: 0px; +} + +#inner-box { + margin: 15px; +} + +#outer-box { + margin: 0px; + padding: 0px; +} + +#scroll { + margin: 0px; +} + +#text { + padding: 15px; + color: #969385; + font-size: 32px; +} + +#entry box { + justify-content: center; + align-items: center; +} + +#entry { + border-radius: 0px; + background-color: #151311; + border: 2px solid #474544; + margin: 5px; +} + +#entry:selected { + background-color: #252321; + border-color: #67809c; +} + +#entry:selected #text { + color: #67809c; +} diff --git a/dotfiles/hyprland/.local/bin/power-menu b/dotfiles/hyprland/.local/bin/power-menu new file mode 100755 index 0000000..878a17b --- /dev/null +++ b/dotfiles/hyprland/.local/bin/power-menu @@ -0,0 +1,45 @@ +#!/bin/bash +# Power menu using wofi +# Dupre theme with Nerd Font icons + +options="󰌾\n󰍃\n󰒲\n󰖔\n󰜉\n󰐥" + +selected=$(echo -e "$options" | wofi --dmenu \ + --cache-file /dev/null \ + --prompt "" \ + --hide-scroll \ + --hide-search \ + --gtk-dark \ + --layer overlay \ + --width 700 \ + --height 700 \ + --columns 3 \ + --lines 2 \ + --style ~/.config/wofi/power-menu.css \ + --conf /dev/null) + +case "$selected" in + "󰌾") + hyprlock + ;; + "󰍃") + notify-send "Power Menu" "Logout disabled for testing" + # hyprctl dispatch exit + ;; + "󰒲") + notify-send "Power Menu" "Suspend disabled for testing" + # systemctl suspend + ;; + "󰖔") + notify-send "Power Menu" "Hibernate disabled for testing" + # systemctl hibernate + ;; + "󰜉") + notify-send "Power Menu" "Reboot disabled for testing" + # systemctl reboot + ;; + "󰐥") + notify-send "Power Menu" "Shutdown disabled for testing" + # systemctl poweroff + ;; +esac -- cgit v1.2.3