Update README with recent changes

This commit is contained in:
duma799
2026-02-12 00:24:53 +04:00
parent cb465edaa7
commit 77b63fe1c3
+154 -245
View File
@@ -11,9 +11,10 @@ Personal Hyprland configuration focused on productivity and ergonomics.
### Visual & UX ### Visual & UX
- Minimal gaps (10px/40px) for space efficiency - Minimal gaps (10px/40px) for space efficiency
- Blur effects and transparency - Transparency with configurable opacity (active: 0.985, inactive: 0.85)
- Smooth custom animations with bezier curves - Smooth custom animations with bezier curves
- **Pywal integration** - Dynamic colors from wallpaper (optional) - **Pywal integration** - Dynamic system-wide colors from wallpaper
- **Caelestia shell** integration for dynamic theming and AI features
### Input ### Input
- 3-finger gestures (horizontal: workspace, vertical: fullscreen) - 3-finger gestures (horizontal: workspace, vertical: fullscreen)
@@ -22,9 +23,15 @@ Personal Hyprland configuration focused on productivity and ergonomics.
- Optimized touchpad scrolling - Optimized touchpad scrolling
### Display Setup ### Display Setup
- Dual monitor configuration (HDMI-A-1 flipped + eDP-1) - Auto-detected monitor configuration (works with any setup out of the box)
- Workspaces 1-4 on external monitor - Workspaces 1-4 on external monitor, 5-10 on laptop screen
- Workspaces 5-10 on laptop screen - **Monitor handler** - automatically restores wallpaper and Caelestia shell 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
- **Fastfetch config** - custom system info display with ASCII art
--- ---
@@ -40,131 +47,104 @@ git clone https://github.com/duma799/hyprduma-config.git ~/Downloads/hyprduma-co
python3 ~/Downloads/hyprduma-config/install.py python3 ~/Downloads/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
--- ---
## Complete Installation Guide (Manual) ## Manual Installation Guide
Follow these steps in order to install the complete setup from scratch. If you prefer to install manually instead of using the auto-installer, follow these steps.
### Prerequisites: Install AUR Helpers (Optional but Recommended) ### Prerequisites: Install AUR Helpers (Optional but Recommended)
If you don't have yay and paru installed yet, you can install both:
```bash ```bash
# Install yay # Install yay
sudo pacman -S --needed git base-devel sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git git clone https://aur.archlinux.org/yay.git
cd yay cd yay && makepkg -si && cd .. && rm -rf yay
makepkg -si
cd .. && rm -rf yay
# Install paru # Install paru
git clone https://aur.archlinux.org/paru.git git clone https://aur.archlinux.org/paru.git
cd paru cd paru && makepkg -si && cd .. && rm -rf paru
makepkg -si
cd .. && rm -rf paru
``` ```
### Step 1: Install Required Packages ### Step 1: Install Required Packages
```bash ```bash
# Install all required packages in one command sudo pacman -S hyprland hyprlock hyprshot wlogout kitty waybar swaybg waypaper wofi nautilus wireplumber pipewire-pulse brightnessctl playerctl adwaita-cursors python-pywal fastfetch
sudo pacman -S hyprland hyprlock hyprshot wlogout kitty waybar swaybg waypaper wofi nautilus wireplumber pipewire-pulse brightnessctl playerctl adwaita-cursors python-pywal
``` ```
### Step 2: Install Caelestia Shell (Recommended) ### Step 2: Install Caelestia Shell (Recommended)
Caelestia is a modern shell with AI features that integrates with the pywal theming system.
```bash ```bash
# Install Caelestia via yay yay -S caelestia-shell
yay -S caelestia-shell # caelestia-shell-git is bleeding edge & unstable one
# 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 3: Clone and Install Config
### Step 3: Clone This Repository
```bash ```bash
# Clone to a temporary location
cd ~/Downloads cd ~/Downloads
git clone https://github.com/duma799/hyprduma-config.git git clone https://github.com/duma799/hyprduma-config.git
cd hyprduma-config cd hyprduma-config
```
### Step 4: Backup Existing Configs (If Any) # Backup existing configs
```bash
# Backup existing Hyprland config
[ -d ~/.config/hypr ] && mv ~/.config/hypr ~/.config/hypr.backup [ -d ~/.config/hypr ] && mv ~/.config/hypr ~/.config/hypr.backup
# Backup existing waybar config
[ -d ~/.config/waybar ] && mv ~/.config/waybar ~/.config/waybar.backup [ -d ~/.config/waybar ] && mv ~/.config/waybar ~/.config/waybar.backup
# Backup existing wlogout config
[ -d ~/.config/wlogout ] && mv ~/.config/wlogout ~/.config/wlogout.backup [ -d ~/.config/wlogout ] && mv ~/.config/wlogout ~/.config/wlogout.backup
```
### Step 5: Install Hyprland Configuration # Install Hyprland config
```bash
# Create Hypr config directory
mkdir -p ~/.config/hypr mkdir -p ~/.config/hypr
# Copy main config
cp hyprland.conf ~/.config/hypr/ cp hyprland.conf ~/.config/hypr/
cp hyprland-colors.conf ~/.config/hypr/ cp -r wallpapers ~/.config/hypr/
# Create screenshots directory (used by config)
mkdir -p ~/Pictures/Screenshots mkdir -p ~/Pictures/Screenshots
``` ```
### Step 6: Configure Your Applications ### Step 4: Install Scripts
**IMPORTANT:** Edit the config file to set your preferred applications.
```bash ```bash
# Open the config file # Copy all scripts
nvim ~/.config/hypr/hyprland.conf cp pywal.sh sync-caelestia-wallpaper.sh waypaper-hook.sh ~/.config/hypr/
cp monitor-handler.py ~/.config/hypr/
chmod +x ~/.config/hypr/pywal.sh ~/.config/hypr/sync-caelestia-wallpaper.sh ~/.config/hypr/waypaper-hook.sh
# Find lines 27-34 and adjust these variables: # Copy pywal.sh to home for convenience
# $terminal = kitty # Your terminal cp pywal.sh ~/pywal.sh && chmod +x ~/pywal.sh
# $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 7: Install Pywal Integration (Strongly Recommended) ### Step 5: Configure Your Applications
Pywal provides dynamic color theming based on your wallpaper. Edit `~/.config/hypr/hyprland.conf` and adjust the app variables (lines 28-34):
```
$terminal = kitty
$fileManager = nautilus
$menu = wofi --show drun
$telegram = Telegram
$spotify = spotify
$vscode = code
$browser = your-browser
```
### Step 6: Install Pywal Integration
```bash ```bash
# Install pywal templates (REQUIRED for color generation) # Install pywal templates
mkdir -p ~/.config/wal/templates mkdir -p ~/.config/wal/templates
cp -r wal/templates/* ~/.config/wal/templates/ cp -r wal/templates/* ~/.config/wal/templates/
# Copy the color application and wallpaper sync scripts # Setup Kitty terminal
cp pywal.sh ~/.config/hypr/
cp sync-caelestia-wallpaper.sh ~/.config/hypr/
chmod +x ~/.config/hypr/pywal.sh
chmod +x ~/.config/hypr/sync-caelestia-wallpaper.sh
# Also copy to home directory for easier access
cp pywal.sh ~/pywal.sh
chmod +x ~/pywal.sh
# Setup Kitty terminal to use pywal colors
mkdir -p ~/.config/kitty mkdir -p ~/.config/kitty
cp kitty/kitty.conf ~/.config/kitty/ cp kitty/kitty.conf ~/.config/kitty/
# Configure bash shell to load pywal colors # Add pywal to bashrc
# Add these lines to your ~/.bashrc if they're not already there:
cat >> ~/.bashrc << 'EOF' cat >> ~/.bashrc << 'EOF'
# Import pywal colorscheme from cache # Import pywal colorscheme from cache
@@ -174,202 +154,99 @@ cat >> ~/.bashrc << 'EOF'
source ~/.cache/wal/colors-tty.sh 2>/dev/null source ~/.cache/wal/colors-tty.sh 2>/dev/null
EOF EOF
# Generate initial colors from a wallpaper # Generate initial colors
wal -i /path/to/your/wallpaper.png wal -i wallpapers/sakura.jpg && ~/pywal.sh
# Or use included wallpaper
wal -i wallpapers/sakura.jpg
# Apply colors to all components
~/pywal.sh
# Reload bash to apply shell colors
source ~/.bashrc source ~/.bashrc
``` ```
**What this does:** ### Step 7: Configure Waypaper Hook
- Generates a color scheme from your wallpaper
- Applies colors to Hyprland window borders
- Applies colors to Caelestia shell (if installed)
- Applies colors to Kitty terminals
- Applies colors to bash shell
- Restarts necessary services to apply changes
### Step 8: Start Hyprland The waypaper hook automatically applies pywal colors whenever you change wallpaper through the waypaper GUI.
```bash ```bash
# If you're in a TTY, start Hyprland # Set waypaper-hook.sh as waypaper's post_command
mkdir -p ~/.config/waypaper
# Add to ~/.config/waypaper/config.ini under [Settings]:
# post_command = /home/YOUR_USER/.config/hypr/waypaper-hook.sh
```
### Step 8: Install Fastfetch Config (Optional)
```bash
cp -r fastfetch ~/.config/fastfetch
# Fix hardcoded paths for your user
sed -i "s|/home/duma/|$HOME/|g" ~/.config/fastfetch/config.jsonc
```
### Step 9: Start Hyprland
```bash
# From TTY
Hyprland Hyprland
# If already in Hyprland, reload the config # Or if already running, reload config
# Press SUPER + SHIFT + R (or restart Hyprland session) # Press SUPER + SHIFT + R
``` ```
--- ---
## Post-Installation ## Post-Installation
### Setting Wallpaper with Pywal ### Setting Wallpaper
**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)
**Using command line:**
```bash ```bash
# Generate colors and apply them
wal -i /path/to/wallpaper.png && ~/pywal.sh wal -i /path/to/wallpaper.png && ~/pywal.sh
# Or use the wallpapers included in this repo
wal -i ~/.config/hypr/wallpapers/sakura.jpg && ~/pywal.sh
``` ```
**Note about waypaper and Caelestia:** **How wallpaper management works:**
- This config uses **swaybg** as the wallpaper backend (not hyprpaper) - **swaybg** is the wallpaper backend (not hyprpaper)
- Use `waypaper` GUI (Super+W) to select wallpapers - **waypaper** GUI sets the wallpaper and triggers `waypaper-hook.sh` as a post-command
- Waypaper with swaybg backend automatically saves and restores your wallpaper on login - The hook runs pywal, syncs Caelestia colors/wallpaper, reloads Hyprland, and updates GTK/Firefox themes
- **Important**: Caelestia shell has its own wallpaper management that may conflict with waypaper - **sync-caelestia-wallpaper.sh** syncs Caelestia's wallpaper reference with swaybg on startup
- The config includes `sync-caelestia-wallpaper.sh` to automatically sync Caelestia's wallpaper reference with swaybg - **monitor-handler.py** listens for config reloads and restores swaybg/Caelestia if they get killed
- 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)
### System-Wide Theme Syncing (Dark/Light Mode) ### System-Wide Theme Syncing
The enhanced `pywal.sh` script now supports system-wide theme synchronization, making browsers, GTK apps, and other applications respect PyWal color scheme and dark/light mode preference. The `pywal.sh` script supports dark/light mode and system-wide theme synchronization (GTK, Firefox, Qt). See **[PYWAL-SETUP.md](PYWAL-SETUP.md)** for the full guide including optional enhancements, light/dark theme switching, and backend options.
#### Basic Usage
```bash ```bash
# Apply dark theme with wallpaper (default) ~/pywal.sh ~/Pictures/wallpaper.jpg # Dark theme (default)
~/.config/hypr/pywal.sh ~/Pictures/wallpaper.jpg ~/pywal.sh ~/Pictures/wallpaper.jpg light # Light theme
~/pywal.sh "" dark # Switch mode, keep wallpaper
# Apply light theme with wallpaper ~/pywal.sh # Refresh current theme
~/.config/hypr/pywal.sh ~/Pictures/wallpaper.jpg light
# Switch to light mode (keep current wallpaper)
~/.config/hypr/pywal.sh "" light
# Switch to dark mode (keep current wallpaper)
~/.config/hypr/pywal.sh "" dark
# Refresh themes (reapply current colors)
~/.config/hypr/pywal.sh
``` ```
#### Enhanced System-Wide Support (Optional)
For full system-wide theming across all applications, install these optional packages:
**1. GTK Theme Support**
```bash
# Install GTK theme generator
yay -S wal-gtk-theme-git
# The script will automatically generate GTK themes
# GTK apps (Nautilus, GNOME apps, etc.) will use PyWal colors
```
**2. Firefox Theme Support**
```bash
# Install pywalfox backend
yay -S python-pywalfox
pywalfox install
# Then install the Pywalfox extension from Firefox Add-ons:
# https://addons.mozilla.org/en-US/firefox/addon/pywalfox/
```
**3. Qt Application Support (Optional)**
```bash
# Install Qt theming tools
yay -S qt5ct qt6ct kvantum
# Set environment variables
echo "QT_QPA_PLATFORMTHEME=qt5ct" >> ~/.config/environment.d/qt.conf
echo "QT_STYLE_OVERRIDE=kvantum" >> ~/.config/environment.d/qt.conf
```
**4. Create GTK Configuration Files**
```bash
# Create GTK 3 settings
mkdir -p ~/.config/gtk-3.0
cat > ~/.config/gtk-3.0/settings.ini << 'EOF'
[Settings]
gtk-theme-name=FlatColor
gtk-icon-theme-name=Papirus-Dark
gtk-font-name=Sans 10
gtk-cursor-theme-name=Adwaita
gtk-cursor-theme-size=24
gtk-application-prefer-dark-theme=1
EOF
# Create GTK 4 settings (same content)
mkdir -p ~/.config/gtk-4.0
cp ~/.config/gtk-3.0/settings.ini ~/.config/gtk-4.0/
```
#### What Gets Themed
Once configured, the following applications will sync with your PyWal colors:
- **Hyprland**: Window borders and decorations
- **Caelestia Shell**: Status bar and UI elements
- **Kitty Terminal**: Background, foreground, and color palette
- **GTK Applications**: File managers (Nautilus), settings, GNOME apps
- **Firefox**: Browser UI via Pywalfox (if installed)
- **Chrome/Chromium**: Via system dark mode preference
- **Qt Applications**: Via qt5ct/qt6ct (if configured)
- **Bash Shell**: Terminal color sequences
#### Automatic Dark/Light Mode by Time (Optional)
Create a script to automatically switch themes based on time of day:
```bash
# Create auto-theme script
cat > ~/.local/bin/auto-theme.sh << 'EOF'
#!/bin/bash
HOUR=$(date +%H)
if [ $HOUR -ge 18 ] || [ $HOUR -lt 6 ]; then
# Dark mode (6 PM to 6 AM)
~/.config/hypr/pywal.sh "" dark
else
# Light mode (6 AM to 6 PM)
~/.config/hypr/pywal.sh "" light
fi
EOF
chmod +x ~/.local/bin/auto-theme.sh
# Add to Hyprland config to run on startup
echo "exec-once = ~/.local/bin/auto-theme.sh" >> ~/.config/hypr/hyprland.conf
```
#### How It Works
The enhanced `pywal.sh` script:
1. Generates PyWal colors from wallpaper (or switches theme mode)
2. Creates GTK themes via `wal-gtk` (if installed)
3. Sets system-wide dark/light preference via `gsettings`
4. Updates Firefox theme via `pywalfox` (if installed)
5. Reloads Hyprland, Caelestia, and Kitty with new colors
6. Automatically detects if theme is light or dark based on background brightness
### Monitor Configuration ### Monitor Configuration
If you have different monitors, adjust lines 4-18 in `~/.config/hypr/hyprland.conf`: The default config uses auto-detection which works with any monitor setup:
```
monitor = , preferred, auto, 1
```
To customize for specific monitors, edit `~/.config/hypr/hyprland.conf` (line 4):
```bash ```bash
nvim ~/.config/hypr/hyprland.conf # Example: dual monitor with specific resolution
monitor = eDP-1, 1920x1080@144, 1920x0, 1
# Edit monitor configuration: monitor = HDMI-A-1, 1920x1080@144, 0x0, 1, transform, 2
# monitor = eDP-1, 1920x1080@144, 1920x0, 1
# monitor = HDMI-A-1, 1920x1080@144, 0x0, 1, transform, 2
``` ```
Workspace assignment (lines 7-17) distributes workspaces 1-4 to the external monitor and 5-10 to the laptop screen.
### 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.
### Keyboard Layout ### Keyboard Layout
Default is US/RU with ALT+SHIFT toggle. To change, edit `~/.config/hypr/hyprland.conf` line 42: Default is US/RU with ALT+SHIFT toggle. To change, edit the input section in `~/.config/hypr/hyprland.conf`:
``` ```
kb_layout = us, ru # Change to your layouts kb_layout = us, ru # Change to your layouts
@@ -377,6 +254,25 @@ kb_layout = us, ru # Change to your layouts
--- ---
## Project Structure
```
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
├── install.py # Interactive auto-installer
├── install.sh # Curl one-liner bootstrap script
├── wallpapers/ # Included wallpapers
├── wal/templates/ # Pywal templates for Hyprland & Caelestia
├── kitty/kitty.conf # Kitty terminal config with pywal support
├── fastfetch/ # Custom fastfetch config with ASCII art
├── KEYBINDS.md # Complete keybindings reference
└── PYWAL-SETUP.md # Detailed pywal integration guide
```
## Documentation ## Documentation
- **[KEYBINDS.md](KEYBINDS.md)** - Complete keybindings reference - **[KEYBINDS.md](KEYBINDS.md)** - Complete keybindings reference
@@ -391,7 +287,7 @@ kb_layout = us, ru # Change to your layouts
- Review error logs: `journalctl -b | grep hyprland` - Review error logs: `journalctl -b | grep hyprland`
### Applications don't launch ### Applications don't launch
- Make sure you edited the app variables in `hyprland.conf` (lines 27-34) - Make sure you edited the app variables in `hyprland.conf` (lines 28-34)
- Check if the applications are actually installed - Check if the applications are actually installed
### Pywal colors not applying ### Pywal colors not applying
@@ -465,13 +361,26 @@ kb_layout = us, ru # Change to your layouts
pkill caelestia && sleep 0.5 && caelestia shell -d & pkill caelestia && sleep 0.5 && caelestia shell -d &
``` ```
### Wallpaper not showing on startup ### Wallpaper not showing after config reload
The monitor handler should restore it automatically. If not:
```bash ```bash
# Restore wallpaper with waypaper # Check if monitor-handler is running
waypaper restore pgrep -f monitor-handler.py
# Manually restart swaybg if needed # Restart it if needed
pkill swaybg && swaybg & python3 ~/.config/hypr/monitor-handler.py &
# Or manually restore
waypaper --restore
```
### Waypaper hook not applying colors
```bash
# Check if hook is registered
grep post_command ~/.config/waypaper/config.ini
# Check hook logs
cat /tmp/waypaper-hook.log
``` ```
--- ---