the new and improved!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Miranda Marquez 2542865598 fix brightctl on systems with less than 11 brightness steps (ACPI) 4 weeks ago
.config xorg wallpaper 2 months ago
.local fix brightctl on systems with less than 11 brightness steps (ACPI) 4 weeks ago
.Xresources add Xresources, for emacs stuff 1 year ago
.bashrc bashrc: I have no idea what's going on anymore 7 months ago
.emacs-profile add hyprland background generator and supporting files 2 months ago
.emacs-profiles.el add hyprland background generator and supporting files 2 months ago
.gitignore trim gitignore 2 years ago
.gitmodules Xmonad: include stack file and source repos 10 months ago
.xinitrc xinit: EXWM rework and all sorts of stuff. 2 months ago
.zprofile add zsh things 2 years ago Readme: note recent changes and Emacs stuff. 8 months ago

User-level configuration files


a concrete apology

Hi. Welcome to my dotfiles repository.

Here you will find a self-chronicled history of my descent into madness. There's a lot of waffling back and forth with various features, so only read the actual commits if you really feel like it.

For Emacs stuff (which is most of what I do), check out

I do almost all system crafting on my Bedrock Linux machine, but everything is designed to be declarative and deployable. So far this only extends to UNIX-like platforms, but I might eventually figure out Windows file path resolution. Unless I don't. For now, we can make a hardlink in CMD to specific paths and just live in powershell, or don't use windows.

I have a lot of things to say about powershell, but none of them are interesting so I'll keep them to myself for now.

For shell configs, look in .config/zsh. For scripts, .local/bin.

There's a whole bunch of other stuff too, which I'll eventually go and document.

an abstract wish

Self-documenting code does not exist, but some day there will be a self-tangling in every sub-directory; this will essentially form a lazy man's web interface to his files. Until then, you're just gonna have to look at the code and figure out what it does yourself.

The configs

The terminal

Beyond handling true-color and UTF-8 nerd fonts, any terminal is sufficient in my book.

I currently use gnome-terminal on Fedora and Ubuntu (my server and media center both run Ubuntu, kinda), kitty on MacOS, and the totally vanilla default console host on Windows, unless I'm in cygwin/gitbash in which case I use their default mintty or sometimes ConEmu to be fancy.

The shell

I run Eshell, the Emacs shell.

I used to run ZSH. It's decently fast, POSIX compliant, and has zillions of options and menus and plugins, but the scripting just doesn't compare to eshell.


I have copied Luke Smith's config layout of a .zprofile linked to its xdg-compliant location and setting $ZDOTDIR to .config/zsh because having a clean $HOME is nice. the .config/zsh/.zshrc sources functions.zsh and aliases.zsh, and will on first run attempt to install zplug for a few fun extensions.

Upon entering the shell it will run, among silent things, neofetch. While there are sort of alternatives, nothing quite hits the spot that neofetch does, at least for me. This may be partially because I have extended neofetch slightly in my config.conf:

  • When inside Emacs (see env var INSIDE_EMACS) it will show an Emacs ascii logo
  • The "Packages" function is now asynchronous to work better on Fedora or other slow package managers (fight me)
  • There is now a line for the current tmux pane if the current session is in one (otherwise says "N/A")
  • When paired with my .zshrc, it now prints out the previous value of the TERM variable (before tmux sets it to screen)
  • It will print out your currently-booted init system. The Artix and Guix inits work as expected, systemd insults you, Android says 'android-init', and anything else (such as Windows) spews nonsense. (Need to double check the behavior of Windows. Perhaps I should poll for svchost.exe?)
The coreutil aliases

exa, if available, replaces ls. GNU (or even BusyBox) ls is by no means bad, but I like exa's colors better.

rg (ripgrep) replaces grep. Honestly it's rather pointless because I'm not using any of rg's extra features, but hey. Whatever.

tree is now exa -T because colors. Note that if you want pass for password management you still need the real tree installed.

sl I like to have installed so I don't mistype ls.

dc the calculator is worthess. If I type dc it is by accident. Thus, it's remapped to a special surprise here.

The Editor

For my old neovim config (formerly at .config/nvim), check

For my current emacs configuration, check

I have written several Emacs plugins. Most are at, or else at

Other things

Old note on xkb custom mappings

For getting capslock -\> esc and held-capslock -\> super to work in sway, see This will also suffice for any X11 window manager, or any other Wayland compositor that uses XKB instead of doing its own thing.

The file .local/share/supescaps.diff currently contains the instructions in this gist but automated; run doas patch < .local/share/supescaps.diff and it might magically work. You will have to re-do this every upgrade or reinstall of XKB/XCB/xorg/linux. Maybe make it a pacman hook?

^^^ the above doesn't work because I'm an idiot and can't write patch files. Should probably work it into that shell script that will also auto-detect the package manager and install everything automatically.

As of 2020, xkb accepts user-specific keyboard patches. Modifying system files is no longer needed, and was always bad practice. Please don't do it either.