Tip
Use setup.sh for automated installation, or dotfiles-manager.sh for managing symlinks.
Note
Built on Nobara 43. Some commands are Fedora/Nobara specific.
hyprland+hyprland-devel— compositorkitty— terminalnautilus— file managercliphist+wl-clipboard— clipboard historyhyprpaperhyprpickerhypridlehyprlock— wallpaper, color picker, idle daemon, lock screenswaync— notification centergrimslurpswappy— screenshotstesseract— OCR from screenshotsgpu-screen-recorder— screen recordingswayosd— OSD for volume/brightnesswaybar— status barrofi— app launcher, menusfirefox— browserbrightnessctlplayerctl— brightness and media controlpavucontrol— audio mixerpolkit-gnome— polkit agentgnome-calendargnome-keyring— calendar, secretspowerprofilesctl— power profilespython3+python3-pillow— avatar generationjq— JSON parsinginotify-tools— dotfile hot-reload daemon
sudo dnf copr enable lionheartp/Hyprland # hyprland
sudo dnf copr enable erikreider/SwayNotificationCenter # swaync
sudo dnf copr enable washkinazy/wayland-wm-extras # swayosdsudo dnf install hyprland hyprland-devel kitty nautilus cliphist \
hyprpaper hyprpicker hypridle hyprlock swaync grim slurp swappy tesseract \
wl-clipboard swayosd waybar firefox rofi brightnessctl playerctl \
pavucontrol polkit-gnome gnome-calendar gnome-keyring jq \
powerprofilesctl gpu-screen-recorder inotify-tools \
fish neovim ranger python3 python3-pillowbash <(curl -fsSL https://raw.githubusercontent.com/Gren-95/hyprland-dots/main/install.sh)This will clone the repo to ~/dotfiles and run the setup script automatically.
git clone https://github.com/Gren-95/hyprland-dots.git ~/dotfiles
cd ~/dotfiles
chmod +x setup.sh
./setup.shThe setup script will:
- Check for missing dependencies and offer to install them
- Create symlinks for all config directories
- Create required user directories (
~/Pictures/Screenshots,~/Music, etc.) - Set up script permissions
- Configure GTK theme and SwayOSD
- Optionally generate an initials avatar for the lock screen
Put your wallpapers in ~/Pictures/wallpapers/. They are preloaded automatically on startup — no manual config needed. The lock screen background also updates to the current wallpaper automatically.
$EDITOR hypr/hypridle.conf$EDITOR hypr/modules/keys.confPress Super+F1 in session to view all active keybinds.
sudo systemctl enable --now swayosd-libinput-backend.serviceSuper+Ctrl+R — toggles screen recording. Recordings are saved to ~/Videos/Recordings/.
Requires gpu-screen-recorder.
wayvnc is an optional VNC server for remote desktop access.
Start/stop: Super+Shift+R — toggles wayvnc on/off.
Connect: Use any VNC viewer and connect to <local-ip>:5900.
Security: Default config binds to 0.0.0.0 with no auth — suitable for trusted LAN only. For remote access, use Tailscale.
To add password auth, edit wayvnc/config:
enable_auth=true
username=user
password=yourpasswordThese run automatically on login via restart.sh and restart cleanly on each session.
| Script | Purpose |
|---|---|
battery-notify.sh |
Notifies at 20% and 10% battery; dismisses alert when plugged in |
dotwatch.sh |
Watches dotfiles for changes and hot-reloads affected services |
media-inhibit.sh |
Prevents screen sleep during media playback |
network-notify.sh |
Notifies on network connect/disconnect |
swayosd-monitor.sh |
Monitors input events for OSD triggers |
Edits to dotfiles are picked up automatically without restarting your session:
| File changed | Action |
|---|---|
waybar/style*.css, waybar/config* |
Restart waybar |
swaync/style.css |
Reload swaync CSS |
swaync/config.json |
Reload swaync config |
hypr/hyprland.conf, hypr/modules/* |
hyprctl reload |
hypr/hypridle.conf |
Restart hypridle |
hypr/hyprlock.conf |
Notification (applies on next lock) |
swayosd/style.css |
Restart swayosd-server |
gtk-3.0/gtk.css |
Notification (restart GTK apps to apply) |
Automatically uploads ~/Pictures/ to your Immich server every hour. Notifies when new photos are uploaded.
Setup:
npm install -g @immich/cli --prefix ~/.npm-global
immich login https://your-immich-server/api YOUR_API_KEYAuth is stored in ~/.config/immich/auth.yml (gitignored).
Syncs your Jellyfin music library to ~/Music/ every 2 hours. Jellyfin is the master — tracks removed from Jellyfin are deleted locally. Notifies after each sync with a download/skip/remove summary.
Setup:
bash ~/.config/scripts/jellyfin-music-sync.shYou will be prompted for your Jellyfin server URL and API key on first run. Config is stored in ~/.config/jellyfin/sync.conf (gitignored). To reconfigure, delete the file and run the script again.
./dotfiles-manager.sh status # Check all symlink states
./dotfiles-manager.sh backup # Create symlinks (backs up existing dirs)
./dotfiles-manager.sh backup --dry-run # Preview without making changes
./dotfiles-manager.sh fix # Fix broken or inconsistent symlinks
./dotfiles-manager.sh undo # Restore backups and remove symlinks