This is a BitchX Tutorial originally written in 2001. While it's old it is still relevant modern versions of BitchX. Except eeveryone with a brain uses KDE Konversation instead.
About this document.
What's it about?
BitchX can be a real Bitch to work with. The documentation is poorly written, or so it seams if you do not know where to look for the right documentation. It the interface can be complicated and do one thing at one time and another the next day. Due to my dissatisfaction with current documentations, I decided to write up this small document in the hope of providing some usefull information to the newbie bitchx users out there. But even if you've been using BitchX for quite some time, you might still find this document usefull.
What it's not about
Please note that this is not an installation guide to BitchX, and neither is it a tutorial for IRC. A working BitchX client and some knowledge about what IRC is, and how it generally works is needed in order to understand this document. This document is about BitchX, the commandline client. It's not about the Gtk version of BitchX, though most (if not all) features discussed here, will probably also work with gtk-bitchx.
What is BitchX
BitchX is based on another very popular IRC client, named IrcII, one of the first irc clients. Since ircII is open source software, they were able to take it's sourcecode, and simply extend it with various elements. BitchX is sometimes known as the 'hackers irc client', mainly because of it's advanced IRC features/hacks and because of it's cryptic interface.
- On Fedora:
dnf -y install BitchX
- You can download it from http://www.bitchx.com/download.php
More documentation on BitchX
Because most of BitchX's code base lies in ircII, most of ircII's documentation can also be applied on BitchX. Knowing this will put you one step further into getting to know BitchX. Many documents and tutorials can be found on the internet about ircII, as well as the documents distributed with ircII. At the end of this document, I have put a couple of links which refer to more documentation about ircII and BitchX in the hope that you may use them to extend your knowledge about BitchX.
First of all, I'll teach you some basic IRC-ing features of BitchX.
Connecting to a server
Connecting to an IRC server is easy. In this example, we'll connect to the irc.nl.uu.net server (IRCNet) with the username toDDie:
[todsah@sharky]~$ bitchx toDDie irc.nl.uu.net
You'll now see bitchx being started, and connecting to the specified server, namely irc.nl.uu.net:
-:- Connecting to port 6667 of server irc.nl.uu.net [refnum 0]
After a while, the client will connect to the server, and some information will fly over the screen. Some modes will be changed, and the client will then wait for input from the user (that's you). In some cases, it will take extremely long before bitchx can connect to the server. Waiting for about 10 to 20 seconds is not unusual in these cases. If this also happens to you, your ident may be the problem. When connecting to an IRC server, the server requests your ident. For this to work, the machine you are connecting from (please note that this is the machine through which you connect to the internet, and may not be the machine you are running bitchx from. It might also be your networks gateway) must run an ident server. You can check if it is running this by either running the following command on the commandline :
[todsah@sharky]~$ ps ax | grep identd
When you don't see a line like this:
283 ? S 0:01 identd
something is wrong, and you should start/fix your identd server. Identd seems to have some difficulties when running from inetd (the internet super server). This was at least the case with my Debian GNU/Linux v2.2 machine. The fix was to not start identd from inetd, but as a normal daemon.
Chatting on a channel (public)
In order to start chatting, you will either need to join a channel, or know some usernames. To find out what channels are on the current IRC server, just type the IRC command:
The bitchx client will now tell you that this is not a good idea, and that you should add -YES to the command of you really want to run this command. BitchX isn't kidding when it said this wasn't a good idea. Why? Because most public IRC servers have so many channels, that it'll take forever to list them all. Neither you, nor the IRC server you are connected to will like it if you do this. You might even be disconnected.
It's easier to just ask somebody who's already on IRC on which channel they reside, and join that channel. For instance: #toktok.
Joining the channel
To join a channel named #toktok channel, simply type:
BitchX will join the channel, and show you some information about the channel:
-:- Topic (#toktok): Welcome to #toktok. -:- [Users(#toktok:10)] [ toDDie ] [ BirdSgool ] [@Crasp ] [@toDSaH ] [ DoingK|Na ] [ AczWeg ] [ Zew[AWAY] ] [ Fluxi ] [ tribbel ] [@Ztn-na ] -:- BitchX: Join to #toktok was synched in 5.656 secs!!
Each channel can have a topic. In order to set the topic, you can use the
[#toktok] /topic Hey, I'm the new guy! Grtz, toDDie.
Some channels will not allow you to change the topic. In this case the channel operators (the people with an @ infront of their name) have set the mode of the channel '-t', which means that only other operators may change the topic.
When joining the channel, bitchx will automatically show you the number of users currently on the channel, and a list of their nicknames. You can get this list yourself at anytime (as long as you are on the channel) by typing:
A more extensive list can be retrieved by typing:
This will also show the users mode, hostname and realname. Yet another method is pressing F2 and F3. F2 shows which operators are on the channel, and F3 shows which non-operators are on the channel.
If you want to say something to the channel, just type it at the prompt. The text you typed will then appear on the channel, for everybody on the channel to see. If you want to see something on the channel to which you say to someone specific, it's general to type in their nickname, followed by a colon (':"), or a comma (','):
[#toktok] Zetion: Hey, how are you doing?
The receiving user (in this case user 'Zetion') will see his nickname highlighted in this sentence. BitchX has tab-completion, which means that you only have to enter part of the name, i.e 'Ze' and then can press the tab key, and bitchx will complete the name from 'Ze' to 'Zetion' if possible. If you're on a slow channel, and your already talking to a specific user, and he's talking to you, this isn't neccesary. Just use your common sence. If the user will know you're talkin to him/her, there's no need to prefix your sentence with their nickname. (Also see the Netiquette chapter somewhere else in this document)
If you want to express something, you can use the /me command (talk in the third person about yourself):
[#toktok] /me doesn't like it here
This will be shown on the channel as:
* toDSaH doesn't like it here
Leaving the channel
If you get tired of the channel, you can leave it by typing:
[#toktok] /part #toktok
[#toktok] /part #toktok I'm tired of you people
In which case the users which remain on the channel will see something like:
-:- toDDie has left #toktok: I'm tired of you people
Chatting on multiple channels (public)
Most users don't just wanna chat on one channel, but on several channels at the same time. This is possible in bitchx. There are multiple ways in which you can do this. If you want to join, for example, channels #channel1 and #channel2, you can simply type:
 /j #channel1 [#channel1] /j #channel2
You can now talk on both channel1 and channel2. Things said on the channel will appear on the same screen, pre- or appended with the channel it was said on. You can tell to which channel things you type will be sent by looking at the name of the channel in front of the prompt ( [#channel1] ). You can change channels by pressing Ctrl-x.
This method can be quite confusing. When somebody says something on #channel1, it's not uncommon to make the mistake of replying on #channel2. You'll probably get used to it, but there are better ways of doing it. To do it better, you'll have to read the Windows section elsewhere in this document.
Chatting to a user (private)
The time will come at which you will want to gossip about a user, but that user just happens to be on the channel you're on too. In this case you can send a user a private message, which only they will see. To do this, you use the /msg command. Just type:
[#channel1] /msg joe Hey joe, I think John is such a loser, don't you?
Only user 'joe' will see this message
Tab completion also works in this case. When typing '/msg jo', followed by the tab key, the name will be completed. But be carefull, because user 'joe' starts with 'jo', but user 'john' does too! It's only a guess to which username bitchx will complete the 'jo' part. It might very well complete it to 'john'. Upon recieving a private message from someone, it's possible to simply press the 'tab' key right away, and bitchx will automatically generate a command to send a private message to the last person from whom you recieved a private message.
Hitting tab can become teadeous after a while. If you're planning long private conversations with someone, you might want to use the /query command. The /query command allows you to talk privately to a user like you would publically to a channel. When used like this:
[#toktok] /query Zetion
You'll see a message notifiyng you of the fact that you have now started a conversation with Zetion. [Query: Zetion] will appear in the status bar. Everything you now type will be sent to user Zetion (eventhough your commandprompt may still say: [#toktok] ). To end the conversation, type /query without a nickname. Note that if the user you are querying changes his or her nickname, you will still send the messages to the old nickname. BitchX will tell you that 'no such nickname' exists. If you want to quickly say something to the channel instead of the person you have a conversation with, you don't need to end the query, say what's on your mind and restart the query. You can also send a message to the channel, just like you would to a user:
[#toktok] /msg #toktok Hey new guy. Wait a minute okay? I'm talking to zetion right now
Just as in real life, IRC also has irritating persons whom like to annoy you, send you virusses and stalk you. BitchX has some built in protection agianst such activities.
ctcp cloacking: If you press the 'del' key, you'll turn on (or off) ctcp cloacking. This will prevent other users from getting extended information about i.e your bitchx version and stuff.
When you've had it with IRCing, you can quit the client by using the /quit command. This will also quit any channels you were on at the time.
[#toktok] /quit I'm off again.
This will make you leave all channels you were on with the quit message "I'm off again.", and quit the bitchX client. Sometimes you'll not be able to type anything at the commandprompt, because i.e you are connecting to an IRC server. At this moment BitchX will not seem to respond to what you type. If you still wish to quit BitchX at this moment, you can type 'Ctrl-c' 5 times. You're quit message will be 'User aborted with 5 Ctrl-c's'.
Other chatting thingies
NOT YET COMPLETED
BitchX supports (just like ircII does) chatting in multiple windows. Do mind, that a 'window' is nota window as you probably know it. If you are using a terminal emulator under i.e the X windowing System, a 'window' does not mean a new terminal emulator window will be brougt up. BitchX windows all remain in the same X window.
Using BitchX windows can be used quite nicely to keep your chatting sessions clean. I.e. you can chat on different channels in different windows.
Creating a new window
To create a new BitchX window, you generally type:
[#channel1] /window new double on hide
All windowing commands start with /window. 'new' means a new window will be created. 'double on' means that the command prompt will be the same as the first window (a 2 lined command prompt which shows information about you and the current channel). 'hide' means the new window should be fullscreen (according to the size of the terminal emulator window of working under X) and should not be visible immediately. If you do not specify 'hide', the current screen will be split, and the new 'window' will be on the same screen as the current one. You can create as many new windows as you'd like. (*** FIXME:might be limited to about 10??)
Now that you've created a new window, you'd like to change to that window , so that you may use it. For this there are also a number of ways to do it. There are many ways of doing many thing in BitchX, aren't there?).
/window next (/window prev)
- Pressing Ctrl-w n
- Pressing Alt-# (Where # is the corrisponding window number, i.e alt-1, alt-2, etc)
Some methods may not work in your window manager. If you've got difficulties using alt-# and your using xterm, I suggest trying aterm (which also supports transparent backgrounds, and you ain't l337 until you've got transparant backgrounds)
Using a window
When changed to the new window, you can use it like you would normally. Just type in commands at the command prompt, and the'll be run in the current window (most of the time, anyway).
Typing /j #foobar joins #foobar. Consequentely, typing something will appear on #foobar. Changing back the previous window (/window prev, or ctrl-w p, or alt-1) allows you to talk to the channel which you joined in that window.
If you want to talk to a user privately in the new window, just use the /query command. Remember, you don't have to be on the same channel as the user you want to chat privately with.
It may sometimes be desirable to chat on different IRC networks (or differenent IRC servers, it's all the same). In this case, BitchX allows you to connect to a different IRC server in the new window. This won't work with the normal /server command, but you'll have to tell bitchx to only connect to the other server in the current window. You can do it like this:
 /window server irc.nl.undernet.org
This will connect you to the Undernet IRC network, but only in the current channel. Do be aware that it can sometimes become a bit messy when using multiple servers. Especially when you create new windows when you're already connected to two different servers.
If you want to quit the chatting on a specific server, you can switch to that server's window, and type /window discon. You will now be disconnected from the current server.
Setting a window's level
You can tell BitchX what information you want in a window, by adjusting it's level. When BitchX recieves information (i.e: a private message from another user) it will (by default) display it in the current window. All messages recieved from the IRC server (like splits and the like) are by default displayed in the current window. This can be anoyying, because it will generate a lot of random crap in between the normal channel flow. (this is especially the case when you're IRCing in Undernet, which generated enormous amounts of server messages)
If you only want to have all things said to #channel1 in the window for #channel1, you can use the '/window level' command:
[#channel1] /window level public
This will only allow public messages in the current window. Do note, that if another window is not present with a level which will allow other messages (like server message) the messages will still be shown in the current window. A list of available levels:
PUBLIC : Everything said publically on a channel. (/me amonst other commands) CRAP : Random crap, like errors when switching channels and stuff. MSGS : All private messages which are sent to you. (/msg command) NOTICES : All notices send to you (/notice command) WALLS : All wall messages from channel operators (/wall, /wallmsg commands) WALLOPS : All wallop messages from IRC operators (NOT channel operators). (/wallops command) NOTES : ?? Notes you have recieved. Notes are not in common use anymore. (/note command) OPNOTES : ?? SNOTES : ?? ACTIONS : CTCP actions sent to you. (/ctcp [user] action command) DCC : DCC information (/dcc command) CTCP : CTCP requests from other persons (/ctcp command) USERLOG1 : ?? USERLOG2 : ?? USERLOG3 : ?? USERLOG4 : ?? USERLOG5 : ?? BEEP : ?? (Should be beeps, but doesn't seem to work?) TCL : ?? (tcl scripting errors/debugging?) SEND_MSG : ?? (messages you sent out, but doesn't seem to work?) KILL : ?? (server kills, but doesn't seem to work?) MODEUSER : Changes in user modes done by other users. If you change a mode yourself, it will still be shown. MODECHAN : Changes in channel modes done by other users. If you change a mode yourself, it will still be shown. KICK : ?? (kicks on a channel (perhaps by other users only), but doesn't seem to work) KICKUSER : ?? (kicks on a channel (perhaps by other users only), but doesn't seem to work) PARTS : ?? (Parts on a channel, but doesn't seem to work) INVITES : Recieved invites to channels. (/invite command) JOIN : ?? (joins on channels, but doesn't seem to work) TOPIC : ?? (topic changes on channels, but doesn't seem to work) HELP : Bitchx help information (/help, /bhelp, /window help commands.Not /ehelp) NOTIFY : Notices which you send and which are sent to you (/notice command) ALL : All of the above levels. NONE : None of the above levels.
Please note that (like so many things in BitchX) window levels are not consistent or logical. When, for instance, setting window #1's level to ALL (which includes CRAP), and window #2's level to just PUBLIC, CRAP will still appear on window #2. This I call 'The BitchX uncertainty principle': Your milage may vary.
Removing a window
To remove a window, you can do the following:
/window kill (ctrl-w k)
Mind you, that you will not quit any channels you were on in that window. You can still send messages to the channels you were on in the window, by using the '/msg' command or sometimes by changing to the channel with ctrl-x . With Ctrl-x, you're millage may vary though. BitchX is quite random with this.
Other window options
To get a list of things you can do with windows, type:
[#channel2] /window help
I'll cover a couple of neat options:
/window hide (ctrl-w h) Hides the current window (in split screen) /window list (ctrl-w l) Lists all windows with their channels and more info
I myself use some aliases quite frequently, because I'm just too lazy to type '/window new double on hide' everytime. With the following alias, you can simply type '/wnq joe' to start a new query with user 'joe' in a new hidden window:
/alias wnq window new double on;query $0;window hide
(for a detailed description of the /alias command, see the 'Customizing BitchX' chapter)
On of BitchX's strongest features is it's custumizability. Almost everything shown can be adapted to your liking. The interface can be changed and adapted to how you want it to work and look. Scripting commands can be used to make a 'link' between the system you're working on and the BitchX client. Speed up your daily chatting with aliases and keybindings and more.
An alias is a kind of macro. It replaces another command (or set of commands) and it's (their) parameter(s) with a single command. This will greatly improve the usage of bitchx, because some commands can be quite tedious to type everytime (see the Windows chapter). New aliases can be created by using the /alias command. To get a list of current aliases which have been defined type:
[#toktok] /alias WNQ window new double on;query $0;window hide
This shows one alias, named WNQ. It runs three commands: 'window', 'query' and the 'window' command again. This alias takes 1 argument ($0) and creates a new window with the nickname, (or channel, or whatever) given as the paramter to WNQ, in a query. It then hides the window.
Aliases are not case sensetive. So you may say both /wnq joe, or /WNQ joe . Multple commands in aliases must be seperated by a ';'. Do mind that you may not have a space in front or after that ';'. Parameters are passed as $0, $1 .. $9. $* contains all parameters which where passed to the alias. Aliases are entered as follows: /alias [name] [command];[command] To remove an alias, you can prepend it's name with a '-' (hyphen). So:
[#toktok] /alias -wnq Will remove the wnq alias.
Keybindings give you the ability to change the default keys used in bitchx for editing, changing windows, scrolling, etc. These keybindings are controlled via the /bind command. If /bind is run without any parameters, a list with current keybindings will be shown. To add new keybindings (or change existing ones, use the following command:
/bind <key> <function> [<string>]
Allowed key sequences (taken directly from the ircII manual):
c where c is any key (case sensitive) ^c where c is one of A thru Z or one of the following quoted set '?\^@' (^? == delete key) METAn-c where n is 1, 2, 3 or 4 and c is the same as the first form above METAn-^c where n is 1, 2, 3 or 4 and c is the same as the second form above mc where m has been previously bound to META1_CHARACTER, META2_CHARACTER, META3_CHARACTER, or META4_CHARACTER and c is the same as the first form above. m may be either of the first two forms above (m or ^m). m^c where m has been previously bound to META1_CHARACTER, META2_CHARACTER, META3_CHARACTER, or META4_CHARACTER and c is the same as the second form above. m may be either of the first two forms above (m or ^m). *** MAKE UNOFFICIAL DOCUMENTATION ABOUT META KEYS AND BINDINGS
Allowed functions which can be binded on keys (taken directly from the ircII manual):
BACKSPACE BACKWARD_CHARACTER BACKWARD_HISTORY BACKWARD_WORD BEGINNING_OF_LINE CLEAR_SCREEN COMMAND_COMPLETION DELETE_CHARACTER DELETE_NEXT_WORD DELETE_PREVIOUS_WORD END_OF_LINE ENTER_DIGRAPH ENTER_MENU ERASE_LINE ERASE_TO_BEG_OF_LINE ERASE_TO_END_OF_LINE FORWARD_CHARACTER FORWARD_HISTORY FORWARD_WORD HELP_CHARACTER META1_CHARACTER META2_CHARACTER META3_CHARACTER META4_CHARACTER
NEXT_WINDOW NOTHING PARSE_COMMAND PREVIOUS_WINDOW QUIT_IRC QUOTE_CHARACTER REFRESH_INPUTLINE REFRESH_SCREEN SCROLL_BACKWARD SCROLL_END SCROLL_FORWARD SCROLL_START SELF_INSERT SEND_LINE STOP_IRC SWITCH_CHANNELS TOGGLE_INSERT_MODE TOGGLE_STOP_SCREEN TRANSPOSE_CHARACTERS TYPE_TEXT UNSTOP_ALL_WINDOWS YANK_FROM_CUTBUFFER
- ADD INFO ABOUT ALL FUNCTIONS
- ADD INFO ABOUT OTHER FUNCTIONS LIKE PLAINTEXT AND (MULTIPLE) COMMANDS
AINV ALTNICK ALT_CHARSET ALWAYS_SPLIT_BIGGEST ANNOY_KICK AOP APPEND_LOG AUTOKICK_ON_VERSION AUTO_AWAY AUTO_AWAY_TIME AUTO_JOIN_ON_INVITE AUTO_LIMIT AUTO_NSLOOKUP AUTO_RECONNECT AUTO_REJOIN AUTO_RESPONSE AUTO_RESPONSE_STR AUTO_UNBAN AUTO_UNMARK_AWAY AUTO_WHOWAS BANTIME BEEP BEEP_ALWAYS BEEP_MAX BEEP_ON_MSG BEEP_WHEN_AWAY BITCH BITCHX_HELP BLINK_VIDEO BOLD_VIDEO BOT_LOG BOT_LOGFILE BOT_MODE BOT_PASSWD BOT_RETURN BOT_TCL CDCC CDCC_FLOOD_AFTER CDCC_FLOOD_RATE CDCC_PROMPT CDCC_SECURITY CD_DEVICE CHANGE_NICK_ON_KILL CHANMODE CHANNEL_NAME_WIDTH CHECK_BEEP_USERS CLIENT_INFORMATION CLOAK CLOCK CLOCK_24HOUR CLOCK_FORMAT CLONE_CHECK CLONE_COUNT CMDCHARS COLOR COMMAND_MODE COMMENT_BREAKAGE COMPRESS_MODES CONNECT_TIMEOUT CONTINUED_LINE CPU_SAVER_AFTER CPU_SAVER_EVERY CTCP_DELAY CTCP_FLOOD_AFTER CTCP_FLOOD_BAN CTCP_FLOOD_PROTECTION CTCP_FLOOD_RATE CTCP_VERBOSE CTOOLZ_DIR DCC_AUTOGET DCC_AUTORENAME DCC_BAR_TYPE DCC_BLOCK_SIZE DCC_DLDIR DCC_FAST DCC_GET_LIMIT DCC_MAX_AUTOGET_SIZE DCC_QUEUE_LIMIT DCC_SEND_LIMIT DCC_TIMEOUT DCC_ULDIR DCC_USE_GATEWAY_ADDR DEBUG DEFAULT_FONT DEFAULT_MENU DEFAULT_NICK DEFAULT_REASON DEOPFLOOD DEOPFLOOD_TIME DEOP_ON_DEOPFLOOD DEOP_ON_KICKFLOOD DETACH_ON_HUP DISPATCH_UNKNOWN_COMMANDS DISPLAY DISPLAY_ANSI DISPLAY_PC_CHARACTERS DOUBLE_STATUS_LINE EIGHT_BIT_CHARACTERS EXEC_PROTECTION FAKE_SPLIT_PATTERNS FLOATING_POINT_MATH_VAR FLOOD_AFTER FLOOD_KICK FLOOD_PROTECTION FLOOD_RATE
FLOOD_USERS FLOOD_WARNING FTP_GRAB FULL_STATUS_LINE HACKING HACK_OPS HEBREW_TOGGLE HELP_PAGER HELP_PATH HELP_PROMPT HELP_WINDOW HIDE_PRIVATE_CHANNELS HIGHLIGHT_CHAR HIGH_BIT_ESCAPE HISTORY HOLD_MODE HOLD_MODE_MAX HTTP_GRAB IDENT_HACK IDLE_CHECK IGNORE_TIME INDENT INPUT_ALIASES INPUT_GLOB INPUT_PROMPT INSERT_MODE INVERSE_VIDEO JOINFLOOD JOINFLOOD_TIME JOIN_NEW_WINDOW JOIN_NEW_WINDOW_TYPE KICKFLOOD KICKFLOOD_TIME KICK_IF_BANNED KICK_ON_DEOPFLOOD KICK_ON_JOINFLOOD KICK_ON_KICKFLOOD KICK_ON_NICKFLOOD KICK_ON_PUBFLOOD KICK_OPS LAMEIDENT LAMELIST LASTLOG LASTLOG_ANSI LASTLOG_LEVEL LLOOK LLOOK_DELAY LOAD_PATH LOG LOGFILE MAIL MANGLE_INBOUND MANGLE_LOGFILES MANGLE_OPERLOG MANGLE_OUTBOUND MAX_DEOPS MAX_IDLEKICKS MAX_SERVER_RECONNECT MAX_URLS MDI META_STATES_VAR MIRCS MODE_STRIPPER MSGCOUNT MSGLOG MSGLOG_FILE MSGLOG_LEVEL NAMES_COLUMNS NAT_ADDRESS ND_SPACE_MAX NEW_SERVER_LASTLOG_LEVEL NEXT_SERVER_ON_LOCAL_KILL NICKFLOOD NICKFLOOD_TIME NICKLIST NICK_COMPLETION NICK_COMPLETION_CHAR NICK_COMPLETION_LEN NICK_COMPLETION_TYPE NOTIFY NOTIFY_HANDLER NOTIFY_LEVEL NOTIFY_ON_TERMINATION NO_CTCP_FLOOD NO_FAIL_DISCONNECT NUM_BANMODES NUM_KICKS NUM_KILLS NUM_OF_WHOWAS NUM_OPMODES OPER_MODES ORIGNICK_TIME OV PAD_CHAR PING_TYPE PROTECT_CHANNELS PUBFLOOD PUBFLOOD_TIME QUERY_NEW_WINDOW QUERY_NEW_WINDOW_TYPE QUEUE_SENDS RANDOM_LOCAL_PORTS RANDOM_SOURCE REALNAME REVERSE_STATUS
SAVEFILE SCREEN_OPTIONS SCRIPT_HELP SCROLLBACK SCROLLBACK_RATIO SCROLL_LINES SEND_AWAY_MSG SEND_CTCP_MSG SEND_IGNORE_MSG SEND_OP_MSG SERVER_GROUPS SERVER_PROMPT SHELL SHELL_FLAGS SHELL_LIMIT SHITLIST SHITLIST_REASON SHOW_AWAY_ONCE SHOW_CHANNEL_NAMES SHOW_END_OF_MSGS SHOW_NUMERICS SHOW_NUMERICS_STR SHOW_STATUS_ALL SHOW_WHO_HOPCOUNT SOCKS_HOST SOCKS_PORT STATUS_AWAY STATUS_CDCCCOUNT STATUS_CHANNEL STATUS_CHANOP STATUS_CLOCK STATUS_CPU_SAVER STATUS_DCCCOUNT STATUS_DOES_EXPANDOS STATUS_FLAG STATUS_FORMAT STATUS_FORMAT1 STATUS_FORMAT2 STATUS_FORMAT3 STATUS_HALFOP STATUS_HOLD STATUS_HOLD_LINES STATUS_INSERT STATUS_LAG STATUS_MAIL STATUS_MODE STATUS_MSGCOUNT STATUS_NICK STATUS_NOTIFY STATUS_NO_REPEAT STATUS_OPER STATUS_OPER_KILLS STATUS_OVERWRITE STATUS_QUERY STATUS_SCROLLBACK STATUS_SERVER STATUS_TOPIC STATUS_UMODE STATUS_USER0 STATUS_USER1 STATUS_USER10 STATUS_USER11 STATUS_USER12 STATUS_USER13 STATUS_USER14 STATUS_USER15 STATUS_USER16 STATUS_USER17 STATUS_USER18 STATUS_USER19 STATUS_USER2 STATUS_USER3 STATUS_USER4 STATUS_USER5 STATUS_USER6 STATUS_USER7 STATUS_USER8 STATUS_USER9 STATUS_USERS STATUS_VOICE STATUS_WINDOW SUPPRESS_SERVER_MOTD SWATCH TAB TAB_MAX TIMESTAMP TIMESTAMP_STRING TRANSLATION UNDERLINE_VIDEO USERLIST USERMODE USER_FLAG_OPS USER_FLAG_PROT USER_INFORMATION WINDOW_DESTROY_PART WINDOW_QUIET WORD_BREAK XTERM XTERM_OPTIONS XTERM_TITLE _CDCC_CLOSE_IDLE_SENDS_TIME _CDCC_MINSPEED_TIME _CDCC_PACKS_OFFERED
- todo: DESCRIBE EACH SETTING. ADD TYPE OF SETTING (TOGGLE, TEXT, ETC)
BitchX's look can be changed by altering something called Formats. The client keeps a table of how things should look like. These formats can be changed by using /fset. You can change anything from how the status bar looks like to how messages are displayed. I.e: when something is said on the channel, bitchx internally takes this as a couple of fields, namely the time it was said, the nickname of who said it and the hostname of who said it. The rest is everything that was said. These fields can be used in the formats as a sort of parameters. $0 is the always the time, the other parameters differ. So, when something is said, BitchX takes (in this case) the format_public format, reads it, substitutes all parameters found in the format with the internal fields, renders the colors and then displays it. So if user 'Flunk' said 'Hey man!' at 10:40, and format_public is: [$0|$1> $3-, this will be displayed as: [10:40|Flunk> Hey man!. When a '-' is appended to a parameter, this means 'this parameter and all that follows'. 'Hey man!' would be broken up in $3 ('Hey') and $4 ('man!'), but $3- would become 'Hey man'. Colors can be inserted in the formats by using the '%' in formats. I.e: %B$0%n$1 would show the time in blue and the nickname in the normal color. More about colors in the Color section of this chapter.
The following formats are available in bitchx:
ACTION : Description somebody else sends to you privately (/describe) ( [time] [nick] [hostname] [your nick] [text] ) ACTION_AR : ( ) ACTION_CHANNEL : Description somebody else sends to a channel (/me) ( [time] [nick] [hostname] [channel] [text] ) ACTION_OTHER : Description you send to somebody else privately (/describe) ( [time] [your nick] [reciever nick] [text] ) ACTION_OTHER_AR : ( ) ACTION_USER : ( ) ACTION_USER_AR : ( ) ALIAS : ( ) ASSIGN : ( ) AWAY : Shown when you go away (/away) ( [time] [message] ) BACK : ( ) BANS : ( ) BANS_FOOTER : ( ) BANS_HEADER : ( ) BITCH : ( ) BOT : ( ) BOT_FOOTER : ( ) BOT_HEADER : ( ) BWALL : ( ) CHANNEL_SIGNOFF : ( ) COMPLETE : ( ) CONNECT : ( ) CSET : ( ) CTCP : When someone sends you a CTCP request. ( [time] [nick] [hostname] [your nick] [ CTCP request] ) CTCP_CLOAK : ( ) CTCP_CLOAK_FUNC : ( ) CTCP_CLOAK_FUNC_USER : ( ) CTCP_CLOAK_UNKNOWN : ( ) CTCP_CLOAK_UNKNOWN_USER : ( ) CTCP_CLOAK_USER : ( ) CTCP_FUNC : ( ) CTCP_FUNC_USER : ( ) CTCP_REPLY : When somebody replies to a CTCP request you sent them. ( [time] [nick] [host] [CTCP request] [response]) CTCP_UNKNOWN : ( ) CTCP_UNKNOWN_USER : ( ) CTCP_USER : ( ) DCC : ( ) DCC_CHAT : ( ) DCC_CONNECT : ( ) DCC_ERROR : ( ) DCC_LOST : ( ) DCC_REQUEST : ( ) DESYNC : ( ) DISCONNECT : ( ) EBANS : ( ) EBANS_FOOTER : ( ) EBANS_HEADER : ( ) ENCRYPTED_NOTICE : ( ) ENCRYPTED_PRIVMSG : ( ) FLOOD : ( ) FRIEND_JOIN : ( ) HELP : ( ) HOOK : ( ) IGNORE_INVITE : ( ) IGNORE_MSG : ( ) IGNORE_MSG_AWAY : ( ) IGNORE_NOTICE : ( ) IGNORE_WALL : ( ) INVITE : ( ) INVITE_USER : ( ) JOIN : When you or another user joins a channel ( [time] [nick] [hostname] [channel] ) KICK : When a user is kicked from a channel ( [time] [nick of kicker] [channel] [nick of kicked] [reason] ) KICK_USER : ( ) KILL : ( ) LASTLOG : ( ) LEAVE : Whe you or another user leaves a channel ( [time] [nick] [host] [channel] [reason] ) LINKS : ( ) LIST : ( ) MAIL : ( ) MODE : When a users mode is changed on a channel ( [time] [nick of changer] [hostname of changer] [channel] [mode change] ([nickname]) ) MODE_CHANNEL : ( ) MSG : Private messages sent to you ( [time] [nick] [hostname] [text] ) MSGCOUNT : ( ) MSGLOG : ( ) MSG_GROUP : ( ) NAMES : Shows number of users on channel on join ( [time] [channel] [nr of users] ) NAMES_BANNER : ( ) NAMES_BOT : ( ) NAMES_BOTCOLOR : ( ) NAMES_FOOTER : ( ) NAMES_FRIEND : ( ) NAMES_FRIENDCOLOR : ( ) NAMES_IRCOP : ( ) NAMES_NICKCOLOR : ( ) NAMES_NONOP : ( ) NAMES_OP : ( ) NAMES_OPCOLOR : ( ) NAMES_SHIT : ( ) NAMES_SHITCOLOR : ( ) NAMES_VOICE : ( ) NAMES_VOICECOLOR : ( ) NETADD : ( ) NETJOIN : ( ) NETSPLIT : ( ) NETSPLIT_HEADER : ( ) NICKNAME : ( ) NICKNAME_OTHER : ( ) NICKNAME_USER : ( ) NICK_AUTO : ( ) NICK_COMP : ( ) NICK_MSG : ( ) NONICK : When the server tells you that the nick doesn't exist ( [time] [nick] [server] [failure reason] ) NOTE : ( ) NOTICE : ( ) NOTIFY_OFF : ( ) NOTIFY_ON : ( ) NOTIFY_SIGNOFF : ( ) NOTIFY_SIGNON : ( ) OPER : ( ) OV : ( ) PASTE : ( ) PUBLIC : Everything others say on channels. ( [time] [nick] [channel] [text]) PUBLIC_AR : ( ) PUBLIC_MSG : ( ) PUBLIC_MSG_AR : ( ) PUBLIC_NOTICE : ( ) PUBLIC_NOTICE_AR : ( ) PUBLIC_OTHER : ( ) PUBLIC_OTHER_AR : ( ) REL : ( ) RELM : ( ) RELN : ( ) RELS : ( ) RELSM : ( ) RELSN : ( ) SEND_ACTION : Description you send (to a channel), or make (/me, also away)) ( [time] [your nick] [channel] [text]) SEND_ACTION_OTHER : ( ) SEND_AWAY : ( ) SEND_CTCP : When you send a CTCP command to a user ( [time] [nick] [ctcp request] ) SEND_DCC_CHAT : ( ) SEND_ENCRYPTED_MSG : ( ) SEND_ENCRYPTED_NOTICE : ( ) SEND_MSG : Private messages you send ( [time] [recieving nick] [your nick] [text] ) SEND_NOTICE : ( ) SEND_PUBLIC : Everthing you say on channels ( [time] [channel] [nick] [text]) SEND_PUBLIC_OTHER : ( ) SERVER : ( ) SERVER_MSG1 : ( ) SERVER_MSG1_FROM : ( ) SERVER_MSG2 : ( ) SERVER_MSG2_FROM : ( ) SERVER_NOTICE : ( ) SERVER_NOTICE_BOT : ( ) SERVER_NOTICE_BOT1 : ( ) SERVER_NOTICE_BOT_ALARM : ( ) SERVER_NOTICE_CLIENT_CONNECT : ( ) SERVER_NOTICE_CLIENT_EXIT : ( ) SERVER_NOTICE_CLIENT_INVALID : ( ) SERVER_NOTICE_CLIENT_TERM : ( ) SERVER_NOTICE_FAKE : ( ) SERVER_NOTICE_GLINE : ( ) SERVER_NOTICE_KILL : ( ) SERVER_NOTICE_KILL_LOCAL : ( ) SERVER_NOTICE_KLINE : ( ) SERVER_NOTICE_NICKC : ( ) SERVER_NOTICE_OPER : ( ) SERVER_NOTICE_REHASH : ( ) SERVER_NOTICE_STATS : ( ) SERVER_NOTICE_TRAFFIC_HIGH : ( ) SERVER_NOTICE_TRAFFIC_NORM : ( ) SERVER_NOTICE_UNAUTH : ( ) SET : ( ) SET_NOVALUE : ( ) SHITLIST : ( ) SHITLIST_FOOTER : ( ) SHITLIST_HEADER : ( ) SIGNOFF : ( ) SILENCE : ( ) SMODE : ( ) STATUS : Top bar of bottom status lines (double bars and single bar) ( ) STATUS1 : Bottom bar of bottom status lines (double bars) first update after refresh ( ) STATUS2 : ( ) STATUS3 : ( ) TIMER : ( ) TOPIC : Displayed when requesting the topic with /topic command ( [time] [channel] [topic] ) TOPIC_CHANGE : ( [time] [nick of changer] [channel] [topic] ) TOPIC_CHANGE_HEADER : Header displayed before the new topic when topic changed ( [time] [nick of changer] [channel] [topic] ) TOPIC_SETBY : ( ) TOPIC_UNSET : When somebody unsets the topic (/untopic) ( [time] [nick] [channel] ) TRACE_OPER : ( ) TRACE_SERVER : ( ) TRACE_USER : ( ) USAGE : Shown when usage help is given on command ( [text] ) USERLIST : Line of userlist info (/userlist) ( [binary repr. of modes for user] [username] [password?] [usermask] [channel] ) USERLIST_FOOTER : Shown after userlist output (/userlist) ( [time] [nr of users]) USERLIST_HEADER : Shown before userlist output (/userlist) ( ) USERMODE : ( ) USERS : One line of output from /users command ( [?] [channel] [nickname] [hostname] [?] [mode(@)] ) USERS_HEADER : Shown before /user output and after USER_TITLE ( [time] [channel]) USERS_SHIT : ( ) USERS_TITLE : Shown before /user output and USER_HEADER ( [channel] ) USERS_USER : ( ) VERSION : ( ) WALL : ( ) WALLOP : ( ) WALL_AR : ( ) WATCH_SIGNON : ( ) WATCH_SIGNOFF : ( ) WHO : One line (containing 1 user) when you issue a /who command ( [channel] [nick] [mode] [ident username] [hostname] [server] [fullname] ) WHOIS_ADMIN : ( ) WHOIS_AWAY : /Whois output line: If user is away ( [text] ) WHOIS_BOT : ( ) WHOIS_CHANNELS : /Whois output line: channels user is on. Also if a user is in userlist: channels a user is allowed on. ( [channels] ) WHOIS_FOOTER : Shown after /whois command output ( none ) WHOIS_FRIEND : /Whois output line: When user is in userlist shows info ( [friend-modes] [hostmask] ) WHOIS_HEADER : Shown before /whois output ( none ) WHOIS_HELP : ( ) WHOIS_IDLE : /Whois output line: Idle time (time user hasn't sent anything to the server ( [hours] [minutes] [seconds] ['seconds idle'] ) WHOIS_NAME : /Whois output line: full name ( [Fullname] ) WHOIS_NICK : /Whois output line: nickname ( [nickname] [username] [hostname] [tld countryname] ) WHOIS_OPER : ( ) WHOIS_REGISTER : ( ) WHOIS_SERVER : /Whois output line: Server user is on ( [hostname] [Description] ) WHOIS_SERVICE : ( ) WHOIS_SHIT : ( ) WHOIS_SIGNON : ( ) WHOLEFT_FOOTER : ( ) WHOLEFT_HEADER : ( ) WHOLEFT_USER : ( ) WHOWAS_HEADER : ( ) WHOWAS_NICK : ( ) WIDELIST : ( ) WINDOW_SET : ( ) XTERM_TITLE : ( )
Adding timestamps can be done in two ways. You can either set the TIMESTAMP option to 'ON', which will give you some limited timestamps. For instance, public messages will be timestamped, but things you say yourself won't. The other method is defining all timestamps yourself by using the BitchX formats settings. This will allow you to add timestamps to just about everything. But it can be tidious work finding out all the different formats for messages and the likes. Therefor I've included here my own formats for timestamping (and some more stuff):
/fset public %B[%n$0%B|%n$1%B>%n $3- /fset send_public %P[%n$0%P|%n$2%P>%n $3- /fset msg %B[%n$0%B|%G$1%B<%n $3- /fset send_msg %P[%n$0%P|%n%R$1%P> %n$3- /fset public_ar %B[%n$0%B|%Y$1%B>%n $3- /fset action %B[%n$0%B|%W$1%n $4- /fset action_ar %B[%n$0%B|%W$1%n $4- /fset action_channel %B[%n$0%B|%W$1/$3%n $4- /fset send_action %B[%n$0%B|%W$1%n $3- /fset send_action_other %B[%n$0%B|%W$2%n->%W$1%n $3- /fset channel_signoff %G[%n$0%G|%n$1%n%G|%n%CQUIT%n%G|%n$3%G>%n $4- /fset join %G[%n$0%G|%n$1%n%G|%n%CJOIN%n%G|%n$3%G>%n /fset leave %G[%n$0%G|%n$1%n%G|%n%CPART%n%G|%n$3%G>%n $4- /fset nickname %G[%n$0%G|%n$1%n%G|%n%CNICK%n%G>%n $3 /fset nickname_other %G[%n$0%G|%n$1%n%G|%n%CNICK%n%G>%n $3 /fset nickname_user %G[%n$0%G|%n$1%n%G|%n%CNICK%n%G>%n $3
Above format settings will add timestamps to public messages, private messages (by others and by yourself), channel joins, parts, quits, actions (/me's by you and by others). It will change the display of private messages too. While normally you would see something like:
[toDS-na(firstname.lastname@example.org)] Hello there [msg(toDS-na)] Hello to you to!
you will now see the following (where red is what you said to toddie, and green is what toddie said to you):
[14:23|toddie> Hello there [14:24|toddie< Hello to you to!
To Do's on this document are spread throughout this document in the form of '*** TODO DESCRIPTION'. At these places informations needs to be added, changed or whatever else is stated in the description. Global ToDo's are stated here:
- BitchX and Screen.
- CTCP information.
- Bot mode.
- DCC information.
- References (irc help, other clients, etc).
- Colorify bitchx output lines.