Skip to content

Repository files navigation

dotfiles

A Hyprland (Wayland) desktop rice you can use as a starting point. Managed with GNU Stow and themed end to end by wallust, so the whole desktop re-colors itself from the current wallpaper.

This repo holds configuration only. The apps themselves are installed by a separate NixOS system flake (nixos-config). You can use these configs on any setup that has the same programs, you just install them yourself.

What you get

  • Hyprland config with per-monitor workspaces and a runtime HDR toggle.
  • waybar top bar with custom modules: mouse DPI, Mullvad VPN, a notifications bell, an HDR button, and a live cava audio spectrum in place of the volume icon.
  • wofi launcher, eww widgets (the HDR dropdown), swaync notifications, hyprlock / hypridle.
  • Single-source theming via wallust: one wallpaper change re-themes hypr, waybar, wofi, eww, gtk, swaync, and VSCode together.
  • fish shell, ghostty terminal, plus neovim, tmux, zathura, and fastfetch configs.

Before you use it: what to change

These are wired to specific hardware and accounts. Adjust them before or right after stowing:

  • Monitors. hypr/.config/hypr/hyprland.conf hardcodes a two-display layout: DP-1 (2560x1440@144) and DP-2 (HDR via monitorv2), with workspaces pinned to each. Replace the monitor / monitorv2 lines and the workspace = ... monitor: bindings with your own outputs (hyprctl monitors lists them).
  • HDR. The HDR toggle (waybar button, eww dropdown, hdr-ctl) targets DP-2. Point it at your HDR output or remove it if you have none.
  • Keyboard layout. kb_layout = au in hyprland.conf. Set your own.
  • VPN. The waybar Mullvad module and bin/mullvad-ctl assume Mullvad is installed and logged in. Remove the module if you do not use it.
  • Wallpaper. Hyprland loads ~/.cache/current_wallpaper at start. Set one with the Super+Shift+W picker (bin/wallpaper-picker) so wallust has something to theme from.

How it works

Each top-level directory is a stow package whose contents mirror their location under $HOME:

dotfiles/
  hypr/.config/hypr/...
  waybar/.config/waybar/...
  fish/.config/fish/...
  tmux/.tmux.conf
  ...

Running stow symlinks those paths into ~, so ~/.config/<app> points back into this repo. Editing a live config therefore edits the repo directly, so just commit to persist.

Install

git clone https://github.com/Mooshieblob1/dotfiles ~/dotfiles
cd ~/dotfiles

# stow every package (back up / move any conflicting real files first)
stow -t ~ hypr waybar wallust fish wofi eww swaync fastfetch gtk-3.0 ghostty nvim zathura tmux bin

Re-stow a single package after adding files: stow -R -t ~ <pkg>.

After editing configs:

  • hyprhyprctl reload
  • waybarpkill -SIGUSR2 waybar

Packages

Package Target
hypr ~/.config/hypr
waybar ~/.config/waybar
wallust ~/.config/wallust
fish ~/.config/fish
wofi ~/.config/wofi
eww ~/.config/eww
swaync ~/.config/swaync
fastfetch ~/.config/fastfetch
gtk-3.0 ~/.config/gtk-3.0
ghostty ~/.config/ghostty
nvim ~/.config/nvim
zathura ~/.config/zathura
tmux ~/.tmux.conf
bin ~/.local/bin

Theming (wallust)

wallust is the single source of truth for colors. On a wallpaper change it renders the templates in wallust/.config/wallust/templates/ into each app's color file and runs a reload hook (waybar SIGUSR2, swaync-client --reload-css, hyprctl reload, restart thunar).

Re-render manually:

wallust run "$(cat ~/.cache/current_wallpaper)"

The generated color files are gitignored, so never edit them by hand. Edit the matching template instead and re-render. The mapping:

Generated file (gitignored) Source template
hypr/.config/hypr/colors.conf hyprland-colors.conf
waybar/.config/waybar/colors.css waybar-colors.css
waybar/.config/waybar/calendar-colors.jsonc waybar-calendar.jsonc
wofi/.config/wofi/colors.css wofi-colors.css
eww/.config/eww/colors.scss eww-colors.scss
swaync/.config/swaync/colors.css swaync-colors.css
~/.themes/wallust/gtk-3.{0,20}/gtk.css flatcolor-gtk3*.css
VSCode color theme vscode-color-theme.json

Notes and gotchas

  • hypr uses per-file symlinks, not a folded directory symlink. A running Hyprland watches its config and instantly regenerates a stub hyprland.conf if the file disappears, so the directory can't be safely re-folded while it's running. Replace a hypr symlink atomically (ln -s to a temp name, then mv -T) rather than delete-then-recreate.
  • swaync colors are wallust-generated. The swaync package stows a static config.json and style.css; only colors.css (which style.css imports) is rendered from the wallust template swaync-colors.css and gitignored.
  • bin package (~/.local/bin): the waybar/eww control scripts. hdr-ctl (HDR toggle), idle-ctl (the coffee button that swaps hypridle configs), and mullvad-ctl (VPN status/menu). Waybar and eww call them at ~/.local/bin/<name>, which stow symlinks back into this package.
  • HDR control (eww): a waybar button opens an eww dropdown for DP-2 with an HDR on/off toggle and a max-luminance slider. The logic lives in hdr-ctl (in the bin package), which rewrites the hyprland-sourced state fragment hypr/.config/hypr/hdr.conf and reloads Hyprland. monitorv2 luminance keys can't be re-applied via hyprctl keyword. eww/layer-shell popups get no outer box-shadow (it clips to a hard rectangle), so style them with background, border, and border-radius only and keep the window root transparent.
  • Gitignored: the wallust outputs above, fish/.config/fish/fish_variables (machine-specific), *.bak, and Nix result artifacts.

Credits

ghostty, nvim, zathura, and tmux configs originated from szymonwilczek/dotfiles.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages