Image of the glider from the Game of Life by John Conway
Skip to content

Pimp My Irssi

Warning: This post could be very long in many RSS readers and planets. Thus, going against how I feel about chopped RSS, I think it would be wise to do so here. At the bottom of the post, there is a "Continue Reading" link. If you're curious, please click through.

Per John Anderson's post about pimping his Irssi, I thought I would share my pimped Irssi. Here are a couple listings in my ~/.irssi/ directory.

[Sun 08/01/06 07:39 MST][pts/5][i686/linux-gnu/2.6.15-28-386][4.2.5]
<aaron@achilles:~/.irssi>
zsh 13 % ls -l *.theme        
-rw-r----- 1 aaron aaron 8472 2008-01-05 19:18 default.theme
-rw-r--r-- 1 aaron aaron 2690 2008-01-05 19:18 oscar.theme
[Sun 08/01/06 07:39 MST][pts/5][i686/linux-gnu/2.6.15-28-386][4.2.5]
<aaron@achilles:~/.irssi>
zsh 14 % ls -l scripts        
total 104
-rw-r--r-- 1 aaron aaron 70493 2007-10-03 16:43 adv_windowlist.pl
-rw-r--r-- 1 aaron aaron  1665 2007-10-03 16:26 autorejoin.pl
drwxr-xr-x 2 aaron aaron  4096 2008-01-05 19:01 autorun
-rw-r--r-- 1 aaron aaron  2191 2007-10-03 16:33 fnotify.pl
-rw-r--r-- 1 aaron aaron  7720 2007-10-03 16:28 screen_away.pl
-rw-r--r-- 1 aaron aaron  7730 2008-01-05 19:00 trackbar.pl
[Sun 08/01/06 07:39 MST][pts/5][i686/linux-gnu/2.6.15-28-386][4.2.5]
<aaron@achilles:~/.irssi>
zsh 15 % ls -l scripts/autorun
total 0
lrwxrwxrwx 1 aaron aaron 16 2007-10-03 16:26 autorejoin.pl -> ../autorejoin.pl
lrwxrwxrwx 1 aaron aaron 13 2007-12-18 10:56 fnotify.pl -> ../fnotify.pl
lrwxrwxrwx 1 aaron aaron 17 2007-10-03 16:29 screen_away.pl -> ../screen_away.pl
lrwxrwxrwx 1 aaron aaron 14 2008-01-05 19:01 trackbar.pl -> ../trackbar.pl

First off, I just found the oscar theme last night, and I love it. I visited the main Irssi site to see if there were any new themes added. To my surprise, there were quite a few. After spending some time analyzing screenshots, and testing a few out, I decided on oscar. Clean theme with green highlights and accents. There is an error when you load the theme, however, that you will notice in your status window. Not sure where the error is coming from.

I have a number of settings that I have modified from default, as well as a number of useful aliases for administering channels. The number aliases are useful for when I'm on pssh on my Centro- less typing, and I can get to the channel easily. Also, being a Dvorak typist, I have changed the default keyboard bindings for jumping to a channel quickly. The first 80 channels are bound to a meta key.

I am also running Bitlbee 1.1.1dev and using Irssi to connect to it. I followed these instructions on the Ubuntu documentation site to compile the latest version, and get it up and running on my server. In bitlbee, I use the "join_chat" command to connect to Jabber MUC channels.

I should mention, although it has nothing to do with Irssi, that I pimped my screen as well, to make it more informative.

Of course, this post would not be complete without a screenshot.

Here's a breakdown of the scripts listed above, and my reason for using them:

  • adv_windowlist.pl-I use this script for quick listing of the channel names. Not loaded by default. I can never remember where a few channels are, so I load it, find my channel name, then unload it. It shows the channel names in the window bar on the bottom next to the window number. Fairly configurable.
  • autorejoin.pl- If I get kicked from a channel, out of fun of course (I'm a good boy on IRC), I use this script to rejoin. In fact, we had a bot in #ubuntu-us-ut that we would play roulette with. If opped, it would kick you from the channel. With autorejoin.pl, I can set a timeout before I rejoin.
  • fnotify.pl- Irssi is my main communication client. Not only do I use it for IRC, but I use it for Jabber IM as well. So, because it is a text-based client, there is no way to notify me when I receive an IM or highlight and I'm not viewing Irssi. Coupled with a simple bash script, I can receive those notifications.
  • screen_away.pl- Because Irssi is running behind a screen session on my server, when I detach screen, this will automatically set my nick status to away. Because I'm running bitlbee in Irssi, it sets the away status for my Jabber client as well.
  • trackbar.pl- I found out about this script from John in his post, actually. Draws a line of dashes showing where you were last when reading that channel. Useful for finding the last spot you were at. You can see it in action in my screenshot above.

The aliases I have at this point:

1          /win 1
10         /win 10
11         /win 11
12         /win 12
13         /win 13
14         /win 14
15         /win 15
16         /win 16
17         /win 17
18         /win 18
19         /win 19
2          /win 2
20         /win 20
21         /win 21
22         /win 22
23         /win 23
24         /win 24
25         /win 25
26         /win 26
27         /win 27
28         /win 28
29         /win 29
3          /win 3
30         /win 30
4          /win 4
5          /win 5
6          /win 6
7          /win 7
8          /win 8
9          /win 9
CS         /msg chanserv
CSACCESS   /msg chanserv access $0 list
CSBAN      /msg chanserv op $C $N;/wait 50;/ban $0;/msg chanserv op $C -$N
CSDEOP     /msg chanserv op $C -$0
CSIDENTIFY /msg chanserv identify $0 $1
CSINFO     /msg chanserv info $0
CSINVITE   /msg chanserv op $C $N;/wait 50;/invite $0;/msg chanserv op $C -$N
CSKICK     /msg chanserv op $C $N;/wait 50;/kick $0 $1-;/msg chanserv op $C -$N
CSKICKBAN  /msg chanserv op $C $N;/wait 50;/kb $0 $1-;/msg chanserv op $C -$N
CSMODE     /msg chanserv op $C $N;/wait 50;/mode $0;/msg chanserv op $C -$N
CSMUTE     /msg chanserv op $C $N;/wait 50;/mode +q $0;/msg chanserv op $C -$N
CSOP       /msg chanserv op $C $0
CSTOPIC    /msg chanserv op $C $N;/wait 50;/topic $0-;/msg chanserv op $C -$N
CSUNBAN    /msg chanserv op $C $N;/wait 50;/unban $0;/msg chanserv op $C -$N
DETACHED   /away screen detached - leave a message
NS         /msg nickserv
NSGHOST    /msg nickserv ghost $0 $1
NSIDENTIFY /msg nickserv identify $0
NSINFO     /msg nickserv info $0
NSLINK     /msg nickserv link $0 $1
NSRECOVER  /msg nickserv recover $0 $1
NSRELEASE  /msg nickserv release $0 $1

My key bindings (for Dvorak typists):

/bind meta-1 change_window 1
/bind meta-2 change_window 2
/bind meta-3 change_window 3
/bind meta-4 change_window 4
/bind meta-5 change_window 5
/bind meta-6 change_window 6
/bind meta-7 change_window 7
/bind meta-8 change_window 8
/bind meta-9 change_window 9
/bind meta-0 change_window 10
/bind meta-' change_window 11
/bind meta-, change_window 12
/bind meta-. change_window 13
/bind meta-p change_window 14
/bind meta-y change_window 15
/bind meta-f change_window 16
/bind meta-g change_window 17
/bind meta-c change_window 18
/bind meta-r change_window 19
/bind meta-l change_window 20
/bind meta-a change_window 21
/bind meta-o change_window 22
/bind meta-e change_window 23
/bind meta-u change_window 24
/bind meta-i change_window 25
/bind meta-d change_window 26
/bind meta-h change_window 27
/bind meta-t change_window 28
/bind meta-n change_window 29
/bind meta-s change_window 30
/bind meta-; change_window 31
/bind meta-q change_window 32
/bind meta-j change_window 33
/bind meta-k change_window 34
/bind meta-x change_window 35
/bind meta-b change_window 36
/bind meta-m change_window 37
/bind meta-w change_window 38
/bind meta-v change_window 39
/bind meta-z change_window 40
/bind meta-! change_window 41
/bind meta-@ change_window 42
/bind meta-# change_window 43
/bind meta-$ change_window 44
/bind meta-% change_window 45
/bind meta-^ change_window 46
/bind meta-& change_window 47
/bind meta-* change_window 48
/bind meta-( change_window 49
/bind meta-) change_window 50
/bind meta-" change_window 51
/bind meta-< change_window 52
/bind meta-> change_window 53
/bind meta-P change_window 54
/bind meta-Y change_window 55
/bind meta-F change_window 56
/bind meta-G change_window 57
/bind meta-C change_window 58
/bind meta-R change_window 59
/bind meta-L change_window 60
/bind meta-A change_window 61
/bind meta-O change_window 62
/bind meta-E change_window 63
/bind meta-U change_window 64
/bind meta-I change_window 65
/bind meta-D change_window 66
/bind meta-H change_window 67
/bind meta-T change_window 68
/bind meta-N change_window 69
/bind meta-S change_window 70
/bind meta-: change_window 71
/bind meta-Q change_window 72
/bind meta-J change_window 73
/bind meta-K change_window 74
/bind meta-X change_window 75
/bind meta-B change_window 76
/bind meta-M change_window 77
/bind meta-W change_window 78
/bind meta-V change_window 79
/bind meta-Z change_window 80

Settings changed from default:

scrollback_page_count = \1
scrollback_lines = 10000
autolog = ON
theme = oscar
screen_away_message = screen detached - leave a message

{ 7 } Comments

  1. Palintheus using Firefox 2.0.0.11 on Ubuntu | January 6, 2008 at 5:15 pm | Permalink

    I would love to know what changes you made to the screen config to get the info at the bottom of the terminal.

  2. dbr using Camino 1.5.3 on Mac OS | January 6, 2008 at 9:54 pm | Permalink

    Palintheus: What I use for the screen info-line.
    $ cat ~/.screenrc
    startup_message off
    vbell off
    hardstatus alwayslastline
    hardstatus string '%{gk}[ %{G}%H %{g}][%= %{wk}%?%-Lw%?%{=b kR}(%{W}%n*%f %t%?(%u)%?%{=b kR})%{= kw}%?%+Lw%?%?%= %{g}]%{=y C}[%d/%m %c]%{W}'

    That displays the following:
    [hostname] (0* active window name) (1- inactive) [01/07 15:24]

  3. ccm using Firefox 2.0.0.11 on Ubuntu | January 7, 2008 at 1:20 am | Permalink

    Thanks Aaron for your hints. Let me add that I frequently use "usercount.pl" which adds a usercount for the current channel in your status bar. I really like to see how many users are currently in a channel in the distribution (ops, voice, normal).

    Greetings from Berlin/Germany.

  4. Nailor using Firefox 2.0.0.11 on Ubuntu | January 7, 2008 at 1:55 am | Permalink

    Thanks for hints. One script more to suggest, is "splitlong.pl" (see: http://irssi.org/scripts/scripts/splitlong.pl)

    It split long (over 512 characters) lines to multiple lines, so your data doesn't get truncated when accidentally writing or pasting long lines.

  5. Aaron using Firefox 2.0.0.11 on Ubuntu 64 bits | January 7, 2008 at 8:49 am | Permalink

    @Palintheus- Emailed my screenrc. Hope you enjoy it.

    @ccm- usercount.pl is a great script. I'm surprised I didn't know about it before. Using it now. I like it.

  6. tim using Epiphany 2.22 on GNU/Linux | May 17, 2008 at 3:25 am | Permalink

    Thanks for the hints. By the way, what's the font you're using in your terminal (http://www.pthree.org/wp-content/uploads/2008/01/irssi.png).

    Regards,
    Tim

  7. Mike Fisher using Google Chrome 0.2.149.30 on Windows XP | October 9, 2008 at 12:34 pm | Permalink

    The error (oscar.theme:96: error: unexpected character `\15', expected string constant) was just that the theme file has DOS line endings. Running dos2unix (or similar) should correct the issue.

{ 2 } Trackbacks

  1. Pimp my IRSSI at Gouki’s Weblog | January 7, 2008 at 2:56 pm | Permalink

    [...] reading the great post by Aaron Toponce on how he pimped his IRSSI I decided to do the [...]

  2. Aaron Toponce : Pimp My Irssi – Part 2 | August 18, 2011 at 10:59 pm | Permalink

    [...] been over 3 years since I wrote the original article about pimping out Irssi, with various themes, scripts, aliases, etc. Well, I figure it’s [...]

Post a Comment

Your email is never published nor shared.

Switch to our mobile site