Add Arch Wayland dotfiles: sway/waybar/kitty/nvim/zsh, idempotent installer

Auto-adapts sway workspace routing to however many monitors are
connected (laptop vs. desktop) instead of hardcoding output names.
This commit is contained in:
2026-08-21 22:59:26 -05:00
commit 5c57ee20f7
35 changed files with 870 additions and 0 deletions
+55
View File
@@ -0,0 +1,55 @@
# Monochrome Arch Wayland dotfiles
Modular dotfiles for a Sway desktop on Arch Linux. The installer can install the
required packages and creates symlinks back to this repository.
## Install
```sh
git clone git@git.noroutes.net:owen/dotfiles.git ~/code/dotfiles
cd ~/code/dotfiles
./install.sh
```
Useful options:
```sh
./install.sh --no-packages # only create links
./install.sh --dry-run # show what would happen
./install.sh --help
```
Existing files are never deleted: conflicting paths are moved to
`~/.dotfiles-backup/<timestamp>/`. Log out and choose Sway after installation.
Use `Alt+Shift+r` to reload Sway and `Alt+d` to open Wofi.
## Layout
- `config/sway/conf.d/` contains focused Sway fragments.
- `home/.zsh.d/*.zsh` is automatically sourced by `home/.zshrc`.
- Neovim settings and mappings live in separate Lua modules.
- The shared monochrome palette with blue accents is repeated in the native format each application
expects, so no template generator is required at runtime.
## Single vs. dual monitor
The same configuration works unmodified on the single-monitor laptop and the
dual-monitor desktop:
- Sway ignores `output`/`workspace ... output` directives that reference a
display name which isn't currently connected, so the desktop-specific
`DP-3`/`DP-2` positioning in `config/sway/conf.d/10-appearance.conf` is a
harmless no-op on the laptop.
- `config/sway/scripts/select-workspace.sh` (bound to the workspace keys)
doesn't hardcode output names. It ranks whatever outputs are connected
left-to-right and maps workspaces 1-10 to the first, 11-20 to the second,
and so on — so it adapts automatically to however many monitors are
plugged in.
## Secrets
Nothing in this repository is or should be a secret. Machine-local
credentials (e.g. the 1Password service-account token read by
`home/.zshrc`) live outside the repo, in files under `$HOME` that
`.gitignore` also excludes defensively should they ever end up in the
checkout.