owen f1275e7870 Fix multi-monitor workspace routing regression, add laptop auto-detect
- Restore desktop DP-3=primary/DP-2=secondary workspace mapping that
  broke when workspace routing switched from name-matching to raw
  geometric ordering.
- Extract shared laptop/desktop detection + output ranking into
  lib-outputs.sh (battery presence selects the profile automatically),
  sourced by both select-workspace.sh and the new apply-outputs.sh, so
  keybind routing and monitor placement can never disagree.
- Add apply-outputs.sh: on the laptop, automatically positions whatever
  external display is plugged in (and re-runs on hotplug via swaymsg
  -t subscribe), making it primary. No-op on the desktop, which keeps
  its static fixed-arrangement config.
2026-08-21 23:08:01 -05:00

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

git clone git@git.noroutes.net:owen/dotfiles.git ~/code/dotfiles
cd ~/code/dotfiles
./install.sh

Useful options:

./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.

S
Description
No description provided
Readme
60 KiB
Languages
Shell 80.1%
Lua 10.5%
CSS 9.4%