====== IrSSi ======
Best Command line irc client.
Few simple things before you start using.
==== Common IRC commands ====
== To register your nick on IRC ==
/msg nickserv register PASSWORD EMAIL
== To verify your password ==
/msg nickserv identify PASSWORD
== List Channel ==
/list
== Join Channel ==
/join #
== list all user ==
/who #
== Give OP to all user ==
/op -YES *
==== Alias ====
This is something really powerfull please be carefull.\\
you can use shell command to execute and print on channel.
== Fortune ==
/alias fortune exec - -o /usr/bin/fortune
== Figlet ==
/alias figlet exec - -o /usr/bin/figlet -f times $0-
=== From other pages ===
remove activity from all windows:
alias UNACT script exec foreach $$w (Irssi::windows()) { Irssi::command(“window goto $$w->{refnum}”)\;} ; window goto $winref
calc with (10) decimals:
alias CALC exec – if which bc &>/dev/null\; then echo ‘scale=10\;$*’ | bc | awk ‘{print “$*=”$$1}’\; else echo bc was not found\; fi
Dump perl object (e.g. /dump Irssi::active_win):
alias DUMP script exec use Data::Dumper\; print Data::Dumper->new([\\$0-])->Dump
Put output of a command in the current window (e.g. /here help blah) (does not work with whois, and other output coming from the server):
alias HERE script exec \$a=Irssi::active_win\;sub b{Irssi::signal_remove(‘print text’,'b’)\;Irssi::signal_stop()\;\$a->print(\$_[1],\$_[0]->{‘level’})\;Irssi::signal_add_first(‘print text’,'b’)\;}\;Irssi::signal_add_first(‘print text’,'b’)\;\$a->command(“$*”)\;
do /lastlog, but for all windows… /alllast -HILIGHT would show all hilights in every buffer in the current window (like hilightwindow.pl, but not ‘life’)
alias ALLLASTLOG script exec foreach (Irssi::windows()) {Irssi::command(“lastlog – -window \$_->{‘refnum’} $*”)\;}
execute a command on a given server (e.g. “/tag ircnet join #irssi” would join irssi on ircnet (if you’re connected to ircnet)):
alias TAG script exec Irssi::server_find_tag(‘$0′)->command(‘$1-’);
list (say) your currently loaded scripts (just the names, on one line):
alias LISTSCRIPTS script exec foreach \$s (sort grep(s/::\$//, keys %Irssi::Script::)) {\$a .= “\$s “\;}\; Irssi::active_win->command(“say \$a”)\;
list (print) a list of servers you’re currently connected to, what nick you have there, and on which channels you are:
alias LISTCHANS script exec foreach (Irssi::servers()){\$a=”\$_->{‘chatnet’}(\$_->{‘address’}) \$_->{‘nick’}:”\; foreach (\$_->channels()) {\$a.=’ ‘.(\$_->{‘ownnick’}->{‘op’}?’@':\$_->{‘ownnick’}->{‘voice’}?’+':”).”\$_->{‘name’}”\;}\;print \$a\;}
mass-op all non-voiced (to op everyone just use /op *):
alias MOP script exec foreach \$n (Irssi::active_win->{‘active’}->nicks()) {if (\$n->{‘op’} == 0 && \$n->{‘voice’} == 0) {\$a .= “\$n->{‘nick’} “\;}}\; Irssi::active_win->command(“OP \$a”)\;
Show for how long you have been connected to the current server:
alias CONNECTIONUPTIME script exec \$a=`date +%s` – Irssi::active_win->{‘active_server’}->{‘connect_time’}\; Irssi::print( int(\$a/3600/24).”d “.int(\$a/3600%24).”h “. int(\$a/60%60).”m “. int(\$a%60).”s”)\;
Goto to x’th last window (0 = last, 1 = second last)
alias window_goto_last_minus script exec Irssi::command(“window goto “.(sort{\$b<=>\$a}map{\$_->{refnum}}Irssi::windows())[$0])
Remove all bans set by you
alias mubmy script exec \$c=Irssi::active_win->{‘active’}\;if(\$c){foreach \$ban (\$c->bans()){if(\$ban->{‘setby’} =~ /^$N/){\$unban.=\$ban->{‘ban’}.’ ‘\;}}}\;\$c->command(“unban \$unban”);
[[http://wouter.coekaerts.be/irssi/aliases | source]]
==== IrSSi Settings ====
== Environment File ==
~/.irssi/config
== Save environment ==
/save
== How to change theme on irssi ==
/set theme easyeye
== Set DCC download folder ==
/set dcc_download_path /home/username
== Set file permission after download ==
/set dcc_file_create_mode 660
NOTE : For security do not set mod with (x)
==== Nice Scripts ====
=== window_switcher ===
[[ http://wouter.coekaerts.be/irssi/scripts/window_switcher.pl | Download ]] \\
[[http://wouter.coekaerts.be/irssi/window_switcher | Source ]]
* Add the statusbar item:
/STATUSBAR window add window_switcher
* Type /ws followed by a window number or part of a window or channel name.
* When the right item is at the first place in the statusbar, press enter.
* For faster usage, do “/BIND ^G multi erase_line;insert_text /ws “, type ctrl-G, and start typing…
==== ShortCut's ====
Ctrl-X to switch between network connections
Alt-[0-9] switch to windows
==== Binding F Key ====
/bind meta2-P key F1
/bind meta2-Q key F2
/bind meta2-R key F3
/bind meta2-S key F4
/bind meta2-15~ key F5
/bind meta2-17~ key F6
/bind meta2-18~ key F7
/bind meta2-19~ key F8
/bind meta2-20~ key F9
/bind meta2-21~ key F10
/bind meta2-24~ key F12
/bind meta2-23~ key F11
/bind meta2-24~ key F12
/bind meta2-2P key sF1
/bind meta2-2Q key sF2
/bind meta2-2R key sF3
/bind meta2-2S key sF4
/bind meta2-15;2~ key sF5
/bind meta2-17;2~ key sF6
/bind meta2-18;2~ key sF7
/bind meta2-19;2~ key sF8
/bind meta2-20;2~ key sF9
/bind meta2-21;2~ key sF10
/bind meta2-24;2~ key sF12
/bind meta2-23;2~ key sF11
/bind meta2-24;2~ key sF12
When you’ve done that, you can do, for example /bind F1 change_window 1 to bind something to F1, or /bind sF1 for shift-F1.
[[http://wouter.coekaerts.be/irssi/keybindings | Source]]
==== My Environment ====
servers = (
{ address = "irc.stealth.net"; chatnet = "IRCnet"; port = "6668"; },
{ 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";
use_ssl = "no";
ssl_verify = "no";
autoconnect = "yes";
}
);
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";
}
};
channels = (
{ name = "#irssi"; chatnet = "ircnet"; autojoin = "No"; },
{ name = "silc"; chatnet = "silc"; autojoin = "No"; },
{ name = "#linux"; chatnet = "QuakeNet"; autojoin = "yes"; }
);
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";
};
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://irssi.org/help/";
# 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.
prompt = {
type = "root";
placement = "bottom";
# we want to be at the bottom always
position = "100";
visible = "always";
items = {
prompt = { priority = "-1"; };
prompt_empty = { priority = "-1"; };
# treated specially, this is the real input line.
input = { priority = "10"; };
};
};
# topicbar
topic = {
type = "root";
placement = "top";
position = "1";
visible = "always";
items = {
topicbarstart = { priority = "100"; };
topic = { };
topic_empty = { };
topicbarend = { priority = "100"; alignment = "right"; };
};
};
};
};
settings = {
core = {
real_name = "Ketan";
user_name = "ketan";
nick = "ketan";
awaylog_level = "MSGS HILIGHT";
awaylog_file = "~/irc/away.log";
};
"fe-text" = { actlist_sort = "refnum"; };
"fe-common/core" = {
theme = "thirdeye";
autolog = "yes";
autolog_path = "~/irc/%Y/$tag/$0.%m-%d.log";
autolog_level = "ALL -CRAP -CLIENTCRAP -CTCPS";
completion_auto = "yes";
BEEP_WHEN_AWAY = "yes";
window_auto_change = "yes";
};
};
hilights = ( { text = "nick"; nick = "yes"; word = "yes"; } );
logs = { };
#### ####
#### ThirdEye 1.4 ####
#### by salo ####
#### ####
replaces = { "[]=" = "%K$0-%n"; };
abstracts = {
line_start = "--- ";
timestamp = "[$0-]";
hilight = "%_$0-%_";
error = "%G$0-%n";
channel = "%c$0-%n";
nick = "%_$0-%_";
nickhost = "[$0-]";
server = "%_$0-%_";
comment = "[%_$0-%_]";
reason = "{comment $0-}";
mode = "{comment $0-}";
channick_hilight = "%_$0-%_";
chanhost_hilight = "{nickhost %c$0-%n}";
channick = "%_$0-%_";
chanhost = "{nick}";
channelhilight = "%c$0-%n";
ban = "%c$0-%n";
msgnick = "<$1-> %|";
ownnick = "%N$0-%n";
pubnick = "%N$0-%n";
menick = "%G$0-%n";
pubmsgnick = "%c{msgnick $0 $1-%c}%N";
pubmsgmenick = "%c{msgnick $0 $1-%c}%N";
pubmsghinick = "%c{msgnick $1 %G$2-%n%c}%N";
ownmsgnick = "%G{msgnick $0 %N$1-%G}%N";
msgchannel = "%K:%c$0-%n";
privmsg = "[%C$0%K(%c$1-%K)%n] ";
ownprivmsg = "[%c$0%C(%n$1-%C)%n] ";
ownprivnick = "$0-";
ownprivmsgnick = "%C<%n$0%C>%n ";
privmsgnick = "%c<%n$0%c>%n ";
# ownprivmsgnick = "%G{msgnick %N$0-%G}%n";
# privmsgnick = "%c{msgnick %G$0-%c}%N";
action_core = "%G>>> %g$0-";
action = "{action_core $0-} ";
ownaction = "{action $0-}";
ownaction_target = "{action_core $0}%K:%c$1%n ";
pvtaction = "%W (*) $0-%n ";
pvtaction_query = "{action $0-}";
pubaction = "{action $0-}";
ownnotice = "[%r$0%K(%R$1-%K)]%n ";
notice = "%K-%M$0-%K-%n ";
pubnotice_channel = "%K:%m$0-";
pvtnotice_host = "%K(%m$0-%K)";
servernotice = "%g!$0-%n ";
ownctcp = "[%r$0%K(%R$1-%K)] ";
ctcp = "%g$0-%n";
wallop = "%W$0-%n: ";
wallop_nick = "%n$0-";
wallop_action = "%W * $0-%n ";
netsplit = "%R$0-%n";
netjoin = "%G$0-%n";
names_nick = "[%G$0%g$1-%n] ";
names_users = "$0-";
names_channel = "on %G$0-%n:";
dcc = "%y$0-%n";
dccfile = "%_$0-%_";
dccownmsg = "[%b$0%B(%n$1-%B)] ";
dccownnick = "%W$0-%n";
dccownaction = "{action $0-}";
dccownaction_target = "{action_core $0}%K:%c$1%n ";
dccmsg = "[%Y(%y$1-%Y)%n] ";
dccaction = "%W (*dcc*) $0-%n %|";
sb_background = "%4";
sb = "%W[%n$0-%W]%n";
sbmode = "(%c+%n$0-)";
sbaway = " (%GzZzZ%n)";
sbservertag = ":$0";
sbmore = "%_-- more --%_";
sblag = "{sb Lag: $0-}";
sbmail = "{sb Mail: $0-}";
sbact_act = "Act: $0-";
sbact_det = "Det: $0-";
sbact = "{sb {sbact_act $0}{sbact_det $1}}";
};
formats = {
"fe-common/irc" = {
whois = "%W$0 %K[%c$1@$2%K]%: ircname :%W $3%n";
whois_channels = " channels :%c $1%n";
whois_server = " server :%c $1 %K[%W$2%K]%n";
whois_oper = " operator :%W $1 is IRC Operator%n";
whois_away = " away :%W $1%n";
whois_idle = " idle :%W $1 days, $2 hours, $3 mins, $4 secs%n";
};
"fe-common/silc" = {
whois = "%W$0 %K[%c$1@$2%K]%: nickname :%W $3 ($4)%n";
whois_realname = " realname :%W $0%n";
whois_channels = " channels :%c $0%n";
whois_modes = " modes :%c $0%n";
whois_idle = " idle :%W $0%n%";
whois_fingerprint = " fingerprint :%c $0%n%:End of WHOIS";
};
};