From 80c87e38ed10cf8e07b91bd33820d4f9a29c1b5f Mon Sep 17 00:00:00 2001 From: duma97 Date: Fri, 21 Nov 2025 21:47:50 +0400 Subject: [PATCH 1/4] Added caelestia shell + pywal full integration and much more. --- PYWAL-SETUP.md | 213 ++++++++++++++++++++++++++++ README.md | 21 +++ apply-pywal-colors.sh | 24 ++++ hyprland.conf | 21 ++- wal/templates/caelestia-scheme.json | 118 +++++++++++++++ wal/templates/hyprland-colors.conf | 19 +++ 6 files changed, 405 insertions(+), 11 deletions(-) create mode 100644 PYWAL-SETUP.md create mode 100755 apply-pywal-colors.sh create mode 100644 wal/templates/caelestia-scheme.json create mode 100644 wal/templates/hyprland-colors.conf 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..46d44b1 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Personal Hyprland configuration focused on productivity and ergonomics. - 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) @@ -79,6 +80,26 @@ nvim ~/.config/hypr/hyprland.conf ## Documentation - **[KEYBINDS.md](KEYBINDS.md)** - Complete keybindings reference +- **[PYWAL-SETUP.md](PYWAL-SETUP.md)** - Pywal color integration setup guide (optional) + +## Optional: Pywal Integration + +This config includes optional pywal integration for dynamic theming based on your wallpaper. See [PYWAL-SETUP.md](PYWAL-SETUP.md) for installation and usage instructions. + +**Quick setup:** +```bash +# Install pywal +sudo pacman -S python-pywal + +# Copy templates and script +mkdir -p ~/.config/wal/templates +cp wal/templates/* ~/.config/wal/templates/ +cp apply-pywal-colors.sh ~/.config/hypr/ +chmod +x ~/.config/hypr/apply-pywal-colors.sh + +# Generate colors from wallpaper +wal -i /path/to/wallpaper.png && ~/.config/hypr/apply-pywal-colors.sh +``` ## Note diff --git a/apply-pywal-colors.sh b/apply-pywal-colors.sh new file mode 100755 index 0000000..b092975 --- /dev/null +++ b/apply-pywal-colors.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# Script to apply pywal colors to Hyprland and Caelestia shell + +echo "Applying pywal colors to Hyprland and Caelestia..." + +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 + +if command -v hyprctl &> /dev/null; then + hyprctl reload + echo "✓ Hyprland configuration reloaded" +fi + +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..67bf359 100644 --- a/hyprland.conf +++ b/hyprland.conf @@ -57,8 +57,10 @@ input { } # Gestures -#gesture = 3, horizontal, workspace -#gesture = 3, vertical, fullscreen +gesture = 3, horizontal, workspace +gesture = 3, vertical, fullscreen + +source = ~/.cache/wal/hyprland-colors.conf # General settings general { @@ -72,9 +74,6 @@ general { layout = dwindle - # Border colors (Caelestia style) - col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg - col.inactive_border = rgba(595959aa) } # Decoration settings (borders) @@ -85,12 +84,12 @@ decoration { active_opacity = 0.985 inactive_opacity = 0.85 -#shadow { -# enabled = true -# range = 4 -# render_power = 3 -# color = rgba(1a1a1aee) -#} +shadow { + enabled = true + range = 4 + render_power = 3 + color = rgba(1a1a1aee) +} blur { enabled = true 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) +}} From aaf629dc1d0579e5995ca16df74c83b78c4a4830 Mon Sep 17 00:00:00 2001 From: duma97 Date: Fri, 21 Nov 2025 22:43:00 +0400 Subject: [PATCH 2/4] updated README --- README.md | 269 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 221 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 46d44b1..04e5e16 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,12 @@ 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 @@ -25,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 swww waypaper hyprpaper # Application launcher sudo pacman -S wofi -# File manager (GNOME) +# File manager sudo pacman -S nautilus # Audio control (PipeWire) @@ -55,52 +57,223 @@ 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 -``` -### Installation -```bash -# Backup existing config -mv ~/.config/hypr ~/.config/hypr.backup - -# Create directory (if do not have already) and copy config -mkdir -p ~/.config/hypr -cp hyprland.conf ~/.config/hypr/ - -# Adjust your apps (lines 26-32) HIGHLY RECOMMENDED!!! -nvim ~/.config/hypr/hyprland.conf - -# Reload or restart Hyprland -``` -## Documentation - -- **[KEYBINDS.md](KEYBINDS.md)** - Complete keybindings reference -- **[PYWAL-SETUP.md](PYWAL-SETUP.md)** - Pywal color integration setup guide (optional) - -## Optional: Pywal Integration - -This config includes optional pywal integration for dynamic theming based on your wallpaper. See [PYWAL-SETUP.md](PYWAL-SETUP.md) for installation and usage instructions. - -**Quick setup:** -```bash -# Install pywal +# Pywal for dynamic colors (optional but recommended) sudo pacman -S python-pywal -# Copy templates and script +# Install rust/cargo if you don't have it (needed for Caelestia) +sudo pacman -S rust +``` + +### Step 2: Install Optional Applications + +```bash +# Applications referenced in config (adjust to your preference) +sudo pacman -S telegram-desktop spotify code + +# 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 + +# Copy main config +cp hyprland.conf ~/.config/hypr/ + +# 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 + +# 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 wal/templates/* ~/.config/wal/templates/ +cp -r wal/templates/* ~/.config/wal/templates/ + +# Copy the color application script cp apply-pywal-colors.sh ~/.config/hypr/ chmod +x ~/.config/hypr/apply-pywal-colors.sh -# Generate colors from wallpaper -wal -i /path/to/wallpaper.png && ~/.config/hypr/apply-pywal-colors.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 waypaper GUI to select wallpapers +waypaper +``` + +### 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 & +``` + +--- + ## Note -Everything is still in progress. +Everything is still in progress. Feel free to customize and adjust to your needs! From cd05b2d33331f62116b47119962195e31bf3d7cc Mon Sep 17 00:00:00 2001 From: duma97 Date: Sat, 22 Nov 2025 00:00:40 +0400 Subject: [PATCH 3/4] Pywal explantion, updated README, some specific changes in hyprland.conf --- PYWAL-COLORS-README.md | 101 +++++++++++++++++ README.md | 240 ++++------------------------------------- apply-pywal-colors.sh | 6 ++ hyprland.conf | 62 ++++++----- scheme/current.conf | 110 +++++++++++++++++++ 5 files changed, 278 insertions(+), 241 deletions(-) create mode 100644 PYWAL-COLORS-README.md create mode 100644 scheme/current.conf 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/README.md b/README.md index 04e5e16..f621437 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,15 @@ 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 (10px/40px) for space efficiency -- Blur effects and transparency +- Minimal gaps (3.5px/4.5px) for space efficiency +- Blur effects on waybar (in progress) - Smooth custom animations with bezier curves -- **Pywal integration** - Dynamic colors from wallpaper (optional) +- Automatic floating for file pickers and dialogs (in progress) +- Picture-in-Picture auto-positioning (in progress) ### Input - 3-finger gestures (horizontal: workspace, vertical: fullscreen) @@ -22,30 +24,25 @@ 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 -- Workspaces 5-10 on laptop screen +- Workspace 5 on laptop screen ---- - -## Complete Installation Guide - -Follow these steps in order to install the complete setup from scratch. - -### Step 1: Install Required Packages +## Quick Start +### Requirements ```bash # Core Hyprland components sudo pacman -S hyprland hyprlock hyprshot wlogout -# Terminal emulator +# Terminal & Shell sudo pacman -S kitty -# Status bar & Wallpaper manager -sudo pacman -S waybar swww waypaper hyprpaper +# Status bar & Wallpaper +sudo pacman -S waybar swww waypaper # Application launcher sudo pacman -S wofi -# File manager +# File manager (GNOME) sudo pacman -S nautilus # Audio control (PipeWire) @@ -57,223 +54,32 @@ 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 ``` -### Step 2: Install Optional Applications - +### Installation ```bash -# Applications referenced in config (adjust to your preference) -sudo pacman -S telegram-desktop spotify code +# Backup existing config +mv ~/.config/hypr ~/.config/hypr.backup -# 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 +# Create directory (if do not have already) and copy config mkdir -p ~/.config/hypr - -# Copy main config cp hyprland.conf ~/.config/hypr/ -# 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 +# Adjust your apps (lines 26-32) HIGHLY RECOMMENDED!!! nvim ~/.config/hypr/hyprland.conf -# 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 +# Reload or restart Hyprland ``` - -### 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 script -cp apply-pywal-colors.sh ~/.config/hypr/ -chmod +x ~/.config/hypr/apply-pywal-colors.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 waypaper GUI to select wallpapers -waypaper -``` - -### 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 & -``` - ---- ## Note -Everything is still in progress. Feel free to customize and adjust to your needs! +Everything is still in progress. diff --git a/apply-pywal-colors.sh b/apply-pywal-colors.sh index b092975..b27e1bb 100755 --- a/apply-pywal-colors.sh +++ b/apply-pywal-colors.sh @@ -1,19 +1,25 @@ #!/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..." +# 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 diff --git a/hyprland.conf b/hyprland.conf index 67bf359..4b0329f 100644 --- a/hyprland.conf +++ b/hyprland.conf @@ -19,7 +19,7 @@ workspace = 9, monitor:eDP-1 workspace = 10, monitor:eDP-1 # Autostart -exec-once = waybar +exec-once = caelestia shell -d # Caelestia shell (replaces waybar) exec-once = hyprpaper exec-once = hyprctl setcursor Adwaita 24 # Needed on NixOS exec-once = mkdir -p $HOME/Pictures/Screenshots @@ -57,9 +57,10 @@ input { } # Gestures -gesture = 3, horizontal, workspace -gesture = 3, vertical, fullscreen +#gesture = 3, horizontal, workspace +#gesture = 3, vertical, fullscreen +# Source pywal colors for borders source = ~/.cache/wal/hyprland-colors.conf # General settings @@ -74,6 +75,8 @@ general { layout = dwindle + # Border colors are now sourced from pywal (see above) + # If pywal colors not generated yet, fallback colors will be used } # Decoration settings (borders) @@ -84,15 +87,15 @@ decoration { active_opacity = 0.985 inactive_opacity = 0.85 -shadow { - enabled = true - range = 4 - render_power = 3 - color = rgba(1a1a1aee) -} +#shadow { +# enabled = true +# range = 4 +# render_power = 3 +# color = rgba(1a1a1aee) +#} blur { - enabled = true + enabled = false # Disabled for 144Hz performance size = 3 passes = 1 @@ -110,21 +113,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 @@ -141,6 +144,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 } @@ -184,8 +188,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 @@ -196,6 +203,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 @@ -205,6 +218,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 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 From fcb83e2d260b3416732b65fa2c384fcdd5e8a729 Mon Sep 17 00:00:00 2001 From: duma97 Date: Sat, 22 Nov 2025 00:16:21 +0400 Subject: [PATCH 4/4] Wallpaper fixes. --- README.md | 267 ++++++++++++++++++++++++++++++++---- apply-pywal-colors.sh | 9 ++ hyprland.conf | 7 +- sync-caelestia-wallpaper.sh | 14 ++ 4 files changed, 270 insertions(+), 27 deletions(-) create mode 100755 sync-caelestia-wallpaper.sh 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 index b27e1bb..dd276f3 100755 --- a/apply-pywal-colors.sh +++ b/apply-pywal-colors.sh @@ -6,6 +6,15 @@ 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 diff --git a/hyprland.conf b/hyprland.conf index 4b0329f..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 = caelestia shell -d # Caelestia shell (replaces 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 @@ -233,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/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