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

3.2 KiB
Raw Blame History

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

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:

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.