# claude.theme — irssi theme that ports the Claude Code default "dark" # palette to IRC. # # Colour role → 24-bit RGB used here: # dim / secondary #8c8c8c timestamps, brackets, connective text # red (destructive) #f85149 errors, netsplits, parts, private msg # green (additive) #56d364 joins, ctcp, dcc, netjoins, quiet activity # yellow (warn) #e3b341 messages-to-me, actions (/me), chatter # blue (info) #4a9eff channel names, pubnick, diff-style accents # magenta (emphasis) #c9a3ff own nick / prompt, notices, hilights # cyan (accent) #4ec9b0 whois field names, info lines # # Activate: # /set theme claude ; /save ; /reload # # Requires irssi 1.2+ and a 24-bit-colour-capable terminal. Format codes: # %z — 24-bit foreground colour # %Z — 24-bit background colour default_color = "-1"; info_eol = "false"; # Dim all bracket/punctuation glyphs so the palette accents stay the focus. replaces = { "[]=()<>" = "%z8c8c8c$*%n"; }; abstracts = { ## ## generic ## # Subtle dim dash prefix on non-message lines (was "%B-%n!%B-%n "). line_start = "%z8c8c8c-!-%n "; # Timestamps in the dim secondary colour. timestamp = "%z8c8c8c$*%n"; # Highlight = bold + yellow (the "user-directed" Claude Code colour). hilight = "%_%ze3b341$*%n%_"; # Errors: bold + red (Claude's destructive colour). error = "%_%zf85149$*%n%_"; # Channel names in link-blue + bold. channel = "%_%z4a9eff$*%n%_"; # Nicks: default (plain + bold). nick = "%_$*%_"; # Nick-host in dim brackets. nickhost = "[%z8c8c8c$*%n]"; # Server names in cyan accent. server = "%_%z4ec9b0$*%n%_"; # Generic comment: dim grey in brackets. comment = "[%z8c8c8c$*%n]"; reason = "{comment $*}"; mode = "{comment $*}"; ## ## channel-specific messages ## # Joins → green (additive). channick_hilight = "%z56d364$*%n"; chanhost_hilight = "{nickhost %z56d364$*%n}"; # Parts / quits → red (destructive). channick = "%zf85149$*%n"; chanhost = "{nickhost %z8c8c8c$*%n}"; # Highlighted channel reference → blue. channelhilight = "%z4a9eff$*%n"; # Ban masks → red. ban = "%zf85149$*%n"; ## ## messages ## # Bracket framing in dim grey; body text falls through to terminal default # (claude-code renders conversation text in #e5e5e5 which is very close to # terminal default on most dark schemes, so no need for a %z wrap here — # that avoids the whitespace-background issue from earlier attempts). msgnick = "%z8c8c8c<%n$0$1-%z8c8c8c>%n %|"; # Own nick = magenta (Claude's "user/prompt" colour) + bold. ownmsgnick = "{msgnick $0 $1-}"; ownnick = "%_%zc9a3ff$*%n%_"; # Public message nick = blue (info/link colour). pubmsgnick = "{msgnick $0 $1-}"; pubnick = "%z4a9eff$*%n"; # Messages addressed to you → yellow nick (user-directed warn colour). pubmsgmenick = "{msgnick $0 $1-}"; menick = "%_%ze3b341$*%n%_"; # Hilighted message in channel. pubmsghinick = "{msgnick $1 $0$2-%n}"; # ":#chan" suffix on targeted messages. msgchannel = "%z8c8c8c:%z4a9eff$*%n"; # Private messages: magenta framing so queries stand apart from public. privmsg = "[%_%zc9a3ff$0%_%z8c8c8c(%zc9a3ff$1-%z8c8c8c)%n] "; ownprivmsg = "[%_%zc9a3ff$0%_%z8c8c8c(%zc9a3ff$1-%z8c8c8c)%n] "; # Private message within a query window. ownprivmsgnick = "{msgnick $*}"; ownprivnick = "%_%zc9a3ff$*%n%_"; privmsgnick = "{msgnick %_%zc9a3ff$*%n%_}"; ## ## Actions (/ME) ## # Bold yellow asterisk — actions read as "warning"-ish urgency. action_core = "%_%ze3b341 * %n$*%n"; action = "{action_core $*} "; ownaction = "{action $*}"; ownaction_target = "{action_core $0}%z8c8c8c:%zc9a3ff$1%n "; pvtaction = "%_%ze3b341 (*) %n$*%n "; pvtaction_query = "{action $*}"; pubaction = "{action $*}"; ## ## other IRC events ## whois = "%z4ec9b0%# $[8]0 : %n$1-"; # Notices — magenta (emphasis). ownnotice = "[%_%zc9a3ff$0%_%z8c8c8c(%zc9a3ff$1-%z8c8c8c)]%n "; notice = "%z8c8c8c-%_%zc9a3ff$*%_%z8c8c8c-%n "; pubnotice_channel = "%z8c8c8c:%zc9a3ff$*"; pvtnotice_host = "%z8c8c8c(%zc9a3ff$*%z8c8c8c)"; # Server notices — green bang (informational). servernotice = "%_%z56d364!%n$*%n "; # CTCPs — green. ownctcp = "[%_%z56d364$0%_%z8c8c8c(%z56d364$1-%z8c8c8c)] "; ctcp = "%_%z56d364$*%n%_"; # Wallops — yellow (broadcast alert). wallop = "%_%ze3b341$*%n%_: "; wallop_nick = "%z8c8c8c$*%n"; wallop_action = "%_%ze3b341 * %n$*%n "; # Netsplits / netjoins — the classic red/green pair. netsplit = "%_%zf85149$*%n%_"; netjoin = "%_%z56d364$*%n%_"; # /names list names_prefix = ""; names_nick = "[%_%z4a9eff$0%n%_$1-] "; names_nick_op = "{names_nick $*}"; names_nick_halfop = "{names_nick $*}"; names_nick_voice = "{names_nick $*}"; names_users = "[%z56d364$*%n]"; names_channel = "%_%z4a9eff$*%n%_"; # DCC — green family (network, transfer flavoured). dcc = "%_%z56d364$*%n%_"; dccfile = "%_%z4ec9b0$*%n%_"; # DCC chat, own msg/action dccownmsg = "[%_%zc9a3ff$0%_%z8c8c8c($1-%z8c8c8c)%n] "; dccownnick = "%_%zc9a3ff$*%n%_"; dccownquerynick = "%_%zc9a3ff$*%n%_"; dccownaction = "{action $*}"; dccownaction_target = "{action_core $0}%z8c8c8c:%zc9a3ff$1%n "; # DCC chat, others dccmsg = "[%_%z56d364$1-%_%z8c8c8c(%z56d364$0%z8c8c8c)%n] "; dccquerynick = "%_%z56d364$*%n%_"; dccaction = "%_%ze3b341 (*dcc*) %n$*%n %|"; ## ## statusbar ## # Explicit black background with light-grey foreground. Rainbow of # accent colours from individual items below. sb_background = "%0%ze5e5e5"; sb_prompt_bg = "%n"; sb_info_bg = "%0"; sbstart = ""; sbend = " "; topicsbstart = "{sbstart $*}"; topicsbend = "{sbend $*}"; prompt = "%_%zc9a3ff[%n$*%_%zc9a3ff]%n%_ "; sb = " %z4a9eff[%n$*%z4a9eff]%n"; sbmode = "(%z56d364+%n$*)"; sbaway = " (%ze3b341zZzZ%n)"; sbservertag = ":%z4ec9b0$0%n (^X)"; sbnickmode = "%zc9a3ff$0%n"; # Activity indicators — escalate in colour: # dim → green (normal chat) → yellow (message) → red (hilight) sb_act_sep = "%z8c8c8c$*"; sb_act_text = "%z56d364$*"; sb_act_msg = "%ze3b341$*"; sb_act_hilight = "%zf85149$*"; sb_act_hilight_color = "$0$1-%n"; }; formats = { "fe-common/core" = { pubmsg = "{pubmsgnick $2 {pubnick \00305$0}}$1"; }; };