Files
dotfiles/CLAUDE.md
T
bgrollemanandClaude Opus 5.5 13b7ae6c80 Add Hyprland config to dotfiles
- Pin workspaces 1-5 to DP-1 (native 5120x1440), 6 to HDMI-A-1
- Autostart work apps on ws1 and chat apps on ws2, loading notification
- Centered master layout (25/50/25) on the ultrawide, lone window at ~60%
- Resize, group and close keybinds; SUPER+Q closes window

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 10:00:11 +01:00

73 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## What This Repo Is
Personal dotfiles for a Linux desktop, currently running **Niri** (Wayland compositor) with **Noctalia** as the desktop shell. There are legacy X11 configs (i3, polybar, picom) that are no longer the primary setup.
## Deployment
Configs are deployed by symlinking into `~/.config/`, `~/.profile` and `~/.claude/settings.json` (fish is linked per file):
```bash
bash ~/.dotfiles/setup.sh
```
The script is idempotent — it skips links that already exist. After adding a new top-level config directory, add a `configlink <dirname>` line to `setup.sh`.
## Installing Desktop Applications
```bash
cd ansible.desktop
./install-desktop-toolsontech.sh
```
This installs ansible if missing, then runs the playbook. Tasks are split by category in `ansible.desktop/tasks/`.
## Architecture
### Hyprland (Wayland compositor, current)
Single Lua config: `hypr/hyprland.lua` (Hyprland 0.56+, API stubs in `/usr/share/hypr/stubs/hl.meta.lua`). Apply with `hyprctl reload`, check `hyprctl configerrors`.
Workspaces 1–5 are pinned to DP-1, 6 to HDMI-A-1. Startup apps are placed per workspace by window class rules.
### Niri (Wayland compositor, previous)
`niri/config.kdl` is just includes — the real config lives in `niri/cfg/`:
- `input.kdl` — keyboard/mouse/touchpad settings
- `keybinds.kdl` — all keybindings
- `layout.kdl` — gaps, border, window sizing
- `display.kdl` — monitor layout and scaling
- `autostart.kdl` — apps launched on compositor start
- `rules.kdl` — window-specific rules
- `workspaces.kdl` — named workspaces
- `animation.kdl`, `misc.kdl` — tweaks
Edit the relevant split file, not `config.kdl` itself.
### Noctalia (desktop shell / bar)
Runs **Noctalia v5** (`noctalia`, native). Config is `noctalia/config.toml` (TOML, hot-reloaded); validate with `noctalia config validate`.
`noctalia/settings.json` is the legacy v4 config (kept for rollback, still tweaked occasionally). See `docs/noctalia-v5.md` for details and `CHANGELOG.md` for history.
### Neovim
Uses **LazyVIM** framework. Entry point is `nvim/init.lua` which bootstraps lazy.nvim via `nvim/lua/config/lazy.lua`.
- `nvim/lua/config/` — core config (options, keymaps, autocmds)
- `nvim/lua/plugins/` — plugin overrides/additions on top of LazyVIM defaults
- `nvim/lua/colorschemes/` — colorscheme configs
LazyVIM handles most plugin management; only deviations from LazyVIM defaults need entries in `lua/plugins/`.
### tmux
`tmux/tmux.conf` + catppuccin theme as a git submodule at `tmux/plugins/catppuccin/tmux`. The agent-status indicators call `~/.local/bin/tmux-window-agent-status`, which is **not** in this repo. After cloning, initialize the submodule:
```bash
git submodule update --init
```
### Shell / profile
`fish/` holds the fish config (`config.fish`, `conf.d/ssh-keychain.fish`); machine-specific vars go in untracked `~/.config/fish/local.fish`.
`profile` is symlinked to `~/.profile`. It sets up SSH keys via `keychain` and defines the `notes` alias (attaches/creates a tmux session with nvim opening `~/Notes/Personal`).
`zoxide.bash` provides shell integration for zoxide (directory jumping) — sourced separately, not via `profile`.