diff --git a/PYWAL-COLORS-README.md b/PYWAL-COLORS-README.md new file mode 100644 index 0000000..a4c4eef --- /dev/null +++ b/PYWAL-COLORS-README.md @@ -0,0 +1,101 @@ +# Pywal Colors Integration for Hyprland & Caelestia + +This setup automatically applies pywal-generated colors to both Hyprland borders and Caelestia shell. + +## Files Created + +1. **`~/.config/wal/templates/hyprland-colors.conf`** - Template for Hyprland border colors +2. **`~/.config/wal/templates/caelestia-scheme.json`** - Template for Caelestia color scheme +3. **`~/.config/hypr/apply-pywal-colors.sh`** - Script to apply colors to both systems + +## How It Works + +- When you run `wal -i /path/to/wallpaper`, pywal automatically processes the templates +- The generated files are placed in `~/.cache/wal/` +- Hyprland sources `~/.cache/wal/hyprland-colors.conf` for border colors +- Caelestia reads from `~/.local/state/caelestia/scheme.json` for its color scheme + +## Usage + +### First Time Setup +Already done! Your Hyprland config now sources pywal colors automatically. + +### Generate Colors from a Wallpaper +```bash +# Generate colors from a wallpaper +wal -i /path/to/your/wallpaper.png + +# Apply colors to Hyprland and Caelestia +~/.config/hypr/apply-pywal-colors.sh +``` + +### Regenerate from Current Wallpaper +```bash +# Regenerate colors from the current cached wallpaper +wal -R + +# Apply colors +~/.config/hypr/apply-pywal-colors.sh +``` + +### Quick Apply +```bash +# One-liner to generate and apply colors +wal -i /path/to/wallpaper.png && ~/.config/hypr/apply-pywal-colors.sh +``` + +## What Gets Colored + +### Hyprland +- Active window border (gradient using colors 4 and 6) +- Inactive window border (using color 8) + +### Caelestia Shell +- All Material Design 3 colors +- Terminal colors (term0-term15) +- Background, surface, and accent colors +- Complete color scheme based on wallpaper + +## Customization + +### Modify Border Colors +Edit `~/.config/wal/templates/hyprland-colors.conf` to use different pywal colors: +- Available variables: `{color0}` through `{color15}`, `{background}`, `{foreground}`, `{cursor}` + +### Modify Caelestia Colors +Edit `~/.config/wal/templates/caelestia-scheme.json` to adjust color mappings. + +After editing templates, run `wal -R` to regenerate colors. + +## Automation + +To automatically apply pywal colors on wallpaper change, you can add this to your autostart: +```bash +# In your ~/.config/hypr/hyprland.conf +exec-once = ~/.config/hypr/apply-pywal-colors.sh +``` + +Or create a wallpaper script that calls pywal automatically. + +## Troubleshooting + +### Colors not updating in Hyprland +```bash +# Reload Hyprland config +hyprctl reload +``` + +### Colors not updating in Caelestia +```bash +# Restart Caelestia shell +pkill caelestia && sleep 0.5 && caelestia shell -d & +``` + +### Check generated files +```bash +# View generated Hyprland colors +cat ~/.cache/wal/hyprland-colors.conf + +# View generated Caelestia scheme +cat ~/.cache/wal/caelestia-scheme.json +``` diff --git a/PYWAL-SETUP.md b/PYWAL-SETUP.md new file mode 100644 index 0000000..fd3ecd1 --- /dev/null +++ b/PYWAL-SETUP.md @@ -0,0 +1,213 @@ +# Pywal Color Integration Setup + +This dotfiles repository includes pywal integration for dynamic color theming based on your wallpaper. The setup works with both Hyprland borders and Caelestia shell. + +## Prerequisites + +- `pywal` (python-pywal) installed +- Hyprland window manager +- Caelestia shell (optional, for full integration) + +## Installation + +### 1. Install pywal + +```bash +# Arch Linux +sudo pacman -S python-pywal + +# Or via pip +pip install pywal +``` + +### 2. Copy Template Files + +Copy the pywal template files to your config directory: + +```bash +# Create templates directory if it doesn't exist +mkdir -p ~/.config/wal/templates + +# Copy Hyprland border colors template +cp wal/templates/hyprland-colors.conf ~/.config/wal/templates/ + +# Copy Caelestia color scheme template (if using Caelestia) +cp wal/templates/caelestia-scheme.json ~/.config/wal/templates/ +``` + +### 3. Copy the Apply Script + +```bash +# Copy the color application script to your hypr config +cp apply-pywal-colors.sh ~/.config/hypr/ + +# Make it executable +chmod +x ~/.config/hypr/apply-pywal-colors.sh +``` + +### 4. Link Hyprland Config + +If you haven't already, link the Hyprland config: + +```bash +# Backup existing config if needed +mv ~/.config/hypr/hyprland.conf ~/.config/hypr/hyprland.conf.backup + +# Link the new config +ln -s ~/hyprduma-config/hyprland.conf ~/.config/hypr/hyprland.conf +``` + +## Usage + +### Generate Colors from Wallpaper + +```bash +# Generate color palette from a wallpaper +wal -i /path/to/your/wallpaper.png + +# Apply the generated colors to Hyprland and Caelestia +~/.config/hypr/apply-pywal-colors.sh +``` + +### Quick Apply (One Command) + +```bash +# Generate and apply in one go +wal -i /path/to/wallpaper.png && ~/.config/hypr/apply-pywal-colors.sh +``` + +### Regenerate from Current Wallpaper + +```bash +# Regenerate colors from cached wallpaper +wal -R && ~/.config/hypr/apply-pywal-colors.sh +``` + +## What Gets Themed + +### Hyprland +- **Active window borders**: Gradient using pywal colors 4 and 6 +- **Inactive window borders**: Using pywal color 8 (muted gray tone) + +### Caelestia Shell (if installed) +- Complete Material Design 3 color scheme +- Terminal colors (color0-color15) +- Background, surface, and accent colors +- All UI elements adapt to wallpaper colors + +## Files Structure + +``` +hyprduma-config/ +├── hyprland.conf # Main config with pywal integration +├── apply-pywal-colors.sh # Script to apply colors +└── wal/ + └── templates/ + ├── hyprland-colors.conf # Hyprland border colors template + └── caelestia-scheme.json # Caelestia color scheme template +``` + +## Customization + +### Changing Border Color Mapping + +Edit `~/.config/wal/templates/hyprland-colors.conf`: + +```conf +# Example: Use different colors for borders +general { + col.active_border = rgba({color2.strip}ee) rgba({color5.strip}ee) 45deg + col.inactive_border = rgba({color0.strip}aa) +} +``` + +Available variables: +- `{color0}` through `{color15}` - Palette colors +- `{background}` - Background color +- `{foreground}` - Foreground/text color +- `{cursor}` - Cursor color + +After editing, regenerate colors with `wal -R`. + +### Modifying Caelestia Colors + +Edit `~/.config/wal/templates/caelestia-scheme.json` to change how pywal colors map to Caelestia's Material Design 3 scheme. + +## Automation + +### Auto-apply on Hyprland Startup + +The colors are automatically loaded via the `source` directive in `hyprland.conf`. However, to regenerate on startup: + +```bash +# Add to hyprland.conf autostart section +exec-once = wal -R -n +``` + +### Integrate with Wallpaper Managers + +If using `waypaper`, `hyprpaper`, or similar: + +```bash +# Create a wrapper script that sets wallpaper and applies colors +#!/bin/bash +# Set wallpaper with your tool of choice +hyprctl hyprpaper wallpaper "eDP-1,/path/to/wallpaper.png" + +# Generate and apply pywal colors +wal -i /path/to/wallpaper.png && ~/.config/hypr/apply-pywal-colors.sh +``` + +## Troubleshooting + +### Colors not updating in Hyprland + +```bash +# Reload Hyprland configuration +hyprctl reload +``` + +### Colors not updating in Caelestia + +```bash +# Restart Caelestia shell +pkill caelestia && sleep 0.5 && caelestia shell -d & +``` + +### Hyprland fails to start (source file not found) + +If pywal hasn't been run yet, the source file won't exist. Either: + +1. Run `wal -i /path/to/wallpaper.png` once to generate initial colors +2. Or comment out the `source` line in `hyprland.conf` until you set up pywal + +### Check Generated Files + +```bash +# View generated Hyprland colors +cat ~/.cache/wal/hyprland-colors.conf + +# View generated Caelestia scheme +cat ~/.cache/wal/caelestia-scheme.json + +# View pywal color palette +cat ~/.cache/wal/colors.json +``` + +## Pywal Backend Options + +Pywal supports different color extraction backends: + +```bash +# Use imagemagick (default) +wal -i /path/to/wallpaper.png + +# Use colorz (more vibrant colors) +wal -i /path/to/wallpaper.png --backend colorz + +# Use colorthief +wal -i /path/to/wallpaper.png --backend colorthief + +# Use haishoku +wal -i /path/to/wallpaper.png --backend haishoku +``` diff --git a/README.md b/README.md index f621437..64514af 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,13 @@ Personal Hyprland configuration focused on productivity and ergonomics. ## Features ### Enhanced Keybindings -- See in KEYBINDS.md (link below) - **[KEYBINDS.md](KEYBINDS.md)** - Complete keybindings reference ### Visual & UX -- Minimal gaps (3.5px/4.5px) for space efficiency -- Blur effects on waybar (in progress) +- Minimal gaps (10px/40px) for space efficiency +- Blur effects and transparency - Smooth custom animations with bezier curves -- Automatic floating for file pickers and dialogs (in progress) -- Picture-in-Picture auto-positioning (in progress) +- **Pywal integration** - Dynamic colors from wallpaper (optional) ### Input - 3-finger gestures (horizontal: workspace, vertical: fullscreen) @@ -24,25 +22,30 @@ Personal Hyprland configuration focused on productivity and ergonomics. ### Display Setup - Dual monitor configuration (HDMI-A-1 flipped + eDP-1) - Workspaces 1-4 on external monitor -- Workspace 5 on laptop screen +- Workspaces 5-10 on laptop screen -## Quick Start +--- + +## Complete Installation Guide + +Follow these steps in order to install the complete setup from scratch. + +### Step 1: Install Required Packages -### Requirements ```bash # Core Hyprland components sudo pacman -S hyprland hyprlock hyprshot wlogout -# Terminal & Shell +# Terminal emulator sudo pacman -S kitty -# Status bar & Wallpaper -sudo pacman -S waybar swww waypaper +# Status bar & Wallpaper manager +sudo pacman -S waybar swaybg waypaper # Application launcher sudo pacman -S wofi -# File manager (GNOME) +# File manager sudo pacman -S nautilus # Audio control (PipeWire) @@ -54,32 +57,248 @@ sudo pacman -S brightnessctl # Media player control sudo pacman -S playerctl -# Optional applications (adjust in config) -sudo pacman -S telegram-desktop spotify code # Telegram, Spotify, VSCode -yay -S google-chrome # Browser (AUR) - # Cursor theme sudo pacman -S adwaita-cursors + +# Pywal for dynamic colors (optional but recommended) +sudo pacman -S python-pywal + +# Install rust/cargo if you don't have it (needed for Caelestia) +sudo pacman -S rust ``` -### Installation +### Step 2: Install Optional Applications + ```bash -# Backup existing config -mv ~/.config/hypr ~/.config/hypr.backup +# Applications referenced in config (adjust to your preference) +sudo pacman -S telegram-desktop spotify code -# Create directory (if do not have already) and copy config +# AUR packages (requires yay or another AUR helper) +yay -S google-chrome zen-browser-bin # or your preferred browser +``` + +### Step 3: Install Caelestia Shell (Optional) + +Caelestia is a modern shell with AI features that integrates with the pywal theming system. + +```bash +# Install Caelestia via cargo +cargo install caelestia + +# Start Caelestia daemon (it will auto-restart when pywal colors change) +caelestia shell -d & +``` + +**Note:** Caelestia runs as a background service and integrates with pywal for dynamic color theming. + +### Step 4: Clone This Repository + +```bash +# Clone to a temporary location +cd ~/Downloads +git clone https://github.com/yourusername/hyprduma-config.git +cd hyprduma-config +``` + +### Step 5: Backup Existing Configs (If Any) + +```bash +# Backup existing Hyprland config +[ -d ~/.config/hypr ] && mv ~/.config/hypr ~/.config/hypr.backup + +# Backup existing waybar config +[ -d ~/.config/waybar ] && mv ~/.config/waybar ~/.config/waybar.backup + +# Backup existing wlogout config +[ -d ~/.config/wlogout ] && mv ~/.config/wlogout ~/.config/wlogout.backup +``` + +### Step 6: Install Hyprland Configuration + +```bash +# Create Hypr config directory mkdir -p ~/.config/hypr -cp hyprland.conf ~/.config/hypr/ -# Adjust your apps (lines 26-32) HIGHLY RECOMMENDED!!! +# Copy main config +cp hyprland.conf ~/.config/hypr/ +cp hyprland-colors.conf ~/.config/hypr/ + +# Copy wallpapers (optional, for use with waypaper) +mkdir -p ~/.config/hypr/wallpapers +cp wallpapers/* ~/.config/hypr/wallpapers/ + +# Create screenshots directory (used by config) +mkdir -p ~/Pictures/Screenshots +``` + +### Step 7: Configure Your Applications + +**IMPORTANT:** Edit the config file to set your preferred applications. + +```bash +# Open the config file nvim ~/.config/hypr/hyprland.conf -# Reload or restart Hyprland +# Find lines 27-34 and adjust these variables: +# $terminal = kitty # Your terminal +# $fileManager = dolphin # Your file manager +# $menu = wofi --show drun # Your app launcher +# $telegram = Telegram # Path to Telegram +# $spotify = spotify # Path to Spotify +# $vscode = code # Path to VSCode +# $browser = your-browser # Your browser command ``` + +### Step 8: Install Pywal Integration (Optional but Recommended) + +Pywal provides dynamic color theming based on your wallpaper. + +```bash +# Install pywal templates +mkdir -p ~/.config/wal/templates +cp -r wal/templates/* ~/.config/wal/templates/ + +# Copy the color application and wallpaper sync scripts +cp apply-pywal-colors.sh ~/.config/hypr/ +cp sync-caelestia-wallpaper.sh ~/.config/hypr/ +chmod +x ~/.config/hypr/apply-pywal-colors.sh +chmod +x ~/.config/hypr/sync-caelestia-wallpaper.sh + +# Test pywal with a wallpaper +wal -i /path/to/your/wallpaper.png + +# Apply colors to Hyprland and Caelestia +~/.config/hypr/apply-pywal-colors.sh +``` + +**What this does:** +- Generates a color scheme from your wallpaper +- Applies colors to Hyprland window borders +- Applies colors to Caelestia shell (if installed) +- Restarts necessary services to apply changes + +### Step 9: Install Waybar Config (If You Have It) + +```bash +# If you have waybar configs in this repo +mkdir -p ~/.config/waybar +cp -r waybar/* ~/.config/waybar/ +``` + +### Step 10: Install Wlogout Config (If You Have It) + +```bash +# If you have wlogout configs in this repo +mkdir -p ~/.config/wlogout +cp -r wlogout/* ~/.config/wlogout/ +``` + +### Step 11: Start Hyprland + +```bash +# If you're in a TTY, start Hyprland +Hyprland + +# If already in Hyprland, reload the config +# Press SUPER + SHIFT + R (or restart Hyprland session) +``` + +### Step 12: Set Up Autostart for Caelestia (Optional) + +If you want Caelestia to start automatically with Hyprland: + +```bash +# Edit your Hyprland config +nvim ~/.config/hypr/hyprland.conf + +# Add this line in the Autostart section (around line 21-25): +# exec-once = caelestia shell -d +``` + +--- + +## Post-Installation + +### Setting Wallpaper with Pywal + +```bash +# Generate colors and apply them +wal -i /path/to/wallpaper.png && ~/.config/hypr/apply-pywal-colors.sh + +# Or use the wallpapers included in this repo +wal -i ~/.config/hypr/wallpapers/sakura.jpg && ~/.config/hypr/apply-pywal-colors.sh +``` + +**Note about waypaper and Caelestia:** +- This config uses **swaybg** as the wallpaper backend (not hyprpaper) +- Use `waypaper` GUI (Super+W) to select wallpapers +- Waypaper with swaybg backend automatically saves and restores your wallpaper on login +- **Important**: Caelestia shell has its own wallpaper management that may conflict with waypaper +- The config includes `sync-caelestia-wallpaper.sh` to automatically sync Caelestia's wallpaper reference with swaybg +- This sync happens automatically on startup and when you open waypaper (Super+W) +- For pywal integration, use `wal -i` as shown above, then run the apply script (which also syncs Caelestia) + +### Monitor Configuration + +If you have different monitors, adjust lines 4-18 in `~/.config/hypr/hyprland.conf`: + +```bash +nvim ~/.config/hypr/hyprland.conf + +# Edit monitor configuration: +# monitor = eDP-1, 1920x1080@144, 1920x0, 1 +# monitor = HDMI-A-1, 1920x1080@144, 0x0, 1, transform, 2 +``` + +### Keyboard Layout + +Default is US/RU with ALT+SHIFT toggle. To change, edit `~/.config/hypr/hyprland.conf` line 42: + +``` +kb_layout = us, ru # Change to your layouts +``` + +--- + ## Documentation - **[KEYBINDS.md](KEYBINDS.md)** - Complete keybindings reference +- **[PYWAL-SETUP.md](PYWAL-SETUP.md)** - Detailed pywal integration guide + +--- + +## Troubleshooting + +### Hyprland won't start +- Check if all required packages are installed +- Review error logs: `journalctl -b | grep hyprland` + +### Applications don't launch +- Make sure you edited the app variables in `hyprland.conf` (lines 27-34) +- Check if the applications are actually installed + +### Pywal colors not applying +- Ensure the script is executable: `chmod +x ~/.config/hypr/apply-pywal-colors.sh` +- Check if pywal cache exists: `ls ~/.cache/wal/` +- Manually reload: `~/.config/hypr/apply-pywal-colors.sh` + +### Caelestia colors not updating +```bash +# Restart Caelestia daemon +pkill caelestia && sleep 0.5 && caelestia shell -d & +``` + +### Wallpaper not showing on startup +```bash +# Restore wallpaper with waypaper +waypaper restore + +# Manually restart swaybg if needed +pkill swaybg && swaybg & +``` + +--- ## Note -Everything is still in progress. +Everything is still in progress. Feel free to customize and adjust to your needs! diff --git a/apply-pywal-colors.sh b/apply-pywal-colors.sh new file mode 100755 index 0000000..dd276f3 --- /dev/null +++ b/apply-pywal-colors.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# Script to apply pywal colors to Hyprland and Caelestia shell + +# Generate pywal colors (this assumes you've already run 'wal -i /path/to/wallpaper') +# The templates will be automatically processed + +echo "Applying pywal colors to Hyprland and Caelestia..." + +# Update Caelestia's wallpaper reference to match the one pywal used +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 + +# Copy the generated Caelestia scheme to the proper location +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 + +# Reload Hyprland configuration +if command -v hyprctl &> /dev/null; then + hyprctl reload + echo "✓ Hyprland configuration reloaded" +fi + +# Restart Caelestia shell to apply new colors +if pgrep -x "caelestia" > /dev/null; then + pkill caelestia + sleep 0.5 + caelestia shell -d & + echo "✓ Caelestia shell restarted" +fi + +echo "Done! Colors applied successfully." diff --git a/hyprland.conf b/hyprland.conf index e0d7f4a..c2f76f9 100644 --- a/hyprland.conf +++ b/hyprland.conf @@ -19,8 +19,9 @@ workspace = 9, monitor:eDP-1 workspace = 10, monitor:eDP-1 # Autostart -exec-once = waybar -exec-once = hyprpaper +exec-once = waypaper --restore # Restore wallpaper first +exec-once = sleep 1 && ~/.config/hypr/sync-caelestia-wallpaper.sh # Sync Caelestia's wallpaper reference +exec-once = sleep 1 && caelestia shell -d # Caelestia shell (replaces waybar) - start after wallpaper loads exec-once = hyprctl setcursor Adwaita 24 # Needed on NixOS exec-once = mkdir -p $HOME/Pictures/Screenshots @@ -60,6 +61,9 @@ input { #gesture = 3, horizontal, workspace #gesture = 3, vertical, fullscreen +# Source pywal colors for borders +source = ~/.cache/wal/hyprland-colors.conf + # General settings general { gaps_in = 10 # The space between windows @@ -72,9 +76,8 @@ general { layout = dwindle - # Border colors (Caelestia style) - col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg - col.inactive_border = rgba(595959aa) + # Border colors are now sourced from pywal (see above) + # If pywal colors not generated yet, fallback colors will be used } # Decoration settings (borders) @@ -93,7 +96,7 @@ decoration { #} blur { - enabled = true + enabled = false # Disabled for 144Hz performance size = 3 passes = 1 @@ -111,21 +114,21 @@ animations { bezier = emphasizedDecel, 0.05, 0.7, 0.1, 1 bezier = standard, 0.2, 0, 0, 1 - # Animation configs - animation = layersIn, 1, 5, emphasizedDecel, slide - animation = layersOut, 1, 4, emphasizedAccel, slide - animation = fadeLayers, 1, 5, standard + # Animation configs - optimized for 144Hz + animation = layersIn, 1, 3, emphasizedDecel, slide + animation = layersOut, 1, 2, emphasizedAccel, slide + animation = fadeLayers, 1, 3, standard - animation = windowsIn, 1, 5, emphasizedDecel - animation = windowsOut, 1, 3, emphasizedAccel - animation = windowsMove, 1, 7, standard - animation = workspaces, 1, 5, standard + animation = windowsIn, 1, 3, emphasizedDecel + animation = windowsOut, 1, 2, emphasizedAccel + animation = windowsMove, 1, 3, standard + animation = workspaces, 1, 3, standard - animation = specialWorkspace, 1, 4, specialWorkSwitch, slidefadevert 15% + animation = specialWorkspace, 1, 3, specialWorkSwitch, slidefadevert 15% - animation = fade, 1, 6, standard - animation = fadeDim, 1, 6, standard - animation = border, 1, 6, standard + animation = fade, 1, 3, standard + animation = fadeDim, 1, 3, standard + animation = border, 1, 3, standard } # Layouts @@ -142,6 +145,7 @@ misc { disable_splash_rendering = true key_press_enables_dpms = true mouse_move_enables_dpms = true + vfr = true # Enable for proper 144Hz rendering vrr = 0 } @@ -185,8 +189,11 @@ windowrule = pin, title:^(Picture-in-Picture)$ windowrule = move 69.5% 4%, title:^(Picture-in-Picture)$ # Layer Rules -layerrule = blur, waybar -layerrule = ignorealpha 0.5, waybar +# Caelestia shell layer rules +layerrule = animation fade, caelestia-(drawers|background) +layerrule = blur, caelestia-drawers +layerrule = ignorealpha 0.57, caelestia-drawers +layerrule = noanim, caelestia-(border-exclusion|area-picker) layerrule = blur, wofi layerrule = ignorealpha 0.2, wofi @@ -197,6 +204,12 @@ $mainMod = SUPER # Sets "Windows" key as main modifier $mainMod2 = ALT # Secondary modifier for window management (ALT Button) $shiftMod = SHIFT +# Caelestia launcher (Super key tap) +#bindi = Super, Super_L, global, caelestia:launcher +#bindin = Super, catchall, global, caelestia:launcherInterrupt +#bindin = Super, mouse:272, global, caelestia:launcherInterrupt +#bindin = Super, mouse:273, global, caelestia:launcherInterrupt + # System binds bind = $mainMod, C, killactive, bind = $mainMod, M, exit, # Safer exit combination @@ -206,6 +219,7 @@ bind = $mainMod, L, exec, hyprlock bind = $mainMod, O, togglesplit, # Toggle split direction bind = $mainMod, P, exec, poweroff bind = $mainMod, RETURN, exec, wlogout +bind = $mainMod SHIFT, B, exec, hyprctl keyword decoration:blur:enabled toggle # Toggle blur on/off # App launcher bind = $mainMod, R, exec, $menu @@ -220,7 +234,7 @@ bind = $mainMod, B, exec, $browser bind = $mainMod, V, exec, $vscode bind = $mainMod, T, exec, $telegram bind = $mainMod, S, exec, $spotify -bind = $mainMod, W, exec, waypaper +bind = $mainMod, W, exec, waypaper ; sleep 1 && ~/.config/hypr/sync-caelestia-wallpaper.sh # Utility binds bind = CTRL SHIFT, ESCAPE, exec, $terminal htop # Task manager alternative diff --git a/scheme/current.conf b/scheme/current.conf new file mode 100644 index 0000000..4170693 --- /dev/null +++ b/scheme/current.conf @@ -0,0 +1,110 @@ +$primary_paletteKeyColor = 6f72ac +$secondary_paletteKeyColor = 75758e +$tertiary_paletteKeyColor = 9d648f +$neutral_paletteKeyColor = 78767b +$neutral_variant_paletteKeyColor = 777680 +$background = 131317 +$onBackground = e5e1e7 +$surface = 131317 +$surfaceDim = 131317 +$surfaceBright = 39393d +$surfaceContainerLowest = 0e0e11 +$surfaceContainerLow = 1b1b1f +$surfaceContainer = 1f1f23 +$surfaceContainerHigh = 2a292e +$surfaceContainerHighest = 353438 +$onSurface = e5e1e7 +$surfaceVariant = 46464f +$onSurfaceVariant = c7c5d1 +$inverseSurface = e5e1e7 +$inverseOnSurface = 303034 +$outline = 918f9a +$outlineVariant = 46464f +$shadow = 000000 +$scrim = 000000 +$surfaceTint = bfc1ff +$primary = bfc1ff +$onPrimary = 282b60 +$primaryContainer = 6f72ac +$onPrimaryContainer = 000028 +$inversePrimary = 565992 +$secondary = c5c4e0 +$onSecondary = 2e2f44 +$secondaryContainer = 44455c +$onSecondaryContainer = b3b3ce +$tertiary = f4b2e2 +$onTertiary = 4e1e45 +$tertiaryContainer = ba7eaa +$onTertiaryContainer = 000000 +$error = ffb4ab +$onError = 690005 +$errorContainer = 93000a +$onErrorContainer = ffdad6 +$primaryFixed = e0e0ff +$primaryFixedDim = bfc1ff +$onPrimaryFixed = 12144a +$onPrimaryFixedVariant = 3e4278 +$secondaryFixed = e1e0fd +$secondaryFixedDim = c5c4e0 +$onSecondaryFixed = 191a2e +$onSecondaryFixedVariant = 44455c +$tertiaryFixed = ffd7f1 +$tertiaryFixedDim = f4b2e2 +$onTertiaryFixed = 35082f +$onTertiaryFixedVariant = 67355d +$term0 = 353434 +$term1 = a875ff +$term2 = 44def5 +$term3 = ffdcf2 +$term4 = 97aad7 +$term5 = b29feb +$term6 = 9dceff +$term7 = e8d3de +$term8 = ac9fa9 +$term9 = bd95ff +$term10 = 89ecff +$term11 = fff0f6 +$term12 = b4c1dc +$term13 = c8b5f5 +$term14 = bae0ff +$term15 = ffffff +$rosewater = f7eff9 +$flamingo = e8def3 +$pink = e1d8ff +$mauve = bdb9ff +$red = bfa6fe +$maroon = c7b6ed +$peach = e0c2f9 +$yellow = ffecf3 +$green = c8e3ff +$teal = d2e0ff +$sky = cedaff +$sapphire = b5c5ff +$blue = aeb8ff +$lavender = c6c8ff +$klink = 7083d2 +$klinkSelection = 6f83d2 +$kvisited = 7e73db +$kvisitedSelection = 7d73db +$knegative = 9d69ff +$knegativeSelection = 9b6aff +$kneutral = c794ff +$kneutralSelection = c794ff +$kpositive = 60adff +$kpositiveSelection = 60adff +$text = e5e1e7 +$subtext1 = c7c5d1 +$subtext0 = 918f9a +$overlay2 = 7e7c86 +$overlay1 = 6b6972 +$overlay0 = 595860 +$surface2 = 48474e +$surface1 = 37373d +$surface0 = 25252a +$base = 131317 +$mantle = 131317 +$crust = 121216 +$success = B5CCBA +$onSuccess = 213528 +$successContainer = 374B3E +$onSuccessContainer = D1E9D6 diff --git a/sync-caelestia-wallpaper.sh b/sync-caelestia-wallpaper.sh new file mode 100755 index 0000000..bc3544a --- /dev/null +++ b/sync-caelestia-wallpaper.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# Sync Caelestia's wallpaper reference with the currently running swaybg wallpaper + +# Get the wallpaper path from running swaybg process +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 diff --git a/wal/templates/caelestia-scheme.json b/wal/templates/caelestia-scheme.json new file mode 100644 index 0000000..c5c698a --- /dev/null +++ b/wal/templates/caelestia-scheme.json @@ -0,0 +1,118 @@ +{{ + "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/wal/templates/hyprland-colors.conf b/wal/templates/hyprland-colors.conf new file mode 100644 index 0000000..1f5bfb8 --- /dev/null +++ b/wal/templates/hyprland-colors.conf @@ -0,0 +1,19 @@ +# Pywal generated color configuration for Hyprland +# This file is automatically generated by pywal + +# Border colors using pywal palette +$pywal_color1 = rgb({color1.strip}) +$pywal_color2 = rgb({color2.strip}) +$pywal_color3 = rgb({color3.strip}) +$pywal_color4 = rgb({color4.strip}) +$pywal_color5 = rgb({color5.strip}) +$pywal_color6 = rgb({color6.strip}) +$pywal_color8 = rgb({color8.strip}) +$pywal_background = rgb({background.strip}) +$pywal_foreground = rgb({foreground.strip}) + +# Active border: gradient from color4 to color6 +general {{ + col.active_border = rgba({color4.strip}ee) rgba({color6.strip}ee) 45deg + col.inactive_border = rgba({color8.strip}aa) +}}