diff --git a/hyprland.conf b/hyprland.conf index b3e6ad1..cb4b6cc 100644 --- a/hyprland.conf +++ b/hyprland.conf @@ -1,228 +1,264 @@ -source=~/.config/hypr/mocha.conf +autogenerated = 0 # remove this line to remove the warning -# See https://wiki.hyprland.org/Configuring/Monitors/ -monitor = , highres, auto, auto -monitor = eDP-1, highres, 0x0, 1.566667 +################ +### MONITORS ### +################ +monitor=eDP-1,highres,0x0,1.566667 +monitor=,highres,auto,auto -workspace = name:special:magic,monitor:eDP-1,gapsin:5,gapsout:70 -# See https://wiki.hyprland.org/Configuring/Keywords/ for more - -# Execute your favorite apps at launch -# exec-once = waybar & hyprpaper & firefox -exec-once = waybar -c ~/.config/waybar/hypr-config -s ~/.config/waybar/hypr-style.css -exec-once = pypr --config ~/.config/hypr/pyprland.toml -exec-once = swayidle -w -exec-once = nm-applet -exec-once = blueman-applet -exec-once = easyeffects --gapplication-service +################# +### AUTOSTART ### +################# exec-once = hyprpaper -exec-once = kdeconnect-indicator -exec-once = playerctld daemon -exec-once = hyprctl setcursor catppuccin-mocha-blue-cursors 22 +exec-once = waybar +exec-once = easyeffects --gapplication-service -# Source a file (multi-file configs) -# source = ~/.config/hypr/myColors.conf +################### +### pavucontrol ### +################### +exec-once = [workspace 9 silent] pavucontrol +exec-once = sleep 1.0 && killall pavucontrol -# Set programs that you use -$terminal = kitty -$browser = vivaldi-stable --enable-features=UseOzonePlatform --ozone-platform=wayland -$music = tidal-hifi --enable-features=UseOzonePlatform --ozone-platform=wayland -$fileManager = thunar -$menu = wofi --show drun -$powermenu = ~/.config/hypr/power-menu -$lockscreen = swaylock -C ~/.config/swaylock/config -# Some default env vars. +############# +### AUDIO ### +############# +exec-once = pactl set-sink-mute @DEFAULT_SINK@ true +exec-once = pactl set-sink-volume @DEFAULT_SINK@ 0% + + +#################### +### ENVIRONMENT ### +#################### env = XCURSOR_SIZE,20 -env = GDK_SCALE,1 -env = QT_QPA_PLATFORMTHEME,qt6ct # change to qt6ct if you have that -env = WLR_NO_HARDWARE_CURSORS,1 +env = HYPRCURSOR_SIZE,20 -env = XDG_CURRENT_DESKTOP,Hyprland -env = XDG_SESSION_TYPE,wayland -env = XDG_SESSION_DESKTOP,Hyprland +exec = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" +exec = gsettings set org.gnome.desktop.interface gtk-theme "adw-gtk3" -xwayland { - force_zero_scaling = true + +################### +### PERMISSIONS ### +################### +ecosystem { + enforce_permissions = 1 } -# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ -input { - kb_layout = de - repeat_delay = 350 - repeat_rate = 25 +permission = /usr/bin/hyprpicker, screencopy, allow +permission = /usr/bin/grim, screencopy, allow +#permission = /usr/(bin|local/bin)/grim, screencopy, allow +#permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow - follow_mouse = 1 - touchpad { - natural_scroll = true - disable_while_typing = false - scroll_factor = 0.4 - } +##################### +### LOOK AND FEEL ### +##################### - accel_profile = flat - sensitivity = 0 # -1.0 - 1.0, 0 means no modification. -} - -device { - name = logitech-mx-ergo-multi-device-trackball- - sensitivity = -0.2 -} - -device { - name = logitech-g703-ls-1 - sensitivity = -0.1 -} +# Refer to https://wiki.hyprland.org/Configuring/Variables/ +# https://wiki.hyprland.org/Configuring/Variables/#general general { - # See https://wiki.hyprland.org/Configuring/Variables/ for more + gaps_in = 2 + gaps_out = 4 - gaps_in = 0 - gaps_out = 0 border_size = 1 - col.active_border = $lavender - col.inactive_border = $surface0 - layout = dwindle + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + + # Set to true enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = false # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = false + + layout = dwindle } +# https://wiki.hyprland.org/Configuring/Variables/#decoration decoration { - # See https://wiki.hyprland.org/Configuring/Variables/ for more + rounding = 2 + rounding_power = 2 - rounding = 0 + # Change transparency of focused and unfocused windows + active_opacity = 1.0 + inactive_opacity = 1.0 + shadow { + enabled = true + range = 4 + render_power = 3 + color = rgba(1a1a1aee) + } + + # https://wiki.hyprland.org/Configuring/Variables/#blur blur { enabled = true size = 3 passes = 1 - + vibrancy = 0.1696 } - - # drop_shadow = true - # shadow_range = 4 - # shadow_render_power = 3 - # col.shadow = rgba(1a1a1aee) } +# https://wiki.hyprland.org/Configuring/Variables/#animations animations { - enabled = false + enabled = yes, please :) - # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more - bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + bezier = easeOutQuint,0.23,1,0.32,1 + bezier = easeInOutCubic,0.65,0.05,0.36,1 + bezier = linear,0,0,1,1 + bezier = almostLinear,0.5,0.5,0.75,1.0 + bezier = quick,0.15,0,0.1,1 - animation = windows, 1, 7, myBezier - animation = windowsOut, 1, 7, default, popin 80% - animation = border, 1, 10, default - animation = borderangle, 1, 8, default - animation = fade, 1, 7, default - animation = workspaces, 1, 6, default + animation = global, 1, 10, default + animation = border, 1, 5.39, easeOutQuint + animation = windows, 1, 4.79, easeOutQuint + animation = windowsIn, 1, 4.1, easeOutQuint, popin 87% + animation = windowsOut, 1, 1.49, linear, popin 87% + animation = fadeIn, 1, 1.73, almostLinear + animation = fadeOut, 1, 1.46, almostLinear + animation = fade, 1, 3.03, quick + animation = layers, 1, 3.81, easeOutQuint + animation = layersIn, 1, 4, easeOutQuint, fade + animation = layersOut, 1, 1.5, linear, fade + animation = fadeLayersIn, 1, 1.79, almostLinear + animation = fadeLayersOut, 1, 1.39, almostLinear + animation = workspaces, 1, 1.94, almostLinear, fade + animation = workspacesIn, 1, 1.21, almostLinear, fade + animation = workspacesOut, 1, 1.94, almostLinear, fade } +# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/ +# "Smart gaps" / "No gaps when only" +workspace = w[tv1], gapsout:0, gapsin:0 +workspace = f[1], gapsout:0, gapsin:0 +windowrule = bordersize 0, floating:0, onworkspace:w[tv1] +windowrule = rounding 0, floating:0, onworkspace:w[tv1] +windowrule = bordersize 0, floating:0, onworkspace:f[1] +windowrule = rounding 0, floating:0, onworkspace:f[1] + +# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more dwindle { - # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more - pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below - preserve_split = true # you probably want this - # no_gaps_when_only = 1 - force_split = 2 + pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # You probably want this } +# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more master { - # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more new_status = master } -gestures { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - workspace_swipe = false +# https://wiki.hyprland.org/Configuring/Variables/#misc +misc { + force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :( } -misc { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - disable_hyprland_logo = 1 - force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers + +############# +### INPUT ### +############# + +# https://wiki.hyprland.org/Configuring/Variables/#input +input { + kb_layout = de + kb_variant = + kb_model = + kb_options = + kb_rules = + + repeat_rate = 25 + repeat_delay = 280 + + + follow_mouse = 1 + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + touchpad { + natural_scroll = true + scroll_factor = 0.4 + } +} +device { + name = razer-razer-deathadder-elite + sensitivity = 0 + accel_profile = flat +} + +# https://wiki.hyprland.org/Configuring/Variables/#gestures +gestures { + workspace_swipe = true + workspace_swipe_fingers = 3 } # Example per-device config # See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more -# device { -# name = epic-mouse-v1 -# sensitivity = -0.5 -# } - -# Example windowrule v1 -# windowrule = float, ^(kitty)$ -# Example windowrule v2 -# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ -# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more -# windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. +device { + name = epic-mouse-v1 + sensitivity = -0.5 +} -# See https://wiki.hyprland.org/Configuring/Keywords/ for more +################### +### KEYBINDINGS ### +################### +# Modifier +$mainMod = SUPER # Sets "Windows" key as main modifier -# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more -# bind = $mainMod, Q, exec, $terminal -# bind = $mainMod, C, killactive, -# bind = $mainMod, M, exit, -# bind = $mainMod, E, exec, $fileManager -# bind = $mainMod, R, exec, $menu -# bind = $mainMod, P, pseudo, # dwindle +# Programs +$terminal = alacritty +$fileManager = thunar +$menu = wofi --show drun +$browser = vivaldi --enable-features=UseOzonePlatform --ozone-platform=wayland +$power_menu = ~/.config/hypr/scripts/power-menu.sh +$screenshot = hyprshot -z -t 1000 -o ~/Pictures/Screenshots/ -m output +$screenshot_region = hyprshot -z -t 1000 -o ~/Pictures/Screenshots/ -m region +$lockscreen = hyprlock -$mainMod = SUPER -$volume_down = $(pactl set-sink-volume @DEFAULT_SINK@ -5% && $sink_volume) -$volume_up = $(pactl set-sink-volume @DEFAULT_SINK@ +5% && $sink_volume) +# Variables +$volume_up = $(pactl set-sink-volume @DEFAULT_SINK@ -5% && $sink_volume) +$volume_down = $(pactl set-sink-volume @DEFAULT_SINK@ +5% && $sink_volume) $volume_mute = $(pactl set-sink-mute @DEFAULT_SINK@ toggle && pactl get-sink-mute @DEFAULT_SINK@ | sed -En "/no/ s/.*/$($sink_volume)/p; /yes/ s/.*/0/p") $brightness_up = brightnessctl -c backlight set +5% $brightness_down = brightnessctl -c backlight set 5%- -# Utility Keys -bind = , XF86AudioMute, exec, $volume_mute -binde = , XF86AudioLowerVolume, exec, $volume_down -binde = , XF86AudioRaiseVolume, exec, $volume_up - -bind = , XF86AudioPlay, exec, playerctl play-pause -bind = , XF86AudioNext, exec, playerctl next -bind = , XF86AudioPrev, exec, playerctl previous - -binde = , XF86MonBrightnessUp, exec, $brightness_up -binde = , XF86MonBrightnessDown, exec, $brightness_down -bind = , Print, exec, /usr/share/sway/scripts/grimshot --notify save output -bind = Shift, Print, exec, ~/.config/sway/scripts/screenshot.sh - - -# General Keybinds -bind = $mainMod, O, exec, $browser -bind = $mainMod, P, exec, $music -bind = $mainMod, D, exec, $menu -bind = $mainMod, N, exec, $fileManager -bind = $mainMod, RETURN, exec, $terminal -bind = $mainMod SHIFT, E, exec, $powermenu +# Execution +bind = $mainMod, Q, killactive, +bind = $mainMod, RETURN, exec, $terminal +bind = $mainMod, N, exec, $fileManager +bind = $mainMod, D, exec, $menu +bind = $mainMod, O, exec, $browser +bind = $mainMod SHIFT, E, exec, $power_menu bind = $mainMod ALT, L, exec, $lockscreen -bind = $mainMod, Q, killactive, -bind = $mainMod, T, togglesplit, -bind = $mainMod, F, fullscreen, -bind = $mainMod SHIFT, SPACE, togglefloating, - -# Move focus with mainMod + arrow keys -# bind = $mainMod, left, movefocus, l -# bind = $mainMod, right, movefocus, r -# bind = $mainMod, up, movefocus, u -# bind = $mainMod, down, movefocus, d +# Windows +bind = $mainMod SHIFT, SPACE, togglefloating, +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle +bind = $mainMod, F, fullscreen, bind = $mainMod, TAB, cyclenext, -# Resize windows -binde = $mainMod, right, resizeactive, 20 0 -binde = $mainMod, left, resizeactive, -20 0 -binde = $mainMod, up, resizeactive, 0 -20 -binde = $mainMod, down, resizeactive, 0 20 +# Audio +bind = , XF86AudioMute, exec, $volume_mute +binde = , XF86AudioLowerVolume, exec, $volume_up +binde = , XF86AudioRaiseVolume, exec, $volume_down +bindl = , XF86AudioNext, exec, playerctl next +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous -# Switch workspaces with mainMod + [0-9] +# Utility +binde = , XF86MonBrightnessUp, exec, $brightness_up +binde = , XF86MonBrightnessDown, exec, $brightness_down +bind = , print, exec, $screenshot +bind = SHIFT, print, exec, $screenshot_region + +# Workspaces bind = $mainMod, 1, workspace, 1 bind = $mainMod, 2, workspace, 2 bind = $mainMod, 3, workspace, 3 @@ -235,21 +271,19 @@ bind = $mainMod, 9, workspace, 9 bind = $mainMod, 0, workspace, 10 # Move active window to a workspace with mainMod + SHIFT + [0-9] -bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1 -bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2 -bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3 -bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4 -bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5 -bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6 -bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7 -bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8 -bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 -bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 # Example special workspace (scratchpad) bind = $mainMod, S, togglespecialworkspace, magic -# bind = $mainMod SHIFT, S, movetoworkspace, special:magic -# bind = $mainMod, S, exec, pypr toggle kitty bind = $mainMod SHIFT, S, movetoworkspace, special:magic # Scroll through existing workspaces with mainMod + scroll @@ -260,3 +294,20 @@ bind = $mainMod, mouse_up, workspace, e-1 bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow +# Requires playerctl + +############################## +### WINDOWS AND WORKSPACES ### +############################## + +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules + +# Example windowrule +# windowrule = float,class:^(kitty)$,title:^(kitty)$ + +# Ignore maximize requests from apps. You'll probably like this. +windowrule = suppressevent maximize, class:.* + +# Fix some dragging issues with XWayland +windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 diff --git a/hyprlock.conf b/hyprlock.conf new file mode 100644 index 0000000..94e455a --- /dev/null +++ b/hyprlock.conf @@ -0,0 +1,140 @@ +# source = /home/justin/.cache/wal/colors-hyprland.conf + +# BACKGROUND +background { + monitor = + #path = screenshot + path = /home/catman/.config/wallpaper/Sollee.png + #color = $background + blur_passes = 2 + contrast = 1 + brightness = 0.5 + vibrancy = 0.2 + vibrancy_darkness = 0.2 +} + +# GENERAL +general { + no_fade_in = false + no_fade_out = false + hide_cursor = false + grace = 0 + disable_loading_bar = true +} + +# INPUT FIELD +input-field { + monitor = + size = 250, 60 + outline_thickness = 2 + dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8 + dots_spacing = 0.35 # Scale of dots' absolute size, 0.0 - 1.0 + dots_center = true + outer_color = rgba(0, 0, 0, 1) + inner_color = rgba(242, 243, 244, 0.75) + font_color = #000000 + fade_on_empty = false + rounding = -1 + check_color = rgb(204, 136, 34) + placeholder_text = Input Password... + hide_input = false + position = 0, -200 + halign = center + valign = center +} + +# DATE +label { + monitor = + text = cmd[update:1000] echo "$(date +"%A, %B %d")" + color = rgba(242, 243, 244, 0.75) + font_size = 22 + font_family = JetBrains Mono + position = 0, 300 + halign = center + valign = center +} + +# TIME +label { + monitor = + text = cmd[update:1000] echo "$(date +"%H:%M")" + color = rgba(242, 243, 244, 0.75) + font_size = 95 + font_family = JetBrains Mono Extrabold + position = 0, 200 + halign = center + valign = center +} + + + +# Profile Picture +# image { +# monitor = +# path = /home/ +# size = 100 +# border_size = 2 +# border_color = $foreground +# position = 0, -100 +# halign = center +# valign = center +# } + +# Desktop Environment +# image { +# monitor = +# path = /home/justin/Pictures/profile_pictures/hypr.png +# size = 75 +# border_size = 2 +# border_color = $foreground +# position = -50, 50 +# halign = right +# valign = bottom +# } + +# CURRENT SONG +# label { +# monitor = +# text = cmd[update:1000] echo "$(/home/justin/Documents/Scripts/whatsong.sh)" +# color = $foreground +# #color = rgba(255, 255, 255, 0.6) +# font_size = 18 +# font_family = Metropolis Light, Font Awesome 6 Free Solid +# position = 0, 50 +# halign = center +# valign = bottom +# } + +label { + monitor = + text = cmd[update:1000] echo "$(whoami)@$(cat /etc/hostname | cut -d '.' -f 1)" + color = $foreground + font_size = 14 + font_family = JetBrains Mono + position = 0, -10 + halign = center + valign = top +} + +# label { +# monitor = +# text = cmd[update:1000] echo "$(/home/justin/Documents/Scripts/battery.sh)" +# color = $foreground +# font_size = 24 +# font_family = JetBrains Mono +# position = -90, -10 +# halign = right +# valign = top +# } + +# label { +# monitor = +# text = cmd[update:1000] echo "$(/home/justin/Documents/Scripts/network-status.sh)" +# color = $foreground +# font_size = 24 +# font_family = JetBrains Mono +# position = -20, -10 +# halign = right +# valign = top +# } diff --git a/hyprpaper.conf b/hyprpaper.conf index 4d43865..60088e4 100644 --- a/hyprpaper.conf +++ b/hyprpaper.conf @@ -1,5 +1,5 @@ -preload = /usr/share/hyprland/wall2.png -preload = ~/.config/sway/sway.png +preload = ~/.config/wallpaper/Sollee.png +preload = ~/.config/wallpaper/Kath.png -wallpaper = ,~/.config/sway/sway.png +wallpaper = ,~/.config/wallpaper/Sollee.png splash = false diff --git a/mocha.conf b/mocha.conf deleted file mode 100644 index 1463565..0000000 --- a/mocha.conf +++ /dev/null @@ -1,61 +0,0 @@ -$rosewaterAlpha = f5e0dc -$flamingoAlpha = f2cdcd -$pinkAlpha = f5c2e7 -$mauveAlpha = cba6f7 -$redAlpha = f38ba8 -$maroonAlpha = eba0ac -$peachAlpha = fab387 -$yellowAlpha = f9e2af -$greenAlpha = a6e3a1 -$tealAlpha = 94e2d5 -$skyAlpha = 89dceb -$sapphireAlpha = 74c7ec -$blueAlpha = 89b4fa -$lavenderAlpha = b4befe - -$textAlpha = cdd6f4 -$subtext1Alpha = bac2de -$subtext0Alpha = a6adc8 - -$overlay2Alpha = 9399b2 -$overlay1Alpha = 7f849c -$overlay0Alpha = 6c7086 - -$surface2Alpha = 585b70 -$surface1Alpha = 45475a -$surface0Alpha = 313244 - -$baseAlpha = 1e1e2e -$mantleAlpha = 181825 -$crustAlpha = 11111b - -$rosewater = 0xfff5e0dc -$flamingo = 0xfff2cdcd -$pink = 0xfff5c2e7 -$mauve = 0xffcba6f7 -$red = 0xfff38ba8 -$maroon = 0xffeba0ac -$peach = 0xfffab387 -$yellow = 0xfff9e2af -$green = 0xffa6e3a1 -$teal = 0xff94e2d5 -$sky = 0xff89dceb -$sapphire = 0xff74c7ec -$blue = 0xff89b4fa -$lavender = 0xffb4befe - -$text = 0xffcdd6f4 -$subtext1 = 0xffbac2de -$subtext0 = 0xffa6adc8 - -$overlay2 = 0xff9399b2 -$overlay1 = 0xff7f849c -$overlay0 = 0xff6c7086 - -$surface2 = 0xff585b70 -$surface1 = 0xff45475a -$surface0 = 0xff313244 - -$base = 0xff1e1e2e -$mantle = 0xff181825 -$crust = 0xff11111b diff --git a/power-menu b/power-menu deleted file mode 100755 index 082885b..0000000 --- a/power-menu +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -entries="Logout Suspend Reboot Shutdown" - -selected=$(printf '%s\n' $entries | wofi --conf=$HOME/.config/wofi/config.power --style=$HOME/.config/wofi/style.widgets.css | awk '{print tolower($1)}') - -case $selected in - logout) - hyprctl dispatch exit;; - suspend) - exec systemctl suspend;; - reboot) - exec systemctl reboot;; - shutdown) - exec systemctl poweroff -i;; -esac diff --git a/scripts/power-menu.sh b/scripts/power-menu.sh new file mode 100755 index 0000000..e3bc58c --- /dev/null +++ b/scripts/power-menu.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +dmenu_command=(wofi -dmenu -p "Power Menu" -i) + +# Define menu options and corresponding actions +options=( + "Lock" + "Logout" + "Shutdown" + "Reboot" +) + +# Create associative array mapping text to actions +declare -A actions +actions["Lock"]="sleep 0.2 && hyprlock" +actions["Logout"]="hyprctl dispatch exit" +actions["Shutdown"]="systemctl poweroff" +actions["Reboot"]="systemctl reboot" + +# Prompt user using wofi in dmenu mode +choice=$(printf '%s\n' "${options[@]}" | "${dmenu_command[@]}") + +# Run the corresponding command if valid choice was made +if [[ -n "$choice" && -n "${actions[$choice]}" ]]; then + eval "${actions[$choice]}" +fi +