refactor: remove caelestia shell

This commit is contained in:
duma799
2026-04-04 15:23:22 +04:00
parent 1f9568f37b
commit df255c7f2a
8 changed files with 23 additions and 279 deletions
-118
View File
@@ -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}"
}}
}}
+4 -18
View File
@@ -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.
+16 -32
View File
@@ -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
-26
View File
@@ -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
+2 -44
View File
@@ -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()
+1 -4
View File
@@ -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)
-24
View File
@@ -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
-13
View File
@@ -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