From fd8299fd76f2b0938ea377c8b754d50416dcec73 Mon Sep 17 00:00:00 2001 From: duma799 Date: Sun, 22 Mar 2026 23:58:28 +0400 Subject: [PATCH] refactor: move scripts to dedicated directory --- docs/PYWAL-SETUP.md | 23 ++++++++------- docs/README.md | 33 +++++++++++----------- hyprland.conf | 4 +-- install.py | 61 +++++++++++++++++++++++++++------------- scripts/waypaper-hook.sh | 3 -- 5 files changed, 71 insertions(+), 53 deletions(-) diff --git a/docs/PYWAL-SETUP.md b/docs/PYWAL-SETUP.md index 2c6e9d3..46d1b52 100644 --- a/docs/PYWAL-SETUP.md +++ b/docs/PYWAL-SETUP.md @@ -26,9 +26,8 @@ ls ~/.config/wal/templates/ ### 2. Install Scripts ```bash -cp pywal.sh ~/.config/hypr/ -cp pywal.sh ~/pywal.sh -chmod +x ~/.config/hypr/pywal.sh ~/pywal.sh +cp pywal.sh ~/.config/hypr/scripts/ +chmod +x ~/.config/hypr/scripts/pywal.sh ``` ### 3. Configure Kitty Terminal @@ -57,7 +56,7 @@ source ~/.cache/wal/colors-tty.sh 2>/dev/null ### 5. Generate Initial Colors ```bash -wal -i wallpapers/sakura.jpg && ~/pywal.sh +wal -i wallpapers/sakura.jpg && pywal source ~/.bashrc ``` @@ -71,14 +70,14 @@ Press `Super+W` to open waypaper. Select a wallpaper and colors auto-apply via t ```bash # Dark theme (default) -~/pywal.sh ~/Pictures/wallpaper.jpg +pywal ~/Pictures/wallpaper.jpg # Light theme -~/pywal.sh ~/Pictures/wallpaper.jpg light +pywal ~/Pictures/wallpaper.jpg light # Switch mode (keep current wallpaper) -~/pywal.sh "" light -~/pywal.sh "" dark +pywal "" light +pywal "" dark # Refresh current theme ~/pywal.sh @@ -87,7 +86,7 @@ Press `Super+W` to open waypaper. Select a wallpaper and colors auto-apply via t ### One-Liner ```bash -wal -i /path/to/wallpaper.png && ~/pywal.sh +wal -i /path/to/wallpaper.png && pywal ``` ## Light/Dark Theme @@ -97,13 +96,13 @@ wal -i /path/to/wallpaper.png && ~/pywal.sh Works best with bright wallpapers: ```bash -wal -i /path/to/bright-wallpaper.png -l && ~/pywal.sh +wal -i /path/to/bright-wallpaper.png -l && pywal ``` ### Dark Theme (Default) ```bash -wal -i /path/to/dark-wallpaper.png && ~/pywal.sh +wal -i /path/to/dark-wallpaper.png && pywal ``` ### Backend Options @@ -232,7 +231,7 @@ Run `wal -i /path/to/wallpaper.png` once to generate initial colors before start rm -rf ~/.cache/wal mkdir -p ~/.config/wal/templates cp ~/.config/hypr/wal/templates/* ~/.config/wal/templates/ -wal -i /path/to/wallpaper.png && ~/pywal.sh +wal -i /path/to/wallpaper.png && pywal source ~/.bashrc ``` diff --git a/docs/README.md b/docs/README.md index 317a110..61ca3ca 100644 --- a/docs/README.md +++ b/docs/README.md @@ -103,7 +103,7 @@ cd hyprduma-config # Install Hyprland config mkdir -p ~/.config/hypr cp hyprland.conf ~/.config/hypr/ -cp -r wallpapers ~/.config/hypr/ +cp -r wallpapers ~/wallpapers mkdir -p ~/Pictures/Screenshots ``` @@ -111,12 +111,13 @@ mkdir -p ~/Pictures/Screenshots ```bash # Copy all scripts -cp pywal.sh sync-caelestia-wallpaper.sh waypaper-hook.sh ~/.config/hypr/ -cp monitor-handler.py ~/.config/hypr/ -chmod +x ~/.config/hypr/pywal.sh ~/.config/hypr/sync-caelestia-wallpaper.sh ~/.config/hypr/waypaper-hook.sh +mkdir -p ~/.config/hypr/scripts +cp pywal.sh sync-caelestia-wallpaper.sh waypaper-hook.sh ~/.config/hypr/scripts/ +cp monitor-handler.py ~/.config/hypr/scripts/ +chmod +x ~/.config/hypr/scripts/*.sh -# Copy pywal.sh to home for convenience -cp pywal.sh ~/pywal.sh && chmod +x ~/pywal.sh +# Note: The script aliases 'pywal' to ~/.config/hypr/scripts/pywal.sh +# To set it up manually: echo "alias pywal='~/.config/hypr/scripts/pywal.sh'" >> ~/.bashrc ``` ### Step 5: Configure Your Applications @@ -155,7 +156,7 @@ source ~/.cache/wal/colors-tty.sh 2>/dev/null EOF # Generate initial colors -wal -i wallpapers/sakura.jpg && ~/pywal.sh +wal -i ~/wallpapers/sakura.jpg && pywal source ~/.bashrc ``` @@ -167,7 +168,7 @@ The waypaper hook automatically applies pywal colors whenever you change wallpap # Set waypaper-hook.sh as waypaper's post_command mkdir -p ~/.config/waypaper # Add to ~/.config/waypaper/config.ini under [Settings]: -# post_command = /home/YOUR_USER/.config/hypr/waypaper-hook.sh +# post_command = ~/.config/hypr/scripts/waypaper-hook.sh ``` ### Step 8: Install Fastfetch Config (Optional) @@ -201,7 +202,7 @@ Hyprland **Using command line:** ```bash -wal -i /path/to/wallpaper.png && ~/pywal.sh +wal -i /path/to/wallpaper.png && pywal ``` **How wallpaper management works:** @@ -216,10 +217,10 @@ wal -i /path/to/wallpaper.png && ~/pywal.sh The `pywal.sh` script supports dark/light mode and system-wide theme synchronization (GTK, Firefox, Qt). See **[PYWAL-SETUP.md](PYWAL-SETUP.md)** for the full guide including optional enhancements, light/dark theme switching, and backend options. ```bash -~/pywal.sh ~/Pictures/wallpaper.jpg # Dark theme (default) -~/pywal.sh ~/Pictures/wallpaper.jpg light # Light theme -~/pywal.sh "" dark # Switch mode, keep wallpaper -~/pywal.sh # Refresh current theme +pywal ~/Pictures/wallpaper.jpg # Dark theme (default) +pywal ~/Pictures/wallpaper.jpg light # Light theme +pywal "" dark # Switch mode, keep wallpaper +pywal # Refresh current theme ``` ### Monitor Configuration @@ -308,7 +309,7 @@ hyprduma-config/ 2. **Regenerate colors:** ```bash - wal -R && ~/pywal.sh + wal -R && pywal ``` 3. **Check bash configuration:** @@ -351,9 +352,9 @@ hyprduma-config/ ``` **General pywal troubleshooting:** -- Ensure the script is executable: `chmod +x ~/pywal.sh` +- Ensure the script is executable: `chmod +x ~/.config/hypr/scripts/pywal.sh` - Check if pywal cache exists: `ls ~/.cache/wal/` -- Manually reload: `~/pywal.sh` +- Manually reload: `pywal` ### Caelestia colors not updating ```bash diff --git a/hyprland.conf b/hyprland.conf index 5c863be..16b6cfc 100644 --- a/hyprland.conf +++ b/hyprland.conf @@ -18,9 +18,9 @@ workspace = 10, monitor:eDP-1 # Autostart exec-once = waypaper --restore -exec-once = sleep 1 && ~/.config/hypr/sync-caelestia-wallpaper.sh +exec-once = sleep 1 && ~/.config/hypr/scripts/sync-caelestia-wallpaper.sh exec-once = sleep 1 && caelestia shell -d -exec-once = python3 ~/.config/hypr/monitor-handler.py +exec-once = python3 ~/.config/hypr/scripts/monitor-handler.py exec-once = hyprctl setcursor Adwaita 24 exec-once = mkdir -p $HOME/Pictures/Screenshots diff --git a/install.py b/install.py index c00924a..21ce355 100755 --- a/install.py +++ b/install.py @@ -37,6 +37,7 @@ PACMAN_PACKAGES = [ "adwaita-cursors", "python-pywal", "fastfetch", + "neovim", ] @@ -232,7 +233,7 @@ def backup_configs(): config = Path.home() / ".config" backed_up = [] - for name in ["hypr", "waybar", "wlogout", "waypaper"]: + for name in ["hypr", "waybar", "wlogout", "waypaper", "nvim", "fastfetch"]: src = config / name dst = config / f"{name}.backup" if src.exists() and not src.is_symlink(): @@ -260,13 +261,13 @@ def install_hypr_config(repo): print_ok(f"Created {screenshots}") wallpapers_src = repo / "wallpapers" - wallpapers_dst = hypr_dir / "wallpapers" + wallpapers_dst = Path.home() / "wallpapers" if wallpapers_src.exists(): if wallpapers_dst.exists(): shutil.rmtree(wallpapers_dst) shutil.copytree(str(wallpapers_src), str(wallpapers_dst)) count = len(list(wallpapers_dst.iterdir())) - print_ok(f"Copied {count} wallpapers to ~/.config/hypr/wallpapers/") + print_ok(f"Copied {count} wallpapers to ~/wallpapers/") def install_pywal(repo): @@ -286,6 +287,8 @@ def install_pywal(repo): print_err("config/wal/templates not found in repo") # Scripts + scripts_dir = hypr_dir / "scripts" + scripts_dir.mkdir(parents=True, exist_ok=True) for script in [ "pywal.sh", "sync-caelestia-wallpaper.sh", @@ -293,14 +296,14 @@ def install_pywal(repo): "monitor-handler.py", ]: src = repo / "scripts" / script - dst = hypr_dir / script + dst = scripts_dir / script if src.exists(): shutil.copy2(str(src), str(dst)) dst.chmod(0o755) - print_ok("Copied scripts to ~/.config/hypr/") + print_ok("Copied scripts to ~/.config/hypr/scripts/") # Waypaper hook - hook_cmd = str(hypr_dir / "waypaper-hook.sh") + hook_cmd = str(scripts_dir / "waypaper-hook.sh") waypaper_config_dir = home / ".config" / "waypaper" waypaper_config_dir.mkdir(parents=True, exist_ok=True) waypaper_ini = waypaper_config_dir / "config.ini" @@ -330,11 +333,7 @@ def install_pywal(repo): config.write(f) print_ok("Registered waypaper-hook.sh as waypaper post_command") - # pywal.sh in home - home_pywal = home / "pywal.sh" - shutil.copy2(str(repo / "scripts" / "pywal.sh"), str(home_pywal)) - home_pywal.chmod(0o755) - print_ok("Copied pywal.sh to ~/pywal.sh") + # pywal.sh is already in ~/.config/hypr/scripts/pywal.sh # Kitty kitty_dir = home / ".config" / "kitty" @@ -362,16 +361,18 @@ def install_pywal(repo): "(cat ~/.cache/wal/sequences &)\n" "\n# To add support for TTYs (optional)\n" "source ~/.cache/wal/colors-tty.sh 2>/dev/null\n" + "\n# Alias for pywal color generator\n" + "alias pywal='~/.config/hypr/scripts/pywal.sh'\n" ) with open(bashrc, "a") as f: f.write(snippet) - print_ok("Added pywal integration to ~/.bashrc") + print_ok("Added pywal integration and alias to ~/.bashrc") # Initial colors - wallpaper = hypr_dir / "wallpapers" / "sakura.jpg" + wallpaper = Path.home() / "wallpapers" / "sakura.jpg" if not wallpaper.exists(): # Fallback - wp_dir = hypr_dir / "wallpapers" + wp_dir = Path.home() / "wallpapers" if wp_dir.exists(): for ext in ("*.jpg", "*.png", "*.jpeg"): found = list(wp_dir.glob(ext)) @@ -384,19 +385,19 @@ def install_pywal(repo): run(f'wal -i {shlex.quote(str(wallpaper))}') print_ok("Generated initial pywal color scheme") - pywal_script = home / "pywal.sh" + pywal_script = scripts_dir / "pywal.sh" if pywal_script.exists(): if run(f'bash {shlex.quote(str(pywal_script))}'): print_ok("Applied pywal colors to all components") else: - print_warn("pywal.sh had errors (normal if Hyprland isn't running yet)") + print_warn("pywal script had errors (normal if Hyprland isn't running yet)") elif not cmd_exists("wal"): print_warn( - "pywal (wal) not found - install python-pywal and run: wal -i && ~/pywal.sh" + "pywal (wal) not found - install python-pywal and run: wal -i && pywal" ) else: print_warn( - "No wallpaper found - run manually: wal -i && ~/pywal.sh" + "No wallpaper found - run manually: wal -i && pywal" ) @@ -429,6 +430,26 @@ def install_fastfetch_config(repo): print_ok("Installed fastfetch config to ~/.config/fastfetch/") +def install_nvim_config(repo): + home = Path.home() + nvim_src = repo / "config" / "nvim" + + if not nvim_src.exists(): + print_warn("nvim/ directory not found in repo - skipping") + return + + if not ask_yn("Install Neovim config?"): + print_warn("Skipping Neovim config") + return + + nvim_dst = home / ".config" / "nvim" + if nvim_dst.exists(): + shutil.rmtree(str(nvim_dst)) + shutil.copytree(str(nvim_src), str(nvim_dst)) + + print_ok("Installed Neovim config to ~/.config/nvim/") + + def print_banner(): print(f"""{CYAN}{BOLD} @@ -456,7 +477,7 @@ def print_post_install(): Or if already running, reload with: {BOLD}SUPER + SHIFT + R{RESET} {CYAN}4.{RESET} Change wallpaper + colors anytime: - $ wal -i ~/path/to/wallpaper.jpg && ~/pywal.sh + $ wal -i ~/path/to/wallpaper.jpg && pywal Or use waypaper GUI ({BOLD}SUPER + W{RESET}) - colors auto-apply via hook {CYAN}5.{RESET} Try {BOLD}fastfetch{RESET} in your terminal to see system info with custom styling @@ -471,7 +492,7 @@ def main(): check_arch() - total = 8 + total = 9 step = 0 step += 1 diff --git a/scripts/waypaper-hook.sh b/scripts/waypaper-hook.sh index e6b9c0b..c1a0021 100755 --- a/scripts/waypaper-hook.sh +++ b/scripts/waypaper-hook.sh @@ -34,9 +34,6 @@ if [ -f "$WALLPAPER" ]; then # Resolve pywal.sh location (same directory as this hook, or ~/pywal.sh) SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PYWAL_SCRIPT="$SCRIPT_DIR/pywal.sh" - if [ ! -f "$PYWAL_SCRIPT" ]; then - PYWAL_SCRIPT="$HOME/pywal.sh" - fi if [ -f "$PYWAL_SCRIPT" ]; then bash "$PYWAL_SCRIPT" "$WALLPAPER" >> "$LOG_FILE" 2>&1