From 58b876c6e8451246a5c8f8ff17fb9476d321c02a Mon Sep 17 00:00:00 2001 From: retrozinndev Date: Wed, 12 Feb 2025 13:41:56 -0300 Subject: [PATCH] :recycle: hypr: separate and organize scripts --- hypr/autostart.conf | 4 +- hypr/environment.conf | 1 + hypr/nvidia.conf | 1 - hypr/rules.conf | 4 +- hypr/scripts/change-wallpaper.sh | 70 ++++++++------------- hypr/scripts/clipboard-menu.sh | 2 +- hypr/scripts/get-dmenu.sh | 26 ++++++++ hypr/scripts/get-wallpaper.sh | 0 hypr/scripts/notification-handler-daemon.sh | 40 ------------ 9 files changed, 59 insertions(+), 89 deletions(-) create mode 100644 hypr/scripts/get-dmenu.sh create mode 100644 hypr/scripts/get-wallpaper.sh delete mode 100644 hypr/scripts/notification-handler-daemon.sh diff --git a/hypr/autostart.conf b/hypr/autostart.conf index 91ce799..ecb02b0 100644 --- a/hypr/autostart.conf +++ b/hypr/autostart.conf @@ -20,5 +20,5 @@ exec-once = sh $HOME/.config/hypr/scripts/night-light-check.sh exec-once = ags run --log-file $HOME/ags.log # Apps -exec-once = /usr/bin/env vesktop --start-minimized -exec-once = /usr/bin/env steam -silent +exec-once = /bin/vesktop --start-minimized +exec-once = /bin/steam -silent diff --git a/hypr/environment.conf b/hypr/environment.conf index f940399..f56a134 100644 --- a/hypr/environment.conf +++ b/hypr/environment.conf @@ -23,3 +23,4 @@ env = QT_QPA_PLATFORMTHEME, qt5ct env = QT_AUTO_SCREEN_SCALE_FACTOR, 1 env = ADW_DISABLE_PORTAL, 1 env = MOZ_ENABLE_WAYLAND, 1 +#env = ELECTRON_OZONE_PLATFORM_HINT, auto diff --git a/hypr/nvidia.conf b/hypr/nvidia.conf index d9c6128..21768d6 100644 --- a/hypr/nvidia.conf +++ b/hypr/nvidia.conf @@ -6,7 +6,6 @@ env = LIBVA_DRIVER_NAME, nvidia env = __GLX_VENDOR_LIBRARY_NAME, nvidia env = NVD_BACKEND, direct -env = ELECTRON_OZONE_PLATFORM_HINT, auto cursor { # Set to true if you have issues diff --git a/hypr/rules.conf b/hypr/rules.conf index 7717de3..f5a5d50 100644 --- a/hypr/rules.conf +++ b/hypr/rules.conf @@ -46,7 +46,8 @@ layerrule = animation slide right, eww-cc layerrule = animation fade, eww-calendar layerrule = animation fade, eww-volume layerrule = animation fade, eww-powermenu -layerrule = animation up, control-center +layerrule = animation fade, control-center +layerrule = animation fade, center-window # Bruh i need a better name for this :skull: # Opacity windowrulev2 = opacity .95 .95, class:kitty @@ -71,6 +72,7 @@ layerrule = blur, eww-powermenu layerrule = blur, top-bar layerrule = blur, osd layerrule = blur, control-center +#layerrule = blur, logout-menu layerrule = ignorealpha .6, eww-volume layerrule = ignorealpha .55, eww-bar layerrule = ignorealpha .5, eww-calendar diff --git a/hypr/scripts/change-wallpaper.sh b/hypr/scripts/change-wallpaper.sh index 06c8b4d..2f270fb 100644 --- a/hypr/scripts/change-wallpaper.sh +++ b/hypr/scripts/change-wallpaper.sh @@ -1,90 +1,72 @@ -#!/usr/bin/env bash +#!usr/bin/env bash - -# Prompts the user with anyrun or wofi to choose an image file inside -# the defined $WALLPAPERS_DIR. If the user selects an entry, it automatically -# writes changes to the hyprpaper.conf file and hot-reloads wallpaper if hyprpaper -# is running. +# Prompts the user with dmenu(or dmenu-like app, see hypr/scripts/get-dmenu.sh) +# to choose an image file inside defined $WALLPAPERS_DIR. If the user selects +# an entry, it automatically writes changes to the hyprpaper.conf file and +# hot-reloads if hyprpaper is running. # -------------- # Licensed under the MIT License # Made by retrozinndev (João Dias) # From https://github.com/retrozinndev/Hyprland-Dots -HYPRPAPER_FILE="$HOME/.config/hypr/hyprpaper.conf" -COLORSCHEME_STYLE="darken" # lighten / darken +style="darken" # lighten / darken +dmenu=$(sh "$XDG_CONFIG_HOME/hypr/scripts/get-dmenu.sh") -if [[ $WALLPAPERS_DIR == "" ]]; then +if [[ -z "$WALLPAPERS_DIR" ]]; then WALLPAPERS_DIR="$HOME/wallpapers" fi -if [[ -f /bin/anyrun ]]; then - WALLPAPER_SELECT_CMD="anyrun --plugins libstdin.so" -elif [[ -f /bin/wofi ]]; then - WALLPAPER_SELECT_CMD="wofi --dmenu" -else +if [[ -z "$dmenu" ]]; then notify-send -u normal -a "Wallpaper" "Dmenu not found" "Couldn't find anyrun or wofi for dmenu! Try installing one of these two before selecting wallpaper!" exit 1 fi -if [[ -z $(ls -A $WALLPAPERS_DIR) ]] -then +if [[ -z $(ls -A $WALLPAPERS_DIR) ]]; then notify-send -u normal -a "Wallpaper" "Wallpapers not found" "Couldn't find any wallpaper inside \`~/wallpapers\`, try putting an image you like in there to choose it!" exit 1 fi function Write_changes() { - echo "Writing to hyprpaper config file..." + echo "[LOG] Writing to hyprpaper config file" echo \ -'$wallpaper'" = $SET_WALLPAPER_FULL +'$wallpaper'" = $wall splash = true preload = "'$wallpaper'" -wallpaper = , "'$wallpaper'"" | sed -e "s/^(\\[n])//g" > $HYPRPAPER_FILE +wallpaper = , "'$wallpaper'"" | sed -e "s/^(\\[n])//g" > $XDG_CONFIG_HOME/hypr/hyprpaper.conf } -Reload_wallpaper() { - echo "Hot-reloading wallpaper..." +function Reload_wallpaper() { + echo "[LOG] Hot-reloading wallpaper" hyprctl hyprpaper unload all - hyprctl hyprpaper preload "$SET_WALLPAPER_FULL" - hyprctl hyprpaper wallpaper ", $SET_WALLPAPER_FULL" + hyprctl hyprpaper preload $wall + hyprctl hyprpaper wallpaper ", $wall" } -Reload_pywal() { - echo "Reloading pywal colorscheme..." - wal -q -t --cols16 $COLORSCHEME_STYLE -i "$SET_WALLPAPER_FULL" +function Reload_pywal() { + echo "[LOG] Reloading pywal colorscheme" + wal -q -t --cols16 $style -i "$wall" } -Reload_eww() { - echo "Reloading Eww..." - eww reload -} - -# Prompt wallpapers via dmenu -SET_WALLPAPER_NAME="$(ls $WALLPAPERS_DIR | $WALLPAPER_SELECT_CMD)" -SET_WALLPAPER_FULL="$WALLPAPERS_DIR/$SET_WALLPAPER_NAME" - -echo "Selected wallpaper: $SET_WALLPAPER_NAME" +# Prompt wallpaper list +wall="$WALLPAPERS_DIR/$(ls $WALLPAPERS_DIR | $dmenu)" # Check if input wallpaper is empty -if [[ $SET_WALLPAPER_NAME == "" ]] || [[ $SET_WALLPAPER_NAME == " " ]] -then +if [[ $wall == "$WALLPAPERS_DIR/" ]]; then echo "No wallpaper has been selected by user!" if [[ $RANDOM_WALLPAPER_WHEN_EMPTY == true ]] then - SET_WALLPAPER_NAME=$(ls $WALLPAPERS_DIR | shuf -n 1) - echo "Selected random wallpaper from $HOME/wallpapers: $SET_WALLPAPER_NAME" - SET_WALLPAPER_FULL="$WALLPAPERS_DIR/$SET_WALLPAPER_NAME" - + wall="$WALLPAPERS_DIR/$(ls $WALLPAPERS_DIR | shuf -n 1)" + echo "Selected random from $WALLPAPERS_DIR: $wall" else echo "Skipping hyprpaper changes and exiting." - exit 1 + exit 0 fi fi Reload_pywal Reload_wallpaper -Reload_eww Write_changes exit 0 diff --git a/hypr/scripts/clipboard-menu.sh b/hypr/scripts/clipboard-menu.sh index 648ff01..2e54055 100644 --- a/hypr/scripts/clipboard-menu.sh +++ b/hypr/scripts/clipboard-menu.sh @@ -3,5 +3,5 @@ selection=$(cliphist list | anyrun --plugins libstdin.so | cliphist decode) if [[ ! -z "$selection" ]]; then - echo -e $selection | sed -e 's/\n$//g' | wl-copy + printf "%s" $selection | sed -e 's/\n$//g' | wl-copy fi diff --git a/hypr/scripts/get-dmenu.sh b/hypr/scripts/get-dmenu.sh new file mode 100644 index 0000000..09d019c --- /dev/null +++ b/hypr/scripts/get-dmenu.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Checks environment for dmenu or dmenu-like apps +# and prints out a command to pipe of. +# ----------- +# Licensed under the MIT License +# Made by retrozinndev (João Dias) +# From: https://github.com/retrozinndev/Hyprland-Dots + +DMENUS=( + "anyrun:--plugins:libstdin.so" + "rofi:-dmenu" + "wofi:--show:dmenu" + "dmenu" +) + +for dmenu in ${DMENUS[@]}; do + name=$(printf "$dmenu" | awk -F: '{ print $1 }') + cmd=$(env "$name" -h > /dev/null) + code=$? + + if [[ ! $code == 127 ]]; then + echo "$dmenu" | sed 's/:/ /g' + break; + fi +done diff --git a/hypr/scripts/get-wallpaper.sh b/hypr/scripts/get-wallpaper.sh new file mode 100644 index 0000000..e69de29 diff --git a/hypr/scripts/notification-handler-daemon.sh b/hypr/scripts/notification-handler-daemon.sh deleted file mode 100644 index 02e3f14..0000000 --- a/hypr/scripts/notification-handler-daemon.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bash - -# This script runs notification-handler.sh script -# and handles any issues that happens with it. -# -------- -# Licensed under the MIT License -# Made by retrozinndev (João Dias) -# From https://github.com/retrozinndev/Hyprland-Dots - -logfile="$HOME/.cache/notification-handler-daemon.log" -handler_script="$HOME/.config/eww/scripts/notification-handler.sh" - -function Send_log() { - echo "[$1]${@/$1}" >> $logfile -} - -function Exit_daemon() { - Send_log "info" "Handler exited normally, quitting daemon." - exit 0 -} - -function Restart_handler() { - bash $handler_script & - pid_handler=$! - Send_log "info" "Handler started!" - Send_log "info" "Handler script PID: $pid_handler" - wait $pid_handler && Exit_daemon || \ - (Send_log "error" "An error occurred and handler stopped" - Send_log "info" "Clearing history and starting handler again." - sh $HOME/.config/eww/scripts/notification-clear.sh & - Restart_handler) -} - -trap "Send_log 'info' 'SIGINT received, stopping daemon and handler' ; kill \$pid_handler ; exit 1" SIGINT -trap "Send_log 'info' 'SIGTERM received, stopping daemon and handler' ; kill \$pid_handler ; exit 1" SIGTERM - -echo -e '' > $logfile -Send_log "info" "Starting Daemon..." -Send_log "info" "Daemon script PID: $$" -Restart_handler