hyprland
0 forks
Stuff for my hyprland desktop(s) as configured in CachyOs/Arch.
id: 21
1,509 Lines
  • Lua 34.1%
  • CSS 23.2%
  • Python 21.8%
  • Markdown 10.1%
  • Shell 8.3%
  • XML 2.5%
README.md

Dennis' CachyOS / Hyprland Dotfiles

A daily-driver Wayland setup that's dark, opinionated, and occasionally clever.

Running CachyOS with Hyprland because X11 is a museum exhibit and GNOME is a lifestyle choice I'm not ready to make. This repo is the entire home directory — clone it over a fresh install and you're 90% of the way to my desktop. The other 10% is questionable taste in wallpapers.


The Stack

LayerChoiceWhy
OSCachyOSArch, but someone actually tuned it
CompositorHyprland (Lua config)Tiling + eye candy without the i3 regret
ShellFishAutocomplete so good it feels like cheating
TerminalAlacrittyGPU-accelerated, zero config needed
BarWaybarSpotify album art in the tooltip, because why not
NotificationsswayncNotification center that doesn't get in the way
LauncherWofiRofi's Wayland cousin, styled to match everything
Lock Screenhyprlock + hypridleBlurred wallpaper + big clock. Simple.
Wallpaperhyprpaper + waypaperSensible
Screenshotsgrim + slurpRegion, monitor, window, full — all piped to clipboard
ClipboardcliphistHistory that actually works on Wayland
Color PickerhyprpickerClick a pixel, get a hex code. That's it.

Custom Tools

Battery Charge Limiter (~/.config/hypr/tools/battery-limit.py)

A GTK4 / libadwaita GUI for TLP's charge thresholds. Slider-based UI with presets (60% longevity, 80% balanced, 100% full), writes to /etc/tlp.conf via pkexec, and reloads TLP. Because editing config files to save your battery is ironic.

Spotify Integration (~/.config/waybar/scripts/playerctl.sh)

The Waybar media module follows Spotify via playerctl --follow, injects album art into Waybar's CSS as a tooltip background image, and fires desktop notifications with the album cover as the icon. It caches art URLs to avoid re-downloading on every poll. The album art CSS is dynamically written to album_art.css and Waybar reloads its style on change.

It's a Rube Goldberg machine for showing what song you're playing in your status bar. And it's beautiful.


Design Language

Black everything. The bar, the notification center, the launcher — all #000000 backgrounds with rgba(255,255,255,0.02) module pills. The accent is a coral-red gradient (#c9545d#e06b75) used for active workspace buttons, close buttons, DnD toggles, and selected launcher entries.

Font: MesloLGS NF everywhere — Waybar, swaync, Wofi. Consistent Nerd Font glyphs across every surface.

Borders: Hyprland active borders use a rgba(33ccffee)rgba(00ff99ee) gradient at 45 degrees. Inactive borders are a muted rgba(595959aa). Subtle enough to not scream, visible enough to know where you are.


Multi-Host Monitor Config

monitors.lua reads the hostname and picks the right display config:

HostnameOutputResolutionNotes
chpttoeDP-12880x1800@120Laptop, 1.25x scale, 10-bit
tchndrmHDMI-A-33440x1440@120Desktop ultrawide, 10-bit
*eDP-11920x1080@60Safe fallback

No manual switching. The config figures out where it is and adapts.


Workspace Rules

Apps auto-assign to workspaces so muscle memory does the rest:

WorkspaceApps
1Firefox, Chrome, Chromium
2VS Code, VSCodium, JetBrains IDEs
9Vesktop (Discord)
10Spotify

KeePassXC floats with dim-around because password managers deserve their own moment.

Smart gaps: Single-window workspaces get zero gaps and zero borders. The moment you split, gaps come back. Less visual noise, more focus.


Keybindings (The Good Ones)

BindingAction
Super + QTerminal
Super + RApp launcher
Super + VClipboard history
Super + CColor picker
Super + NNotification center
Super + SScratchpad (special workspace)
Super + GToggle window grouping
Super + Alt + VToggle floating
Super + FToggle fullscreen
Super + Ctrl + PPin window to all workspaces
Super + Shift + RReload Hyprland + restart Waybar
PrintScreenshot region to clipboard + file
Shift + PrintScreenshot full screen
Super + PrintScreenshot current monitor
Super + Shift + PrintScreenshot active window
Ctrl + Alt + LLock screen

Plus the usual: Super + [1-0] for workspaces, Super + arrows for focus, Super + Shift + arrows for move/resize.


Shell Setup

Fish is the primary shell, Bash is kept in sync for compatibility. Both share the same philosophy: aliases for everything you type more than twice.

Highlights:

  • cp is rsync -ah --progress (progress bars on copies, because waiting blind is anxiety)
  • rm is trash-put -i (undo-able deletes, with confirmation)
  • cat is bat --style=auto (syntax highlighting in your cat)
  • .. / ... / .... / ..... (the ladder of regret — go up 1-4 directories)
  • gitc "msg" is git add -A && git commit -m "msg" (lazy commits)
  • gitcp "msg" is commit + push in one command
  • Auto-ls after every cd (because you always type it anyway)
  • up N is go up N directories
  • whatsmyip is internal + external IP in one shot

Idle and Power

hypridle handles the power cascade:

  • 4.5 min — dim screen to 10%
  • 5 min — lock screen
  • 5.5 min — displays off
  • 30 min — suspend

Wakes on mouse movement or keypress. Lock screen shows a blurred wallpaper with a big clock and date.


Installation

git clone <this-repo> ~

That's it. The .gitignore is * (ignore everything) and files are force-added, so only tracked dotfiles are managed. Your ~/Downloads and ~/Documents are safe.

You'll want these packages (CachyOS ships most of them): hyprland waybar wofi swaync alacritty dolphin hyprpaper hyprlock hypridle grim slurp cliphist hyprpicker playerctl brightnessctl wl-clipboard bat trash-cli rsync fish

For the custom tools: python-gobject + libadwaita (battery limiter), tlp (charge thresholds).


Works great, for me.

Please wait...
Connection lost or session expired, reload to recover
Page is in error, reload to recover