aboutsummaryrefslogtreecommitdiffstats
path: root/history-search
diff options
context:
space:
mode:
authorTom Feist <shabble@cowu.be>2010-07-09 22:01:59 +0000
committerTom Feist <shabble@cowu.be>2010-07-09 22:01:59 +0000
commit18e61f4d15f1c6c5058cba6a69caf88114327b0d (patch)
tree65306f39160c357c008f4ea0b34ef67054118505 /history-search
parentinitial podifying of irssi docs (diff)
downloadirssi-scripts-18e61f4d15f1c6c5058cba6a69caf88114327b0d.tar.gz
irssi-scripts-18e61f4d15f1c6c5058cba6a69caf88114327b0d.zip
added history_search and scrolled-reminder as work in progress
Diffstat (limited to 'history-search')
-rw-r--r--history-search/history_search.pl194
-rw-r--r--history-search/irssi/config266
-rw-r--r--history-search/irssi/default.theme294
l---------history-search/irssi/scripts1
-rwxr-xr-xhistory-search/run_irssi.sh2
5 files changed, 757 insertions, 0 deletions
diff --git a/history-search/history_search.pl b/history-search/history_search.pl
new file mode 100644
index 0000000..d54e264
--- /dev/null
+++ b/history-search/history_search.pl
@@ -0,0 +1,194 @@
+# Search within your typed history as you type (like ctrl-R in bash)
+# Usage:
+# * First do: /bind ^R /history_search
+# * Then type ctrl-R and type what you're searching for
+
+# Copyright 2007 Wouter Coekaerts <coekie@irssi.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+use strict;
+use Irssi;
+use Irssi::TextUI;
+use Data::Dumper;
+
+use vars qw($VERSION %IRSSI);
+$VERSION = '1.0';
+%IRSSI = (
+ authors => 'Wouter Coekaerts',
+ contact => 'coekie@irssi.org',
+ name => 'history_search',
+ description => 'Search within your typed history as you type (like ctrl-R in bash)',
+ license => 'GPLv2 or later',
+ url => 'http://wouter.coekaerts.be/irssi/',
+ changed => '04/08/07'
+);
+
+my $prompt_append = 1;
+my $prompt_content = '';
+
+# create a new statusbar item
+
+Irssi::statusbar_item_register ( 'custom_prompt', 0, 'custom_prompt' );
+
+Irssi::signal_add_last 'gui print text finished' => sub {
+ Irssi::statusbar_items_redraw ( 'custom_prompt' );
+};
+
+Irssi::signal_register({'change prompt' => [qw/string int/]});
+Irssi::signal_add('change prompt' => \&handle_change_prompt_sig);
+
+sub handle_change_prompt_sig {
+ my ($text, $append) = @_;
+ print "sig args: ", Dumper(\@_);
+ $prompt_content = $text;
+ $prompt_append = $append;
+ print "text: $prompt_content, append: $prompt_append";
+
+ Irssi::statusbar_items_redraw('custom_prompt');
+}
+
+# TODO: make these work wiht subcommand (runsub)
+
+Irssi::command_bind('set_prompt' => \&dothing );
+Irssi::command_set_options('set_prompt', '+string @append');
+
+Irssi::command_bind('install_prompt' => \&install_prompt);
+Irssi::command_bind('uninstall_prompt' => \&uninstall_prompt);
+
+Irssi::settings_add_bool('custom_prompt', 'autoinstall_custom_prompt', 0);
+
+if (Irssi::settings_get_bool('autoinstall_custom_prompt')) {
+ install_prompt();
+}
+
+sub install_prompt {
+ Irssi::command("/statusbar prompt add -priority '-5' -alignment left"
+ . " -before prompt custom_prompt");
+ Irssi::command("/statusbar prompt remove prompt");
+ Irssi::command("/statusbar prompt remove prompt_empty");
+}
+
+sub uninstall_prompt {
+ Irssi::command("/statusbar prompt remove custom_prompt");
+ Irssi::command("/statusbar prompt add -priority '-1' "
+ . "-before input -alignment left prompt");
+ Irssi::command("/statusbar prompt add -priority '-2' "
+ . "-before input -alignment left prompt_empty");
+}
+
+sub dothing {
+ #my ($str, $append) = @_;
+ #Irssi::print("str is $str, append=$append");
+ my $parsed = [Irssi::command_parse_options('set_prompt', $_[0])];
+ my $args = $parsed->[0] // {};
+ my $remainder = $parsed->[1] // '';
+
+ my ($str, $append) = ('', 1);
+ print Dumper $args;
+ if (exists ($args->{string})) {
+ $str = $args->{string};
+ }
+
+ if (exists($args->{append})) {
+ $append = $args->{append};
+ }
+ print "append in dothing: $append";
+ Irssi::signal_emit('change prompt', $str, $append);
+}
+
+sub custom_prompt {
+ my ($sb_item, $get_size_only) = @_;
+
+ my ($width, $padChar, $padNum, $length);
+
+ #my $prompt_str = '%K[%W$tag%c/%K$cumode%n$*%K]%n ';
+
+ my $theme = Irssi::current_theme;
+ my $prompt = '';
+
+ my $var = '';
+ if (window_is_empty(Irssi::active_win)) {
+ $var = 'winname';
+ } else {
+ $var = '[.15]itemname';
+ }
+
+ if ($prompt_append) {
+ $prompt = $theme->format_expand("{prompt \$$var}");
+ }
+
+ my $trailing_space = '';
+ if ($prompt =~ /(\s*)$/ && length $prompt_content) {
+ $trailing_space = $1;
+ }
+
+ $prompt .= $prompt_content . $trailing_space;
+ $sb_item->default_handler($get_size_only, $prompt, undef, 1);
+}
+
+sub window_is_empty {
+ my $window = shift;
+ return $window->{name} eq $window->get_active_name;
+}
+
+sub UNLOAD {
+ print Dumper(\@_);
+ uninstall_prompt();
+}
+# my $prev_typed;
+# my $prev_startpos;
+# my $enabled = 0;
+
+# Irssi::command_bind('history_search', sub {
+# $enabled = ! $enabled;
+# if ($enabled) {
+# $prev_typed = '';
+# $prev_startpos = 0;
+# }
+# });
+
+# Irssi::signal_add_last 'gui key pressed' => sub {
+# my ($key) = @_;
+
+# if ($key == 10) { # enter
+# $enabled = 0;
+# }
+
+# return unless $enabled;
+
+# my $prompt = Irssi::parse_special('$L');
+# my $pos = Irssi::gui_input_get_pos();
+
+# if ($pos < $prev_startpos) {
+# $enabled = 0;
+# return;
+# }
+
+# my $typed = substr($prompt, $prev_startpos, ($pos-$prev_startpos));
+
+# my $history = ($typed eq '') ? '' : Irssi::parse_special('$!' . $typed . '!');
+# if ($history eq '') {
+# $history = $typed;
+# }
+
+# my $startpos = index(lc($history), lc($typed));
+
+# Irssi::gui_input_set($history);
+# Irssi::gui_input_set_pos($startpos + length($typed));
+
+# $prev_typed = $typed;
+# $prev_startpos = $startpos;
+# };
diff --git a/history-search/irssi/config b/history-search/irssi/config
new file mode 100644
index 0000000..052c67c
--- /dev/null
+++ b/history-search/irssi/config
@@ -0,0 +1,266 @@
+servers = (
+ { address = "eu.irc6.net"; chatnet = "IRCnet"; port = "6667"; },
+ {
+ address = "irc.open-ircnet.net";
+ chatnet = "IRCnet";
+ port = "6667";
+ },
+ { address = "irc.efnet.org"; chatnet = "EFNet"; port = "6667"; },
+ {
+ address = "irc.undernet.org";
+ chatnet = "Undernet";
+ port = "6667";
+ },
+ { address = "irc.dal.net"; chatnet = "DALnet"; port = "6667"; },
+ {
+ address = "irc.quakenet.org";
+ chatnet = "QuakeNet";
+ port = "6667";
+ },
+ { address = "irc.oftc.net"; chatnet = "OFTC"; port = "6667"; },
+ {
+ address = "irc.gamesurge.net";
+ chatnet = "GameSurge";
+ port = "6667";
+ },
+ { address = "irc.webchat.org"; chatnet = "WebChat"; port = "6667"; },
+ { address = "irc.rizon.net"; chatnet = "Rizon"; port = "6667"; },
+ { address = "irc.link-net.org"; chatnet = "LinkNet"; port = "6667"; },
+ { address = "silc.silcnet.org"; chatnet = "SILC"; port = "706"; }
+);
+
+chatnets = {
+ IRCnet = {
+ type = "IRC";
+ max_kicks = "4";
+ max_msgs = "5";
+ max_whois = "4";
+ max_query_chans = "5";
+ };
+ EFNet = {
+ type = "IRC";
+ max_kicks = "4";
+ max_msgs = "3";
+ max_whois = "1";
+ };
+ Undernet = {
+ type = "IRC";
+ max_kicks = "1";
+ max_msgs = "3";
+ max_whois = "30";
+ };
+ DALnet = {
+ type = "IRC";
+ max_kicks = "4";
+ max_msgs = "3";
+ max_whois = "30";
+ };
+ QuakeNet = {
+ type = "IRC";
+ max_kicks = "1";
+ max_msgs = "3";
+ max_whois = "30";
+ };
+ OFTC = {
+ type = "IRC";
+ max_kicks = "1";
+ max_msgs = "3";
+ max_whois = "30";
+ };
+ GameSurge = {
+ type = "IRC";
+ max_kicks = "1";
+ max_msgs = "3";
+ max_whois = "30";
+ };
+ WebChat = {
+ type = "IRC";
+ max_kicks = "1";
+ max_msgs = "3";
+ max_whois = "30";
+ };
+ Rizon = {
+ type = "IRC";
+ max_kicks = "1";
+ max_msgs = "3";
+ max_whois = "30";
+ };
+ LinkNet = {
+ type = "IRC";
+ max_kicks = "1";
+ max_msgs = "3";
+ max_whois = "30";
+ };
+ SILC = { type = "SILC"; };
+};
+
+channels = (
+ { name = "#irssi"; chatnet = "ircnet"; autojoin = "No"; },
+ { name = "silc"; chatnet = "silc"; autojoin = "No"; }
+);
+
+aliases = {
+ J = "join";
+ WJOIN = "join -window";
+ WQUERY = "query -window";
+ LEAVE = "part";
+ BYE = "quit";
+ EXIT = "quit";
+ SIGNOFF = "quit";
+ DESCRIBE = "action";
+ DATE = "time";
+ HOST = "userhost";
+ LAST = "lastlog";
+ SAY = "msg *";
+ WI = "whois";
+ WII = "whois $0 $0";
+ WW = "whowas";
+ W = "who";
+ N = "names";
+ M = "msg";
+ T = "topic";
+ C = "clear";
+ CL = "clear";
+ K = "kick";
+ KB = "kickban";
+ KN = "knockout";
+ BANS = "ban";
+ B = "ban";
+ MUB = "unban *";
+ UB = "unban";
+ IG = "ignore";
+ UNIG = "unignore";
+ SB = "scrollback";
+ UMODE = "mode $N";
+ WC = "window close";
+ WN = "window new hide";
+ SV = "say Irssi $J ($V) - http://irssi.org/";
+ GOTO = "sb goto";
+ CHAT = "dcc chat";
+ RUN = "SCRIPT LOAD";
+ CALC = "exec - if which bc &>/dev/null\\; then echo '$*' | bc | awk '{print \"$*=\"$$1}'\\; else echo bc was not found\\; fi";
+ SBAR = "STATUSBAR";
+ INVITELIST = "mode $C +I";
+ Q = "QUERY";
+ "MANUAL-WINDOWS" = "set use_status_window off;set autocreate_windows off;set autocreate_query_level none;set autoclose_windows off;set reuse_unused_windows on;save";
+ EXEMPTLIST = "mode $C +e";
+ ATAG = "WINDOW SERVER";
+ UNSET = "set -clear";
+ RESET = "set -default";
+ s = "script";
+ rltest = "/script unload history_search; /script load history_search.pl";
+};
+
+statusbar = {
+ # formats:
+ # when using {templates}, the template is shown only if it's argument isn't
+ # empty unless no argument is given. for example {sb} is printed always,
+ # but {sb $T} is printed only if $T isn't empty.
+
+ items = {
+ # start/end text in statusbars
+ barstart = "{sbstart}";
+ barend = "{sbend}";
+
+ topicbarstart = "{topicsbstart}";
+ topicbarend = "{topicsbend}";
+
+ # treated "normally", you could change the time/user name to whatever
+ time = "{sb $Z}";
+ user = "{sb {sbnickmode $cumode}$N{sbmode $usermode}{sbaway $A}}";
+
+ # treated specially .. window is printed with non-empty windows,
+ # window_empty is printed with empty windows
+ window = "{sb $winref:$tag/$itemname{sbmode $M}}";
+ window_empty = "{sb $winref{sbservertag $tag}}";
+ prompt = "{prompt $[.15]itemname}";
+ prompt_empty = "{prompt $winname}";
+ topic = " $topic";
+ topic_empty = " Irssi v$J - http://www.irssi.org";
+
+ # all of these treated specially, they're only displayed when needed
+ lag = "{sb Lag: $0-}";
+ act = "{sb Act: $0-}";
+ more = "-- more --";
+ };
+
+ # there's two type of statusbars. root statusbars are either at the top
+ # of the screen or at the bottom of the screen. window statusbars are at
+ # the top/bottom of each split window in screen.
+ default = {
+ # the "default statusbar" to be displayed at the bottom of the window.
+ # contains all the normal items.
+ window = {
+ disabled = "no";
+
+ # window, root
+ type = "window";
+ # top, bottom
+ placement = "bottom";
+ # number
+ position = "1";
+ # active, inactive, always
+ visible = "active";
+
+ # list of items in statusbar in the display order
+ items = {
+ barstart = { priority = "100"; };
+ time = { };
+ user = { };
+ window = { };
+ window_empty = { };
+ lag = { priority = "-1"; };
+ act = { priority = "10"; };
+ more = { priority = "-1"; alignment = "right"; };
+ barend = { priority = "100"; alignment = "right"; };
+ };
+ };
+
+ # statusbar to use in inactive split windows
+ window_inact = {
+ type = "window";
+ placement = "bottom";
+ position = "1";
+ visible = "inactive";
+ items = {
+ barstart = { priority = "100"; };
+ window = { };
+ window_empty = { };
+ more = { priority = "-1"; alignment = "right"; };
+ barend = { priority = "100"; alignment = "right"; };
+ };
+ };
+
+ # we treat input line as yet another statusbar :) It's possible to
+ # add other items before or after the input line item.
+
+ # topicbar
+ topic = {
+ type = "root";
+ placement = "top";
+ position = "1";
+ visible = "always";
+ items = {
+ topicbarstart = { priority = "100"; };
+ topic = { };
+ topic_empty = { };
+ topicbarend = { priority = "100"; alignment = "right"; };
+ };
+ };
+ prompt = {
+ items = {
+ custom_prompt = { priority = "-5"; };
+ input = { priority = "10"; };
+ };
+ };
+ };
+};
+settings = {
+ core = {
+ real_name = "shabble";
+ user_name = "tomfeist";
+ nick = "tomfeist";
+ };
+ "fe-text" = { actlist_sort = "refnum"; };
+ "perl/core/scripts" = { autoinstall_custom_prompt = "yes"; };
+};
diff --git a/history-search/irssi/default.theme b/history-search/irssi/default.theme
new file mode 100644
index 0000000..98af18b
--- /dev/null
+++ b/history-search/irssi/default.theme
@@ -0,0 +1,294 @@
+# 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.
+
+#############################################################################
+
+# 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 = { "[]=" = "%K$*%n"; };
+
+abstracts = {
+ ##
+ ## generic
+ ##
+
+ # text to insert at the beginning of each non-message line
+ line_start = "%B-%W!%B-%n ";
+
+ # timestamp styling, nothing by default
+ timestamp = "$*";
+
+ # any kind of text that needs hilighting, default is to bold
+ hilight = "%_$*%_";
+
+ # any kind of error message, default is bright red
+ error = "%R$*%n";
+
+ # channel name is printed
+ channel = "%_$*%_";
+
+ # nick is printed
+ nick = "%_$*%_";
+
+ # nick host is printed
+ nickhost = "[$*]";
+
+ # server name is printed
+ server = "%_$*%_";
+
+ # some kind of comment is printed
+ comment = "[$*]";
+
+ # reason for something is printed (part, quit, kick, ..)
+ reason = "{comment $*}";
+
+ # mode change is printed ([+o nick])
+ mode = "{comment $*}";
+
+ ##
+ ## channel specific messages
+ ##
+
+ # highlighted nick/host is printed (joins)
+ channick_hilight = "%C$*%n";
+ chanhost_hilight = "{nickhost %c$*%n}";
+
+ # nick/host is printed (parts, quits, etc.)
+ channick = "%c$*%n";
+ chanhost = "{nickhost $*}";
+
+ # highlighted channel name is printed
+ channelhilight = "%c$*%n";
+
+ # ban/ban exception/invite list mask is printed
+ ban = "%c$*%n";
+
+ ##
+ ## messages
+ ##
+
+ # the basic styling of how to print message, $0 = nick mode, $1 = nick
+ msgnick = "%K<%n$0$1-%K>%n %|";
+
+ # 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
+ ownmsgnick = "{msgnick $0 $1-}";
+ ownnick = "%W$*%n";
+
+ # public message in channel, $0 = nick mode, $1 = nick
+ pubmsgnick = "{msgnick $0 $1-}";
+ pubnick = "%N$*%n";
+
+ # public message in channel meant for me, $0 = nick mode, $1 = nick
+ pubmsgmenick = "{msgnick $0 $1-}";
+ menick = "%Y$*%n";
+
+ # public highlighted message in channel
+ # $0 = highlight color, $1 = nick mode, $2 = nick
+ pubmsghinick = "{msgnick $1 $0$2-%n}";
+
+ # channel name is printed with message
+ msgchannel = "%K:%c$*%n";
+
+ # private message, $0 = nick, $1 = host
+ privmsg = "[%R$0%K(%r$1-%K)%n] ";
+
+ # private message from you, $0 = "msg", $1 = target nick
+ ownprivmsg = "[%r$0%K(%R$1-%K)%n] ";
+
+ # own private message in query
+ ownprivmsgnick = "{msgnick $*}";
+ ownprivnick = "%W$*%n";
+
+ # private message in query
+ privmsgnick = "{msgnick %R$*%n}";
+
+ ##
+ ## Actions (/ME stuff)
+ ##
+
+ # used internally by this theme
+ action_core = "%W * $*%n";
+
+ # generic one that's used by most actions
+ action = "{action_core $*} ";
+
+ # own action, both private/public
+ ownaction = "{action $*}";
+
+ # own action with target, both private/public
+ ownaction_target = "{action_core $0}%K:%c$1%n ";
+
+ # private action sent by others
+ pvtaction = "%W (*) $*%n ";
+ pvtaction_query = "{action $*}";
+
+ # public action sent by others
+ pubaction = "{action $*}";
+
+
+ ##
+ ## other IRC events
+ ##
+
+ # whois
+ whois = "%# $[8]0 : $1-";
+
+ # notices
+ ownnotice = "[%r$0%K(%R$1-%K)]%n ";
+ notice = "%K-%M$*%K-%n ";
+ pubnotice_channel = "%K:%m$*";
+ pvtnotice_host = "%K(%m$*%K)";
+ servernotice = "%g!$*%n ";
+
+ # CTCPs
+ ownctcp = "[%r$0%K(%R$1-%K)] ";
+ ctcp = "%g$*%n";
+
+ # wallops
+ wallop = "%W$*%n: ";
+ wallop_nick = "%n$*";
+ wallop_action = "%W * $*%n ";
+
+ # netsplits
+ netsplit = "%R$*%n";
+ netjoin = "%C$*%n";
+
+ # /names list
+ names_prefix = "";
+ names_nick = "[%_$0%_$1-] ";
+ names_nick_op = "{names_nick $*}";
+ names_nick_halfop = "{names_nick $*}";
+ names_nick_voice = "{names_nick $*}";
+ names_users = "[%g$*%n]";
+ names_channel = "%G$*%n";
+
+ # DCC
+ dcc = "%g$*%n";
+ dccfile = "%_$*%_";
+
+ # DCC chat, own msg/action
+ dccownmsg = "[%r$0%K($1-%K)%n] ";
+ dccownnick = "%R$*%n";
+ dccownquerynick = "%W$*%n";
+ dccownaction = "{action $*}";
+ dccownaction_target = "{action_core $0}%K:%c$1%n ";
+
+ # DCC chat, others
+ dccmsg = "[%G$1-%K(%g$0%K)%n] ";
+ dccquerynick = "%G$*%n";
+ dccaction = "%W (*dcc*) $*%n %|";
+
+ ##
+ ## statusbar
+ ##
+
+ # default background for all statusbars. You can also give
+ # the default foreground color for statusbar items.
+ sb_background = "%4%w";
+
+ # default backround for "default" statusbar group
+ #sb_default_bg = "%4";
+ # background for prompt / input line
+ sb_prompt_bg = "%n";
+ # background for info statusbar
+ sb_info_bg = "%8";
+ # background for topicbar (same default)
+ #sb_topic_bg = "%4";
+
+ # text at the beginning of statusbars. sb-item already puts
+ # space there,so we don't use anything by default.
+ sbstart = "";
+ # text at the end of statusbars. Use space so that it's never
+ # used for anything.
+ sbend = " ";
+
+ topicsbstart = "{sbstart $*}";
+ topicsbend = "{sbend $*}";
+
+ prompt = "[$*] ";
+
+ sb = " %c[%n$*%c]%n";
+ sbmode = "(%c+%n$*)";
+ sbaway = " (%GzZzZ%n)";
+ sbservertag = ":$0 (change with ^X)";
+ sbnickmode = "$0";
+
+ # activity in statusbar
+
+ # ',' separator
+ sb_act_sep = "%c$*";
+ # normal text
+ sb_act_text = "%c$*";
+ # public message
+ sb_act_msg = "%W$*";
+ # hilight
+ sb_act_hilight = "%M$*";
+ # hilight with specified color, $0 = color, $1 = text
+ sb_act_hilight_color = "$0$1-%n";
+};
diff --git a/history-search/irssi/scripts b/history-search/irssi/scripts
new file mode 120000
index 0000000..b870225
--- /dev/null
+++ b/history-search/irssi/scripts
@@ -0,0 +1 @@
+../ \ No newline at end of file
diff --git a/history-search/run_irssi.sh b/history-search/run_irssi.sh
new file mode 100755
index 0000000..9b73b49
--- /dev/null
+++ b/history-search/run_irssi.sh
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+/opt/stow/repo/irssi/bin/irssi --home=irssi/