claude.theme: a dark irssi theme whose colours map 1:1 to the roles
Claude Code uses in its default dark UI:
#8c8c8c dim timestamps, brackets, connective text
#f85149 red errors, netsplits, parts, private msg frames
#56d364 green joins, ctcp, dcc, netjoins, quiet activity
#e3b341 yellow messages-to-me, /me, statusbar chatter
#4a9eff blue channel names, pubnicks, diff-style accents
#c9a3ff magenta own nick / prompt / notices / hilights
#4ec9b0 cyan whois field names, info lines
Uses 24-bit true-colour escapes (%z<rrggbb>) so the shades land
exactly regardless of terminal palette. Requires irssi 1.2+ and a
truecolour-capable terminal (modern xterm/tmux both are).
irssi/config: switch the active theme from rainbow-dark to claude.
Autorun script so the same drunkendotfiles deploy gives each host a
distinctive nick without per-host config hand-edits. Trims FQDNs to
the short hostname before composing. Static 'nick = "`"' in
config stays as a fallback if the script ever fails to load.
R-Y-G-C-B-M was only six. Full spectrum now: red, orange (%y dark
yellow, renders brown-orange on most terminals), yellow, green,
blue, indigo (%b dark blue as the closest ANSI indigo), violet
(%M bright magenta). Stays ANSI-only so it renders reliably
regardless of 24-bit truecolor support.
Scrap the over-engineered version. Start from irssi's default theme
(already dark-safe) and apply rainbow only where it actually earns
its keep:
- line_start: the leading '-!-' on non-message lines gets a full
R-Y-G-C-B-M dash sequence instead of blue-blue.
- sb_act_msg: drop the %W (white) on statusbar activity — on a dark
terminal this was the one stark-white glyph. Re-colour the whole
activity band as a rainbow escalation: %G (quiet) -> %Y (chatter)
-> %R (hilight), so urgency tracks the colour.
- sb_act_sep: comma separator drops to %K (dark grey) so the rainbow
entries stand apart.
Everything else stays untouched from default.theme. No invented
24-bit escapes, no format overrides.
Previous commit used %Z005f5f, which irssi 1.4 interprets as a
24-bit *background* colour. That rendered as 'teal background
behind each affected character' — easy to miss on short glyphs,
invisible on whitespace. Foreground is %z (lowercase).
Earlier pass tried %X17 (256-palette idx 23), but %X isn't the
256-colour code in modern irssi — 1.4+ treats %X as a no-op for
unknown sequences, so every intended teal element was silently
falling through to the terminal default (= bright white).
irssi 1.4.5 supports %Z<rrggbb> for 24-bit foreground colour, so
use it directly: %Z005f5f renders as exactly #005f5f (dark teal),
no palette guessing.
Every %K (dark grey / bright-black) swapped for %X17 — 256-colour
foreground 0x17 == palette index 23, RGB #005f5f, a very dark
teal/cyan. Applies to: body text, bracket/punctuation replaces,
message-body dim, connective text in join/part/quit/etc. formats,
dccfile name, whois values, servernotice body, wallop body.
Requires a 256-colour-capable terminal; irssi renders %X17 as
palette 23 when the terminal advertises 256 colour support (most
modern terminals do — .tmux.conf already sets TERM=screen-256color).
- Body text color bumped from %w (light grey, sometimes renders ~white)
to %K (dark grey / 'bright black'), affecting msgnick and all action
templates.
- Statusbar / info bg changed from %8 (terminal default, which some
terminals render as reverse-video white) to explicit %0 (black) so
the bar is reliably dark everywhere.
- Added color to spots that were falling through to terminal default:
whois values, servernotice body, wallop_nick, wallop_action body,
dccfile.
- Expanded 'fe-common/core' formats block to override joins, parts,
quits, kicks, nick/topic/mode changes, aways etc. — coloured nicks
via the existing abstracts but the surrounding 'has joined' /
'changed the topic' verbiage now renders in dim grey instead of
stark white.
rainbow-dark.theme:
- Message body text now tinted dim grey (%w) instead of inheriting
terminal-default (usually stark white) — done via a trailing %w in
the msgnick template.
- Own nick in public, private, and DCC contexts switches from bold
white (%W) to bold bright magenta (%M) so 'you' stays distinct but
stops looking like every other bright-white element.
- Action bodies (public, private, DCC) get the same %w dim-grey tint.
.irssi/config: add W1..W99 aliases so /w1, /w2, ... /w99 jump
directly to that window (pair to the existing bare numeric /1 /2
aliases, for users whose muscle memory has 'w' in it).
The skwp prompt's precmd calls git-info and ruby-info (prezto module
functions that live in ~/.zprezto/modules/{git,ruby}/functions). On
interactive shell startup, something — likely compinit's
insecure-directory pruning when parent dirs are group-writable —
strips those paths from $fpath after pmodload seeded them.
When precmd then references the autoload-declared-but-unfindable
functions, zsh fails to locate the definition file, aborts the
prompt render midway through, and zsh-syntax-highlighting latches
onto the broken half-prompt. Observed symptoms:
prompt_skwp_precmd: git-info: function definition file not found
prompt_skwp_precmd: ruby-info: function definition file not found
zsh: bad math expression: operand expected at '%F{135}%n%...'
_zsh_highlight_call_widget:2: bad math expression: operand...
Defensive re-seed: before calling 'prompt skwp', prepend the helper,
git, and ruby module function dirs to $fpath if they aren't already
present. Idempotent, cheap, and masks any upstream stripping
regardless of cause.
Adds a step after personal-dotfile deploy that runs Anthropic's
official one-liner installer (curl -fsSL https://claude.ai/install.sh | bash)
when no 'claude' binary is found. No-ops if claude is already on the
machine. Opt out with DRUNKENDOTFILES_SKIP_CLAUDE=1. Install failures
are non-fatal — the rest of the flow still completes.
README: document the new step + the opt-out env var + curl in the
required tools list.
install.sh: use --recurse-submodules on the initial clone, and always
run 'git submodule update --init --recursive' before rake install so a
fresh checkout doesn't leave zsh/prezto empty.
README: document --recurse-submodules for manual clones; mention the
recovery command for existing shallow clones.
Fixes: bad math expression errors and 'no such file or directory:
~/.zprezto/runcoms/zshrc' on fresh shell startup when the Prezto
submodule hadn't been initialized.
The DigitalOcean metadata endpoint for reserved/floating IPv4 is
/metadata/v1/{reserved,floating}_ip/ipv4/ip_address, not .../address.
The .../active check works but the wrong IP path returned an empty
body, causing the script to silently fall through to ipify on every
droplet with a reserved/floating IP attached.
Verified on a droplet:
curl .../reserved_ip/ipv4/ip_address -> 45.55.111.240
curl .../reserved_ip/ipv4/address -> (empty)
If /sys/class/dmi/id/sys_vendor says DigitalOcean and the droplet has
a reserved_ip or floating_ip assigned, use that over the ipify-based
egress IP. Keeps the ipify/hostname -I fallback intact for other hosts.
Gated on the DMI check so non-DO hosts skip the metadata probe entirely
and the tmux status bar refresh stays fast.
install.sh: curl-pipe installer that clones to ~/.yadr, runs YADR's
native rake install, then layers personal dotfiles on top of $HOME
with backups on collision.
README.md: replace YADR's upstream readme with drunkendotfiles-
specific usage docs, credit, and refresh-from-upstream instructions.
- Convert 21 absolute-path symlinks into YADR to relative paths
(e.g. .vimrc -> .yadr/vimrc), so they resolve correctly under
any user's $HOME after a standard YADR install.
- .fehbg: replace hardcoded background path with $HOME-based one
- .gtk-bookmarks: remove (trivially personal; GTK regenerates)
- .themes/*/index.theme: drop BackgroundImage= lines pointing at
personal image files that other users won't have.
- .xscreensaver: scrub username from header comment.
- .irssi/config: generic dcc_download_path.
Tracks shell configs (zsh/bash), vim, tmux, irssi, fonts, themes,
and ~/.local/bin scripts. Sensitive files (.ssh, .gnupg, history,
credentials) and large app data are excluded via .gitignore.