Welcome to my Hyprland Setup!
I hope you find it useful and enjoyable.
âť— If something does not work, please open an issue on this repository or E-Mail me directly via [email protected] âť—
âť—I am always open to suggestions and feedback âť—
- Introduction
- Environment Setup
- Prerequisites
- Setup Script Execution
- Package Installations
- Manuell Installation & Configuration
- Change Wallpaper with the Wallpaper Script
- Terminal Experience
- Customization
- Troubleshooting
- Additional Resources
This repository provides a minimalistic Hyprland setup designed for users who want a customizable desktop environment.
It sets up the following Components/Apps:
Core Components
- Graphic Drivers (Open Source)
- Audio (Pipewire)
- Login Manager (sddm)
- User Environment (xdg-user-dirs)
- Keyring Setup (Gnome-keyring)
- Filepicker Setup (KDE Filepicker for Dolphin)
- Monitor Setup (Custom Script)
- Lock Mechanisms (Hyprlock and Hypridle)
- Brightness Control (Hyprsunset)
Core Applications
- Application Launcher (Wofi)
- Task Bar (Waybar)
- Wallpaper Setup (Hyprpaper, Waypaper-git and Custom Script)
- Notification Manager (Swaync)
- Clipboard Manager (wl-clipboard)
- Screenshot Tool (Hyprshot with Satty)
- Calculator (Qalculate-gtk)
- Firewall (Firewalld)
- Browser (Vivaldi)
CLI Applications
- Custom Stow (Stow - Custom Script for easy Config Management)
- Calendar (Calcurse)
- Neovim (Kickstarter)
- Notes with Neovim (Custom Script)
- Shell Configuration (Fish Shell - with useful aliases)
- CLI Tools for a more convenient terminal experience
Waybar Applications
- Bluetooth (In Waybar) (Bluetooth-Manager)
- Network (In Waybar) (Network-Manager)
- Power Button (In Waybar)
- Update Button (In Waybar) (waybar-module-pacman-updates-git)
- Temperatur Sensor (In Waybar) (psensor)¨
- Power Profiles (In Waybar)
- Weather (In Waybar) (Swiss Specific - Needs adjustments for other countries)
Additional Applications
- Keybindings (Extensive Keybinds with App for Overview)
- Snapshots for Btrfs-Filesystems (Timeshift)
- Snapshot Setup for Grub (grub-btrfs)
- Scratchpad for Minimizable Terminal (pyprland)
- Custom Mouse Cursor (rose-pine-hyprcursor)
Info: Tested on fresh user and arch installs
-
Install yay (AUR Helper)
# Check for dependencies sudo pacman -S git base-devel # Clone and install yay git clone https://aur.archlinux.org/yay.git cd yay makepkg -si
-
Option 1: Install via AUR
- Using yay:
yay -S hyprland-simple-setup-git
- Using paru:
paru -S hyprland-simple-setup-git
- After Installation:
hyprland-simple-setup-git
- Using yay:
-
Option 2: Installation via Git
git clone https://github.com/firstp1ck/Hyprland-Simple-Setup.git ~/Hyprland-Simple-Setup cd ~/Hyprland-Simple-Setup ./setup.sh
- The script will:
- Detect your system and prerequisites
- Install all required packages (Pacman and AUR)
- Verify installations
- Guide you through configuration steps
- The script will:
-
If you add new configuration files add them to the
dotfiles
folder to match your system (e.g. displays, wallpapers, and environment variables, see section: Manuell Installation & Configuration). -
Deploy dotfiles using GNU stow:
cd ~/Hyprland-Simple-Setup/dotfiles bash .local/scripts/Start_stow_solve.sh
-
Edit configuration files as needed (see below for modular config structure).
-
Log out and log in to Hyprland, or start it from a TTY.
-
After Relogging the Environment should be updated and a Keybind App should be opened (if the App did not open, you can open it via Right-click on the Menu Button in the Bar)
- The Setup is designed to run from EndeavourOS and Arch (with Hyprland selceted in the archinstall script).
- You may need to modify the script for other distros or environments.
- Uses stow to manage dotfiles. The stow setupscript makes backups from the original dotfiles in the home directory.
- Arch-based Linux distribution (tested on EndeavourOS and Arch, with Archinstall-Script)
- Base development tools (
git
,sudo
) - YAY AUR helper (will be installed if missing)
- A directory containing your wallpapers (Will use Default Wallpapers from the Repository otherwise)
- Internet connection for package downloads
- Supported: Arch Linux, EndeavourOS (other distros may require manual adaptation)
- Dependencies: All handled by the setup script (Pacman and AUR)
- Dotfile management: GNU stow (with backup of existing files)
- Logging: All actions logged to
~/Linux-Setup.log
Setup/Start_hyprland_setup.sh
– Main interactive setup scriptdotfiles/
.config/
hypr/
– Hyprland configs and scriptshyprland.conf
– Main configsources_example/
– Example modular configs (keybindings, monitors, autostart, etc.)scripts/
– Helper scripts (wallpaper, sunset, dolphin fix, etc.)
waybar/
– Status bar config, style, and scripts (weather, updates)wofi/
– Application launcher config and stylekitty/
,fish/
,swaync/
,nvim/
,btop/
,cava/
,fastfetch/
,zellij/
,bat/
,satty/
,xdg-desktop-portal/
– App configsfish/
- Shell Configurations
.bashrc
,.bash_profile
– Shell Configurations.local/scripts/Start_stow_solve.sh
– Stow deployment script
To install and configure Hyprland along with its dependencies, run:
cd ~/Hyprland-Simple-Setup
./setup.sh
This script automatically updates Pacman, installs the necessary packages, and configures Hyprland tools.
Core Hyprland Packages
- hyprland (Wayland compositor)
- waybar (Status bar)
- hyprpaper (Wallpaper manager)
- hyprcursor (Cursor themes)
- wofi (Application launcher)
- hyprlock (Screen locker)
- hypridle (Idle manager)
- hyprpolkitagent (Authentication agent)
- hyprpicker (Color picker)
- wl-clipboard & wl-clip-persist (Clipboard managers)
- hyprgraphics (Graphics utilities)
- hyprland-qtutils (Qt integration)
- hyprland-qt-support (Qt support)
- hyprwayland-scanner (Wayland protocol scanner)
- python-pyquery
- polkit-kde-agent
File Management
- dolphin (File manager)
- git (Version control)
- fd (Modern find)
- fzf (Fuzzy finder)
- stow (Dotfiles management)
- nvim (Text editor)
- xdg-user-dirs
- onefetch
- ark
- 7zip
- timeshift
- grub-btrfs
- inotify-tools
- satty
Terminal and Shell
- kitty (Terminal emulator)
- fish (Shell)
- konsole (KDE terminal)
Browsers
- vivaldi
- vivaldi-ffmpeg-codecs
System Integration
- xdg-desktop-portal-hyprland
- xdg-desktop-portal-gtk
- gnome-keyring
- network-manager-applet
- networkmanager
- nm-connection-editor
- ntfs-3g (NTFS filesystem support)
- firewalld (Firewall management)
- bluez
- bluez-utils
- blueman
- pipewire
- pipewire-pulse
- pavucontrol
- pulseaudio-qt
CLI Tools
- bat (Modern cat)
- lsd (Modern ls)
- btop (System monitor)
- khal (Calendar)
- zoxide (Smart cd)
- lshw (Hardware lister)
- fastfetch (System info)
- tldr (Simplified man pages)
- dysk
- duf
- zellij
- calcurse
Theming and Appearance
- ttf-jetbrains-mono-nerd
- ttf-nerd-fonts-symbols
- ttf-nerd-fonts-symbols-common
- cava (Audio visualizer)
Calculator
- qalculate-gtk
- xwaylandvideobridge-git (Screen sharing)
- hyprshot (Screenshot utility)
- visual-studio-code-bin (Code editor)
- lsplug (Plugin manager)
- waypaper-git (Wallpaper manager)
- pyprland (Python bindings)
- wl-clipboard-history-git (Clipboard history)
- hyprsunset (Night light)
- github-desktop-bin (GitHub client)
- rose-pine-hyprcursor (Mouse Cursor)
- Clone or copy this repository to your machine.
git clone https://github.com/firstp1ck/Hyprland-Simple-Setup.git ~/Hyprland-Simple-Setup
- Copy the dotfiles to the Home directory
cd ~/Hyprland-Simple-Setup
cp dotfiles/ ~/dotfiles
- Update the following files with your system-specific details:
-
Wallpaper Configuration:
Create or edit~/.config/hypr/sources/change_wallpaper.conf
with:# Your wallpaper directory path WALLPAPER_DIR="$HOME/Pictures/Wallpapers" # Your monitor names (check with hyprctl monitors) MONITORS=( "DP-1" "HDMI-A-1" # Add more monitors as needed )
-
Hyprlock Wallpaper Path:
Update thebackground
path in~/.config/hypr/hyprlock.conf
to match your wallpaper directory. -
Display Configuration:
Create or edit~/.config/hypr/sources/displays.conf
to match your monitor setup:monitor=DP-1,2560x1440@144,0x0,1 monitor=HDMI-A-1,1920x1080@60,2560x0,1 # Add more monitor configurations as needed
-
Environment Variables:
Check~/.config/fish/config.fish
for correct language settings:set -gx LANG de_CH.UTF-8 # Change to your locale set -gx LANGUAGE de_CH:en_US # Change to your language preferences
-
Install required Packages
Install all necessary packages from the Pacman Packages and AUR Packages sections using your package manager. -
Run the Stow Script
Execute the stow script to symlink all configuration files to their correct locations:cd ~/dotfiles bash .local/scripts/Start_stow_solve.sh
-
The change_wallpaper.sh
script:
- Checks if hyprpaper is running and starts it if necessary.
- Picks a random wallpaper from your specified directory (excluding the current one).
- Applies the new wallpaper to the specified monitors.
To run the script (Default Key Shortcut: Super(mainMod) + W):
./.config/hypr/change_wallpaper.sh
-
Kitty Terminal Integration
- Multiple layouts (splits, tabs, windows)
- Session management and restoration
- Custom key mappings:
# Quick terminal splits ctrl+y -> new window alt+h/j/k/l -> window navigation ctrl+shift+y -> new tab
-
Fish Shell Enhancements
- Smart command history with search
- Built-in completions and suggestions
- Custom aliases for improved workflow:
alias ls='lsd -lh --group-directories-first' alias top='btop' alias cat='bat'
-
Modern CLI Tools
bat
: Syntax highlighting for file viewinglsd
: Enhanced file listing with iconsbtop
: Resource monitoring with graphsfzf
: Fuzzy finding with previewfd
: Fast file search alternative
- Modify supported file extensions in
change_wallpaper.sh
:# Add or remove file extensions WALLPAPER=$(find "$WALLPAPER_DIR" -type f \( -iname "*.jpg" -o -iname "*.png" -o -iname "*.webp" \))
- Add custom window rules in
~/.config/hypr/sources/windows_and_workspaces.conf
:# Example window rules windowrulev2 = float,class:^(org\.pulseaudio\.pavucontrol)$ windowrulev2 = center,class:^(org\.pulseaudio\.pavucontrol)$ windowrule = workspace 2, ^(vivaldi-stable)$ windowrule = opacity 0.95, ^(Code)$
- Customize shortcuts in
~/.config/hypr/sources/keybindings.conf
:# Media controls bind = , XF86AudioPlay, exec, playerctl play-pause bind = , XF86AudioNext, exec, playerctl next # Screenshot bindings bind = , Print, exec, hyprshot -m output bind = SHIFT, Print, exec, hyprshot -m region
- Add or modify autostart programs in
~/.config/hypr/sources/exec_once.conf
:# User applications exec-once = vivaldi-stable exec-once = [workspace 3] code
The setup provides an interactive monitor configuration workflow:
-
Detection:
# Check available monitors hyprctl monitors
-
Configuration Process:
- Script prompts for monitor names
- For each monitor, specify:
- Resolution (default: 2560x1440)
- Refresh rate (default: 144)
- Position (automatically calculated)
-
Configuration Storage:
- Settings saved to
~/.config/hypr/sources/displays.conf
- Format example:
monitor=DP-1,2560x1440@144,0x0,1 monitor=HDMI-A-1,1920x1080@60,2560x0,1
- Settings saved to
- Configure misc options to remove default settings:
misc { vfr = true # Enable VFR (Variable Frame Rate) for Hyprland force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :( }
For more customization options, refer to:
- Logs: See
~/Linux-Setup.log
- Package verification: The setup script checks and reports missing packages
- Configuration issues: Modular config makes it easy to isolate and fix problems
- Scripts: Helper scripts for common issues (e.g., fix dolphin etc.)
- Verify monitor names and configurations:
# List all monitors and their current status hyprctl monitors # Check for any monitor hotplug events tail -f ~/.local/share/hyprland/hyprland.log | grep -i "monitor"
- If monitors are not detected properly:
- Ensure your GPU drivers are properly installed
- Try adding manual monitor configuration to
hyprland.conf
- Check if your display cable is properly connected
- Wallpaper not changing:
# Check if wallpaper directory exists and has correct permissions ls -la $WALLPAPER_DIR # Verify hyprpaper is running ps aux | grep hyprpaper # Check hyprpaper socket status ls -l /tmp/hypr
- Invalid wallpaper formats:
- Ensure images are in supported formats (jpg, png, webp)
- Check image file permissions
- Run
file
command on images to verify format
- If polkit authentication fails:
# Check if polkit agent is running ps aux | grep polkit # Restart polkit service systemctl restart polkit
- For keyring issues:
- Verify gnome-keyring is installed and running
- Check if PAM is properly configured
- For slow startup or lag:
# Check startup time hyprctl version # Monitor resource usage btop # Check for GPU issues nvidia-smi # For NVIDIA GPUs radeontop # For AMD GPUs
- Reduce animation complexity in
~/.config/hypr/sources/look_and_feel.conf
if needed
- XWayland applications not working:
# Check if XWayland is running ps aux | grep Xwayland # Verify application compatibility echo $XDG_SESSION_TYPE
- Screen sharing issues:
- Ensure xdg-desktop-portal-hyprland is installed
- Check if necessary protocols are supported
- Verify xwaylandvideobridge is running for screen sharing
- Parse configuration errors:
# Check Hyprland logs less ~/.local/share/hyprland/hyprland.log # Validate config syntax hyprctl reload
- Common configuration fixes:
- Check file permissions of config files
- Verify paths in configuration files are absolute
- Ensure no syntax errors in configuration files
- Test if keybindings are registered:
# List all active bindings hyprctl binds # Monitor key events wev # Install wev package if needed
- For non-working shortcuts:
- Check for conflicts with system shortcuts
- Verify correct syntax in keybindings configuration
- Ensure required programs are installed
- If Hyprland fails to start:
- Switch to another TTY (Ctrl+Alt+F2)
- Check logs:
less ~/.local/share/hyprland/hyprland.log
- Try with minimal config:
mv ~/.config/hypr/hyprland.conf ~/.config/hypr/hyprland.conf.bak
For persistent issues:
- Check Hyprland GitHub Issues
- Join the Hyprland Discord
- Review system logs:
journalctl -b -p err
- Hyprland Wiki
- Hyprland GitHub Repository
- Waybar GitHub Repository (Wiki)
- Kitty Homepage (Wiki)
- Fish Shell (Wiki)
- Open issues or pull requests on GitHub
- Suggestions and feedback welcome!
See LICENSE for details.