BitchX Tutorial

From LinuxReviews
Jump to navigationJump to search

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.

About 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.

Obtaining BitchX

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.

Chatting.

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:

/list

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:

/j #toktok

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 /topic command:

[#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:

/scan

A more extensive list can be retrieved by typing:

/who

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

or:

[#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:

[0] /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

Protecting yourself

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.

Quiting BitchX

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

Windows

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??)

Changing windows

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).

Channel (public)

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.

User (private)

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.

Multiple servers

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:

[0] /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

Usefull aliases

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)

Customizing BitchX

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.

Aliases

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

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>]

Keys

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
Functions

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

Settings

Possible settings:

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)

Changing formats

About formats

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.

Formats

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	:	( )
Timestamps

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(todsah@d44200.upc-d.chello.nl)] 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

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.
  • Scripting.
  • Netiquette.
  • DCC information.
  • Bouncers.
  • References (irc help, other clients, etc).
  • Colorify bitchx output lines.