Personal dotfiles for a lightweight Linux desktop built around X11, DoomWM, zsh, Neovim, lf, mpv, qutebrowser, tmux, MPD/ncmpcpp, and a small collection of helper scripts.
The repo is intended to be installed with symlinks, not copied file by file.
Clone the repo and run:
make installmake install does the whole setup:
- removes generated runtime files from the repo, such as logs, zsh dumps, and media-player watch state
- creates the basic XDG directories under
$HOME - symlinks
.zprofile,.config/*,.local/bin, and.local/shareinto$HOME - backs up existing conflicting files into
~/.dotfiles-backup/<timestamp>/ - restores executable bits on scripts
To install somewhere other than $HOME, pass PREFIX:
make PREFIX=/tmp/DoomDots-test installRemove only symlinks that point back to this repo:
make uninstallThis does not restore backups automatically. Backups are kept in
~/.dotfiles-backup/.
Useful targets:
make clean # remove generated logs, caches, and runtime state
make lint # syntax-check shell scripts
make status # show git statusDesktop/session:
DoomWMautostart script in.local/share/doomwm/autostart.sh- X11 startup config in
.config/x11 - compositor config in
.config/picom.conf - notification config in
.config/dunst - redshift config in
.config/redshift - wallpaper helper script:
setbg
Shell and terminal:
- zsh config in
.config/zsh .zprofile- tmux config in
.config/tmux - Alacritty and Ghostty configs
Editor and tools:
- Neovim/LazyVim config in
.config/nvim - lf file manager config and preview scripts in
.config/lf - sxiv key handler in
.config/sxiv - zathura, glow, and neofetch configs
Browser and media:
- qutebrowser config in
.config/qutebrowser - mpv config and scripts in
.config/mpv - MPD, ncmpcpp, and mpdnotify configs
Helper scripts live in .local/bin, including:
compiler,opout,texclear, andgetcomprootfor document workflowsmounterandunmounterfor removable devicessysactfor doommenu-powered session actionspmanfor rendering man pages to PDFlfubfor lf image previewsbooksplitfor splitting audio by timecodesvoid-maintenancefor Void Linux maintenance tasks
These dotfiles assume a Linux desktop with X11. Install only the tools you actually use, but the full setup expects many of the following:
DoomWM doomstatus doommenu doomlock xorg xrandr xset setxkbmap xwallpaper picom
zsh starship tmux neovim lf ueberzug jq bat fzf ripgrep
alacritty ghostty qutebrowser mpv mpd ncmpcpp dunst redshift
zathura glow neofetch sxiv imagemagick ffmpeg mediainfo
Some scripts are distro-specific or workflow-specific:
void-maintenanceis for Void Linux and usesxbps-*,vkpurge, andjournalctl.mounterandunmounterexpect tools such aslsblk,simple-mtpfs,cryptsetup,doommenu, andnotify-send.compilerexpects language/document toolchains depending on the file type being compiled.
The installer backs up conflicts before symlinking, but these are still personal
dotfiles. Read the configs and scripts before running them on a machine you care
about, especially scripts that call sudo, doas, mount devices, or clean
system state.
Runtime files are intentionally ignored by git. This includes qutebrowser local state, mpv watch history, zsh completion dumps, logs, pid files, and similar machine-local files.