# vim: set expandtab: # vim: filetype=perl # (Adapted from solarized-universal theme by Huy Z: https://github.com/huyz/irssi-colors-solarized) # Adaped by: Paul Saunders # later adapted by: Farzad Sadeghi https://github.com/terminaldweller # When testing changes, the easiest way to reload the theme is with /RELOAD. # This reloads the configuration file too, so if you did any changes remember # to /SAVE it first. Remember also that /SAVE overwrites the theme file with # old data so keep backups. # TEMPLATES: # The real text formats that irssi uses are the ones you can find with # /FORMAT command. Back in the old days all the colors and texts were mixed # up in those formats, and it was really hard to change the colors since you # might have had to change them in tens of different places. So, then came # this templating system. # Now the /FORMATs don't have any colors in them, and they also have very # little other styling. Most of the stuff you need to change is in this # theme file. If you can't change something here, you can always go back # to change the /FORMATs directly, they're also saved in these .theme files. # So .. the templates. They're those {blahblah} parts you see all over the # /FORMATs and here. Their usage is simply {name parameter1 parameter2}. # When irssi sees this kind of text, it goes to find "name" from abstracts # block below and sets "parameter1" into $0 and "parameter2" into $1 (you # can have more parameters of course). Templates can have subtemplates. # Here's a small example: # /FORMAT format hello {colorify {underline world}} # abstracts = { colorify = "%G$0-%n"; underline = "%U$0-%U"; } # When irssi expands the templates in "format", the final string would be: # hello %G%Uworld%U%n # ie. underlined bright green "world" text. # and why "$0-", why not "$0"? $0 would only mean the first parameter, # $0- means all the parameters. With {underline hello world} you'd really # want to underline both of the words, not just the hello (and world would # actually be removed entirely). # COLORS: # You can find definitions for the color format codes in docs/formats.txt. # There's one difference here though. %n format. Normally it means the # default color of the terminal (white mostly), but here it means the # "reset color back to the one it was in higher template". For example # if there was /FORMAT test %g{foo}bar, and foo = "%Y$0%n", irssi would # print yellow "foo" (as set with %Y) but "bar" would be green, which was # set at the beginning before the {foo} template. If there wasn't the %g # at start, the normal behaviour of %n would occur. If you _really_ want # to use the terminal's default color, use %N. ############################################################################# # https://irssi.org/documentation/settings/#a_d # default foreground color (%N) - -1 is the "default terminal color" default_color = "-1"; # print timestamp/servertag at the end of line, not at beginning info_eol = "false"; # these characters are automatically replaced with specified color # (dark grey by default) replaces = { "[]=" = "$*"; }; abstracts = { ## ## generic ## # text to insert at the beginning of each non-message line # %N = terminal default (e.g. white on transparent) # %G = brightgreen (Solarized: base01, i.e. darkest gray) #line_start = "%N%W %N"; line_start = "%N"; # timestamp styling, nothing by default # %N%8 = reverse normal (to match line_start) timestamp = "%N%k%z005f87$*%N%Z005f87%n"; # any kind of text that needs hilighting, default is to bold hilight = "$*"; # any kind of error message error = "%Zff8700$*%n"; # channel name is printed channel = "%Z00af00$*%n"; # nick is printed # nick = "%z005f87%Zeeeeee{nickcolor $*}"; nick = "%Zeeeeee{nickcolor $*}"; mynick = "%Zeeeeee{nickcolor $*}"; inick = "%Zeeeeee{nickcolor $*}"; # Inverted imynick = "%Zeeeeee{nickcolor $*}"; # Inverted # nick host is printed # (that's the "email" address of a user) nickhost = "%Z005f5f$*"; # server name is printed server = "%Z00af00$*"; iserver = "%Zeeeeee%z00af00$*%n"; # some kind of comment is printed comment = "%Zff8700  %N $*"; # reason for something is printed (part, quit, kick, ..) reason = "$*"; # mode change is printed ([+o nick]) mode = "%N%0%p$*%n"; ## ## channel specific messages ## # highlighted nick/host is printed (joins) # %c = cyan (Solarized: cyan) # %G = brightgreen (Solarized: base01) # NOTE: %n doesn't work in irssi v0.8.15 for some reason. So we have to end with the same color as line_start channick_hilight = "%Z00af00$*%G"; chanhost_hilight = "%Z00af00{nickhost $*}%N"; # nick/host is printed (parts, quits, etc.) channick = "%Z00af00$*%G"; chanhost = "%Z00af5f{nickhost $*}%N"; # highlighted channel name is printed # SOLARIZED: Channels are Green channelhilight = "%N%0%g$*%N"; ichannelhilight = "%z005f87$*%n%0"; # ban/ban exception/invite list mask is printed # %R = brightred (Solarized: orange) # %n = return ban = "%zff5f00$*%0%Zff5f00%n"; ## ## messages ## # the basic styling of how to print message, $0 = nick mode, $1 = nick msgnick = "%m%Zeeeeee$0{nick $1-}%N%m%0%Z005f5f"; # message from you is printed. "msgownnick" specifies the styling of the # nick ($0 part in msgnick) and "ownmsgnick" specifies the styling of the # whole line. # Example1: You want the message text to be green: # ownmsgnick = "{msgnick $0 $1-}%g"; # Example2.1: You want < and > chars to be yellow: # ownmsgnick = "%Y{msgnick $0 $1-%Y}%n"; # (you'll also have to remove <> from replaces list above) # Example2.2: But you still want to keep <> grey for other messages: # pubmsgnick = "%K{msgnick $0 $1-%K}%n"; # pubmsgmenick = "%K{msgnick $0 $1-%K}%n"; # pubmsghinick = "%K{msgnick $1 $0$2-%n%K}%n"; # ownprivmsgnick = "%K{msgnick $*%K}%n"; # privmsgnick = "%K{msgnick %R$*%K}%n"; # $0 = nick mode, $1 = nick # %3 = yellow ownmsgnick = "%z5f5fff%k{%z5f5fff $0$1-}%N%0%Z5f5fff %Z005f5f"; ownnick = "%Zeeeeee$* %Z005f5f"; # public message in channel, $0 = nick mode, $1 = nick pubmsgnick = "%z005f87%k%Zeeeeee{%Zeeeeee%z005f87msgnick $0$1-}%N%Z005f87 %Z005f5f"; pubnick = "%Zeeeeee$* %Z005f5f"; # public message in channel meant for me, $0 = nick mode, $1 = nick # %5 = magenta pubmsgmenick = "%m%5%k{msgnick $0$1-}%N%m %Z005f5f"; menick = "%Zeeeeee$* %Z005f5f"; # public highlighted message in channel # $0 = highlight color, $1 = nick mode, $2 = nick pubmsghinick = " %z005f87%k%z005f87{%Zeeeeee%z005f87msgnick $1 %Zeeeeee$2-}%N%Z005f87 %Z005f5f"; # channel name is printed with message # This is printed whenever the channel name is printed for disambiguation, e.g. # while there is a query in the same window. Example: <+funnyuser:#test> hello msgchannel = "%z005f5f%k:$*%n"; # private message, $0 = nick, $1 = host # TODO: To test for Solarized privmsg = " %m$0%G<%n$1-%G>%n %Z005f87"; # private message from you, $0 = "msg", $1 = target nick # TODO: To test for Solarized ownprivmsg = " %Z005f87$0%G<%Z005f87$1-%G>%n %Z005f87"; # own private message in query ownprivmsgnick = "%z5f5fff%k{%z5f5fff $*}%N%Z5f5fff %Z005f87"; ownprivnick = "%k$*"; # private message in query # NOTE: for some reason, we gotta handle both the nick & msg on in this line # privmsgnick = "%5%k{ %5%k msgnick %m%0%N $*}%N%m %n"; privmsgnick = "%z005f00%k{%z005f00%k %z005f00%k $*}%N%Z005f00 %n %Z005f87"; ## ## Actions (/ME stuff) ## # used internally by this theme action_core = "%N%k %n$*"; # generic one that's used by most actions action = "{action_core $*%n} "; # own action, both private/public ownaction = "%N%k {mynick $0}%N%C $1-"; # own action with target, both private/public # NOTE: to test: /action NICK farted. (This will tell NICK that you farted) # This is like a /me but only you and NICK will see ownaction_target = "{action_core $0}%G:%y$1%n "; # private action sent by others # %M = brightmagenta (Solarized: violet) pvtaction = "%m (*) $*%n "; pvtaction_query = "{action $*}"; # public action sent by others pubaction = "%N%k {nick $0}%N $1-"; ## ## other IRC events ## # whois whois = "%k%z005f87WHOIS %0%Z005f87%N%#%N $[8]0  %Y$1-"; # notices ownnotice = "%z8787ff%k %k$0 %k%z8787ff%8%0 {ichannelhilight $1-} %k%z00af5f%N "; notice = "%z5f5fd7%k %k$0- %Z5f5fd7%0%N "; #notice = "%1%w %W$* %k%8%n "; pubnotice_channel = "{ichannelhighlight $*}"; #pubnotice_channel = "%G%n$*"; pvtnotice_host = " %k%n {hickhost $*}"; servernotice = "%z8787ff%k %k!$* %k%8%n "; # CTCPs ownctcp = "%k%z005f87 %k$0%G %N%Z005f87 %Z005f87$1-%G  "; ctcp = "%N%k%n %Zeeeeee$*%n"; # wallops wallop = "%c$*%n: "; wallop_nick = "%n$*"; wallop_action = "%c * $*%n "; # netsplits netsplit = "%z5f5fd7$*%n"; netjoin = "%g$*%n"; # /names list names_prefix = "%N%k%n"; names_nick = " %G$0$1-%N  "; names_nick_op = " %g$0$_$1-%n  "; names_nick_halfop = " %Y$_$0$_$1-%n  "; names_nick_voice = " %C$_$0$_$1-%n  "; names_users = "%k%z005f87 $* %Z005f87%0%n"; names_channel = " %k$*"; # DCC dcc = "%N%k%n %g$*%n"; dccfile = "$*"; # DCC chat, own msg/action dccownmsg = "[%Z005f87$0%G($1-%G)%n] "; dccownnick = "%Z005f87$*%n"; dccownquerynick = "%c$*%n"; dccownaction = "{action $*}"; dccownaction_target = "{action_core $0}%G:%c$1%n "; # DCC chat, others dccmsg = " %g$1-%G($0%G)%n "; dccquerynick = "%g$*%n"; dccaction = "%c (*dcc*) $*%n %|"; ## ## statusbar ## # default background for all statusbars. You can also give # the default foreground color for statusbar items. # NOTE: if all the other overriding settings below are set, this only seems to affect # the content parts of the adv_windowlist. Default seems to be blue # NOTE: if not set, the default background seems to be %w%4 = white on blue sb_background = "%k%z1c1c1c"; # default backround for "default" statusbar group # NOTE: this impacts the statusbar of an inactive window and the edges of adv_windowlist # %7 = white (wich looks gray on a regular terminal with white bg) sb_default_bg = "%Z005fff"; # background for topicbar at the top (defaults to sb_default_bg) sb_topic_bg = "%W%0"; # background for the statusbar of active window. You can also give # the foreground color. # %2 = green sb_window_bg = "%k%0"; # background for prompt / input line sb_prompt_bg = "%k"; # background for info statusbar # %8 = reverse window # TODO: To test for Solarized sb_info_bg = "%z1c1c1c"; # text at the beginning of statusbars. sb-item already puts # space there,so we don't use anything by default. sbstart = "%z005f00"; # text at the end of statusbars. Use space so that it's never # used for anything. sbend = "%n"; topicsbstart = "{sbstart $*}"; topicsbend = "{sbend $*}"; prompt = "%k%z005f87%9$c $*%w%k$R%w%k$S%w%k$N%w%k$T %N%Z005f87%n "; # This controls each part of a statusbar, including the outer brackets of adv_windowlist sb = "$*"; # The mode is next to your NICK and the channel sbmode = "%p$*%k"; sbaway = "%Z00af00%k%z00af00 zZzZzZzZ %Z00af00%0"; sbservertag = "%Z00af00 $0 %Z005f87(change with ^X)%n"; sbnickmode = "%Zeeeeee$0"; # activity in statusbar # ',' separator between the window numbers # %g = green (same color as the active statusbar so we dont' see it) sb_act_sep = "%Z005fff+"; # normal text # This also affects the color of the window with activity in adv_windowlist sb_act_text = "%C$*"; # public message (ordinary messages) sb_act_msg = "%c$*"; # hilight (when people actually chat) # This also affects the color of the window with direct message in adv_windowlist sb_act_hilight = "%m$*"; # hilight with specified color, $0 = color, $1 = text sb_act_hilight_color = "%z5f5fd7$1-"; # For usercount.pl script sb_usercount = "%Z000000%z005faf%Z000000%z005faf{sb $0 nicks %Zeeeeee %Z000000$1-%Z005faf%z000000}"; sb_uc_ircops = "%Z000000%z005faf*$*"; sb_uc_ops = "%Z000000%z005faf@$*"; sb_uc_halfops = "%Z000000%z005faf%%$*"; sb_uc_voices = "%Z000000%z005faf+$*"; sb_uc_normal = "$*"; sb_uc_space = " "; # For adv_windowlist.pl script # Mentioned in adv_windowlist but not default_theme sb_act_none = "$*"; # for dcc stats # $0 = sb_ds_short(_waiting)/sb_ds_normal(_waiting) sb_dccstat = "{sb $0-}"; # $0 = G/S # $1 = filename # $2 = transfer speed # $3 = percent # $4 = progressbar sb_ds_short = "$0%G:%n$1%Y@%n$2kB/s%G:%n$4%G:%n$3"; # $0 = G/S # $1 = filename # $2 = to/from # $3 = nick sb_ds_short_waiting = "$0%G:%n$1 $2 $3 waiting"; # $0 = GET/SEND # $1 = nick # $2 = filename # $3 = transferred amount # $4 = full filesize # $5 = percent # $6 = speed # $7 = ETA # $8 = progressbar # $9 = rotator thingy :) sb_ds_normal = "$0 $1: '$2' $3 of $4 [$8] $9 ($5) $6kB/s ETA: $7"; # $0 = GET/SEND # $1 = nick # $2 = filename # $3 = full filesize # $4 = to/from # $5 = nick sb_ds_normal_waiting = "$0 $1: '$2' $3 $4 $5 waiting"; sb_ds_separator = "  "; }; formats = { "fe-common/core" = { daychange = " %g-----%k-%W-%n Day changed to %%D %W-%k-%g-----%n"; join = "%k%z00af5fJOIN %8 {ichannelhilight $2} %0%Z00d700%0 {inick $0}%0 %N {chanhost_hilight $1}"; line_start_irssi = "%k%z5f5fd7IRSSI%N%Z5f5fd7 %N"; new_topic = "%k%z00d700TOPIC %8 {ichannelhilight $1} %wby {inick $0} %N%9%Z5f5fd7  $2"; nick_changed = "%k%z00d700RENAME %Z00d700%0 %k%z005f87{nick $0} %Zff8700 {nick $1}%Z005f87%0%N"; part = "%K%Z00d700%k%z00d700PART %8 {ichannelhilight $2}%N %0%Z005f87 %N{inick $0}%0 %Z005f87%Zeeeeee {reason $3}"; quit = "%0%Z005f00%k%z005f00QUIT %N {inick $0}%0 %Zeeeeee %N%n%k%N {reason $2}"; your_nick_changed = "%k%z00d700RENAME %Z00d700%0 %k%z005f87{mynick $0} %Zff8700 {mynick $1}%Z005f87%0%N"; own_msg = "$nickcolor$nickalign{ownmsgnick $2 {ownnick $[.15]0}}$1"; own_msg_channel = "$nickcolor$nickalign{ownmsgnick $3 {ownnick $[.15]0}{msgchannel $1}}$2"; own_msg_private_query = "$nickcolor$nickalign{ownprivmsgnick {ownprivnick $2}}$1"; pubmsg_me = "$nickalign{pubmsgmenick $2 {menick $[.12]0}}$1"; pubmsg_me_channel = "$nickalign{pubmsgmenick $3 {menick $[.12]0}{msgchannel $1}}$2"; pubmsg_hilight = "$nickalign{pubmsghinick $0 $3 $[.12]1}$2"; pubmsg_hilight_channel = "$nickalign{pubmsghinick $0 $4 $[.12]1{msgchannel $2}}$3"; pubmsg = "$nickcolor$nickalign{pubmsgnick $2 {pubnick $[.12]0}}$1"; pubmsg_channel = "$nickcolor$nickalign{pubmsgnick $3 {pubnick $[.12]0}{msgchannel $1}}$2"; msg_private_query = "$nickcolor$nickalign{privmsgnick $0}$2"; }; "fe-common/irc" = { away = "%k%z00d700AWAY %Z00d700%0%N"; banlist = "%k%z005f00BANS %z005f00 $[-3]0 %8 %z005f00{ichannelhilight $1} %k%N {ban $2}"; banlist_long = "%k%z005f00BANS %z005f00 $[-3]0 %8 %z005f00{ichannelhilight $1} {comment by {inick $3}%0%k,%Z005f00 $4 secs ago} %N {ban $2}"; chanmode_change = "%k%z008700MODE %N%Z008700%N {channelhilight $0} %Zeeeeee%n {mode $1}%n by {nick $2}"; channel_created = "%k%N Channel {channelhilight $0} created $1"; channel_mode = "%k%N mode/{channelhilight $0} {mode $1}"; ctcp_default_reply = "%W%0%N $0- "; ctcp_ping_reply = "%k%z005f87 CTCP {hilight PING} reply %n%Z005f87%N {nick $0} %y%N%n $1.$[-3.0]2 seconds "; ctcp_reply = "%k%z005f87 CTCP {hilight $0} reply %n%Z005f87%N {nick $1} %y%N $2 "; ctcp_reply_channel = "%k%z005f87 CTCP {hilight $0} reply %n%Z005f87%N {nick $1} %y%N {channel $3} %y%N $2"; ctcp_requested = "%k%z005f87%8%8 CTCP {hilight $2} from {mynick $4} %n%Z005f87%N by {hilight $0} {comment $1} %y%N $3"; default_event = "%N%k %N%n$1"; default_event_server = "%k%z00d700$0 %N%k %N%n$1"; ebanlist = "%k%z005f00BANS %k exception %8 %z005f00{ichannelhilight $0} %N {ban $1}"; ebanlist_long = "%k%z005f00BANS %k exception %8 {ichannelhilight $0} %z005f00{comment by {inick $2}%0%k, $3 secs ago} %N {ban $1}"; end_of_who = "%z00d700%kWHO %Z00d700%0%N END"; end_of_whois = "%z00d700%kWHOIS %Z00d700%0%N END"; end_of_whowas = "%z00d700%kWHOWAS %Z00d700%0%N END"; netsplit = "%0%Z8787ff%z8787ff%k NETSPLIT %z8787ff%Z00af00%z00af00%k {iserver $0}  {iserver $1} %Z00af00%0%Z8787ff Quits: $2"; netsplit_join = "%k%z8787ff NETSPLIT %k%8%N Joins: $0"; netsplit_join_more = "%k%z8787ff NETSPLIT %k%8%N Joins: $0 (+$1 more)"; netsplit_more = "%0%Z8787ff%z8787ff%k NETSPLIT %z8787ff%Z00af00%z00af00%k {iserver $0}  {iserver $1} %Z00af00%0%Z8787ff Quits: $2 (+$3 more, use /NETSPLIT to show all of them)"; no_topic = "%k%N No topic set for {channelhilight $0}"; own_ctcp = "%k%z005f87 CTCP {hilight $2-}  {inick $0} %n%Z005f87%N"; server_chanmode_change = "%k%z8787ff SERVERMODE %k%8 {channelhilight $0} {mode $1} by {nick $2}"; topic = "%k%z00d700TOPIC %Z00d700%0%N {channel $0}%N  $1"; topic_info = "%k%z00d700TOPIC %Z00d700%0%N {nick $0}%N {nickhost $2}  $1"; unaway = "%k%z00d700AWAY %Z00d700%0%N END"; usermode_change = "%z008700%ZeeeeeeMODE %N%Z008700%N {mode $0}%N for %0{mynick $1}%N"; who = "%z00d700%kWHO %Z00d700%z005f87 %z005f87%k{inick $[!9]1} %Z005f87%2 %k$0 %0%g Status: $[!3]2  $[-2]3 hops %N%g%N {nickhost $4@$5} {comment $6}"; whois = "%z00d700%kWHOIS %Z00d700%z005f87 {nick $0} %Z005f87%0 {nickhost $1@$2}%:{whois ircname $3}"; whowas = "%z00d700%kWHOWAS %Z00d700%z005f87 {nick $0} %Z005f87%0 {nickhost $1@$2}%:{whois was $3}"; own_action = "$nickalign{ownaction $0$nicktrunc}$1"; action_private = "$nickalign{pvtaction $[.15]0$nicktrunc}$2"; action_private_query = "$nickalign{pvtaction_query $[.15]0$nicktrunc}$2"; action_public = "$nickalign{pubaction $[.15]0$nicktrunc}$1"; }; "Irssi::Script::adv_windowlist" = { awl_display_header = ""; awl_display_key = "%0%Z005fff$N  $H[$Q]$C$S %N"; awl_display_key_active = "%9%k%z005f00 $N $H[$Q]$C$S %N%Z005f00%N"; awl_display_key_visible = "%k%z005fff $N  $H[$Q]$C$S %N%Z005fff%N"; awl_display_nokey = "%0%Z005faf$N  $H[$Q]$C$S %N"; awl_display_nokey_active = "%9%k%z005f87 $N $H[$Q]$C$S %N%Z005f87%N"; awl_display_nokey_visible ="%k%z005fff $N  $H[$Q]$C$S %N%Z005fff%N"; awl_separator = ""; }; "Irssi::Script::usercount" = { sb_usercount = "%9%z00af5f{sb $0 nicks ($1-)}"; sb_uc_ircops = "%9%z00d787*$*"; sb_uc_ops = "%9%z00d787@$*"; sb_uc_halfops = "%9%z00d787%%$*"; sb_uc_voices = "%9%z00af5f+$*"; sb_uc_normal = "$*"; sb_uc_space = " "; }; "Irssi::Script::nm2" = { neat_pad_char = " "; neat_style = ",cp,,,,,,,"; neat_custom_modes = "&%B&%n%Zeeeeee | @%g@%n%Zeeeeee | +%y+%n%Zeeeeee"; }; "Irssi::Script::mh_sbsplitmode" = { mh_sbsplitmode_line = "%Zaf5f87{server $0}: $1 {comment $2}"; mh_sbsplitmode_line_no_detail = "%Zaf5f87{server $0}: %Zaf5f87 {error $1}"; mh_sbsplitmode_info = "%Zaf5f87{server $0} $1 {hilight splitmode}"; mh_sbsplitmode_info_details = "%Zaf5f87{server $0} $1 {hilight splitmode} {comment $2}"; mh_sbsplitmode_error = "%Zaf5f87{error $0}"; }; "otr/core" = { otr_stb_plaintext = "{sb %yplaintext%N}"; otr_stb_finished = "{sb %yfinished%n}"; otr_stb_unknown = "{sb {hilight state unknown (BUG!)}}"; otr_stb_untrusted = "{sb %pOTR%n (%runverified%n)}"; otr_stb_trust = "{sb %GOTR%n}"; }; };