diff options
| author | Craig Jennings <c@cjennings.net> | 2026-01-26 13:56:54 -0600 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-01-26 13:56:54 -0600 |
| commit | a100b41085703983b1f24dbcbca6879a03c6bee5 (patch) | |
| tree | 23c606cc98eb62bb35aa6840bc867cda59db672f /dotfiles/hyprland | |
| parent | ce7564804180caf1227c8de4ca458b1278a79bda (diff) | |
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 <noreply@anthropic.com>
Diffstat (limited to 'dotfiles/hyprland')
| -rw-r--r-- | dotfiles/hyprland/.config/hypr/hyprland.conf | 4 | ||||
| -rw-r--r-- | dotfiles/hyprland/.config/wlogout/layout | 36 | ||||
| -rw-r--r-- | dotfiles/hyprland/.config/wlogout/style.css | 37 | ||||
| -rw-r--r-- | dotfiles/hyprland/.config/wofi/power-menu.css | 65 | ||||
| -rwxr-xr-x | dotfiles/hyprland/.local/bin/power-menu | 45 |
5 files changed, 185 insertions, 2 deletions
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 |
