X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fdocs%2Fmanual.txt;fp=apps%2Firssi%2Fdocs%2Fmanual.txt;h=0000000000000000000000000000000000000000;hb=72c2de619079457f7a68100eb13385275a424a23;hp=d66930fc1f3e3df6208b97325090500ddedc4e51;hpb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;p=runtime.git diff --git a/apps/irssi/docs/manual.txt b/apps/irssi/docs/manual.txt deleted file mode 100644 index d66930fc..00000000 --- a/apps/irssi/docs/manual.txt +++ /dev/null @@ -1,1036 +0,0 @@ - - Irssi 0.8 documentation - http://irssi.org/ - - Copyright(c) 2000 Timo Sirainen - - - Index - - 0. Generic babbling - 1. Installation - 2. Message levels - 3. Flood protection - 4. Configuration - 5. Servers - 6. Channels - 7. IRC commands and features - 8. Notify list - 9. Text highlighting - 10. Ignoring - 11. Logging - - ( not written yet: ) - 12. Aliases - 13. Themes - 14. Last log (currently text version only) - 15. Nick and word completion - 16. Translation tables - 17. Windowing system (text version) - 18. Keyboard (text version) - 19. Perl scripting - - - - 0. Generic babbling - - 0.1 History - - Hello. I'm Timo Sirainen aka. cras, and I'm an IRC addict. :) - - I'm actually quite new in IRC, I got my first internet connection - sometimes around fall 1997 and I started actively IRCing around - christmas. I used EPIC and BitchX mostly at the start, but soon - found some nice KDE IRC client which name I can't remember anymore. - It's author however stopped developing it after I had been using it - a few months. And since it had bugs and all, I wanted another nice - GUI IRC client. I didn't find any. - - Since I've always been a coder and do-it-yourself guy (my own - offline reader and BBS software in the BBS ages), I started my own - IRC client at spring 1998. I called it yagIRC standing for "Yet - another GTK IRC client". GTK was in around version 1.0 back then, - and it had a lot of features/bugs which I found all the time as I - tried to do some "different" things than other people. These - sometimes prevented me of doing something some feature I wanted. - - So, in summer 1998 I went to army and I passed development of yagIRC - to two guys, they did a few new features and released a version or - two, but finally (in summer 1999?) they put a message to web page - which told that they finally had stopped developing it entirely, - also saying that my code was a total mess :) (yes, it was a mess) - - I got out of the army 1.1.1999. I promised to myself that I wouldn't - do another IRC client, but after trying to use BitchX a while, I - started dreaming about an IRC client which would have an excellent - look and feel. After trying various things, I only came up with the - GNOME panel applet which people still tell me that it's a great - feature. I was more like thinking some pretty little icons in - some corner telling me about new messages and other stuff.. - - I thought that I would keep Irssi a small project, just doing a few - little features that *I* wanted, nothing for others. But after few - versions and few interested people, I started coding it more and - more generic.. - - Finally, after releasing version 0.6.0 (february, 1999) I realized - that things were getting into a big mess again. I started a rewrite, - I organized the code into irc-base, irc-extra, user interface and - GUI directories, created the signalling system for letting them - communicate themselves easily and released 0.7.0. This was the base - for the rest of the 0.7.x releases, and it did work pretty well. - The signalling system was excellent, for example creating text mode - version was really easy and you didn't need tens of (empty) gui_xxx() - functions like in the yagIRC days. Maintaining the text and GTK - versions separately was really easy too. - - About a year later after releasing Irssi 0.7.0, I started having - dreams about an IRC client that would be extremely modular, like you - could upgrade the client to newer version ON THE FLY without needing - to even disconnect from the servers. I started a project codenamed - i2k, I took the code from Irssi, split it into more directories and - changed quite a lot of the code to work a bit differently. - - I developed i2k quite a long, until I finally gave up with it since - it could do only some basic things, and Irssi 0.7 really needed - maintaining. After a while I got an idea, maybe I could merge the - code from the i2k to Irssi more easily than rewriting the whole - client. This was more easier than I thought. It's now been two - months since I started it, and Irssi 0.8 is looking absolutely - excellent. - - 0.2 Irssi 0.8 - - Irssi 0.8 is my fourth try to create the perfect IRC client. - This time I'm concentrating to the code. I try to avoid kludges, I - try to make as simple code as I can, and I try to provide enough - easy to use functions so that extending Irssi is as simple as - possible. I also try to keep the "bloat" features in scripts or - modules instead of build-in. - - I think I'm succeeded with these goals pretty well, there's some - small problems but everything in the big picture looks great. - - 0.3 Future - - What about Irssi 1.0, what will it look like? - - I was thinking about the Linux kernel versioning and keeping - Irssi 0.8 a stable version all the time while developing new - features only to Irssi 0.9. After 0.9 is finished, it will be - called 0.10 or 1.0 depending if I think it's ready to be called 1.0. - - 1.0's goal is that it has all the possible features anyone will - ever need. If not build-in, then in scripts or loadable modules. - Not very small goal :) - - 0.4 This documentation - - Strange, I just created the index list and started writing this. - I've never been too good at documentation and I usually don't like - writing it, but after coding so much recently and seeing that the - NEWS file was getting *SO* large, I thought that I had to put all - these features down somewhere so people (and me!) would find them. - - - 1. Installation - - 1.1 Configuration - - configure script accepts these parameters: - - --enable-ipv6 Enable IPv6 support - --disable-curses-windows Don't use curses windows. Use this if - screen drawing seems too slow for some reason. - This option may not work properly with all - curseses (solaris8). - --enable-memdebug Enable memory debugging, great for finding - memory leaks - - --with-perl=static Build Perl support statically to irssi binary - (default is to build a module) - --with-perl-lib=[site|vendor|DIR] Specify installation dir for - Perl libraries. Site is the default (usually - /usr/local/lib/perl/...), vendor uses the path - where the base of the perl is installed - (/usr/lib/perl/...), or DIR specifies exactly - where you want to install it. - --without-perl Disable Perl support - - --with-socks Build with socks library - --with-bot Build irssi-bot - --with-proxy Build irssi-proxy module - --without-textui Build without text frontend - --with-servertest Build test irc server which you can use to try - crash irc clients - - In short: - - ./configure - make - make install - - - 1.2 Command line parameters - - --connect -c Connect to server at startup - --port -p - specify port - --noconnect -! Don't autoconnect to any servers at startup - --nick -n Specify what nick to use - --hostname -h Specify what host name to use - - - 2. Message levels - - - Message levels (or in short, levels) are used almost everywhere. - They describe what kind of messages we're dealing with. Here's a - list of them all: - - CRAP - Can be almost anything - MSGS - Private messages - PUBLIC - Public messages in channel - NOTICES - Notices - SNOTES - Server notices - CTCPS - CTCP messages - ACTIONS - Actions (/me) - usually ORed with PUBLIC or MSGS - JOINS - Someone joins a channel - PARTS - Someone parts a channel - QUITS - Someone quits IRC - KICKS - Someone gets kicked from channel - MODES - Channel mode is changed - TOPICS - Channel topic is changed - WALLOPS - Wallop is received - INVITES - Invite is received - NICKS - Someone changes nick - DCC - DCC related messages - DCCMSGS - DCC chat messages - CLIENTNOTICES - Irssi's notices - CLIENTERRORS - Irssi's error messages - CLIENTCRAP - Some other messages from Irssi - - And a few special ones that could be included with the - levels above: - - HILIGHT - Text is highlighted - NOHILIGHT - Don't check highlighting for this message - NO_ACT - Don't trigger channel activity when printing - this message - NEVER - Never ignore or log this message - - - 3. Flood protection - - 3.1 Command flood protection - - Most (all?) IRC servers' flood protection works like this - (from RFC 1459): - - -------- - * check to see if client's `message timer' is less than - current time (set to be equal if it is); - - * read any data present from the client; - - * while the timer is less than ten seconds ahead of the current - time, parse any present messages and penalize the client by - 2 seconds for each message; - - which in essence means that the client may send 1 message every 2 - seconds without being adversely affected. - -------- - - Irssi's flood protection works the same way, except it penalizes - 2.2 seconds by default for each message (helps with some servers). - You can change it with /SET cmd_queue_speed . You can - also change the number of commands before flood protection activates - (ie. the burst count) with /SET cmd_max_at_once . - - IRC servers also have an input buffer where the client's commands - are saved before processed. It's size is server specific (can be as - low as 1k!) If it gets full, the server kicks you out (the - "Excess flood" quit message). Irssi's flood protecion protects this - pretty well with small commands, but if you send many big commands - (like >400 char long messages) fast, you could get easily kicked out. - Normally this isn't problem, but if you have scripts sending long - messages, you should remember this. I'm not sure how much you should - wait between the long messages, but 2 seconds isn't enough. - - This protection is used with all commands sent to server, so you - don't need to worry about it with your scripts. - - 3.2 CTCP flood protection - - Other people can pretty easily flood you with CTCP requests, and - even if you wouldn't get kicked out from the server, they could - easily grow your command queue. So, Irssi's CTCP flood protection - works like this: - - First it checks how big the CTCP reply queue is, if it's longer - than `max_ctcp_queue', the CTCP is ignored. You can change it with - /SET max_ctcp_queue (default is 5). - - After this the CTCP reply is placed to server's "idle queue", so - the reply is sent "when there's extra time", this means that if - you are busy sending other commands, it might take a while before - the reply is sent. - - 3.3 Detecting floods - - Irssi is all the time automatically checking different flooding, - when flood is noticed, it sends "flood" signal. This can be easily - used for example to create a script for kicking channel flooders. - Autoignore uses this also, see section 10.2. - - Flood is detected when more than `flood_max_msgs' same kind of - messages arrives in `flood_timecheck' seconds to same target - (channel or private msg) so it isn't flooding if same user sends a - message to 10 different channels you are on, but it is flooding if - 10 messages are sent to same channel by the same user. - - Currently only messages, notices and ctcps are checked for - flooding. - - /SET flood_max_msgs = , default is 4 - /SET flood_timecheck = , default is 5 seconds - If either of these is 0, the flood checking is disabled. - - - 4. Configuration - - 4.1 Configuration files - - The configuration is saved to ~/.irssi/config file. You can edit - it with text editor if you want, you can also add comments to it - and they stay there even if /SAVE is used. Comments are the lines - starting with # character. Any errors in config file are displayed - at startup. - - Irssi uses it's own config library for handling the config file. - The format is pretty much the same as in libPropList and should be - easily understandable. - - You can reload the config file on the fly with /RELOAD command, you - can also read a different config file with /RELOAD . - - If you change any settings, they aren't saved to file until you use - /SAVE. You can save the config file to different place with - /SAVE . - - 4.2 Settings - - You can view or change the settings with /SET command. - - /SET without any arguments displays all the settings. - /SET displays settings which key (partly) matches - /SET sets to - - Boolean settings accepts only values ON, OFF and TOGGLE. You can - also use /TOGGLE command to change them, so /TOGGLE behaves - like /SET TOGGLE. /TOGGLE also accepts arguments ON and OFF - when /TOGGLE behaves exactly like /SET. - - Remember that changes are not saved until you use /SAVE! - - - 5. Servers - - 5.1 Generic - - Irssi is multi-server friendly. You can be connected to multiple - different servers, or the same server multiple times. Most of the - settings that let you specify the channel, let you also specify IRC - network. - - Servers are referenced by a "server tag". If the server is known - to belong to some IRC network, the tag is the IRC network's name, - like "IRCnet". If the IRC network is unknown, the tag is created - from the server's name, like irc.funet.fi -> funet. If the tag - already exists, a number is added to the end of it and raised until - unused tag is found. - - Quit messages have a small problem if there's already a few - commands in server's input command queue. If the server's socket is - disconnected immediately after QUIT message is sent, it is possible - that the server didn't yet process the quit command and your quit - message will be "broken pipe" or something similiar. The right thing - to do is to let the server disconnect you, but what if the - connection to server is broken and the server never disconnects you? - I solved the problem by waiting a few seconds to see if the server - disconnects us. If it didn't, force the disconnect. This explains - the (a bit annoying) "waiting for servers to close connections" - message when quiting Irssi. Most IRC clients just ignore this whole - problem, but I hate it if my quit message isn't displayed right. - - 5.2 IRC networks - - Different IRC networks behave a bit differently, and to be as - efficient as possible, Irssi needs to know a few things about them - or the safe defaults will be used. The default configuration file - contains the settings for the biggest IRC networks. - - /NETWORK ADD [-kicks ] [-msgs ] [-modes ] - [-whois ] [-cmdspeed ] [-cmdmax ] - [-nick ] [-user ] [-realname ] - [-host ] [-autosendcmd ] - - -kicks: Maximum number of nicks in one /KICK command - -msgs: Maximum number of nicks in one /MSG command - -modes: Maximum number of mode changes in one /MODE command - -whois: Maximum number of nicks in one /WHOIS command - -cmdspeed: Same as /SET cmd_queue_speed, see section 3.1 - -cmdmax: Same as /SET cmd_max_at_once, see section 3.1 - -nick, -user, -realname: Specify what nick/user/name to use - -host: Specify what host name to use, if you have multiple - -autosendcmd: Command to send after connecting to a server - - With -autosendcmd argument you can automatically run any commands - after connecting to the network. This is useful for automatically - identifying yourself to NickServ, for example - - /NETWORK ADD -autosendcmd "/msg NickServ identify secret" freenode - - /NETWORK REMOVE - - 5.3 Manually connecting and disconnecting - - To connect to a new server, use: - /CONNECT [-network ] [-host ]
| - [ [ []]] - - If there's no password, set it to -. You can directly connect to - IRC server in specified address, or you can connect to some IRC - network and Irssi will pick the server for you. - - You don't need to specify the IRC network, password, nick, etc. if - you setup the server using /SERVER ADD (see next section). If the - settings can't be found there either, Irssi will use the defaults: - - /SET default_nick = , defaults to user_name - /SET alternate_nick = , defaults to _ - /SET user_name = , defaults to your login name - /SET real_name = , taken from /etc/passwd by default - /SET hostname = , what host name to use when connecting - /SET skip_motd ON|OFF|TOGGLE - Don't show server's MOTD - - NOTE: /CONNECT is also a command for IRC operators to connect IRC - servers to other IRC servers. If you want to use it, use /SCONNECT - instead. - - You can disconnect from the server with: - /DISCONNECT *| [message] - - If message isn't given, Irssi will use the default quit message. You - can set it with /SET quit_message , default is "leaving". - - /SERVER disconnects the server in active window and connects to new - one. It will take the same arguments as /CONNECT. If you prefix the - address with + character, Irssi won't disconnect the active server, - and it will create a new window where the server is connected - (ie. /window new hide;/connect address) - - /SERVER without any arguments displays list of connected servers. - - 5.4 Server settings - - /SERVER ADD [-auto | -noauto] [-network ] [-host ] - [-cmdspeed ] [-cmdmax ] [-port ] -
[ []] - - -auto: Automatically connect to server at startup - -noauto: Don't connect to server at startup (default) - -network: Specify what IRC network this server belongs to - -ircnet: Same as -network. Deprecated. Do not use. - -host: Specify what host name to use, if you have multiple - -cmdspeed: Same as /SET cmd_queue_speed, see section 3.1 - -cmdmax: Same as /SET cmd_max_at_once, see section 3.1 - -port: This is pretty much like the port argument later, except - this can be used to modify existing server's port. - - /SERVER REMOVE
[] - - /SERVER LIST - - Servers are identified by their name and port. You can have multiple - entries for the same server name but in different ports. This is - useful for IRC proxies, in one port you could have IRCNet proxy, - another port would have EFNet, etc. - - If you wish to change existing server's port to something else, use - -port command. For example if you had irc.server.org in port 6667 - and you wanted to change it to port 6668, use command: - - /SERVER ADD -port 6668 irc.server.org 6667 - - If you want to remove some settings from existing server, for - example hostname, just give -host "" parameters to it. - - After connected to server, Irssi can automatically change your user - mode. You can set it with /SET usermode , default is +i. - - 5.5 Automatic reconnecting - - If you get disconnected from server, Irssi will try to reconnect - back to some of the servers in the same IRC network. To prevent - flooding the server that doesn't let you in (and avoiding K-lines), - Irssi won't try to reconnect to the same server more often than - once in `server_reconnect_time' seconds. You can change it with - /SET server_reconnect_time , default is 5 minutes. - - After reconnected to server, Irssi will re-set your user mode, away - message and will join you back to the same channels where you were - before the connection was lost. - - You can see list of the reconnections with /SERVER. The servers - that have tag as RECON-n are the reconnections. You can remove them - with /DISCONNECT , and you can reconnect to them immediately - with /RECONNECT . /RECONNECT without any arguments will - disconnect from the active server and reconnect back immediately. - - 5.6 Command redirections - - FIXME - - 5.7 Server idle command queue - - There's some situations when you want to ask something from the - server which isn't really important. For example when connected - to server and you didn't get your nick, Irssi asks with /WHOIS - who has your nick and displays it. But if you already have a lot of - commands in buffer, like you just autojoined to many channels, - you'd rather first let the JOIN commands to be sent to server - - This is where server idle queue gets into picture. Commands in - idle queue are sent to server when there's nothing else in the - normal command queue. - - Idle queue works with server redirections, so you can ask something - from server when it has time and your function is called when the - reply is received. - - 5.8 Net splits - - Irssi keeps track of people who were lost in net splits. You can - get a list of them with /NETSPLIT command. - - Another use for this is with bots. Channel master can op anyone in - the channel and the bot happily accepts it. But if the opped user - is lost behind a net split and in netjoin the server gives ops for - the user, the bot should decide if the user (who isn't in bot's user - database) is a malicious attacker who should be deopped, or if - he/she/it is just some user that already had ops before the net - split. - - /SET hide_netsplit_quits - If ON, hide all netsplit quit messages - and display only "Netsplit host1 host2: nicks". - - /SET netsplit_max_nicks - If non-zero, limit the number of nicks - printed in netsplit message and add "(+ more, use /NETSPLIT - to show all of them)" text. - - 5.9 Lag checking - - Irssi will constantly check how big the lag to the server is. It's - done by sending IRSSILAG CTCP replies to ourself. Using PING command - for this would seem more reasonable, but there was too many problems - with it - some servers didn't even know the whole PING command! - - If the lag is too big, Irssi will reconnect to different IRC server. - This is sometimes useful if the connection has been stuck for 30 - minutes but it still hasn't been closed. - - /SET lag_check_time - Specifies how often to check the - lag. If it is set to 0, the lag detection is disabled. Default - is 30 seconds. - /SET lag_max_before_disconnect - Specifies how big the lag - can be before reconnecting to another server. Default is 5 - minutes. - /SET lag_min_show <100th seconds> - Specifies the minimum lag to - display in status bar. Default is 1 second. - - 5.10 Raw log - - All data that is received or sent to server is kept in a raw log - buffer for a while. Also event redirections are kept there. This is - very useful for debugging purposes. - - /RAWLOG SAVE - Save the current raw log buffer to file - /RAWLOG OPEN - Like /RAWLOG SAVE, but keep the log file - open and write all new log to it. - /RAWLOG CLOSE - Close the open raw log - - /SET rawlog_lines - Specify the number of raw log lines to - keep in memory. - - - 6. Channels - - 6.1 Generic - - There's several types of channels you can join, here's a list of - the ones that Irssi supports: - - #channel - Normal channels, most commonly used - +channel - Modeless channels, channel has no modes, no channel - operators and no topic. This way no-one is above others - and there's no operator-wars etc. But on the other hand, - you can't kick any troublemakers.. - &channel - Local channels, these channels aren't distributed outside - the IRC server. IRCNet has replaced server notices with - several different &channels (&ERRORS, &NOTICES, etc.) - !channel - New channels, currently supported only by IRCNet. These - channels are designed so that they can't be taken over - with net splits. /JOIN !channel joins to existing - !channel, /JOIN !!channel creates a new channel. - - Most of the commands that take channel name as parameter, can also - accept * as the channel name, which means the active channel. - - - 6.2 Joining, parting - - Channels can be joined with /JOIN command. You can join to multiple - channels with one /JOIN by giving it a comma-separated list of - channels, like /JOIN #channel1,#channel2. If you don't give the - channel mode character (#+&!) before the channel name, Irssi - automatically uses # channels. - - Channel name may contain any characters except SPACE, BELL, NUL, - CR, LF or comma (','). You can also restrict the channel to only - certain users by adding the hostmask to the end of the channel - name separated with a ':' character, like #channel:*!*@*.fi lets - only people from .fi domain join the channel. This doesn't work with - all IRC servers and it's pretty difficult to use, since everyone - will have to always join the #channel:*!*@*.fi channel, #channel or - #channel:*!*@*.se channels are different channels. Ban exceptions - (+e) and especially invite lists (+I) replace this functionality - pretty well, see section 6.5. - - If channel has a password (aka. key), you can join it with - /JOIN #channel pass, or multiple channels with passwords with - - /JOIN #secret1,#public,#secret2 pass1,x,pass2 - - #public didn't have any password, so we used "x" as it's password. - It doesn't really matter what password you send with channels that - don't have passwords. - - If you want to join to channel in different server than active one - in window, you can do it with /JOIN - #channel, like - /JOIN -efnet #irssi. - - You can leave channels with /PART [] []. - For example "/PART byebye all" leaves the active channel with - "byebye all" message, or /PART #chan1,#chan2 leaves those channels. - - NOTE: Sending JOIN 0 directly to server (/quote join 0) leaves all - the channels you are joined. There's been some jokes about joining - for example to #2000,0 where the server actually leaves you from all - channels. With Irssi this isn't really a problem, since irssi would - happily join to channels #2000 and #0. - - 6.3 Automatic joining - - Irssi can automatically join to specified channels in specified - IRC networks. It can also automatically send the password when - manually joining to channel without specifying the password. - - /CHANNEL ADD [-auto | -noauto] [-bots ] [-botcmd ] - [] - - With -bots and -botcmd arguments you can automatically send - commands to someone in channel. This is useful for automatically - getting ops for channels, for example - - /CHANNEL ADD -auto -bots "*!bot@bothost.org bot*!*@host2.org" - -botcmd "msg $0 op mypass" #channel ircnet - - You can also use the -botcmd without -bots argument. The command is - then sent whenever you join the channel. - - If you want to remove some settings from existing channel record, - for example bots, just give the -bots "" parameters to it. Password - can be removed by setting it to - (or actually, "" works too). - - You can remove the channels with - /CHANNEL REMOVE - - /CHANNEL LIST displays list of channels with settings. - /CHANNEL without any arguments displays list of channels you have - joined. You can also use /CHANNEL to join to channels just as with - /JOIN, like /CHANNEL #a. - - 6.4 After-join automation - - When joined to channel, Irssi asks some information about it. - After it has got all of it, it prints the "Channel synchronized" - text. The following information is asked: - - - Channel mode - - WHO list to get nicks' hosts - useful for /BAN for example - - Ban list - useful for allowing /UNBAN to use wildcards - - Exception list, Invite list - these are asked only from servers - that support +I and +e modes, mostly just IRCNet and some EFNet - servers. These aren't really needed for anything currenty, except - /INVITELIST and /BANS uses them to display the lists. - - If you have joined many channels at once, Irssi tries to optimize - the commands it sends to server. Instead of sending two commands - to ask two channels' mode, it just sends MODE #a,#b. Same thing with - WHO list and ban/except/invite lists. Some servers do not support - this and they reply with different kinds of error messages, Irssi - tries to deal with them all right and resend the commands again - separately. However, some strange servers sometimes use some weird - error replies that Irssi doesn't know about, and the channel never - gets synchronized. If this happens with some server you know, please - let the Irssi's author know about it. - - 6.5 Channel modes - - Irssi knows these channel modes: - - i - Invite only - People can't join to channel without being - /INVITEd, or being in invite list (+I, see below). - m - Moderated - People who don't have voices (+v) can't send - messages to channel - p - Private - People who aren't joined to channel can't see it - for example with /WHOISing people who are in channel. - s - Secret - Like private, but the channel isn't displayed in - /LIST's output. - n - No external msgs - Without this mode, anyone can send messages - to channel without even being joined. - t - Topic can be changed only by channel operators. - - k - Channel password (aka. key) - The channel can't be joined - without specifying the channel key (see section 6.2). - - l - User limit - No more than people can join to - channel. This can be overridden with /INVITE with some - servers. - - This is usually used for protecting channel from join - flooding, like some bot allows max. 5 users to join in - one minute or so. - - a - Anonymous - No-one's nick name, host or anything else can be - seen. All messages, joins, parts, modes, etc. are seen as coming - from nick "anonymous", this could be pretty confusing but nice - feature if you want total anonymity. This mode can only be set, - never unset. This mode isn't supported by all servers. - - NOTE: there is/was one bug :) Channel operators can guess if some - nick might be in the channel and try to kick it. If nick was in - channel, everyone will see the nick that was kicked. - - r - Re-op - If channel becomes opless for longer than 45 (?) minutes, - op everyone in the channel. This works only in !channels. This - mode can only be set, not unset by channel creator. - - b - Set/remove ban. For example MODE #channel +b *!*@*.org bans - everyone from .org domain. - - If someone from .org domain was already in channel before the - ban was set, he/she couldn't be able to write any messages to - channel (doesn't work with all servers). - - Ban can also be overridden with /INVITE, although many stupid - IRC clients automatically kick the user out because they see - the ban and think that because of it the user shouldn't be in - the channel (doesn't work with all servers). - - e - Ban exceptions. You could for example ban everyone from - *!*@*.org but set ban exception to *!*@*.host.org - works only - in IRCnet/EFnet servers. - - I - Invite list. If channel is invite only (+i), people in this - list can join it without being /INVITEd - works only in - IRCnet/EFnet servers. - - This is excellent for in-country channels that don't want - foreigners (spammers!) to join the channel, for example setting - channel's mode to +i and +I *!*@*.fi allows only finnish people - to join the channel. In addition to this, there's usually a bot - in the channels and sending /MSG bot invite command to it - /INVITEs you to the channel. - - The ':' feature in channel modes is quite similiar, see section - 6.2. - - O - Channel owner, the nick who creates a !channel receives this - mode. It isn't displayed anywhere, you can't pass it to anyone - else and you can't regain it again. This is needed for setting - +r mode in channel when it's first created. - - o - Grant or revoke channel operator status from nick - v - Grant or revoke voice status from nick, only people with - +v (or +o) can talk to channel when it's moderated (+m). - - You can send multiple mode changes with one mode command: - - /MODE #channel +nto-o+v nick1,nick2,nick3 - - This would set channel's mode to +nt, give ops to nick1, take ops - from nick2 and give voices to nick3. - - You can set only limited number of modes that requires argument in - one command. In IRCnet it's 3, in EFnet it's 4 and in many others - it's 6. If it's not known, Irssi defaults to 3. Irssi will also - automatically split them, so you can use /MODE +oooooo n1,n2,.. - command to op 6 people and Irssi will split it to two commands in - IRCnet/EFnet. - - Instead of manually setting o, v and b modes you probably want to - use /OP, /DEOP, /VOICE, /DEVOICE, /BAN and /UNBAN commands. - - /OP, /DEOP, /VOICE and /DEVOICE commands allows wildcards as their - argument. So /OP ni* will op all non-opped people whose nick start - with "ni". /DEOP * will deop everyone else except you. /VOICE and - /DEVOICE work the same way. - - 6.6 Bans - - You can give /BAN a list of nicks or whole ban masks. /UNBAN - accepts wildcards, so if you have ban nick!user@reallylonghost.org, - you can simply unban it with /UNBAN *really* - - Using /BAN , Irssi will automatically create the mask. You - can change the way it's created with /BANTYPE command: - - /BANTYPE normal|host|domain|custom - - Normal - *!user@*.domain.net - Host - *!*@host.domain.net - Domain - *!*@*.domain.net - Custom [nick] [user] [host] [domain] - eg. /bantype custom nick domain - nick!*@*.domain.net - eg. /bantype custom user host - *!user@host.domain.net - - Irssi has also a couple of commands to help banning people: - - /KICKBAN [] - ban and kick the nick - /KNOCKOUT [] - kickban the nick, unban - after waiting , default is 5 minutes. - - 6.7 Massjoins - - Automatic opping the nick right after joined to channel is a pretty - commonly used. What mostly irritates me with this is that the nick - may be opped multiple times by different people, or after netsplits - when the people join back, the server will op them, but still the - bots op the people again, even if it was just done by the server. - - Irssi has this feature that it sends a "massjoin" signal a while - after the real join. If someone has already opped the nick, you can - easily check it in the massjoin signal handler. - - The default is to report maximum of 5 joins in one massjoin signal. - If the 5 joins don't come in 5 seconds, the signal is sent anyway. - You can change these with /SET massjoin_max_wait and - /SET massjoin_max_joins . - - - 7. IRC commands and features (FIXME) - - 7.x Basic commands - - 7.x IRC operator commands - - 7.x Away features - - 8. Notify list - - Notify list is generally used for knowing when someone you know - comes to IRC or leaves from IRC. Traditionally notify list can - handle only a list of nicks, no nick masks etc. I lost interest to - traditional notify lists long time ago, since the people I know - are in IRC all the time. So I made a bit more featureful notify - list: - - /NOTIFY [-list] [-away] [-idle [minutes]] [network [network...]] - - -away: Notifies about away-status changes - -idle: Notifies if idle time is first larger than - (default is hour) and then it drops down. - -list: Lists the notify list entries with all their settings - : Either a simple "nick" or "nick!*@*blah.org". The nick - can't contain wildcards, but the user/host can. - - /UNNOTIFY - - /NOTIFY without any arguments displays if the people in notify - list are online or offline. - - - 9. Text highlighting - - Irssi supports highlighting lines that match the specified pattern. - You can also change the color of the nicks that match specified nick - mask, so you could for example show your friends' nicks with - different color. - - /HILIGHT [-mask | -regexp | -word] [-nick] [-color ] - [-level ] [-channels ] - - -mask: Match only for nick, is a nick mask - -regexp: is a regular expression - -word: must match to full words - -nick: Hilight only the nick, not the whole line - -color: Print the reply with . color is in %code format - (see docs/formats.txt) - -level: Match only for messages, default is - publics,msgs,notices,actions - -channels: Match only in - - /DEHILIGHT | - - /HILIGHT without any arguments displays list of the hilights. - -If is a - number, Irssi will treat it as a MIRC color code. You can also use - bolds (^B), underlines (^_) etc. as if you like. - - - 10. Ignoring - - 10.1 Manual ignoring - - Irssi's ignoring options should be enough for everyone :) - - /IGNORE [-regexp | -word] [-pattern ] [-replies] [-except] - [-channels ] <^levels> - - -regexp: is a regular expression - -word: must match to full words - -pattern: must match to the message's text - -replies: Ignore replies to nick in channels. For example - "/IGNORE -replies *!*@*.fi PUBLIC" ignores everyone - from Finland, but also anyone sending message - "tofinnishnick: blahblah". - -except: *DON'T* ignore - -channels: Ignore only in channels - : Either a nick mask or list of channels - : List of levels to ignore - <^levels>: List of levels to NOT ignore - (/ignore -except nick notices = /ignore nick ^notices) - - /UNIGNORE | - - /IGNORE without any arguments displays list of ignores. - - The best match always wins, so you can have: - - /IGNORE * CTCPS - /IGNORE -except *!*@host.org CTCPS - - 10.2 Automatic ignoring - - Irssi can automatically set ignores for people who flood you. - Currently you can autoignore MSGS, NOTICES, CTCPS and PUBLIC. - Actions are placed to either MSGS or PUBLIC. See section 3.3 for - definition of the flood. - - /SET autoignore_time specifies how long to ignore the - user. - - /SET autoignore_levels specifies what levels to ignore - automatically, default is to ignore only CTCPS. - - - 11. Logging - - 11.1 Basic logging - - /LOG OPEN [-noopen] [-autoopen] [-targets ] - [-window] [] - - -noopen: Create the entry to log list, but don't start logging - -autoopen: Automatically open this log file at startup - -targets: Log only in specified channels/nicks - -window: Log the active window - : File name where to log, it is parsed with - strftime(), so %d=day, etc. see "man strftime" for - more info. Irssi will automatically check every hour - if log should be rotated. - : Defaults to ALL - - /LOG CLOSE | - Close log and remove from log list - /LOG START | - Start logging to file - /LOG STOP | - Stop logging to file - /LOG without any arguments displays the log list - - /SET log_create_mode - Specifies what file mode to use with - the created log files. Default is 0644. - - All of these are parsed with strftime(): - /SET log_timestamp - Specifies the time stamp format. - Default is "%H:%M ". - /SET log_open_string - Text written to log when it's opened - /SET log_close_string - Text written to log when it's closed - /SET log_day_changed - Text written to log when day changes - - NOTE: Log files are locked after opened, so two Irssis can't - accidentally try to write to the same log file. - - Examples: - - /LOG OPEN -targets cras ~/irclogs/cras.log MSGS - - Logs all messages from/to nick `cras' - - /LOG OPEN -targets #linux ~/irclogs/linux/linux-%Y-%m-%d - - Logs all messages in channel #linux. Log is rotated daily, so - logs in 1. May 2000 goes to file "linux-2000-05-01", when the - day is changed, Irssi closes the log and starts logging to - "linux-2000-05-02" etc. - - 11.2 Window logging - - /WINDOW LOG ON|OFF|TOGGLE [] - - Start/stop logging the active window. This works exactly like - /LOG OPEN -window. - - /WINDOW LOGFILE - - Sets the default log file to use in the window, it can be - overridden with specifying the file name in /WINDOW LOG. If no file - name isn't given, Irssi defaults to ~/irc.log. or - ~/irc.log.Window if window doesn't have name. - - Creates the entry to log list, same as /LOG OPEN -window -noopen. - Also, if /WINDOW LOG ON is used it starts logging to this file. - - 11.3 Automatic logging - - This is the logging method that I had been asked to implement for - ages, and it is really simple to use too. It logs only messages - that have "targets", ie. private messages and channel specific - messages (msgs, modes, topics, etc). WHOIS replies and such aren't - logged. If you with to log them too, use the /LOG command. - - So, when for example a private messages comes to you from "guy" - nick, Irssi creates a log file ~/irclogs/guy.log for it. After few - minutes of inactivity, the log file is closed. - - /SET AUTOLOG ON|OFF|TOGGLE - Enable/disable autolog. - - /SET AUTOLOG_LEVEL - Specifies what levels to log, default - is ALL. - - /SET AUTOLOG_PATH - expandos (see special_vars.txt) can be - used, $0 is the target. If you are using multiple servers, it makes - sense to use the server tag as part of the file name, for example - ~/irclogs/$tag/$0.log (this is the default). The directories are - created automatically. - - 11.4 Awaylog - - Irssi logs specified messages when you're away. After you set - yourself unaway, Irssi will display all the messages in the awaylog. - - /SET awaylog_level - Default is MSGS HILIGHT - /SET awaylog_file - Default is ~/.irssi/away.log - - You can disable this feature by setting awaylog_level to NONE. - - -.. no, the docs end here, I got bored of writing these after a few days and -haven't touched these since then.