Files
dotfiles/CLAUDE.md
T
bgrollemanandClaude Sonnet 5.5 cb80e100f4 Switch to Noctalia v5 and fix niri startup
Fix Mod+T bind (one action per bind), launch noctalia v5 from autostart,
port keybinds to `noctalia msg`, add config.toml, changelog and docs.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-10 11:08:24 +02:00

66 lines
2.5 KiB
Markdown

# 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/` and `~/.profile`:
```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
### Niri (Wayland compositor)
`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
- `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. 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`. After cloning, initialize the submodule:
```bash
git submodule update --init
```
### Shell / profile
`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`.