Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

My Arch setup: niri as the compositor, Noctalia for the bar and shell, kitty as the terminal.

screenshot

What's in here

Component Notes
niri scrollable tiling on Wayland, config split across config.kdl + includes
Noctalia quickshell-based bar, launcher and settings; generates the colour scheme
kitty JetBrains Mono, theme file written by Noctalia
fastfetch classic layout: Doom sprite on the left, system info on the right
bash prompt, aliases, a couple of PATH entries

Colours

There is no hand-picked palette in here. Noctalia derives one from the current wallpaper and writes it out through its template system — kitty/themes/noctalia.conf is the result, and it changes whenever the wallpaper does. Same mechanism feeds noctalia/templates/vivaldi.css for the browser.

That is also why the wallpaper matters: it is the theme. Noctalia is set to wallpaperChangeMode: random, so it rotates through ~/Pictures/Wallpapers and the whole setup re-themes itself as it goes. The one in the screenshot is the DOOM (2016) reverse cover illustration by Sergey Kolesov.

Transparency and blur

Both come from niri, not from the terminal. See niri/window-rules.kdl: focused terminals sit at opacity 0.9, unfocused ones drop to 0.6, each with background-effect { blur true }. Rules exist for kitty, Ghostty and Alacritty so it survives switching terminals.

Animated wallpapers

noctalia/hooks/video-wallpaper.sh is a small addition of my own. If the selected wallpaper has a video file of the same name next to it — foo.png plus foo.mp4 — it plays the video on niri's bottom layer instead of the still. Pick a plain image again and it stops, revealing Noctalia's own wallpaper surface.

The terminal sprite

The Doom sprite in the fetch output comes from doomfetch, which I wrote for exactly this. It reads a Doom IWAD and renders the sprites to ANSI art.

fastfetch cannot run a command to produce its logo, only read a file. So fastfetch/dfetch writes a random sprite to ~/.cache/doomfetch-logo and then calls fastfetch with --logo-type file-raw pointing at it. That is what gives the classic layout with the art on the left and the info block on the right. .bashrc calls dfetch; calling plain fastfetch still works and shows whichever sprite was cached last.

The logo pool is restricted to monsters on purpose — they are tall and narrow, where weapons run up to 45 columns wide and would push the info block off the edge of an 80-something column terminal.

Two other layouts sit next to the active config: config.jsonc.minimal (sprite plus a one-line status bar, no logo column) and config.jsonc.pokemon for pokemon-colorscripts.

Install

git clone https://github.com/lukida99/dotfiles
cd dotfiles
./install.sh --dry-run     # see what would happen
./install.sh               # symlink everything into place
./install.sh kitty niri    # or just some of it

Whatever is already there gets moved to <name>.bak-<date> first, so nothing is lost. Symlinks that already point into this repo are left alone.

Went the other way and edited a config in place? ./sync.sh copies the live files back into the repo, then git diff shows what changed.

Dependencies

niri, quickshell + noctalia-shell, kitty, fastfetch, ttf-jetbrains-mono-nerd (the status line uses Nerd Font glyphs), mpvpaper for animated wallpapers, and doomfetch for the sprite.

About

Arch + niri + Noctalia + kitty. Wallpaper-derived colours, animated wallpapers, Doom sprites in the fetch.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages