2025-11-11 09:51:57 +00:00
# HyprDuma Dotfiles
2026-01-22 23:11:06 +04:00
https://github.com/user-attachments/assets/17ff7195-82e0-4b48-9309-1a5ec9d6e5a4
2026-01-22 23:08:01 +04:00
2025-11-11 09:51:57 +00:00
Personal Hyprland configuration focused on productivity and ergonomics.
## Features
### Enhanced Keybindings
- **[KEYBINDS.md ](KEYBINDS.md )** - Complete keybindings reference
### Visual & UX
2025-11-22 00:16:21 +04:00
- Minimal gaps (10px/40px) for space efficiency
2026-02-12 00:24:53 +04:00
- Transparency with configurable opacity (active: 0.985, inactive: 0.85)
2025-11-11 09:51:57 +00:00
- Smooth custom animations with bezier curves
2026-02-12 00:24:53 +04:00
- **Pywal integration** - Dynamic system-wide colors from wallpaper
- **Caelestia shell** integration for dynamic theming and AI features
2025-11-11 09:51:57 +00:00
### Input
- 3-finger gestures (horizontal: workspace, vertical: fullscreen)
- Dual keyboard layout (US/RU with `ALT + SHIFT` toggle)
- Numlock enabled by default
- Optimized touchpad scrolling
### Display Setup
2026-02-12 00:24:53 +04:00
- Auto-detected monitor configuration (works with any setup out of the box)
- Workspaces 1-4 on external monitor, 5-10 on laptop screen
- **Monitor handler** - automatically restores wallpaper and Caelestia shell after config reload
### 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
2025-11-11 09:51:57 +00:00
2025-11-22 00:16:21 +04:00
---
2026-02-08 23:14:52 +04:00
## Quick Install
2026-02-08 23:36:09 +04:00
``` bash
2026-04-04 15:09:42 +04:00
curl -fsSL https://raw.githubusercontent.com/duma799/hyprduma-config/master/install.py | python3
2026-02-08 23:36:09 +04:00
```
Or manually:
2026-02-08 23:14:52 +04:00
``` bash
2026-04-04 15:09:42 +04:00
git clone https://github.com/duma799/hyprduma-config.git ~/hyprduma-config
python3 ~/hyprduma-config/install.py
2026-02-08 23:14:52 +04:00
```
2026-02-12 00:24:53 +04:00
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
2026-02-08 23:14:52 +04:00
---
2026-02-12 00:24:53 +04:00
## Manual Installation Guide
2025-11-22 00:16:21 +04:00
2026-02-12 00:24:53 +04:00
If you prefer to install manually instead of using the auto-installer, follow these steps.
2025-11-22 00:16:21 +04:00
2025-11-22 17:56:26 +04:00
### Prerequisites: Install AUR Helpers (Optional but Recommended)
2025-11-14 23:17:05 +04:00
2025-11-22 17:56:26 +04:00
``` bash
# Install yay
sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git
2026-02-12 00:24:53 +04:00
cd yay && makepkg -si && cd .. && rm -rf yay
2025-11-22 17:56:26 +04:00
# Install paru
git clone https://aur.archlinux.org/paru.git
2026-02-12 00:24:53 +04:00
cd paru && makepkg -si && cd .. && rm -rf paru
2025-11-21 22:43:00 +04:00
```
2025-11-22 17:56:26 +04:00
### Step 1: Install Required Packages
2025-11-22 00:16:21 +04:00
``` bash
2026-02-12 00:24:53 +04:00
sudo pacman -S hyprland hyprlock hyprshot wlogout kitty waybar swaybg waypaper wofi nautilus wireplumber pipewire-pulse brightnessctl playerctl adwaita-cursors python-pywal fastfetch
2025-11-22 00:16:21 +04:00
```
2025-11-22 17:56:26 +04:00
### Step 2: Install Caelestia Shell (Recommended)
2025-11-22 00:16:21 +04:00
2025-11-11 09:51:57 +00:00
``` bash
2026-02-12 00:24:53 +04:00
yay -S caelestia-shell
2025-11-22 00:16:21 +04:00
```
2026-02-12 00:24:53 +04:00
### Step 3: Clone and Install Config
2025-11-22 00:16:21 +04:00
``` bash
cd ~/Downloads
2026-02-08 23:14:52 +04:00
git clone https://github.com/duma799/hyprduma-config.git
2025-11-22 00:16:21 +04:00
cd hyprduma-config
2026-02-12 00:24:53 +04:00
# Backup existing configs
2025-11-22 00:16:21 +04:00
[ -d ~/.config/hypr ] && mv ~/.config/hypr ~/.config/hypr.backup
[ -d ~/.config/waybar ] && mv ~/.config/waybar ~/.config/waybar.backup
[ -d ~/.config/wlogout ] && mv ~/.config/wlogout ~/.config/wlogout.backup
2025-11-21 22:43:00 +04:00
2026-02-12 00:24:53 +04:00
# Install Hyprland config
2025-11-11 09:51:57 +00:00
mkdir -p ~/.config/hypr
cp hyprland.conf ~/.config/hypr/
2026-03-22 23:58:28 +04:00
cp -r wallpapers ~/wallpapers
2025-11-22 00:16:21 +04:00
mkdir -p ~/Pictures/Screenshots
```
2025-11-11 09:51:57 +00:00
2026-02-12 00:24:53 +04:00
### Step 4: Install Scripts
2025-11-22 00:16:21 +04:00
``` bash
2026-02-12 00:24:53 +04:00
# Copy all scripts
2026-03-22 23:58:28 +04:00
mkdir -p ~/.config/hypr/scripts
cp pywal.sh sync-caelestia-wallpaper.sh waypaper-hook.sh ~/.config/hypr/scripts/
cp monitor-handler.py ~/.config/hypr/scripts/
chmod +x ~/.config/hypr/scripts/*.sh
2026-02-12 00:24:53 +04:00
2026-03-22 23:58:28 +04:00
# Note: The script aliases 'pywal' to ~/.config/hypr/scripts/pywal.sh
# To set it up manually: echo "alias pywal='~/.config/hypr/scripts/pywal.sh'" >> ~/.bashrc
2025-11-21 22:43:00 +04:00
```
2025-11-22 00:16:21 +04:00
2026-02-12 00:24:53 +04:00
### Step 5: Configure Your Applications
Edit `~/.config/hypr/hyprland.conf` and adjust the app variables (lines 28-34):
2025-11-22 00:16:21 +04:00
2026-02-12 00:24:53 +04:00
```
$terminal = kitty
$fileManager = nautilus
$menu = wofi --show drun
$telegram = Telegram
$spotify = spotify
$vscode = code
$browser = your-browser
```
### Step 6: Install Pywal Integration
2025-11-22 00:16:21 +04:00
``` bash
2026-02-12 00:24:53 +04:00
# Install pywal templates
2025-11-22 00:16:21 +04:00
mkdir -p ~/.config/wal/templates
cp -r wal/templates/* ~/.config/wal/templates/
2026-02-12 00:24:53 +04:00
# Setup Kitty terminal
2025-11-24 20:28:22 +04:00
mkdir -p ~/.config/kitty
cp kitty/kitty.conf ~/.config/kitty/
2026-02-12 00:24:53 +04:00
# Add pywal to bashrc
2025-11-24 20:28:22 +04:00
cat >> ~/.bashrc << 'EOF'
# Import pywal colorscheme from cache
(cat ~/.cache/wal/sequences &)
# To add support for TTYs (optional)
source ~/.cache/wal/colors-tty.sh 2>/dev/null
EOF
2026-02-12 00:24:53 +04:00
# Generate initial colors
2026-03-22 23:58:28 +04:00
wal -i ~/wallpapers/sakura.jpg && pywal
2025-11-24 20:28:22 +04:00
source ~/.bashrc
2025-11-22 00:16:21 +04:00
```
2026-02-12 00:24:53 +04:00
### Step 7: Configure Waypaper Hook
2025-11-22 00:16:21 +04:00
2026-02-12 00:24:53 +04:00
The waypaper hook automatically applies pywal colors whenever you change wallpaper through the waypaper GUI.
2025-11-22 00:16:21 +04:00
``` bash
2026-02-12 00:24:53 +04:00
# Set waypaper-hook.sh as waypaper's post_command
mkdir -p ~/.config/waypaper
# Add to ~/.config/waypaper/config.ini under [Settings]:
2026-03-22 23:58:28 +04:00
# post_command = ~/.config/hypr/scripts/waypaper-hook.sh
2025-11-22 00:16:21 +04:00
```
2026-02-12 00:24:53 +04:00
### Step 8: Install Fastfetch Config (Optional)
2025-11-22 00:16:21 +04:00
``` bash
2026-02-12 00:24:53 +04:00
cp -r fastfetch ~/.config/fastfetch
2025-11-22 00:16:21 +04:00
2026-02-12 00:24:53 +04:00
# Fix hardcoded paths for your user
sed -i " s|/home/duma/| $HOME /|g " ~/.config/fastfetch/config.jsonc
2025-11-22 00:16:21 +04:00
```
2026-02-12 00:24:53 +04:00
### Step 9: Start Hyprland
2025-11-24 22:24:25 +04:00
``` bash
2026-02-12 00:24:53 +04:00
# From TTY
Hyprland
2025-11-24 22:24:25 +04:00
2026-02-12 00:24:53 +04:00
# Or if already running, reload config
# Press SUPER + SHIFT + R
2025-11-24 22:24:25 +04:00
```
2026-02-12 00:24:53 +04:00
---
2025-11-24 22:24:25 +04:00
2026-02-12 00:24:53 +04:00
## Post-Installation
2025-11-24 22:24:25 +04:00
2026-02-12 00:24:53 +04:00
### Setting Wallpaper
2025-11-24 22:24:25 +04:00
2026-02-12 00:24:53 +04:00
**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)
2025-11-24 22:24:25 +04:00
2026-02-12 00:24:53 +04:00
**Using command line: **
2025-11-24 22:24:25 +04:00
``` bash
2026-03-22 23:58:28 +04:00
wal -i /path/to/wallpaper.png && pywal
2025-11-24 22:24:25 +04:00
```
2026-02-12 00:24:53 +04:00
**How wallpaper management works: **
- **swaybg** is the wallpaper backend (not hyprpaper)
- **waypaper** GUI sets the wallpaper and triggers `waypaper-hook.sh` as a post-command
- The hook runs pywal, syncs Caelestia colors/wallpaper, reloads Hyprland, and updates GTK/Firefox themes
- **sync-caelestia-wallpaper.sh** syncs Caelestia's wallpaper reference with swaybg on startup
- **monitor-handler.py** listens for config reloads and restores swaybg/Caelestia if they get killed
2025-11-24 22:24:25 +04:00
2026-02-12 00:24:53 +04:00
### System-Wide Theme Syncing
2025-11-24 22:24:25 +04:00
2026-02-12 00:24:53 +04:00
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.
2025-11-24 22:24:25 +04:00
``` bash
2026-03-22 23:58:28 +04:00
pywal ~/Pictures/wallpaper.jpg # Dark theme (default)
pywal ~/Pictures/wallpaper.jpg light # Light theme
pywal "" dark # Switch mode, keep wallpaper
pywal # Refresh current theme
2025-11-24 22:24:25 +04:00
```
2026-02-12 00:24:53 +04:00
### Monitor Configuration
2025-11-24 22:24:25 +04:00
2026-02-12 00:24:53 +04:00
The default config uses auto-detection which works with any monitor setup:
2025-11-24 22:24:25 +04:00
2026-02-12 00:24:53 +04:00
```
monitor = , preferred, auto, 1
```
2025-11-24 22:24:25 +04:00
2026-02-12 00:24:53 +04:00
To customize for specific monitors, edit `~/.config/hypr/hyprland.conf` (line 4):
2025-11-24 22:24:25 +04:00
``` bash
2026-02-12 00:24:53 +04:00
# Example: dual monitor with specific resolution
monitor = eDP-1, 1920x1080@144, 1920x0, 1
monitor = HDMI-A-1, 1920x1080@144, 0x0, 1, transform, 2
2025-11-24 22:24:25 +04:00
```
2026-02-12 00:24:53 +04:00
Workspace assignment (lines 7-17) distributes workspaces 1-4 to the external monitor and 5-10 to the laptop screen.
2025-11-24 22:24:25 +04:00
2026-02-12 00:24:53 +04:00
### Monitor Handler
2025-11-22 00:16:21 +04:00
2026-02-12 00:24:53 +04:00
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.
2025-11-22 00:16:21 +04:00
### Keyboard Layout
2026-02-12 00:24:53 +04:00
Default is US/RU with ALT+SHIFT toggle. To change, edit the input section in `~/.config/hypr/hyprland.conf` :
2025-11-22 00:16:21 +04:00
```
kb_layout = us, ru # Change to your layouts
```
---
2026-02-12 00:24:53 +04:00
## 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
├── wallpapers/ # Included wallpapers
2026-04-04 15:09:42 +04:00
├── config/
│ ├── kitty/kitty.conf # Kitty terminal config with pywal support
│ ├── fastfetch/ # Custom fastfetch config with ASCII art
│ ├── nvim/ # Neovim config
│ └── wal/templates/ # Pywal templates for Hyprland & Caelestia
2026-02-12 00:24:53 +04:00
├── KEYBINDS.md # Complete keybindings reference
└── PYWAL-SETUP.md # Detailed pywal integration guide
```
2025-11-21 22:43:00 +04:00
## Documentation
- **[KEYBINDS.md ](KEYBINDS.md )** - Complete keybindings reference
2025-11-22 00:16:21 +04:00
- **[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
2026-02-12 00:24:53 +04:00
- Make sure you edited the app variables in `hyprland.conf` (lines 28-34)
2025-11-22 00:16:21 +04:00
- Check if the applications are actually installed
### Pywal colors not applying
2025-11-24 20:28:22 +04:00
**If colors work in Hyprland but not in terminals/shell: **
1. **Check if templates are installed: **
```bash
ls ~/.config/wal/templates/
# Should show: hyprland-colors.conf, caelestia-scheme.json
` ``
If missing, copy them:
` ``bash
mkdir -p ~/.config/wal/templates
cp ~/.config/hypr/wal/templates/* ~/.config/wal/templates/
` ``
2. **Regenerate colors:**
` ``bash
2026-03-22 23:58:28 +04:00
wal -R && pywal
2025-11-24 20:28:22 +04:00
` ``
3. **Check bash configuration:**
` ``bash
grep -A 5 "pywal" ~/.bashrc
` ``
If missing, add:
` ``bash
cat >> ~/.bashrc << 'EOF'
# Import pywal colorscheme from cache
(cat ~/.cache/wal/sequences &)
# To add support for TTYs (optional)
source ~/.cache/wal/colors-tty.sh 2>/dev/null
EOF
source ~/.bashrc
` ``
4. **Check Kitty configuration:**
` ``bash
grep "colors-kitty" ~/.config/kitty/kitty.conf
` ``
Should show: ` include ~/.cache/wal/colors-kitty.conf`
If it shows ` kitty-colors.conf` (wrong filename), fix it:
` ``bash
sed -i 's/kitty-colors.conf/colors-kitty.conf/g' ~/.config/kitty/kitty.conf
killall -SIGUSR1 kitty # Reload kitty
` ``
5. **Verify pywal cache files exist:**
` ``bash
ls ~/.cache/wal/hyprland-colors.conf
ls ~/.cache/wal/colors-kitty.conf
ls ~/.cache/wal/sequences
` ``
**General pywal troubleshooting:**
2026-03-22 23:58:28 +04:00
- Ensure the script is executable: ` chmod +x ~/.config/hypr/scripts/pywal.sh`
2025-11-22 00:16:21 +04:00
- Check if pywal cache exists: ` ls ~/.cache/wal/`
2026-03-22 23:58:28 +04:00
- Manually reload: ` pywal`
2025-11-22 00:16:21 +04:00
### Caelestia colors not updating
` ``bash
# Restart Caelestia daemon
pkill caelestia && sleep 0.5 && caelestia shell -d &
` ``
2026-02-12 00:24:53 +04:00
### Wallpaper not showing after config reload
The monitor handler should restore it automatically. If not:
` ``bash
# Check if monitor-handler is running
pgrep -f monitor-handler.py
# Restart it if needed
python3 ~/.config/hypr/monitor-handler.py &
# Or manually restore
waypaper --restore
` ``
### Waypaper hook not applying colors
2025-11-22 00:16:21 +04:00
` ``bash
2026-02-12 00:24:53 +04:00
# Check if hook is registered
grep post_command ~/.config/waypaper/config.ini
2025-11-22 00:16:21 +04:00
2026-02-12 00:24:53 +04:00
# Check hook logs
cat /tmp/waypaper-hook.log
2025-11-22 00:16:21 +04:00
` ``
---
2025-11-21 22:43:00 +04:00
2025-11-11 09:51:57 +00:00
## Note
2025-11-22 00:16:21 +04:00
Everything is still in progress. Feel free to customize and adjust to your needs!