1
0
Fork
You've already forked dotfiles
0
A collection of my personal shell configuration files, or "dotfiles"
  • Emacs Lisp 28.6%
  • Lua 18.1%
  • QML 15.2%
  • Shell 13.4%
  • Vim Script 13.1%
  • Other 11.6%
Find a file
2026年06月01日 08:20:29 -05:00
.doom.d cleanup sway conf 2023年02月12日 10:28:57 -06:00
darkman revamp 2025年12月30日 15:02:53 -06:00
fnott cleanup 2026年05月18日 18:43:59 -05:00
fontconfig/conf.d systemd 2026年01月06日 15:55:09 -06:00
foot overhaul cleanup 2026年05月17日 18:11:43 -05:00
fuzzel dotfile overhaul 2025年12月29日 18:03:08 -06:00
gammastep update 2025年03月20日 09:13:57 -05:00
hypr overhaul cleanup 2026年05月17日 18:11:43 -05:00
kanshi update changes 2021年10月12日 17:26:02 -05:00
mako revamp 2025年12月30日 15:02:53 -06:00
mutt make dotfiles slav 2026年05月30日 20:16:35 -05:00
niri survival under occupation 2026年06月01日 08:20:29 -05:00
nvim make dotfiles slav 2026年05月30日 20:16:35 -05:00
quickshell cleanup 2026年05月29日 10:23:15 -05:00
rofi commit 2022年05月29日 13:25:36 -05:00
scripts make dotfiles slav 2026年05月30日 20:16:35 -05:00
sway add hyprland config 2024年12月13日 14:40:29 -06:00
swaylock ignore dirty 2023年12月26日 21:57:18 -06:00
systemd docs 2026年05月18日 17:14:44 -05:00
vim fixup 2026年05月19日 12:40:32 -05:00
waybar docs 2026年05月18日 17:14:44 -05:00
yambar cleanup 2026年05月29日 10:23:15 -05:00
.gitignore overhaul cleanup 2026年05月17日 18:11:43 -05:00
.gitmodules make dotfiles slav 2026年05月30日 20:16:35 -05:00
desktop.png wallpaper 2025年12月30日 15:58:50 -06:00
gpg-agent.conf dotfile overhaul 2025年12月29日 18:03:08 -06:00
HALL_OF_SHAME.md survival under occupation 2026年06月01日 08:20:29 -05:00
LICENSE Create LICENSE 2017年12月08日 14:02:00 -05:00
Makefile make dotfiles slav 2026年05月30日 20:16:35 -05:00
README make dotfiles slav 2026年05月30日 20:16:35 -05:00
screenrc clean some stuff up 2023年12月28日 09:59:40 -06:00
strip.exiv2 doom 2021年06月16日 13:35:14 -05:00
Xdefaults vim plugin submodules 2017年09月03日 15:40:18 -04:00
xinitrc overhaul cleanup 2026年05月17日 18:11:43 -05:00
zshrc survival under occupation 2026年06月01日 08:20:29 -05:00

dotfiles
========
These are my dotfiles, or in other words, a collection of configuration for
various programs. All stored in a single repository. The idea is you clone a
single repo, and can install the configuration using various make targets.
Flagship support is Arch Linux. WSL and Apple are at your own risk — see Apple section below.
REQUIREMENTS
------------
 git, GNU make, and the following programs from your package manager:
 Compositor / Shell
 niri scrollable tiling Wayland compositor
 foot terminal emulator (responds to SIGUSR1/SIGUSR2 for theming)
 quickshell QML-based status bar (network, audio, battery)
 pipewire audio system
 Notifications / Launcher
 fnott lightweight Wayland notification daemon
 fuzzel application launcher and dmenu replacement
 fyi Wayland notification client (battery warning script)
 Status Bar
 waybar status bar (run make waybar separately, not in make all)
 sass SCSS compiler (builds waybar CSS)
 Theming
 theme.sh terminal theme switcher (color extraction)
 darkman day/night coordinator
 Network
 iwd Intel Wireless Daemon (no NetworkManager)
 Shell
 doas privilege escalation (aliased over sudo; opendoas)
 eza modern ls replacement (ls alias)
 kubecolor colorized kubectl (required by kubectl wrapper)
 zsh-syntax-highlighting Arch: /usr/share/zsh/plugins/; adjust for other distros
 zsh-autosuggestions Arch: /usr/share/zsh/plugins/; adjust for other distros
 Optional
 menu-iwd Wifi menu selector script; clone to ~/menu-iwd
 https://codeberg.org/bagnaram/menu-iwd
 inhibit-bridge Bridges org.freedesktop.ScreenSaver D-Bus Inhibit/
 UnInhibit calls (used by Firefox/Chrome/etc. during
 video playback) to systemd-logind idle inhibits, so
 swayidle and other logind-aware idle daemons respect
 them on i3/sway/niri. Source from neighbor Vadim;
 build and place at ~/build/inhibit-bridge. If the
 source is unavailable, any FOSS daemon implementing
 the same ScreenSaver-to-logind bridge fills the role.
 wlclock Wayland overlay clock shown by niri at startup
 build and place at ~/build/wclock/wlclock/build/wlclock
 xscreensaver-pipes Screensaver used by swayidle on lock/idle
 build and place at ~/build/wscreensaver/wayland/build/xscreensaver-pipes
 Dracula PRO Paid terminal/editor colorscheme (https://draculatheme.com/pro)
 Place foot theme at foot/private/dracula-pro.ini
 Place nvim themes at nvim/colors/dracula_pro_*.vim
 Falls back to habamax if absent.
INSTALLATION
------------
 1. Install packages (Arch Linux)
 pacman -S niri foot quickshell pipewire fnott fuzzel fyi \
 darkman iwd eza zsh-syntax-highlighting \
 zsh-autosuggestions gettext dart-sass qt6ct \
 rofimoji pass brightnessctl pamixer waybar \
 swaylock swayidle gnupg
 paru -S theme.sh opendoas kubecolor swaylock-plugin
 2. Clone the repository
 git clone https://codeberg.org/bagnaram/dotfiles.git
 cd dotfiles
 3. Install everything
 make all
 NOTE: waybar, gpg-agent, and systemd services are not included
 in make all. Run separately when ready:
 make waybar
 make gpg-agent
 make systemd
 Other specific targets:
 make niri
 make nvim
 make darkman
 4. Initialize nvim plugins
 make nvim-pathogen
 5. To uninstall (removes symlinks and generated theme files)
 make clean
THEMING PIPELINE
----------------
 Light and dark configs are generated at install time from two mechanisms:
 envsubst templates
 Files ending in .env are processed with colors from theme.sh to produce
 .light and .dark variants. Applies to: fnott, fuzzel, niri, swaylock.
 SASS
 waybar/style.scss is compiled with theme colors injected as SCSS variables.
 Produces style.css.light and style.css.dark.
 The active variant is selected at runtime by symlinking:
 ~/.config/waybar/style.css -> style.css.light (or .dark)
 Light/dark theme names are set at the top of Makefile:
 LIGHT_THEME := gruvbox
 DARK_THEME := dracula
 darkman calls scripts/day_night_cycle.sh on each transition, which signals
 foot (SIGUSR1=dark, SIGUSR2=light) and reloads fnott config.
NVIM
----
 Plugins managed via pathogen and git submodules under nvim/bundle/.
 No plugin manager. Initialize or update all plugins with:
 make nvim-pathogen
 Config split across nvim/init.vim (vimscript) and nvim/config/*.lua (lua).
OPSEC: strip.exiv2
------------------
 Strips GPS metadata from images before sharing. Used via the strip alias:
 strip photo.jpg
 Removes all Exif.GPSInfo.* tags. No coordinates leave the machine.
GPG / YUBIKEY SSH
-----------------
 GPG subkeys provide SSH access. Private keys live only on the YubiKey.
 1. Link GPG agent config
 make gpg-agent
 2. Learn card keys
 echo 'scd learn --force' | gpg-connect-agent
 The third line (OPENPGP.3) is the keygrip for the authentication key.
 Add it to ~/.gnupg/sshcontrol.
MUTT
----
 Account files are gitignored. Create your own at mutt/account.<name>
 and update the source line in mutt/muttrc to match.
APPLE
-------------------------------------
 This repo supports macOS. That sentence was painful to write.
 The author is a Wayland/Linux user. This support exists because a corporate
 employer issued an Apple laptop and called it non-negotiable. It is not an
 endorsement. It is not a migration. It is survival under occupation.
 What is lost: niri, foot, fnott, fuzzel, darkman, waybar, quickshell,
 swaylock, gammastep, systemd, XKB, pipewire. The entire reason this repo
 exists. Gone. Replaced by a walled garden with no package manager and
 rounded corners on everything.
 What survives: nvim, zsh, mutt, gpg/yubikey, screen, mise, fontconfig.
 The essentials. Enough to work. Not enough to be happy about it.
 Terminal: install WezTerm or raTTY manually. foot is Wayland-only.
 foot will be missed. dnkl wrote something beautiful.
 Compositor: macOS has one. You cannot configure it. You cannot tile with it.
 You will use Rectangle or Aerospace and pretend it is enough. It is not.
 Package manager: brew. It is fine but it is not pacman. 
 REQUIREMENTS (macOS)
 brew install neovim neomutt mise eza fzf gpg pinentry-mac \
 zsh-syntax-highlighting zsh-autosuggestions \
 sass/sass/sass fontconfig
 INSTALLATION (macOS)
 make all-apple
 The author reserves the right to return to Linux at the earliest
 opportunity. The Wayland targets remain in this repo, maintained and ready,
 for when that day comes. They are not dead. They are waiting.
WSL
-------------
This repo also supports WSL but much more at your own risk. Please see make targets for WSL specifics and tread carefully.
CUSTOMIZATION
-------------
 Modify files within the dotfiles directory directly. For templated configs
 (fnott, fuzzel, niri, swaylock, waybar) edit the *.env / *.scss source
 files, not the generated output in ~/.config/.