diff options
Diffstat (limited to 'config/hypr/initial-boot.sh')
| -rwxr-xr-x | config/hypr/initial-boot.sh | 55 |
1 files changed, 40 insertions, 15 deletions
diff --git a/config/hypr/initial-boot.sh b/config/hypr/initial-boot.sh index 8ccda640..b45c31aa 100755 --- a/config/hypr/initial-boot.sh +++ b/config/hypr/initial-boot.sh @@ -16,6 +16,32 @@ color_scheme="prefer-dark" gtk_theme="Flat-Remix-GTK-Blue-Dark" icon_theme="Flat-Remix-Blue-Dark" cursor_theme="Bibata-Modern-Ice" +wallust_args=() +# shellcheck source=/dev/null +if [ -f "$scriptsDir/WallustConfig.sh" ]; then + . "$scriptsDir/WallustConfig.sh" +fi + +set_interface_pref_with_retry() { + local key="$1" + local value="$2" + local expected="$3" + local current="" + local attempt=0 + local max_attempts=6 + + while [ "$attempt" -lt "$max_attempts" ]; do + gsettings set org.gnome.desktop.interface "$key" "$value" > /dev/null 2>&1 || true + current="$(gsettings get org.gnome.desktop.interface "$key" 2>/dev/null || true)" + if [ "$current" = "$expected" ]; then + return 0 + fi + attempt=$((attempt + 1)) + sleep 0.25 + done + + return 1 +} if command -v awww >/dev/null 2>&1; then WWW="awww" @@ -29,28 +55,27 @@ effect="--transition-bezier .43,1.19,1,.4 --transition-fps 30 --transition-type # Check if a marker file exists. if [ ! -f "$HOME/.config/hypr/.initial_startup_done" ]; then - sleep 1 + # Apply appearance preferences early and synchronously to avoid startup races + # where Flatpak/libadwaita apps can default to light mode. + set_interface_pref_with_retry color-scheme "'$color_scheme'" "'$color_scheme'" || true + set_interface_pref_with_retry gtk-theme "'$gtk_theme'" "'$gtk_theme'" || true + set_interface_pref_with_retry icon-theme "'$icon_theme'" "'$icon_theme'" || true + set_interface_pref_with_retry cursor-theme "'$cursor_theme'" "'$cursor_theme'" || true + gsettings set org.gnome.desktop.interface cursor-size 24 > /dev/null 2>&1 || true # Initialize wallust and wallpaper if [ -f "$wallpaper" ]; then - wallust run -s $wallpaper > /dev/null + wallust "${wallust_args[@]}" run -s "$wallpaper" > /dev/null $WWW query || $DAEMON && $swww $wallpaper $effect "$scriptsDir/WallustSwww.sh" > /dev/null 2>&1 & fi - - # initiate GTK dark mode and apply icon and cursor theme - gsettings set org.gnome.desktop.interface color-scheme $color_scheme > /dev/null 2>&1 & - gsettings set org.gnome.desktop.interface gtk-theme $gtk_theme > /dev/null 2>&1 & - gsettings set org.gnome.desktop.interface icon-theme $icon_theme > /dev/null 2>&1 & - gsettings set org.gnome.desktop.interface cursor-theme $cursor_theme > /dev/null 2>&1 & - gsettings set org.gnome.desktop.interface cursor-size 24 > /dev/null 2>&1 & # NIXOS initiate GTK dark mode and apply icon and cursor theme - if [ -n "$(grep -i nixos < /etc/os-release)" ]; then - gsettings set org.gnome.desktop.interface color-scheme "'$color_scheme'" > /dev/null 2>&1 & - dconf write /org/gnome/desktop/interface/gtk-theme "'$gtk_theme'" > /dev/null 2>&1 & - dconf write /org/gnome/desktop/interface/icon-theme "'$icon_theme'" > /dev/null 2>&1 & - dconf write /org/gnome/desktop/interface/cursor-theme "'$cursor_theme'" > /dev/null 2>&1 & - dconf write /org/gnome/desktop/interface/cursor-size "24" > /dev/null 2>&1 & + if grep -qi nixos /etc/os-release; then + dconf write /org/gnome/desktop/interface/color-scheme "'$color_scheme'" > /dev/null 2>&1 || true + dconf write /org/gnome/desktop/interface/gtk-theme "'$gtk_theme'" > /dev/null 2>&1 || true + dconf write /org/gnome/desktop/interface/icon-theme "'$icon_theme'" > /dev/null 2>&1 || true + dconf write /org/gnome/desktop/interface/cursor-theme "'$cursor_theme'" > /dev/null 2>&1 || true + dconf write /org/gnome/desktop/interface/cursor-size "24" > /dev/null 2>&1 || true fi # initiate kvantum theme |
