From 9941024f526d25ce13d474f04940baa0d7c81d6a Mon Sep 17 00:00:00 2001 From: "Ja.KooLit" Date: Sun, 17 Dec 2023 01:28:40 +0900 Subject: [PATCH] Optimized DarkLight script. --- config/dunst/dunstrc | 12 +- config/hypr/configs/Settings.conf | 2 +- config/hypr/configs/WindowRules.conf | 5 +- config/hypr/scripts/DarkLight.sh | 154 +++++++++++++----- config/hypr/scripts/PywalDunst.sh | 3 +- ...Golden Noir.css => [Dark] Golden Noir.css} | 0 .../style/{Purpl.css => [Dark] Purpl.css} | 0 7 files changed, 123 insertions(+), 53 deletions(-) rename config/waybar/style/{Golden Noir.css => [Dark] Golden Noir.css} (100%) rename config/waybar/style/{Purpl.css => [Dark] Purpl.css} (100%) diff --git a/config/dunst/dunstrc b/config/dunst/dunstrc index f5c3828..77fd1ce 100755 --- a/config/dunst/dunstrc +++ b/config/dunst/dunstrc @@ -54,7 +54,7 @@ frame_width = 2 # Defines color of the frame around the notification window. - frame_color = "#6C89AE" + frame_color = "#838383" # Define a color for the separator. # possible values are: @@ -76,7 +76,7 @@ ### Text ### - font = Fira Code Medium 12 + font = Fira Code Medium 13 # The spacing between lines. If the height is smaller than the # font height, it will get raised to the font height. @@ -170,7 +170,7 @@ ### Misc/Advanced ### # dmenu path. - # dmenu = /usr/bin/dmenu -p dunst: + dmenu = /usr/bin/rofi -p dunst: # Browser for opening urls in context menu. browser = /usr/bin/firefox -new-tab @@ -232,7 +232,7 @@ # Otherwise the "#" and following would be interpreted as a comment. background = "#00000095" foreground = "#fafafa" - frame_color = "#6C89AE" + frame_color = "#838383" timeout = 2 # Icon for notifications with low urgency, uncomment to enable icon = $HOME/.config/dunst/images/bell.png @@ -240,7 +240,7 @@ [urgency_normal] background = "#00000095" foreground = "#fafafa" - frame_color = "#6C89AE" + frame_color = "#838383" timeout = 5 # Icon for notifications with normal urgency, uncomment to enable icon = $HOME/.config/dunst/images/bell.png @@ -248,7 +248,7 @@ [urgency_critical] background = "#00000095" foreground = "#fafafa" - frame_color = "#6C89AE" + frame_color = "#838383" timeout = 0 # Icon for notifications with critical urgency, uncomment to enable icon = $HOME/.config/dunst/images/bell.png diff --git a/config/hypr/configs/Settings.conf b/config/hypr/configs/Settings.conf index f2705d9..f0a642c 100644 --- a/config/hypr/configs/Settings.conf +++ b/config/hypr/configs/Settings.conf @@ -45,7 +45,7 @@ decoration { rounding = 8 active_opacity = 1.0 - inactive_opacity = 0.8 + inactive_opacity = 0.9 fullscreen_opacity = 1.0 dim_inactive = true diff --git a/config/hypr/configs/WindowRules.conf b/config/hypr/configs/WindowRules.conf index f92f0ce..bfcb022 100644 --- a/config/hypr/configs/WindowRules.conf +++ b/config/hypr/configs/WindowRules.conf @@ -39,11 +39,10 @@ windowrulev2 = workspace 9 silent, class:^(audacious)$ #opacity (transparent) #enable as desired windowrulev2 = opacity 0.9 0.6, class:^([Rr]ofi)$ windowrulev2 = opacity 0.9 0.7, class:^(firefox)$ -windowrulev2 = opacity 0.9 0.7, class:^([Tt]hunar)$ +windowrulev2 = opacity 0.9 0.8, class:^([Tt]hunar)$ windowrulev2 = opacity 0.8 0.6, class:^(pcmanfm-qt)$ windowrulev2 = opacity 0.9 0.7, class:^(gedit)$ -#windowrulev2 = opacity 0.8 0.7, class:^(foot)$ -windowrulev2 = opacity 0.8 0.7, class:^(kitty)$ +windowrulev2 = opacity 0.9 0.8, class:^(kitty)$ #windowrulev2 = opacity 0.9 0.7, class:^(mousepad)$ windowrulev2 = opacity 0.9 0.7, class:^(codium-url-handler)$ windowrulev2 = opacity 0.9 0.7, class:^(VSCodium)$ diff --git a/config/hypr/scripts/DarkLight.sh b/config/hypr/scripts/DarkLight.sh index dc7adda..cdb2c5a 100755 --- a/config/hypr/scripts/DarkLight.sh +++ b/config/hypr/scripts/DarkLight.sh @@ -1,24 +1,16 @@ #!/bin/bash -set -x -# Define the path -wallpaper_path="$HOME/Pictures/wallpapers/Dynamic-Wallpapers" +#set -x +# Paths +wallpaper_base_path="$HOME/Pictures/wallpapers/Dynamic-Wallpapers" +dark_wallpapers="$wallpaper_base_path/Dark" +light_wallpapers="$wallpaper_base_path/Light" hypr_config_path="$HOME/.config/hypr" -waybar_config="$HOME/.config/waybar" dunst_config="$HOME/.config/dunst" SCRIPTSDIR="$HOME/.config/hypr/scripts" dunst_notif="$HOME/.config/dunst/images/bell.png" - dark_rofi_pywal="$HOME/.cache/wal/colors-rofi-dark.rasi" light_rofi_pywal="$HOME/.cache/wal/colors-rofi-light.rasi" - - -# Tokyo Night -light_gtk_theme="Tokyonight-Light-B" -dark_gtk_theme="Tokyonight-Dark-B" -light_icon_theme="TokyoNight-SE" -dark_icon_theme="TokyoNight-SE" - pkill swaybg # Initialize swww if needed @@ -28,58 +20,136 @@ swww query || swww init swww="swww img" effect="--transition-bezier .43,1.19,1,.4 --transition-fps 60 --transition-type grow --transition-pos 0.925,0.977 --transition-duration 2" +# Function to notify user notify_user() { - dunstify -u normal -i "$dunst_notif" "Switching to $1 mode" + dunstify -u low -i "$dunst_notif" "Switching to $1 mode" } -# Determine the current wallpaper mode by checking a configuration file -if [ "$(cat ~/.cache/.wallpaper_mode)" = "light" ]; then - current_mode="light" - next_mode="dark" +# Function to set Waybar style +set_waybar_style() { + theme="$1" + waybar_styles="$HOME/.config/waybar/style" + waybar_style_link="$HOME/.config/waybar/style.css" + style_prefix="\\[${theme}\\].*\\.css$" + + style_file=$(find "$waybar_styles" -maxdepth 1 -type f -regex ".*$style_prefix" | shuf -n 1) + + if [ -n "$style_file" ]; then + ln -sf "$style_file" "$waybar_style_link" + else + echo "Style file not found for $theme theme." + fi +} + +# Determine current wallpaper mode +if [ "$(cat ~/.cache/.wallpaper_mode)" = "Light" ]; then + next_mode="Dark" + wallpaper_path="$dark_wallpapers" else - current_mode="dark" - next_mode="light" + next_mode="Light" + wallpaper_path="$light_wallpapers" fi -path_param=$(echo $next_mode | sed 's/.*/\u&/') + +# Call the function after determining the mode +set_waybar_style "$next_mode" notify_user "$next_mode" # Change background for dunst -if [ "$next_mode" = "dark" ]; then +if [ "$next_mode" = "Dark" ]; then sed -i '/background = /s/.*/ background = "#00000095"/' "${dunst_config}/dunstrc" - sed -i '/foreground = /s/.*/ foreground = "#fafafa"/' "${dunst_config}/dunstrc" + sed -i '/foreground = /s/.*/ foreground = "#fafafa"/' "${dunst_config}/dunstrc" else - sed -i '/background = /s/.*/ background = "#FFFFFF80"/' "${dunst_config}/dunstrc" - sed -i '/foreground = /s/.*/ foreground = "#00000095"/' "${dunst_config}/dunstrc" + sed -i '/background = /s/.*/ background = "#ffffff99"/' "${dunst_config}/dunstrc" + sed -i '/foreground = /s/.*/ foreground = "#00000095"/' "${dunst_config}/dunstrc" fi -# Symlink for rofi theme -if [ "$next_mode" = "dark" ]; then - ln -sf $dark_rofi_pywal "$HOME/.config/rofi/pywal-color/pywal-theme.rasi" +# Set Rofi Themes +if [ "$next_mode" = "Dark" ]; then + ln -sf $dark_rofi_pywal "$HOME/.config/rofi/pywal-color/pywal-theme.rasi" else - ln -sf $light_rofi_pywal "$HOME/.config/rofi/pywal-color/pywal-theme.rasi" + ln -sf $light_rofi_pywal "$HOME/.config/rofi/pywal-color/pywal-theme.rasi" fi -gtk_theme="${next_mode}_gtk_theme" -icon_theme="${next_mode}_icon_theme" - -gsettings set org.gnome.desktop.interface gtk-theme "${!gtk_theme}" -gsettings set org.gnome.desktop.interface icon-theme "${!icon_theme}" - -# Find the next wallpaper if one exists -current_wallpaper="$(cat ~/.cache/.current_wallpaper)" -next_wallpaper="${current_wallpaper/_"$current_mode"/_"$next_mode"}" +# Set Dynamic Wallpaper for Dark Mode +if [ "$next_mode" = "Dark" ]; then + next_wallpaper="$(find "${dark_wallpapers}" -type f -iname "*.jpg" -print0 | shuf -n1 -z | xargs -0)" +fi -if ! [ -f "$next_wallpaper" ]; then - next_wallpaper="$(find "${wallpaper_path/"${path_param}"}" -type f -iname "*_"${next_mode}".jpg" -print0 | shuf -n1 -z | xargs -0)" +# Set Dynamic Wallpaper for Light Mode +if [ "$next_mode" = "Light" ]; then + next_wallpaper="$(find "${light_wallpapers}" -type f -iname "*.jpg" -print0 | shuf -n1 -z | xargs -0)" fi $swww "${next_wallpaper}" $effect -# Update the configuration file to reflect the new wallpaper mode and current wallpaper +# This is a referrence point for next cycle echo "$next_mode" > ~/.cache/.wallpaper_mode echo "$next_wallpaper" > ~/.cache/.current_wallpaper +# GTK themes and icons switching +set_custom_gtk_theme() { + mode=$1 + gtk_themes_directory="$HOME/.themes" + icon_directory="$HOME/.icons" + theme_setting="org.gnome.desktop.interface gtk-theme" + icon_setting="org.gnome.desktop.interface icon-theme" + + if [ "$mode" == "Light" ]; then + search_keywords="*Light*" + elif [ "$mode" == "Dark" ]; then + search_keywords="*Dark*" + else + echo "Invalid mode provided." + return 1 + fi + + themes=() + icons=() + + while IFS= read -r -d '' theme_search; do + themes+=("$(basename "$theme_search")") + done < <(find "$gtk_themes_directory" -maxdepth 1 -type d -iname "$search_keywords" -print0) + + while IFS= read -r -d '' icon_search; do + icons+=("$(basename "$icon_search")") + done < <(find "$icon_directory" -maxdepth 1 -type d -iname "$search_keywords" -print0) + + if [ ${#themes[@]} -gt 0 ]; then + if [ "$mode" == "Dark" ]; then + selected_theme=${themes[RANDOM % ${#themes[@]}]} + else + selected_theme=${themes[$RANDOM % ${#themes[@]}]} + fi + echo "Selected GTK theme for $mode mode: $selected_theme" + gsettings set $theme_setting "$selected_theme" + else + echo "No $mode GTK theme found" + fi + + if [ ${#icons[@]} -gt 0 ]; then + if [ "$mode" == "Dark" ]; then + selected_icon=${icons[RANDOM % ${#icons[@]}]} + else + selected_icon=${icons[$RANDOM % ${#icons[@]}]} + fi + echo "Selected icon theme for $mode mode: $selected_icon" + gsettings set $icon_setting "$selected_icon" + else + echo "No $mode icon theme found" + fi +} + +# Call the function to set GTK theme and icon theme based on mode +set_custom_gtk_theme "$next_mode" + +# Run remaining scripts ${SCRIPTSDIR}/PywalSwww.sh & sleep 2 -${SCRIPTSDIR}/Refresh.sh \ No newline at end of file +${SCRIPTSDIR}/Refresh.sh + +notify-send "GTK theme set to $selected_theme" +notify-send "Icon theme set to $selected_icon" + +exit 0 + diff --git a/config/hypr/scripts/PywalDunst.sh b/config/hypr/scripts/PywalDunst.sh index 2a66aec..1c9398f 100755 --- a/config/hypr/scripts/PywalDunst.sh +++ b/config/hypr/scripts/PywalDunst.sh @@ -11,7 +11,7 @@ [ -f "$HOME/.cache/wal/colors.sh" ] && . "$HOME/.cache/wal/colors.sh" -pidof dunst && pkill dunst +pkill dunst DUNST_FILE=~/.config/dunst/dunstrc @@ -20,4 +20,5 @@ DUNST_FILE=~/.config/dunst/dunstrc #sed -i '/foreground = /s/.*/ foreground = "'$color7'"/' $DUNST_FILE sed -i '/frame_color = /s/.*/ frame_color = "'$color2'"/' $DUNST_FILE +sleep 0.3 dunst -config ~/.config/dunst/dunstrc > /dev/null 2>&1 & \ No newline at end of file diff --git a/config/waybar/style/Golden Noir.css b/config/waybar/style/[Dark] Golden Noir.css similarity index 100% rename from config/waybar/style/Golden Noir.css rename to config/waybar/style/[Dark] Golden Noir.css diff --git a/config/waybar/style/Purpl.css b/config/waybar/style/[Dark] Purpl.css similarity index 100% rename from config/waybar/style/Purpl.css rename to config/waybar/style/[Dark] Purpl.css