Skip to content

Instantly share code, notes, and snippets.

@thibaultcha
Last active January 23, 2022 19:08
Show Gist options
  • Save thibaultcha/f24b806c2a420be1f03a to your computer and use it in GitHub Desktop.
Save thibaultcha/f24b806c2a420be1f03a to your computer and use it in GitHub Desktop.
Irssi setup

Irssi setup in 3 minutes

  1. Install irssi:
  1. Install the script manager (usefull to manage other scripts):
$ wget -P ~/.irssi/scripts http://scripts.irssi.org/scripts/scriptassist.pl
$ cp ~/.irssi/scripts/scriptassist.pl.pl ~/.irssi/scripts/autorun
  1. Get the configuration file provided in this gist:
$ wget -q https://gist.githubusercontent.com/thibaultCha/f24b806c2a420be1f03a/raw/37c3f751db2c99269ff49789c42a740fdf3fc18b/config \ 
  -O ~/.irssi/config

Open the configuration and edit it to add servers (Freenode is already included), channels (channels), user infos (settings), NickServ authentication (autosendcmd), ignores (ignores)... See irssi's documentation for more details.

Also set YourNick, YourName, YourPass (if needed).

  1. Launch irssi:
$ irssi
# in irssi:
/connect freenode

You can also turn on autoconnect for some networks.

Scripts suggestions

nm (right aligned nicks)
# in irssi:
/scriptassist install nm
/scriptassist autorun nm

adv_windowlist
$ wget -P scripts http://anti.teamidiot.de/static/nei/*/Code/Irssi/adv_windowlist.pl
$ irssi
# in irssi:
/scriptassist autorun adv_windowlist

trackbar
# in irssi:
/scriptassist install trackbar
/scriptassist autorun trackbar

servers = (
{ address = "eu.irc6.net"; chatnet = "IRCnet"; port = "6667"; },
{ address = "open.ircnet.net"; chatnet = "IRCnet"; port = "6667"; },
{
address = "chat.freenode.net";
chatnet = "Freenode";
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"; },
{
address = "irc.freenode.net";
chatnet = "Freenode";
port = "6667";
use_ssl = "no";
ssl_verify = "no";
autoconnect = "no";
}
);
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";
};
Freenode = {
type = "IRC";
nick = "YourNick";
autosendcmd = "/msg nickserv identify YourPass ;wait 2000";
max_kicks = "1";
max_msgs = "4";
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 = "#mashape"; chatnet = "Freenode"; 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 command -v bc >/dev/null 2>&1\\; then printf '%s=' '$*'\\; echo '$*' | bc -l\\; 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";
};
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 = "yes";
# 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"; };
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"; };
};
};
awl_0 = {
items = {
barstart = { priority = "100"; };
awl_0 = { };
barend = { priority = "100"; alignment = "right"; };
};
};
awl_1 = {
items = {
barstart = { priority = "100"; };
awl_1 = { };
barend = { priority = "100"; alignment = "right"; };
};
};
};
};
settings = {
core = {
real_name = "YourName";
user_name = "YourName";
nick = "YourNick";
};
"fe-text" = { actlist_sort = "refnum"; };
"perl/core/scripts" = {
neat_colorize = "yes";
neat_left_actions = "no";
neat_left_messages = "no";
neat_maxlength = "15";
neat_allow_shrinking = "yes";
neat_colors = "rRgGyYbBmMcC";
neat_right_mode = "yes";
neat_melength = "2";
awl_shared_sbar = "OFF";
awl_viewer = "no";
};
};
ignores = (
{
level = "JOINS PARTS QUITS NICKS";
channels = (
"#mashape",
);
}
);
@briancrink
Copy link

Step 2. scriptassist.pl.pl >> typo: remove the second .pl

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment