From 05a8b017c97116e6adebaf58070de401889ad055 Mon Sep 17 00:00:00 2001 From: Maximilian Zhu Date: Mon, 29 Dec 2025 10:57:53 +0100 Subject: Fix: Update wallpaper path in WallustSwww.sh Updated wallpaper path in WallustSwww.sh to match the newest version of swww. It worked in a test on my local machine on fedora. The change was necessary to let ~/.config/rofi/.current_wallpaper to update automatically and it also fixed wallust updating the color scheme automatically. It also made hyprlock to use the current wallpaper as background. Rofi's embed wallpaper section got fixed too. --- config/hypr/scripts/WallustSwww.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'config/hypr/scripts/WallustSwww.sh') diff --git a/config/hypr/scripts/WallustSwww.sh b/config/hypr/scripts/WallustSwww.sh index 657f41ab..f3da3e35 100755 --- a/config/hypr/scripts/WallustSwww.sh +++ b/config/hypr/scripts/WallustSwww.sh @@ -40,7 +40,8 @@ else if [[ -f "$cache_file" ]]; then # The first non-filter line is the original wallpaper path # wallpaper_path="$(grep -v 'Lanczos3' "$cache_file" | head -n 1)" - wallpaper_path=$(swww query | grep $current_monitor | awk '{print $9}') + # wallpaper_path=$(swww query | grep $current_monitor | awk '{print $9}') + wallpaper_path=$(swww query | sed 's/.*image: //') fi fi -- cgit v1.2.3 From eb03615199f93f29e8d663b1e5d2b0e3371459cd Mon Sep 17 00:00:00 2001 From: Don Williams Date: Thu, 8 Jan 2026 00:13:45 -0500 Subject: Added support for ghostty term integrated w/wallust On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/ghostty/ghostty.config modified: config/hypr/scripts/ThemeChanger.sh modified: config/hypr/scripts/WallustSwww.sh new file: config/wallust/templates/colors-ghostty.conf modified: config/wallust/wallust.toml --- config/ghostty/ghostty.config | 2 +- config/hypr/scripts/ThemeChanger.sh | 4 ++++ config/hypr/scripts/WallustSwww.sh | 3 +++ config/wallust/templates/colors-ghostty.conf | 28 ++++++++++++++++++++++++++++ config/wallust/wallust.toml | 3 +++ 5 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 config/wallust/templates/colors-ghostty.conf (limited to 'config/hypr/scripts/WallustSwww.sh') diff --git a/config/ghostty/ghostty.config b/config/ghostty/ghostty.config index 00def172..3795ec3f 100644 --- a/config/ghostty/ghostty.config +++ b/config/ghostty/ghostty.config @@ -4,7 +4,7 @@ background-opacity = 1.00 bold-is-bright = false confirm-close-surface = false cursor-style = bar -font-family = Maple Mono NF +font-family = FantasqueSansM Nerd Font Mono font-size = 12 gtk-single-instance = true mouse-hide-while-typing = true diff --git a/config/hypr/scripts/ThemeChanger.sh b/config/hypr/scripts/ThemeChanger.sh index f42fb406..4a712a4b 100755 --- a/config/hypr/scripts/ThemeChanger.sh +++ b/config/hypr/scripts/ThemeChanger.sh @@ -43,10 +43,14 @@ if wallust theme -- "${choice}"; then "Global theme changed" "Selected: ${choice}" # Wait until template targets exist, are newer than start_ts, and are stable (size/mtime stops changing) + # Ensure Ghostty directory exists so Wallust can write target even if Ghostty isn't installed + mkdir -p "$HOME/.config/ghostty" || true + targets=( "$HOME/.config/waybar/wallust/colors-waybar.css" "$HOME/.config/rofi/wallust/colors-rofi.rasi" "$HOME/.config/kitty/kitty-themes/01-Wallust.conf" + "$HOME/.config/ghostty/wallust.conf" ) # Phase 1: appearance + freshness diff --git a/config/hypr/scripts/WallustSwww.sh b/config/hypr/scripts/WallustSwww.sh index f3da3e35..7090b84c 100755 --- a/config/hypr/scripts/WallustSwww.sh +++ b/config/hypr/scripts/WallustSwww.sh @@ -55,6 +55,9 @@ ln -sf "$wallpaper_path" "$rofi_link" || true mkdir -p "$(dirname "$wallpaper_current")" cp -f "$wallpaper_path" "$wallpaper_current" || true +# Ensure Ghostty directory exists so Wallust can write target even if Ghostty isn't installed +mkdir -p "$HOME/.config/ghostty" || true + # Run wallust (silent) to regenerate templates defined in ~/.config/wallust/wallust.toml # -s is used in this repo to keep things quiet and avoid extra prompts wallust run -s "$wallpaper_path" || true diff --git a/config/wallust/templates/colors-ghostty.conf b/config/wallust/templates/colors-ghostty.conf new file mode 100644 index 00000000..45f93a63 --- /dev/null +++ b/config/wallust/templates/colors-ghostty.conf @@ -0,0 +1,28 @@ +# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ +# wallust template - colors for Ghostty +# This file is included by ~/.config/ghostty/ghostty.config when present. + +# Core UI colors +foreground = {{foreground}} +background = {{background}} +cursor-color = {{cursor}} +selection-foreground = {{foreground}} +selection-background = {{color12}} + +# 16-color palette +palette = 0:{{color0}} +palette = 1:{{color1}} +palette = 2:{{color2}} +palette = 3:{{color3}} +palette = 4:{{color4}} +palette = 5:{{color5}} +palette = 6:{{color6}} +palette = 7:{{color7}} +palette = 8:{{color8}} +palette = 9:{{color9}} +palette = 10:{{color10}} +palette = 11:{{color11}} +palette = 12:{{color12}} +palette = 13:{{color13}} +palette = 14:{{color14}} +palette = 15:{{color15}} \ No newline at end of file diff --git a/config/wallust/wallust.toml b/config/wallust/wallust.toml index d1f40ab2..7565dd47 100644 --- a/config/wallust/wallust.toml +++ b/config/wallust/wallust.toml @@ -49,6 +49,9 @@ waybar.target = '~/.config/waybar/wallust/colors-waybar.css' kitty.template = 'colors-kitty.conf' kitty.target = '~/.config/kitty/kitty-themes/01-Wallust.conf' +ghostty.template = 'colors-ghostty.conf' +ghostty.target = '~/.config/ghostty/wallust.conf' + quickshell.template = 'qml_color.json' quickshell.target = '~/.config/quickshell/qml_color.json' -- cgit v1.2.3 From d83d96dca71885f363fa9b70a32084bfe3219a69 Mon Sep 17 00:00:00 2001 From: Don Williams Date: Thu, 8 Jan 2026 00:28:29 -0500 Subject: Fixing ghostty wallust integration On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/ThemeChanger.sh modified: config/hypr/scripts/WallustSwww.sh modified: copy.sh --- config/hypr/scripts/ThemeChanger.sh | 6 ++++++ config/hypr/scripts/WallustSwww.sh | 5 +++++ copy.sh | 6 +++++- 3 files changed, 16 insertions(+), 1 deletion(-) (limited to 'config/hypr/scripts/WallustSwww.sh') diff --git a/config/hypr/scripts/ThemeChanger.sh b/config/hypr/scripts/ThemeChanger.sh index 4a712a4b..b42ec8da 100755 --- a/config/hypr/scripts/ThemeChanger.sh +++ b/config/hypr/scripts/ThemeChanger.sh @@ -53,6 +53,12 @@ if wallust theme -- "${choice}"; then "$HOME/.config/ghostty/wallust.conf" ) + # Normalize Ghostty palette syntax in case upstream templates or older targets used ':' + ghostty_conf="$HOME/.config/ghostty/wallust.conf" + if [ -f "$ghostty_conf" ]; then + sed -i -E 's/^(\s*palette\s*=\s*)([0-9]{1,2}):/\1\2=/' "$ghostty_conf" 2>/dev/null || true + fi + # Phase 1: appearance + freshness for _ in $(seq 1 100); do # up to ~10s ok=1 diff --git a/config/hypr/scripts/WallustSwww.sh b/config/hypr/scripts/WallustSwww.sh index 7090b84c..421b84f8 100755 --- a/config/hypr/scripts/WallustSwww.sh +++ b/config/hypr/scripts/WallustSwww.sh @@ -61,3 +61,8 @@ mkdir -p "$HOME/.config/ghostty" || true # Run wallust (silent) to regenerate templates defined in ~/.config/wallust/wallust.toml # -s is used in this repo to keep things quiet and avoid extra prompts wallust run -s "$wallpaper_path" || true + +# Normalize Ghostty palette syntax in case ':' was used by older files +if [ -f "$HOME/.config/ghostty/wallust.conf" ]; then + sed -i -E 's/^(\s*palette\s*=\s*)([0-9]{1,2}):/\1\2=/' "$HOME/.config/ghostty/wallust.conf" 2>/dev/null || true +fi diff --git a/copy.sh b/copy.sh index 9de8677c..34a4e543 100755 --- a/copy.sh +++ b/copy.sh @@ -726,11 +726,15 @@ if [ -f "$GHOSTTY_SRC" ]; then mkdir -p "$GHOSTTY_DIR" install -m 0644 "$GHOSTTY_SRC" "$GHOSTTY_DEST" 2>&1 | tee -a "$LOG" echo "${OK} - Installed Ghostty config to ${MAGENTA}$GHOSTTY_DEST${RESET}" 2>&1 | tee -a "$LOG" + # Normalize existing wallust.conf palette syntax if present (convert ':' to '=') + if [ -f "$GHOSTTY_DIR/wallust.conf" ]; then + sed -i -E 's/^(\s*palette\s*=\s*)([0-9]{1,2}):/\1\2=/' "$GHOSTTY_DIR/wallust.conf" 2>&1 | tee -a "$LOG" || true + fi else echo "${ERROR} - $GHOSTTY_SRC not found; skipping Ghostty config install." 2>&1 | tee -a "$LOG" fi -printf "\n%.0s" {1..1} +printf "\\n%.0s" {1..1} # ags config # Check if ags is installed -- cgit v1.2.3 From 7e057020a428ba234e1557d17d26ec28fedb250f Mon Sep 17 00:00:00 2001 From: Don Williams Date: Thu, 8 Jan 2026 00:36:12 -0500 Subject: Adding reload config to ghostty on theme/wallpaper change On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/ThemeChanger.sh modified: config/hypr/scripts/WallustSwww.sh --- config/hypr/scripts/ThemeChanger.sh | 5 +++++ config/hypr/scripts/WallustSwww.sh | 9 +++++++++ 2 files changed, 14 insertions(+) (limited to 'config/hypr/scripts/WallustSwww.sh') diff --git a/config/hypr/scripts/ThemeChanger.sh b/config/hypr/scripts/ThemeChanger.sh index b42ec8da..4c814f2c 100755 --- a/config/hypr/scripts/ThemeChanger.sh +++ b/config/hypr/scripts/ThemeChanger.sh @@ -126,6 +126,11 @@ if wallust theme -- "${choice}"; then if pidof kitty >/dev/null; then for pid in $(pidof kitty); do kill -SIGUSR1 "$pid" 2>/dev/null || true; done fi + + # Ask ghostty to reload its config so the updated wallust.conf is applied + if pidof ghostty >/dev/null; then + for pid in $(pidof ghostty); do kill -SIGUSR2 "$pid" 2>/dev/null || true; done + fi else have_notify && notify-send -u critical -a ThemeChanger \ -h string:x-dunst-stack-tag:themechanger \ diff --git a/config/hypr/scripts/WallustSwww.sh b/config/hypr/scripts/WallustSwww.sh index 421b84f8..d1e53400 100755 --- a/config/hypr/scripts/WallustSwww.sh +++ b/config/hypr/scripts/WallustSwww.sh @@ -66,3 +66,12 @@ wallust run -s "$wallpaper_path" || true if [ -f "$HOME/.config/ghostty/wallust.conf" ]; then sed -i -E 's/^(\s*palette\s*=\s*)([0-9]{1,2}):/\1\2=/' "$HOME/.config/ghostty/wallust.conf" 2>/dev/null || true fi + +# Light wait for Ghostty colors file to be present then signal Ghostty to reload (SIGUSR2) +for _ in 1 2 3; do + [ -s "$HOME/.config/ghostty/wallust.conf" ] && break + sleep 0.1 +done +if pidof ghostty >/dev/null; then + for pid in $(pidof ghostty); do kill -SIGUSR2 "$pid" 2>/dev/null || true; done +fi -- cgit v1.2.3 From c65f9fe0412dafdadee17ee3dc7c42285dcc3753 Mon Sep 17 00:00:00 2001 From: Don Williams Date: Thu, 8 Jan 2026 21:31:11 -0500 Subject: Fixing more scripts for Hyprland-Dots MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `WallustSwww.sh` now reads the focused monitor’s cache file (or parses swww query per-monitor) to pick the correct wallpaper path - Eliminating the previous “last line wins” bug on multi-monitor setups. - `PortalHyprland.sh` suppresses harmless killall errors and launches only the first available portal binary in each category (hyprland + general) - Avoiding duplicate processes when both `/usr/lib` and `/usr/libexec` variants exist. - `KillActiveProcess.sh` checks that Hyprland returned a numeric PID before calling kill - Notifies the user when no active window is available instead of throwing kill usage errors. On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/scripts/KillActiveProcess.sh modified: config/hypr/scripts/PortalHyprland.sh modified: config/hypr/scripts/WallustSwww.sh --- CHANGELOG.md | 6 +++++ config/hypr/scripts/KillActiveProcess.sh | 7 +++++- config/hypr/scripts/PortalHyprland.sh | 40 +++++++++++++++++++++++++------- config/hypr/scripts/WallustSwww.sh | 29 ++++++++++++++++++++--- 4 files changed, 70 insertions(+), 12 deletions(-) (limited to 'config/hypr/scripts/WallustSwww.sh') diff --git a/CHANGELOG.md b/CHANGELOG.md index 5089b350..319d1fd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,12 @@ - `Tak0-Per-Window-Switch.sh` now records the listener PID in `~/.cache/kb_layout_per_window.listener.pid` and reuses it if still running, preventing multiple background listeners, and reports missing Hyprland sockets without exiting the main script. - `WaybarScripts.sh` adds a `launch_files()` helper that checks `$files` before execution; if unset, it shows a notification instead of running an empty command. - `sddm_wallpaper.sh` validates `~/.config/rofi/wallust/colors-rofi.rasi` before use, extracts colors via a helper, and aborts with a notification if any required colors are missing. + - `WallustSwww.sh` now reads the focused monitor’s cache file (or parses swww query per-monitor) to pick the correct wallpaper path + - Eliminating the previous “last line wins” bug on multi-monitor setups. + - `PortalHyprland.sh` suppresses harmless killall errors and launches only the first available portal binary in each category (hyprland + general) + - Avoiding duplicate processes when both `/usr/lib` and `/usr/libexec` variants exist. + - `KillActiveProcess.sh` checks that Hyprland returned a numeric PID before calling kill + - Notifies the user when no active window is available instead of throwing kill usage errors. - 2026-01-06 - Added Global Theme Changer. diff --git a/config/hypr/scripts/KillActiveProcess.sh b/config/hypr/scripts/KillActiveProcess.sh index 2bc108f2..d9d26bb3 100755 --- a/config/hypr/scripts/KillActiveProcess.sh +++ b/config/hypr/scripts/KillActiveProcess.sh @@ -7,5 +7,10 @@ # Get id of an active window active_pid=$(hyprctl activewindow | grep -o 'pid: [0-9]*' | cut -d' ' -f2) +if [[ -z "$active_pid" || ! "$active_pid" =~ ^[0-9]+$ ]]; then + notify-send -u low -i "$HOME/.config/swaync/images/error.png" "Kill Active Window" "No active window PID found." + exit 1 +fi + # Close active window -kill $active_pid \ No newline at end of file +kill "$active_pid" diff --git a/config/hypr/scripts/PortalHyprland.sh b/config/hypr/scripts/PortalHyprland.sh index 21cb7db4..653e9b58 100755 --- a/config/hypr/scripts/PortalHyprland.sh +++ b/config/hypr/scripts/PortalHyprland.sh @@ -2,15 +2,39 @@ # /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ## # For manually starting xdg-desktop-portal-hyprland +set -euo pipefail + +kill_quietly() { + killall -q "$1" 2>/dev/null || true +} + +start_portal_binary() { + local description="$1" + shift + for candidate in "$@"; do + if [[ -x "$candidate" ]]; then + "$candidate" & + return 0 + fi + done + echo "Warning: no $description binary found (checked: $*)" >&2 + return 1 +} + sleep 1 -killall xdg-desktop-portal-hyprland -killall xdg-desktop-portal-wlr -killall xdg-desktop-portal-gnome -killall xdg-desktop-portal +kill_quietly xdg-desktop-portal-hyprland +kill_quietly xdg-desktop-portal-wlr +kill_quietly xdg-desktop-portal-gnome +kill_quietly xdg-desktop-portal sleep 1 -/usr/lib/xdg-desktop-portal-hyprland & -/usr/libexec/xdg-desktop-portal-hyprland & + +start_portal_binary "xdg-desktop-portal-hyprland" \ + /usr/lib/xdg-desktop-portal-hyprland \ + /usr/libexec/xdg-desktop-portal-hyprland + sleep 2 -/usr/lib/xdg-desktop-portal & -/usr/libexec/xdg-desktop-portal & + +start_portal_binary "xdg-desktop-portal" \ + /usr/lib/xdg-desktop-portal \ + /usr/libexec/xdg-desktop-portal diff --git a/config/hypr/scripts/WallustSwww.sh b/config/hypr/scripts/WallustSwww.sh index d1e53400..50c85630 100755 --- a/config/hypr/scripts/WallustSwww.sh +++ b/config/hypr/scripts/WallustSwww.sh @@ -10,6 +10,27 @@ passed_path="${1:-}" cache_dir="$HOME/.cache/swww/" rofi_link="$HOME/.config/rofi/.current_wallpaper" wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current" +read_cached_wallpaper() { + local cache_file="$1" + if [[ -f "$cache_file" ]]; then + awk 'NF && $0 !~ /^filter/ {print; exit}' "$cache_file" + fi +} + +read_wallpaper_from_query() { + local monitor="$1" + swww query | awk -v mon="$monitor" ' + /^Monitor/ { + cur=$2 + gsub(":", "", cur) + } + /image:/ && cur==mon { + sub(/^.*image: /,"") + print + exit + } + ' +} # Helper: get focused monitor name (prefer JSON) get_focused_monitor() { @@ -39,9 +60,11 @@ else if [[ -f "$cache_file" ]]; then # The first non-filter line is the original wallpaper path - # wallpaper_path="$(grep -v 'Lanczos3' "$cache_file" | head -n 1)" - # wallpaper_path=$(swww query | grep $current_monitor | awk '{print $9}') - wallpaper_path=$(swww query | sed 's/.*image: //') + wallpaper_path="$(read_cached_wallpaper "$cache_file")" + fi + + if [[ -z "$wallpaper_path" ]]; then + wallpaper_path="$(read_wallpaper_from_query "$current_monitor")" fi fi -- cgit v1.2.3 From 7375b7c8471aec8b33b902d260aceb75385a25bd Mon Sep 17 00:00:00 2001 From: Don Williams Date: Thu, 8 Jan 2026 22:05:17 -0500 Subject: Tweaking wallust timing On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/WallustSwww.sh --- config/hypr/scripts/WallustSwww.sh | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'config/hypr/scripts/WallustSwww.sh') diff --git a/config/hypr/scripts/WallustSwww.sh b/config/hypr/scripts/WallustSwww.sh index 50c85630..63911036 100755 --- a/config/hypr/scripts/WallustSwww.sh +++ b/config/hypr/scripts/WallustSwww.sh @@ -80,10 +80,39 @@ cp -f "$wallpaper_path" "$wallpaper_current" || true # Ensure Ghostty directory exists so Wallust can write target even if Ghostty isn't installed mkdir -p "$HOME/.config/ghostty" || true +wait_for_templates() { + local start_ts="$1" + shift + local files=("$@") + for _ in {1..50}; do + local ready=true + for file in "${files[@]}"; do + if [[ ! -s "$file" ]]; then + ready=false + break + fi + local mtime + mtime=$(stat -c %Y "$file" 2>/dev/null || echo 0) + if (( mtime < start_ts )); then + ready=false + break + fi + done + $ready && return 0 + sleep 0.1 + done + return 1 +} # Run wallust (silent) to regenerate templates defined in ~/.config/wallust/wallust.toml # -s is used in this repo to keep things quiet and avoid extra prompts +start_ts=$(date +%s) wallust run -s "$wallpaper_path" || true +wallust_targets=( + "$HOME/.config/waybar/wallust/colors-waybar.css" + "$HOME/.config/rofi/wallust/colors-rofi.rasi" +) +wait_for_templates "$start_ts" "${wallust_targets[@]}" || true # Normalize Ghostty palette syntax in case ':' was used by older files if [ -f "$HOME/.config/ghostty/wallust.conf" ]; then @@ -98,3 +127,10 @@ done if pidof ghostty >/dev/null; then for pid in $(pidof ghostty); do kill -SIGUSR2 "$pid" 2>/dev/null || true; done fi + +# Prompt Waybar to reload colors +if command -v waybar-msg >/dev/null 2>&1; then + waybar-msg cmd reload >/dev/null 2>&1 || true +elif pidof waybar >/dev/null; then + killall -SIGUSR2 waybar 2>/dev/null || true +fi -- cgit v1.2.3