From df255c7f2a4ef2dd8fa9f1f33f385e17893139fd Mon Sep 17 00:00:00 2001 From: duma799 Date: Sat, 4 Apr 2026 15:23:22 +0400 Subject: [PATCH] refactor: remove caelestia shell --- config/wal/templates/caelestia-scheme.json | 118 --------------------- docs/PYWAL-SETUP.md | 22 +--- docs/README.md | 48 +++------ hyprland.conf | 26 ----- install.py | 46 +------- scripts/monitor-handler.py | 5 +- scripts/pywal.sh | 24 ----- scripts/sync-caelestia-wallpaper.sh | 13 --- 8 files changed, 23 insertions(+), 279 deletions(-) delete mode 100644 config/wal/templates/caelestia-scheme.json delete mode 100755 scripts/sync-caelestia-wallpaper.sh diff --git a/config/wal/templates/caelestia-scheme.json b/config/wal/templates/caelestia-scheme.json deleted file mode 100644 index c5c698a..0000000 --- a/config/wal/templates/caelestia-scheme.json +++ /dev/null @@ -1,118 +0,0 @@ -{{ - "name": "pywal", - "flavour": "pywal", - "mode": "dark", - "variant": "tonalspot", - "colours": {{ - "primary_paletteKeyColor": "{color4.strip}", - "secondary_paletteKeyColor": "{color5.strip}", - "tertiary_paletteKeyColor": "{color6.strip}", - "neutral_paletteKeyColor": "{color8.strip}", - "neutral_variant_paletteKeyColor": "{color8.strip}", - "background": "{background.strip}", - "onBackground": "{foreground.strip}", - "surface": "{background.strip}", - "surfaceDim": "{background.strip}", - "surfaceBright": "{color8.strip}", - "surfaceContainerLowest": "{color0.strip}", - "surfaceContainerLow": "{color0.strip}", - "surfaceContainer": "{color0.strip}", - "surfaceContainerHigh": "{color8.strip}", - "surfaceContainerHighest": "{color8.strip}", - "onSurface": "{foreground.strip}", - "surfaceVariant": "{color8.strip}", - "onSurfaceVariant": "{color7.strip}", - "inverseSurface": "{foreground.strip}", - "inverseOnSurface": "{background.strip}", - "outline": "{color8.strip}", - "outlineVariant": "{color8.strip}", - "shadow": "000000", - "scrim": "000000", - "surfaceTint": "{color4.strip}", - "primary": "{color4.strip}", - "onPrimary": "{background.strip}", - "primaryContainer": "{color4.strip}", - "onPrimaryContainer": "{foreground.strip}", - "inversePrimary": "{color12.strip}", - "secondary": "{color5.strip}", - "onSecondary": "{background.strip}", - "secondaryContainer": "{color5.strip}", - "onSecondaryContainer": "{foreground.strip}", - "tertiary": "{color6.strip}", - "onTertiary": "{background.strip}", - "tertiaryContainer": "{color6.strip}", - "onTertiaryContainer": "{foreground.strip}", - "error": "{color1.strip}", - "onError": "{background.strip}", - "errorContainer": "{color1.strip}", - "onErrorContainer": "{foreground.strip}", - "primaryFixed": "{color12.strip}", - "primaryFixedDim": "{color4.strip}", - "onPrimaryFixed": "{background.strip}", - "onPrimaryFixedVariant": "{color0.strip}", - "secondaryFixed": "{color13.strip}", - "secondaryFixedDim": "{color5.strip}", - "onSecondaryFixed": "{background.strip}", - "onSecondaryFixedVariant": "{color0.strip}", - "tertiaryFixed": "{color14.strip}", - "tertiaryFixedDim": "{color6.strip}", - "onTertiaryFixed": "{background.strip}", - "onTertiaryFixedVariant": "{color0.strip}", - "term0": "{color0.strip}", - "term1": "{color1.strip}", - "term2": "{color2.strip}", - "term3": "{color3.strip}", - "term4": "{color4.strip}", - "term5": "{color5.strip}", - "term6": "{color6.strip}", - "term7": "{color7.strip}", - "term8": "{color8.strip}", - "term9": "{color9.strip}", - "term10": "{color10.strip}", - "term11": "{color11.strip}", - "term12": "{color12.strip}", - "term13": "{color13.strip}", - "term14": "{color14.strip}", - "term15": "{color15.strip}", - "rosewater": "{color7.strip}", - "flamingo": "{color7.strip}", - "pink": "{color5.strip}", - "mauve": "{color4.strip}", - "red": "{color1.strip}", - "maroon": "{color1.strip}", - "peach": "{color3.strip}", - "yellow": "{color3.strip}", - "green": "{color2.strip}", - "teal": "{color6.strip}", - "sky": "{color6.strip}", - "sapphire": "{color4.strip}", - "blue": "{color4.strip}", - "lavender": "{color4.strip}", - "klink": "{color4.strip}", - "klinkSelection": "{color12.strip}", - "kvisited": "{color5.strip}", - "kvisitedSelection": "{color13.strip}", - "knegative": "{color1.strip}", - "knegativeSelection": "{color9.strip}", - "kneutral": "{color3.strip}", - "kneutralSelection": "{color11.strip}", - "kpositive": "{color2.strip}", - "kpositiveSelection": "{color10.strip}", - "text": "{foreground.strip}", - "subtext1": "{color7.strip}", - "subtext0": "{color8.strip}", - "overlay2": "{color8.strip}", - "overlay1": "{color8.strip}", - "overlay0": "{color8.strip}", - "surface2": "{color8.strip}", - "surface1": "{color0.strip}", - "surface0": "{color0.strip}", - "base": "{background.strip}", - "mantle": "{background.strip}", - "crust": "{color0.strip}", - "success": "{color2.strip}", - "onSuccess": "{background.strip}", - "successContainer": "{color2.strip}", - "onSuccessContainer": "{foreground.strip}" - }} -}} diff --git a/docs/PYWAL-SETUP.md b/docs/PYWAL-SETUP.md index 46d1b52..1c6d067 100644 --- a/docs/PYWAL-SETUP.md +++ b/docs/PYWAL-SETUP.md @@ -1,12 +1,11 @@ # Pywal Integration Guide -Dynamic color theming based on your wallpaper, applied system-wide to Hyprland, Caelestia, Kitty, GTK apps, Firefox, and more. +Dynamic color theming based on your wallpaper, applied system-wide to Hyprland, Kitty, GTK apps, Firefox, and more. ## Prerequisites - `python-pywal` installed (`sudo pacman -S python-pywal`) - Hyprland window manager -- Caelestia shell (optional, for full integration) ## Setup @@ -20,7 +19,7 @@ cp -r wal/templates/* ~/.config/wal/templates/ # Verify ls ~/.config/wal/templates/ -# Should show: hyprland-colors.conf, caelestia-scheme.json +# Should show: hyprland-colors.conf ``` ### 2. Install Scripts @@ -120,7 +119,6 @@ wal -i /path/to/wallpaper.png --backend haishoku # Another option | Component | What changes | |-----------|-------------| | **Hyprland** | Window borders (active gradient, inactive) | -| **Caelestia Shell** | Material Design 3 color scheme, all UI elements | | **Kitty Terminal** | Background, foreground, all 16 colors | | **Bash/Zsh Shell** | Terminal color palette via sequences | | **GTK Apps** | Via `wal-gtk` (if installed) | @@ -169,29 +167,23 @@ Available variables: `{color0}` through `{color15}`, `{background}`, `{foregroun After editing, regenerate with `wal -R`. -### Caelestia Colors - -Edit `~/.config/wal/templates/caelestia-scheme.json` to adjust Material Design 3 color mappings. - ## How It Works 1. `wal -i wallpaper.png` generates colors and processes templates in `~/.config/wal/templates/` 2. Generated files land in `~/.cache/wal/` 3. `hyprland.conf` sources `~/.cache/wal/hyprland-colors.conf` for border colors -4. `pywal.sh` copies the Caelestia scheme, reloads Hyprland, restarts Caelestia, reloads Kitty, and sets GTK/Firefox themes +4. `pywal.sh` reloads Hyprland, reloads Kitty, and sets GTK/Firefox themes 5. The waypaper hook (`waypaper-hook.sh`) runs this entire chain automatically on wallpaper change ## Files ``` ~/.config/wal/templates/ -├── hyprland-colors.conf # Template for Hyprland border colors -└── caelestia-scheme.json # Template for Caelestia color scheme +└── hyprland-colors.conf # Template for Hyprland border colors ~/.cache/wal/ # Generated by pywal ├── hyprland-colors.conf # Sourced by hyprland.conf ├── colors-kitty.conf # Included by kitty.conf -├── caelestia-scheme.json # Copied to Caelestia state dir ├── sequences # Loaded by bashrc └── colors.json # Full color palette ``` @@ -215,12 +207,6 @@ sed -i 's/kitty-colors.conf/colors-kitty.conf/g' ~/.config/kitty/kitty.conf killall -SIGUSR1 kitty ``` -### Caelestia not updating - -```bash -pkill caelestia && sleep 0.5 && caelestia shell -d & -``` - ### Hyprland fails to start (source file not found) Run `wal -i /path/to/wallpaper.png` once to generate initial colors before starting Hyprland. diff --git a/docs/README.md b/docs/README.md index 3034a46..43f5f9f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -14,7 +14,6 @@ Personal Hyprland configuration focused on productivity and ergonomics. - Transparency with configurable opacity (active: 0.985, inactive: 0.85) - Smooth custom animations with bezier curves - **Pywal integration** - Dynamic system-wide colors from wallpaper -- **Caelestia shell** integration for dynamic theming and AI features ### Input - 3-finger gestures (horizontal: workspace, vertical: fullscreen) @@ -25,12 +24,12 @@ Personal Hyprland configuration focused on productivity and ergonomics. ### Display Setup - Auto-detected monitor configuration (works with any setup out of the box) - Workspaces 1-4 on external monitor, 5-10 on laptop screen -- **Monitor handler** - automatically restores wallpaper and Caelestia shell after config reload +- **Monitor handler** - automatically restores wallpaper after config reload ### Automation - **Auto-installer** - interactive Python installer handles the entire setup - **Waypaper hook** - pywal colors auto-apply when wallpaper changes via waypaper GUI -- **Monitor handler** - listens for Hyprland config reloads and restarts swaybg/Caelestia +- **Monitor handler** - listens for Hyprland config reloads and restarts swaybg - **Fastfetch config** - custom system info display with ASCII art --- @@ -50,12 +49,11 @@ python3 ~/hyprduma-config/install.py The interactive installer handles everything: 1. AUR helpers (yay/paru) 2. Required packages via pacman -3. Caelestia shell -4. Config backup and installation -5. Pywal integration (templates, scripts, bashrc, initial colors) -6. Waypaper hook for automatic color application -7. Monitor handler for config reload resilience -8. Fastfetch config with custom ASCII art +3. Config backup and installation +4. Pywal integration (templates, scripts, bashrc, initial colors) +5. Waypaper hook for automatic color application +6. Monitor handler for config reload resilience +7. Fastfetch config with custom ASCII art --- @@ -82,13 +80,7 @@ cd paru && makepkg -si && cd .. && rm -rf paru sudo pacman -S hyprland hyprlock hyprshot wlogout kitty waybar swaybg waypaper wofi nautilus wireplumber pipewire-pulse brightnessctl playerctl adwaita-cursors python-pywal fastfetch ``` -### Step 2: Install Caelestia Shell (Recommended) - -```bash -yay -S caelestia-shell -``` - -### Step 3: Clone and Install Config +### Step 2: Clone and Install Config ```bash cd ~/Downloads @@ -112,7 +104,7 @@ mkdir -p ~/Pictures/Screenshots ```bash # Copy all scripts mkdir -p ~/.config/hypr/scripts -cp pywal.sh sync-caelestia-wallpaper.sh waypaper-hook.sh ~/.config/hypr/scripts/ +cp pywal.sh waypaper-hook.sh ~/.config/hypr/scripts/ cp monitor-handler.py ~/.config/hypr/scripts/ chmod +x ~/.config/hypr/scripts/*.sh @@ -198,7 +190,7 @@ Hyprland **Using waypaper GUI (recommended):** - Press `Super+W` to open waypaper -- Select a wallpaper - the **waypaper hook** automatically runs pywal and syncs colors to all components (Hyprland, Caelestia, Kitty, GTK, Firefox) +- Select a wallpaper - the **waypaper hook** automatically runs pywal and syncs colors to all components (Hyprland, Kitty, GTK, Firefox) **Using command line:** ```bash @@ -208,9 +200,8 @@ wal -i /path/to/wallpaper.png && pywal **How wallpaper management works:** - **swaybg** is the wallpaper backend (not hyprpaper) - **waypaper** GUI sets the wallpaper and triggers `waypaper-hook.sh` as a post-command -- The hook runs pywal, syncs Caelestia colors/wallpaper, reloads Hyprland, and updates GTK/Firefox themes -- **sync-caelestia-wallpaper.sh** syncs Caelestia's wallpaper reference with swaybg on startup -- **monitor-handler.py** listens for config reloads and restores swaybg/Caelestia if they get killed +- The hook runs pywal, reloads Hyprland, and updates GTK/Firefox themes +- **monitor-handler.py** listens for config reloads and restores swaybg if it gets killed ### System-Wide Theme Syncing @@ -243,7 +234,7 @@ Workspace assignment (lines 7-17) distributes workspaces 1-4 to the external mon ### Monitor Handler -The `monitor-handler.py` script runs in the background and listens for Hyprland config reloads. When a reload is detected, it checks if swaybg and Caelestia are still running, and restarts them if needed. This prevents losing your wallpaper or shell after editing the config. +The `monitor-handler.py` script runs in the background and listens for Hyprland config reloads. When a reload is detected, it checks if swaybg is still running and restarts it if needed. This prevents losing your wallpaper after editing the config. ### Keyboard Layout @@ -262,15 +253,14 @@ hyprduma-config/ ├── hyprland.conf # Main Hyprland configuration ├── pywal.sh # Apply pywal colors to all components ├── waypaper-hook.sh # Auto-apply colors on wallpaper change -├── sync-caelestia-wallpaper.sh # Sync swaybg wallpaper to Caelestia -├── monitor-handler.py # Restart wallpaper/shell after config reload +├── monitor-handler.py # Restart wallpaper after config reload ├── install.py # Interactive auto-installer ├── wallpapers/ # Included wallpapers ├── config/ │ ├── kitty/kitty.conf # Kitty terminal config with pywal support │ ├── fastfetch/ # Custom fastfetch config with ASCII art │ ├── nvim/ # Neovim config -│ └── wal/templates/ # Pywal templates for Hyprland & Caelestia +│ └── wal/templates/ # Pywal templates for Hyprland ├── KEYBINDS.md # Complete keybindings reference └── PYWAL-SETUP.md # Detailed pywal integration guide ``` @@ -299,7 +289,7 @@ hyprduma-config/ 1. **Check if templates are installed:** ```bash ls ~/.config/wal/templates/ - # Should show: hyprland-colors.conf, caelestia-scheme.json + # Should show: hyprland-colors.conf ``` If missing, copy them: @@ -357,12 +347,6 @@ hyprduma-config/ - Check if pywal cache exists: `ls ~/.cache/wal/` - Manually reload: `pywal` -### Caelestia colors not updating -```bash -# Restart Caelestia daemon -pkill caelestia && sleep 0.5 && caelestia shell -d & -``` - ### Wallpaper not showing after config reload The monitor handler should restore it automatically. If not: ```bash diff --git a/hyprland.conf b/hyprland.conf index d404391..4f270d4 100644 --- a/hyprland.conf +++ b/hyprland.conf @@ -19,8 +19,6 @@ workspace = 10, monitor:eDP-1 # Autostart exec-once = waypaper --restore -exec-once = sleep 1 && ~/.config/hypr/scripts/sync-caelestia-wallpaper.sh -exec-once = sleep 1 && caelestia shell -d exec-once = python3 ~/.config/hypr/scripts/monitor-handler.py exec-once = hyprctl setcursor Adwaita 24 exec-once = mkdir -p $HOME/Pictures/Screenshots @@ -253,30 +251,6 @@ windowrule { } # Layer Rules -layerrule { - name = Caelestia-drawers - match:title = ^caelestia(drawers|background)$ - animation = fade -} - -layerrule { - name = drawers - match:namespace = caelestia-drawers - blur = on -} - -layerrule { - name = drawers-alpha - match:namespace = caelestia-drawers - ignore_alpha = 0.57 -} - -layerrule { - name = border-exclusion - match:title = ^caelestia-(border-exclusion|area-picker)$ - no_anim = true -} - layerrule { name = wofi match:namespace = wofi diff --git a/install.py b/install.py index b351aca..8736aa7 100755 --- a/install.py +++ b/install.py @@ -132,7 +132,7 @@ def install_aur_helpers(): missing.append("paru") if not ask_yn(f"Install AUR helper(s): {', '.join(missing)}?"): - print_warn("Skipping AUR helpers (caelestia-shell will require manual install)") + print_warn("Skipping AUR helpers") return run("sudo pacman -S --needed --noconfirm git base-devel") @@ -168,44 +168,6 @@ def install_packages(): print_ok("All packages installed") -def install_caelestia(): - already_installed = cmd_exists("caelestia") - - if already_installed: - print_ok("Caelestia shell is already installed") - else: - if not cmd_exists("yay") and not cmd_exists("paru"): - print_warn( - "No AUR helper found - skipping Caelestia (install manually: yay -S caelestia-shell)" - ) - return - - if not ask_yn("Install Caelestia Shell (recommended for dynamic theming)?"): - print_warn("Skipping Caelestia shell") - return - - helper = "yay" if cmd_exists("yay") else "paru" - if run(f"{helper} -S --noconfirm caelestia-shell"): - print_ok("Caelestia shell installed") - else: - print_err( - "Failed to install Caelestia - you can try manually: yay -S caelestia-shell" - ) - return - - state_dir = Path.home() / ".local" / "state" / "caelestia" - wallpaper_dir = state_dir / "wallpaper" - wallpaper_dir.mkdir(parents=True, exist_ok=True) - print_ok("Created Caelestia state directories (~/.local/state/caelestia/)") - - if run("pgrep -x Hyprland", capture=True) is not None: - print_info("Hyprland detected, launching Caelestia shell...") - run("caelestia shell -d &", check=False) - print_ok("Caelestia shell launched") - else: - print_info("Caelestia will start automatically on next Hyprland session") - - def make_symlink(src: Path, dst: Path): """Create symlink dst -> src, backing up any existing non-symlink at dst.""" if dst.is_symlink(): @@ -473,7 +435,7 @@ def main(): check_arch() - total = 9 + total = 8 step = 0 step += 1 @@ -484,10 +446,6 @@ def main(): print_step(step, total, "Install Required Packages") install_packages() - step += 1 - print_step(step, total, "Install Caelestia Shell") - install_caelestia() - step += 1 print_step(step, total, "Locate/Clone Repository") repo = clone_repo() diff --git a/scripts/monitor-handler.py b/scripts/monitor-handler.py index 98034bf..872fb1a 100644 --- a/scripts/monitor-handler.py +++ b/scripts/monitor-handler.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# Restarts wallpaper and caelestia shell after hyprland config reload +# Restarts wallpaper after hyprland config reload import os import socket @@ -21,9 +21,6 @@ def handle_reload(): time.sleep(1) if not is_running("swaybg"): subprocess.Popen(["waypaper", "--restore"]) - if not is_running("caelestia"): - time.sleep(1) - subprocess.Popen(["caelestia", "shell", "-d"]) def listen(path): sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) diff --git a/scripts/pywal.sh b/scripts/pywal.sh index 49ea6c3..b379136 100755 --- a/scripts/pywal.sh +++ b/scripts/pywal.sh @@ -53,22 +53,6 @@ else fi fi -# Caelestia wallpaper -if [ -f ~/.cache/wal/wal ]; then - WALLPAPER_PATH=$(cat ~/.cache/wal/wal) - mkdir -p ~/.local/state/caelestia/wallpaper - ln -sf "$WALLPAPER_PATH" ~/.local/state/caelestia/wallpaper/current - echo "$WALLPAPER_PATH" > ~/.local/state/caelestia/wallpaper/path.txt - echo "✓ Caelestia wallpaper reference updated" -fi - -# Caelestia colors -if [ -f ~/.cache/wal/caelestia-scheme.json ]; then - mkdir -p ~/.local/state/caelestia - cp ~/.cache/wal/caelestia-scheme.json ~/.local/state/caelestia/scheme.json - echo "✓ Caelestia colors updated" -fi - # GTK themes if command -v wal-gtk &> /dev/null; then wal-gtk @@ -98,14 +82,6 @@ if command -v hyprctl &> /dev/null; then echo "✓ Hyprland configuration reloaded" fi -# Caelestia -if pgrep -x "caelestia" > /dev/null; then - pkill caelestia - sleep 0.5 - caelestia shell -d & - echo "✓ Caelestia shell restarted" -fi - # Kitty if command -v kitty &> /dev/null; then if pgrep -x "kitty" > /dev/null; then diff --git a/scripts/sync-caelestia-wallpaper.sh b/scripts/sync-caelestia-wallpaper.sh deleted file mode 100755 index d60a8e7..0000000 --- a/scripts/sync-caelestia-wallpaper.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Sync Caelestia wallpaper with swaybg - -WALLPAPER_PATH=$(pgrep -a swaybg | grep -oP '(?<=-i )[^ ]+' | head -1) - -if [ -n "$WALLPAPER_PATH" ] && [ -f "$WALLPAPER_PATH" ]; then - mkdir -p ~/.local/state/caelestia/wallpaper - ln -sf "$WALLPAPER_PATH" ~/.local/state/caelestia/wallpaper/current - echo "$WALLPAPER_PATH" > ~/.local/state/caelestia/wallpaper/path.txt - echo "✓ Caelestia wallpaper synced to: $WALLPAPER_PATH" -else - echo "⚠ Could not detect swaybg wallpaper" -fi