Commit graph dotfiles/bootstrap.sh
Author SHA1 Message Date
Jonny Barnes
6b3ab420ad
Follow light/dark appearance in the tmux status bar
The status bar was five hardcoded tangere-dark colours, so in light mode the
pale #fdfdd9 text landed on a white background and became unreadable. That was
the real reason Auto appearance "never worked with the terminal setup" — ghostty
was switching correctly all along.

Split the colours into tmux-light.conf and tmux-dark.conf. The dark file is
extracted byte-exact from the previous config; the light file is the same layout
with each colour swapped for the tangere-light palette entry at the same index,
so roles are preserved (text on an accent uses the theme background, which
inverts from #1a2938 to #fdfdfa).

tmux 3.6+ learns the terminal's theme over OSC 2031, so this keys off the
appearance change itself rather than a schedule, and behaves identically whether
that came from Auto at sunrise/sunset or a manual toggle. Three hooks: the two
theme hooks react to a change, and client-attached covers a client attaching
mid-way, since those two only fire on a change. Sourcing is idempotent so the
overlap is harmless.

This replaces the dark-mode-notify launchd agent removed in 59d5622, which could
not have worked: it re-sourced .zshrc inside each shell, but the status bar
belongs to the tmux server.

Verified by round trip: flipping to Light switched #{client_theme} and applied
the light palette, and returning to Dark restored it. A running nvim does not
follow a live change (docs: the TUI sets 'background' on startup); noted in the
README.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 12:38:16 +01:00
Jonny Barnes
583bbaa533
Move git identity to an included ~/.gitconfig.local
~/.extra ran five `git config --global` writes on every shell startup, to
re-assert identity and signing after bootstrap.sh copies gitconfig over
~/.gitconfig. The dark-mode-notify agent fires on wake/unlock and runs
`pkill -usr1 zsh`, so every shell re-sources .zshrc — and therefore .extra —
simultaneously. `git config` locks with O_EXCL and has no retry or timeout for
config files, so the concurrent writes raced and printed:

    error: could not lock config file /Users/jonny/.gitconfig: File exists

Identity and signing now live in an untracked ~/.gitconfig.local, included
last from gitconfig so it wins over anything above. bootstrap.sh seeds it from
gitconfig.local.template only when absent, so re-runs never clobber the real
signing key. No git writes happen on shell startup at all now.

Verified: fully-resolved config is unchanged apart from the new include.path;
author and committer both resolve from config with no GIT_* env vars set;
existing commits still verify. 12 concurrent sources of .extra are silent,
where the old version produced 27 lock errors.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 09:57:19 +01:00
Jonny Barnes
509b16f543
Add gitsigns via vim.pack, track the pack lockfile
Restores plugin management after the v0.12 config rewrite dropped the
earlier `vim.pack.add` calls. Plugins now live in `config/plugins/`,
one file per plugin, so adding the next is a single require.

Sets `<leader>` to Space for the gitsigns hunk mappings, and pins
'signcolumn' open so git and diagnostic signs don't shift text.

The lockfile moves into the repo and is symlinked by bootstrap.sh, as
the vim.pack docs recommend, giving reproducible plugin revisions
across machines and a rollback path via git. vim.pack writes it with a
truncating open, so it follows the symlink rather than replacing it.

Drops the orphaned nvim-tree entry, unreferenced since the rewrite.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 13:57:02 +01:00
Jonny Barnes
c7236f5a12
Switch Claude Code statusline to isaacaudet variant, show 7d usage
Add statusline.isaacaudet.sh and point the bootstrap symlink at it,
keeping the burnrate and original variants alongside.

The script already had a 7d rate-limit bar but gated it behind the
`full` width tier, so it only appeared at >=150 columns. Ungate it so it
renders wherever the 5h bar does, mirroring it exactly. The `full`-only
extra_usage bar is unchanged.

To pay for the ~14 columns that costs, the reset timestamps are now
`full`-only (the 5h one previously also showed at `wide`), and the model
name is shortened at `split` as well as `narrow` - with the 7d bar added
a `split` line came to 82 visible columns against a 76-column budget and
wrapped.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 11:54:05 +01:00
Jonny Barnes
644c52d4b4
Switch Claude Code statusline to burnrate variant
Keep the previous statusline as statusline.original.sh and add
statusline.burnrate.sh from Gui-Gou/claude-statusline-burnrate, which
shows weekly/5h plan usage and a sustainable burn rate.

bootstrap.sh now links the burnrate script unconditionally - the old
`test -L` guard would have left an existing symlink pointing at the
previous script. jq is a hard dependency of the new script, so add it
to brew.sh.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 14:40:40 +01:00
Jonny Barnes
d3b54ea921
Updated neovim config for v0.12 2026-05-31 20:33:23 +01:00
Jonny Barnes
f9e4c65001
Add claude statusline to my dotfiles 2026-03-28 16:51:14 +00:00
6d645999f2
Add phpactor support to neovim with default settings 2026-02-15 17:03:34 +00:00
ffd895b1fe
Use pack.add for plugns
Needs neovim >= 0.12
2026-02-13 22:25:08 +00:00
5ad13bcd09
Initial tidy up of neovim config 2026-02-13 21:06:00 +00:00
6c23a03412
Improvements to lazygit/tmux/ghossty configs 2026-01-30 14:42:51 +00:00
b3a2238d30
Removing vim configuration 2026-01-15 18:26:29 +00:00
88a8dd1698
Update ghostty config to use custom Tangere theme 2025-10-26 11:18:04 +00:00
761378d9b8
Add a script to copy torrent files 2025-03-16 16:13:47 +00:00
d73fbeeeb3
Add ghostty configuration 2025-01-18 21:18:34 +00:00
753f55ce44
Added some NeoVim modules
- Oil: file listings
  - Nvim Web Devicons: adds some icons for Oil
  - gitsigns: show git modifications inside nvim
2024-07-12 13:07:43 +01:00
6ce632755c
USe sheldon to load plugins and source extra commands 2024-07-06 11:44:31 +01:00
c5be5a5ecc
I do not use ncmpcpp anymore 2024-06-25 19:35:16 +01:00
2d113f659a
Remove curlrc file, not needed anymore 2024-06-25 19:33:45 +01:00
8e6dffbd9b
Switch to oh-my-posh prompt 2024-06-10 20:37:31 +01:00
545d574334
Move gpg config into dotfiles repo 2024-04-29 18:22:54 +01:00
a6d0065c32
Check directories exist during sym-linking step 2023-05-21 18:23:22 +01:00
42f58a5d01
Add sheldon config file, fix PATH setup 2022-07-16 11:34:53 +01:00
c17112fbc9 Add starship config 2021-11-07 18:24:37 +00:00
3c730f41da Remove hub from GitHub 2020-11-16 17:39:32 +00:00
e5a3f34182 Add powerline config and update the bootstrap script 2018-01-24 15:27:12 +00:00
9125b39d3e Add a tmux conf 2017-12-10 12:01:30 +00:00
2cbef96dc0 Add a functions file for custom actions 2017-09-11 14:23:28 +01:00
265a751329 More verbose setup 2016-07-13 13:38:11 +01:00
a5ee6177d1 Add zsh-completions, also better linking of ncmpcpp config 2016-05-19 12:11:14 +01:00
eb086b2e45 Add ncmpcpp config 2016-05-16 09:40:18 +01:00
d4b82d2bc9 Better handling of .vim/ and the git submodules 2016-05-13 12:34:48 +01:00
4c376c8b2e Add vim stuff 2016-05-13 08:23:58 +01:00
1e11256c4d Add a global gitignore 2016-04-08 03:42:12 +01:00
5bdb6a4eea Hush login details 2016-04-08 03:37:25 +01:00
4ee2e83109 Simple set up of dotfiles 2016-04-08 01:39:33 +01:00