# rainbow-dark.theme # # A dark-background irssi theme that leans into a full rainbow for # highlights, nicks, and statusbar accents. Reads best on a true-black # or near-black terminal background (e.g. xterm-256color, 80% opacity, # no bright-bold forced to normal weight). # # Activate: # /set theme rainbow-dark # /save # # When testing changes: /RELOAD picks up edits without restarting irssi. # Remember to /SAVE before /RELOAD — /SAVE will overwrite this file # otherwise. Keep a backup. default_color = "-1"; info_eol = "false"; # Fade any bracket-ish punctuation to dark grey so the rainbow colors pop. replaces = { "[]=()<>" = "%z4a90e2$*%n"; }; abstracts = { ## ## generic ## # Rainbow dash at the start of non-message lines. Rotates R O Y G B I V # across seven characters for the classic prism. line_start = "%R-%Y-%Y-%G-%C-%B-%M-%n "; # Dim cyan timestamps — present but recessive. timestamp = "%z4a90e2$*%n"; # Highlight anything important in bold yellow. hilight = "%_%Y$*%n%_"; # Errors in bright red, bold. error = "%_%R$*%n%_"; # Channel names: bright magenta, bold. channel = "%_%M$*%n%_"; # Default nick styling: bold cyan. nick = "%_%C$*%n%_"; # Nick-host wrapped in dark-grey square brackets (picked up by "replaces"). nickhost = "[%z4a90e2$*%n]"; # Server names: bright blue. server = "%_%B$*%n%_"; # Generic bracketed comment: fade to dark grey. comment = "[%z4a90e2$*%n]"; reason = "{comment $*}"; mode = "{comment $*}"; ## ## channel-specific messages (joins, parts, quits, etc.) ## # Someone new showing up (join) — bright green. channick_hilight = "%_%G$*%n%_"; chanhost_hilight = "{nickhost %g$*%n}"; # Someone leaving (part/quit) — dim red. channick = "%r$*%n"; chanhost = "{nickhost %z4a90e2$*%n}"; # Highlighted channel reference — bright magenta. channelhilight = "%_%M$*%n%_"; # Ban / invite masks — dim red. ban = "%r$*%n"; ## ## messages ## # Angle brackets around nicks stay dark grey so the nick color is the star. # Trailing %w tints the message body dim grey so it doesn't compete with # the rainbow accents. msgnick = "%z4a90e2<%n$0$1-%z4a90e2>%n %|%z4a90e2"; # Messages from you. ownmsgnick = "{msgnick $0 $1-}"; ownnick = "%_%M$*%n%_"; # Normal public messages — nick gets a bright cyan. pubmsgnick = "{msgnick $0 $1-}"; pubnick = "%_%C$*%n%_"; # Messages addressed to you (@you) — bright yellow nick to catch the eye. pubmsgmenick = "{msgnick $0 $1-}"; menick = "%_%Y$*%n%_"; # Hilighted message (keyword triggered). pubmsghinick = "{msgnick $1 $0$2-%n}"; # channel prefix on a message: ":#chan" in bright magenta. msgchannel = "%z4a90e2:%M$*%n"; # Private messages — heavy bright-magenta framing so queries stand apart. privmsg = "[%_%M$0%_%z4a90e2(%m$1-%z4a90e2)%n] "; ownprivmsg = "[%_%m$0%_%z4a90e2(%M$1-%z4a90e2)%n] "; # Private message in a query window. ownprivmsgnick = "{msgnick $*}"; ownprivnick = "%_%M$*%n%_"; privmsgnick = "{msgnick %_%M$*%n%_}"; ## ## Actions (/me) ## # Bright yellow asterisks so actions are unmistakable. Action text in dim # grey to match ordinary message bodies. action_core = "%_%Y * %n%z4a90e2$*%n"; action = "{action_core $*} "; ownaction = "{action $*}"; ownaction_target = "{action_core $0}%z4a90e2:%M$1%n "; # Private actions get a parenthesized asterisk; keep it in bright yellow. pvtaction = "%_%Y (*) %n%z4a90e2$*%n "; pvtaction_query = "{action $*}"; pubaction = "{action $*}"; ## ## other IRC events ## # whois — cyan field name, dim-grey value whois = "%z4a90e2 %# $[8]0 : %n%z4a90e2$1-%n"; # notices — magenta stays the "alert" color ownnotice = "[%_%m$0%_%z4a90e2(%M$1-%z4a90e2)]%n "; notice = "%z4a90e2-%_%M$*%_%z4a90e2-%n "; pubnotice_channel = "%z4a90e2:%m$*"; pvtnotice_host = "%z4a90e2(%m$*%z4a90e2)"; # server notices — bright green bang, dim-grey body servernotice = "%_%G!%n%z4a90e2$*%n "; # CTCPs — bright green ownctcp = "[%_%g$0%_%z4a90e2(%G$1-%z4a90e2)] "; ctcp = "%_%G$*%n%_"; # wallops wallop = "%_%Y$*%n%_: "; wallop_nick = "%z4a90e2$*%n"; wallop_action = "%_%Y * %n%z4a90e2$*%n "; # netsplits / netjoins — red fall, green rise netsplit = "%_%R$*%n%_"; netjoin = "%_%G$*%n%_"; # /names list — each name gets bright cyan brackets names_prefix = ""; names_nick = "[%_%C$0%n%_$1-] "; names_nick_op = "{names_nick $*}"; names_nick_halfop = "{names_nick $*}"; names_nick_voice = "{names_nick $*}"; names_users = "[%g$*%n]"; names_channel = "%_%M$*%n%_"; # DCC — green family so transfers read as "network-y" dcc = "%_%G$*%n%_"; dccfile = "%_%z4a90e2$*%n%_"; # DCC chat, own msg/action dccownmsg = "[%_%r$0%_%z4a90e2($1-%z4a90e2)%n] "; dccownnick = "%_%R$*%n%_"; dccownquerynick = "%_%M$*%n%_"; dccownaction = "{action $*}"; dccownaction_target = "{action_core $0}%z4a90e2:%M$1%n "; # DCC chat, others dccmsg = "[%_%G$1-%_%z4a90e2(%g$0%z4a90e2)%n] "; dccquerynick = "%_%G$*%n%_"; dccaction = "%_%Y (*dcc*) %n%z4a90e2$*%n %|"; ## ## statusbar — the rainbow lives here ## # Explicit black bg with light-grey fg. (%8 / "default" bg varied per # terminal — on some it renders as reverse-video white, breaking the # dark aesthetic.) Individual items override with their own rainbow. sb_background = "%0%w"; # Input line sits on the terminal's normal background. sb_prompt_bg = "%n"; # Info bar (middle statusbar) — same explicit black. sb_info_bg = "%0"; sbstart = ""; sbend = " "; topicsbstart = "{sbstart $*}"; topicsbend = "{sbend $*}"; prompt = "%_%M[%n$*%_%M]%n%_ "; sb = " %M[%n$*%M]%n"; sbmode = "(%G+%n$*)"; sbaway = " (%YzZzZ%n)"; sbservertag = ":%C$0%n (^X)"; sbnickmode = "%Y$0%n"; # activity in statusbar — rotates through the rainbow. sb_act_sep = "%z4a90e2$*"; sb_act_text = "%G$*"; # plain chatter (green) sb_act_msg = "%_%C$*%_"; # someone said something (cyan) sb_act_hilight = "%_%M$*%_"; # something for you (magenta) sb_act_hilight_color = "$0$1-%n"; }; formats = { # Common channel-event formats get explicitly wrapped in %z4a90e2 (dark grey) # so the plain-text body doesn't fall through to the terminal default # (which on a typical dark terminal is stark white). "fe-common/core" = { pubmsg = "{pubmsgnick $2 {pubnick \00305$0}}$1"; join = "%z4a90e2-->%n {channick_hilight $0} {chanhost_hilight $1} has joined {channel $2}"; part = "%z4a90e2<--%n {channick $0} {chanhost $1} %z4a90e2has left%n {channel $2} {reason $3}"; quit = "%z4a90e2<--%n {channick $0} {chanhost $1} %z4a90e2has quit%n {reason $2}"; quit_once = "%z4a90e2<--%n {channick $0} {chanhost $1} %z4a90e2has quit%n {channel $2} {reason $3}"; kick = "%z4a90e2<--%n {channick $0} %z4a90e2was kicked from%n {channel $1} %z4a90e2by%n {nick $2} {reason $3}"; nick_changed = "%z4a90e2-!-%n {channick $0} %z4a90e2is now known as%n {channick_hilight $1}"; your_nick_changed = "%z4a90e2-!-%n %z4a90e2You're now known as%n {channick_hilight $1}"; topic = "%z4a90e2-!-%n %z4a90e2Topic for%n {channel $0}%z4a90e2:%n %z4a90e2$1%n"; topic_info = "%z4a90e2-!-%n %z4a90e2Topic set by%n {nick $0} {nickhost $1} %z4a90e2($2)%n"; new_topic = "%z4a90e2-!-%n {nick $0} %z4a90e2changed the topic of%n {channel $1} %z4a90e2to:%n %z4a90e2$2%n"; server_changed = "%z4a90e2-!-%n %z4a90e2Server changed to%n %_$1%_"; chanmode_change = "%z4a90e2-!-%n %z4a90e2mode/%n{channelhilight $0} {mode $1} %z4a90e2by%n {nick $2}"; usermode_change = "%z4a90e2-!-%n %z4a90e2mode/%n{nick $1} {mode $0}"; away = "%z4a90e2-!-%n %z4a90e2zzz: %n$0"; unaway = "%z4a90e2-!-%n %z4a90e2welcome back%n"; own_msg = "{ownmsgnick $2 {ownnick $0}}$1"; own_msg_channel = "{ownmsgnick $3 {ownnick $0}{msgchannel $1}}$2"; own_msg_private_query = "{ownprivmsgnick {ownprivnick $2}}$1"; }; };