1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122
|
\documentclass[titlepage]{article}
%\usepackage[dvips]{graphics}
\title{xIrc User Reference}
\author{Joe Croft \\
croftj@dfw.net \\
http://www.dfw.net/~croftj }
\begin{document}
\setcounter{tocdepth}{2}
\input{font}
\maketitle
\tableofcontents
\pagebreak[4]
\section{Introduction}
xIrc is, as the name implies, an IRC Client program that runs under X.
It is written in C++ and the binary for it provided was compiled using
gcc 2.7.2 and qt-1.2 using the ELF libraries. See the INSTALL
document provided for details on building it if you need or desire
too, have no fear, it's reasonably easy to build.
I would appreciate any help
offered in finding any bugs that may crop up. This will be mostly in
the form of turning on the various debug flags I have embedded then
mailing me the output. Also, any suggestions for additions or changes
to it's look and feel will be appreciated. I cannot guarantee that
they will be implemented, but all will be taken into consideration.
Also, if you know of servers not in my .servers file or any corrections for
those that are, please mail me the changes for them and I will place them
in the file for future releases.
Note the email address change. The old address is still there but...
\subsection{Features}
\begin{itemize}
\item Individual Windows for each channel you are joined to or each
private conversation.
\item Nick Lists for the channels that allow you to various things on
the folks listed in them.
\item Initiate and respond to DCC chat requests.
\item Aliases that allow multiple words to be represented by a symbol.
Similar to the IRC-II set command.
\item Subset of similar commands and formats to IRC-II though many have
been simplified.
\item Auto responses to people getting kicked from a channel or for
you being kicked from a channel.
\item Auto re-join if you've been kicked from a channel.
\item Simplified Banning w/ optional kick
\item Use of X-Resources for the configuration of fonts, colors and a
few other things.
\item Cut and Paste functionality at least for the input fields
few other things.
\item Member arrival notification either by nick or by address mask
\item Member ignore lists.
\end{itemize}
\subsection{Future Dreams and Wishes}
\begin{itemize}
\item Command line histories
\item DCC File transfers
\item Cut and Paste functionality for the chat windows in general.
\item Script language based on the one provided by IRC-II.
\item Anything else that you or I may think of that sounds handy, nifty
or just plain fun to have.
\end{itemize}
\subsection{Known Bugs}
Still a bit flakey in the connect and disconnect portions of code but it
has been getting better.
Known deficiancies in the QT-1.2 library make the edit portion of the Ports
ComboBox in the xIrcConnectDialog unreadable. These should be fixed with
the release od QT-1.3. The code \emph{may} have to be
recompiled and linked at that time to make use of the fixes.
Opens up a message query dialog for each private message if you don't have
an open window open for the sender of a message when it comes in. I have
found on some servers this can make for a very full screen when first
connecting. Hopefully by the next release I'll have this fixed.
\subsection{Credits}
Troll Tech, the writers of the 'qt' class library used to make the
X-Windows programming of this much easier.
The many folks who have given me ideas and inspirations for improving
xIrc.
While I am at it, I would like to make an unsolicited plug for
the folks who wrote the GUI class library I used, qt. This library was
developed by the good folks at Troll Tech. Not only have they seen fit
to provide the class library to us Linux folks for free, but they have
also been invaluable in helping me making my program more
bullet-proof. The library has a nice Motif like look and feel to it
while it runs considerably lighter then Motif ever could and it
greatly simplifies the writing of XWindows applications. They can be
reached at info@troll.no and the URL to their home-page is
http://www.troll.no/.
Any of you programmers out there might want to check it out if you are
planning to do any X-Windows apps in the near future. Though it is not
free fro most platforms, nor for use in commercial pursuits, it is free
to the Linux community for non-commercial use. I have found it provides
a nice interface the greatly simplifies the creation of windows and
such.
\section{Installation and Compilation}
\subsection{Installation}
Installation is fairly straight forward. Choose whether you want to
use the static linked version or the dynamically linked version. Copy
whichever to a directory specified in your PATH.
If you are using the dynamically linked version, you need to install
the qt library from Troll Tech. Please read their
documentation closely so that you get the right version! If you are
not recompiling my program you need the latest version compiled for
gcc-2.72 (This is the 'standard' release). Otherwise you need to
select the version for the version of compiler you are using. It
sounds intimidating but if you read the docs supplied with qt
carefully, it's not hard!
Next, copy the file xIrc.ppm to where you want it to reside. xIrc will
look in the directories /usr/local/lib/xIrc, ./, and your home directory by
default for this file. If you choose another home for it, you will
have to place an entry, PixMapPath, in one of the resource files
telling xIrc where too look. See the section X-Resources.
Move and rename the the file servers.dat to /usr/local/lib/xIrc/.servers.
If you want to keep it elsewhere, The entry \emph{*Servers.Path} and
\emph{*Servers.Filename} will need to be changed in the resources file.
If you are using fvwm window manager, I have supplied xIrc.xpm for the
button's icon. I'll leave it to you to investigate setting up .fvwmrc
to put all this to use.
\subsection{Re-compilation}
Change directories to the libX++ directory. Modify the CFLAGS entry to
reflect the home of the qt include files. Then run \textit{make
depend} then \textit{make}. This can be done on a single line as
\textit{make depend; make}.
After that completes, change to the xIrc-X.YY directory. Edit the
entries QTINCDIR, QTLIBDIR, XPPINCDIR and XPPLIBDIR to point to their
proper places. Then run \textit{make
depend} then \textit{make}. This too can be done on a single line as
\textit{make depend; make}. After this completes, follow the
installation notes for putting it and it's icon in their proper homes.
These files should compile w/ no errors or warnings. If they get
either, I don't know what to tell you. I would suspect an older
version of compiler or something. You can always email me and I'll
help you as I can.
\section{Usage}
xIrc does not have any command line switches of it's own. The QT library
may define afew of its own to change its look and feal, though I'm not sure
what all are available.
\subsection{Connecting to a Server}
Upon starting, a dialog asking to choose your nick will be displayed as
well as the main window. A default set of nicks are given. After selecting
a nick, which you must do, a table of servers will be presented. Select
your server of choice by double clicking the mouse on it. If your favorite
server is not in the list, you may add it by selecting the \emph{New} entry
under the \emph{Server} menu.
A small dialog will be displayed allowing you to change port numbers of
manually type in a different server name. Once you are done, click on the
\emph{Connect} button.
At this point, xIrc will attempt to connect to the selected server. After
it connects, any welcoming messages and the Message of the day will be
displayed on the screen.
\subsection{Entering a Channel}
To enter into a channel, select the \emph{Open Channel} entry in the
\emph{File} menu. You will be presented with a list of channels to enter and or
people to chat with. Either select a name from the list or type it in in
the edit field and press either \emph{OK} or \emph{Join} buttons. If you
want to see who a person is or who is on a channel, press the {Names/Whois}
button.
Once a channel is entered a new window will be dispayed for that channel.
At this point any of the commands listed below may be entered or any
non-command will be sent to the channel or person.
If a channel was entered, a list of the members will be displayed for the
channel. If you find the list irritating as I do, you can press the
\emph{Nick List} button at the top of the channel window, it will toggle
the display of the member list for the channel.
\subsection{DCC Chat}
\subsubsection{Initiating a DCC Chat Connection}
A DCC chat is initiated by either opening the \emph{Channels \& People}
dialog by selecting the \emph{Open Channel} entry of the \emph{File} menu,
selecting the person or entering in thier nick followed by pressing the
\emph{DCC Chat} button. Or by double clicking on the nick which will open
the \emph{Nick Action} dialog and pressing the \emph{DCC Chat} button. In
either case, a DCC Chat request will be sent to the nick, and a window will
be opened for the conversation. When the other end connects, a small
message will be displayed in the message window and you may be begin
chatting with them.
\subsubsection{Accepting a DCC Chat Request}
When a DCC Chat request comes in, a message box will be displayed
indicating who wants to chat with you. At this point you may either choose
to connect to them or open a window to chat privately with them.
\subsection{Ignoring People}
Once in a while, jerks do enter in the scene and it is nice to be able to
ignore them. This may be done in one of two ways. Either doble click on
thier nick and when the \emph{Nick Action} dialog is presented, press
ignore. This will do a \emph{/who} command on them and build an appropriate
adres filter for the person and present you with a dialog showing the
results. Press the \emph{OK} button to add the entry to the list.
The second means is to enter the name in manually. Select the \emph{Ignore
List} entry in the \emph{Lists} menu of the main window. This will display
the \emph{Ignore List}. You may at this point double click on an empty row
or select the \emph{New} entry under the \emph{Nick} menu of the table.
This will open an dialog allowing you to enter in the nick and or address mask
of the person.
Any message you enter in will be sent to the person each time xIrc receives
a message from them. This includes messages from them to a channel you are
in.
\subsection{Notifications}
The mechanics of setting up notifications of peoples comings ang goings are
identical to that of the \emph{Ignore} lists. The only difference is the
use of the mesage field. It will be sent to the person whenever they first
detected to be online. Kind of an auto-greets message.
\subsubsection{By Nick or by Address}
Both ignores and notifications allow you to select whether they are by nick
or by address. Pressing the \emph{By Addr} button indicates that it should
be done by address. Otherwise, they are done by nick.
\section{Windows, Dialogs and Buttons}
There are several windows that may or may not be present at anytime
through a session. Th following is a brief description of most of
them.
\subsection{Main Window}
This window is primarily used for dealing with the server. If a
message window, for either a channel or an individual, cannot be found
for a message, it will be displayed in this window.
\subsubsection{Menus}
Enough actions have been added that I finaly had to replace the buttons
with menus.
\begin{description}
\item[File] Server and Channel related functions
\begin{description}
\item[Connect Server] Opens the Server Select Dialog (\ref{Server Select})
allowing you to connect to or disconnect from a server.
\item[Open Channel] Opens a dialog (\ref{Channel Select}) for joining a
channel a channel or starting up a chat with an individual.
\item[Quit] Opens up a dialog allowing you to select an exiting statement
then exits the program
\end{description}
\item[Nick] Nick related functions
\begin{description}
\item[Show Folks Online] Toggles the visibility of the \emph{Folks Online}
list (\ref{Folks Online}).
\item[Actions] Opens the 'Nick Action' dialog (\ref{Nick Action}).
\item[Change Nick] Opens a dialog for changing your nick. If you select
this, you will be forced to enter in a nick.
\end{description}
\item[Lists] List Access / Maintanence
\begin{description}
\item[Server List] Same as the Connect Server menu item under the File
menu.(\ref{Server Select})
\item[Ignore List] Allow the editing and removing of existing, and the
entry of new members on the ignore list (\ref{Ignore List}).
\item[Notify List] Allow the editing and removing of existing, and the
entry of new members on the notification list (\ref{Notify List}).
\end{description}
\end{description}
\subsection{Message Window}
This Window is the window used for talking to individuals and
channels. There can be many such windows open at any given time. The
only real differences in the windows for chatting on a channel and
those for chatting to individuals is their initial size when they are
created. The windows for talking on a channel are created with about
twice as many lines.
Also found in this window is an edit field for entering commands and
messages to send. The commands and instructions on what can be entered
within this field will be explained in later sections.
\subsubsection{Buttons}
\begin{description}
\item[Close] Pressing this button parts (leaves) the the channel and
closes the window. In the case of a window for speaking to an
individual, the window is merely closed.
\item[Ping] Pressing this button send a CTCP Ping command to the
individual or channel.
\item[Nick Actions] Pressing this button opens the same dialog box as
the \textit{Nick Actions} button of the Main window.
\item[Nick List] This button is only present on the Message Windows
for channels. Pressing it either hides or shows a dialog box with the
names of the members currently on the channel.
\item[Clear Line] Pressing this window erases any text currently
present in the edit field.
\end{description}
\subsection{DCC Chat Window}
This window is for chatting to another person via the CTCP DCC Chat
mechanism. It has the \textit{Close} and the \textit{Clear Line}
buttons. These buttons have the same functionality as the same buttons
on the \textit{Message Window}
\subsection{Server Selection Dialog}\label{Server Select}
This Dialog Box is for establishing and dissolving connections with the Irc
servers and manipulating the entries for the servers in the servers file.
The scrollbar, up/down arrow keys, page-up page-down keys, and the home \&
end keys can be used for traversing the list. Presing the Enter key is
equivilent to pressing the \emph{Connect} button unless a change has been
made to the server selection masks.
The servers shown in the list can be limited by entering appropriate masks
into the editable fields at the top of the table. These masks are used in a
wildcard mode as in file selections. Pressing the Enter key after modifying
any of these fields will update the table to display The only those entries
that match the masks.
\subsubsection{Buttons}
This dialog has 3 buttons, \emph{Connect}, \emph{Disconnect}, and \emph{Cancel}.
\begin{description}
\item[Connect] This pressing this button opens the Connection Dialog which
allows you to enter in a different server name or IP address and / or
select the port inwhich to connect to.
\item[Disconnect] Pressing this button disconnects the server.
\item[Cancel] Pressing this button closes the dialog box without any
action.
\end{description}
\subsubsection{Menu Bar}
The menu bar has two items, \emph{File} and \emph{Server}. The \emph{File}
menu has entries for manipulating the server file. The \emph{Server} menu
hes entries for manipulating individule entries in the table.
These are the entries in the \emph{File} menu.
\begin{description}
\item[New] This menu entry clears the table of all entries
\item[Load] This menu entry opens a file dialog to select and load a file
of servers into the table.
\item[Import] This menu entry is like \emph{Load} except that it imports
server files in the format of mIrc's servers.ini files.
\item[Save As] This menu item saves the table to a file.
\item[Done] This menu item behaves as the \emph{Cancel} button.
\end{description}
These are the entries in the \emph{Server} menu.
\begin{description}
\item[Connect] This menu entry behaves as the \emph{Connect} button.
\item[Disconnect] This menu entry behaves as the \emph{Disconnect} button.
\item[Edit] This menu entry opens a \emph{Server Entry Edit} dialog bos for
editing an enties contents.
\item[Delete] This menu item deletes an entry from the table.
\end{description}
\subsubsection{Server File format}
The file format for the servers file is quite simplistic by nature. It is a
colon deleimited file with the following fields.
\begin{description}
\item[Group] Name of the group of servers the server belongs to.
\item[Country] Name of the country or continent where the server is located.
\item[State] Name of the state or country where the server is located.
\item[City] Name of the city where the server is located.
\item[Server] Domain name or IP number of the server.
\item[Ports] Comma delimited list of ports that can be connected to.
\end{description}
An example of a valid entry is
\begin{verbatim}
BeyondIRC:US:MI:St.Louis:irc.primary.net:6660,6662,6664,6666,6668
\end{verbatim}
\subsection{Server Connection Dialog}
This is a small dialog that gives the user an opportunity to change the
server name and select the port to connect to the server before connecting
to the server. This keeps one from being limited to only those servers and
ports that are specified in the server list.
There are two editable fields, one of which is a combo-box, the server
field and the port field.
There are also two buttons. The Connect button starts the connection, while
the Cancel button closes the window without any further action.
\subsection{Server Edit Dialog}
This dialog allows for updating information in the Server Table.
\subsection{Nick List Dialog}
This dialog box is created and maintained for each \textit{Message
Window} opened for a channel. It holds the list of members of the
channel and a series of buttons for various actions. If a nick is not
present in the edit field, pressing a button will perform it's action
on the currently highlighted entry in the list. Each button's action
should be self evident by it's name but I'll explain them just in
case.
\subsubsection{Buttons}
\begin{description}
\item[Who is] Perform a \textit{/whois} command on the selected nick.
\item[Chat] Opens the \textit{Channels / People} dialog box so a private
chat or a DCC chat may be initiated with the selected member. The
member's nick will be put in the edit field of the \textit{Channels / People}
dialog box.
\item[Ping] Send a CTCP Ping command to the selected nick.
\item[Invite] Invite the selected nick (Uh, only makes sense if you
entered a non-members nick in the edit field) to the channel.
\item[Kick] Open the \textit{Kick Message} dialog box to kick a member
from the channel. This only works if you are a channel operator.
\item[Clear] Erases the contents of the edit field.
\item[Close] Should close the window but I don't think it does anything at
this point. *Sheepish Grin*
\end{description}
\subsection{Nick Actions Dialog}\label{Nick Action}
One of my favorite dialog boxes. This dialog box allows you to do all
sorts of things. On the buttons that require a channel to be entered,
you will receive an error if the channel field is blank.
Both the Nick and Channel fields will be filled in by double clicking
on a word in a \textit{Message Window} or the \textit{Main Window}.
This word selected will be placed in the nick field and the name of
the window will be placed in the channel field.
\subsubsection{Buttons}
\begin{description}
\item[Dcc Chat] Initiates a DCC Chat connection with the nick entered
in the nick field and opens a corresponding \textit{DCC Chat Window}.
\item[Priv Chat] Opens a \textit{Message Window} for the nick entered
in the nick field.
\item[User Info] Sends a CTCP UserInfo command to the nick entered.
\item[Whois] Sends a \textit{/whois} command for the nick entered.
\item[WhoWas] Sends a \textit{/whowas} command for the nick entered.
\item[Finger] Sends a CTCP Finger command to the nick entered.
\item[Ban] This command sends a \textit{/who} command on the nick
entered, then builds an appropriate ban string and bans that person
from the channel specified.
\item[Kick] Same as the \textit{Ban} button except it kicks the person
from the channel once they are banned. You will be given a dialog box
to enter an appropriate message to go with the kick also. This button
is always good for livening up a slow channel.
\item[Time] Sends a CTCP Time command to the nick entered.
\item[Give Ops] Performs a \textit{/mode +o} command for the nick and
channel entered.
\item[Take Ops] Performs a \textit{/mode -o} command for the nick and
channel entered.
\item[Ping] Sends a CTCP Ping command to the nick entered.
\item[Who] Sends a \textit{/who} command for the nick or list of names
or whatever entered in the nick field. I found this to be the most
useful for seeing in any of my buds are online by entering a list
of domain name masks for each of them then pressing the button.
\item[Notify] Opens an edit dialog with a template \emph{Nick} and
\emph{Address Mask} for inclusion in the \emph{Notify} list. This command
may respond a bit slow because it performs a \emph{/who} command on the
nick to build its \emph{Address Mask}.
\item[Ignore] Opens an edit dialog with a template \emph{Nick} and
\emph{Address Mask} for inclusion in the \emph{Ignore} list. This command
may respond a bit slow because it performs a \emph{/who} command on the
nick to build its \emph{Address Mask}.
\item[Close] Closes the dialog box.
\end{description}
\subsection{Channels / People Dialog}\label{Channel Select}
This dialog box is for joining channels and initiating either private
or DCC chats with individuals. In Either case, an appropriate
\textit{Message Window} or \textit{DCC Chat Window} will be created.
As with the other dialog boxes with combo lists in them, pressing a
button will perform it's action on either the name in the edit field,
or the highlighted entry in the list.
\subsubsection{Buttons}
\begin{description}
\item[OK] This button either joins a channel or opens a
\textit{Message Window} to the selected individual.
\item[Join] Does the same as the \textit{OK} button.
\item[DCC Chat] Initiates a DCC Chat session with an individual and
opens a \textit{DCC Chat Window}.
\item[Chat] Does the same as the \textit{OK} button.
\item[Names/Whois] Sends either a \textit{/names} or \textit{/whois}
command to the selected channel or individual.
\item[Clear] Clears the edit field.
\item[Close] Closes the dialog box.
\end{description}
\subsection{Nickname Dialog}
This dialog lets you select or change your nick. As the others, it
will either use the nick entered in the edit field, or the selected
nick in the list. If the \textit{Auto Nick Selection} button is
enabled, the next nick found in the list will be used if the nick you
attempt to change to is in use. At this time, if you bring up this
dialog box, you \textbf{MUST} exit with the \textit{OK} button.
\subsection{Folks Online List}\label{Folks Online}
This is a small dialog showing the people from the \emph{Notify List}
(\ref{Notify List}) who are presently online. The nick that they are using
and the address as specified in the list are displayed for each person.
Doulble clicking the mouse on an entry in the list will pop up the
\emph{Nick Action} dialog box (\ref{Nick Action}) with the nick shown.
\subsection{Ignore / Notify List Maintanence Dialogs}
The list maintanence dialogs for both the Ignore and Notify Lists are quite
similar in thier look and feal. Though a few names may differ, they a
basicaly the same dialogs. They consist of a series of menus and a
scrollable table with 4 columns.
\subsubsection{Ignore List}\label{Ignore List}
The ignore list is for ignoring incoming messages from individuals. When a
message from an individual on the ignore list is received, an optional
auto-reply message may be sent back if one is present in the \emph{Message}
field for that person.
Currently, messages from ignored people are displayed in the main window.
This will most likely change as I become more confident that it is working
properly.
The only short comming of the auto-reply is that it will be sent to the
person when they chat on a channel you are currently on. Of course,
depending on your nature, this could be a good thing (snicker).
\subsubsection{Notify List}\label{Notify List}
The \emph{Notify List} is to receive notification of a persons arrival or
departure from Irc. Upon detecting a persons arrival, it will send an
optional greating to that person and also post a message to the \emph{Main
Window} of thier arrival. When a person has been detected as having
departed, another message will be posted to the \emph{Main Window} staing
so.
Detecting people is done with the \emph{who} command using either thier
nick or the name of thier provider. They both have potential problems. In
the case of using thier nick, the problem is (at least to me) obvious,
anyone can use a given nick so a notification may or may not be true. In
the case of using thier hostname the problem is not so obvious. Doing a
\emph{/who} on some hosts, there may be many people online from that host.
\emph{xIrc} gleens out the desired person by thier username, but if there
are enough people on form a single hostname, you may get bumped because of
the number of responses from the server. Yes, this is a real problem. if
you want to see it happen, do a \emph{/who} with no name on a busy night.
The list will be so long, chances are the server will knock you offline.
\subsubsection{List Navigation and Manipulation}
An entry is selected when its row appears to be sunken in respect to the
other rows. Selecting a given row is a simple matter of using the up and
down arrows or the page up and page down keys to select the next or
previous item in the list. An item may also be clicked on with the mouse to
select it.
As well as using the menus described below to mainipulate an item, the
mouse may also be used. Double clicking on an item will cause an edit
dialog to be opened for editing the contents. Double clicking on an
unpopulated row will open a dialog for entering a new item.
\subsubsection{Menus}
\begin{description}
\item{File}
\begin{description}
\item[New] Clears the list of all entries.
\item[Load] Reads in an existing file appending it's items in to the
list.
\item[Save As] Saves the list to a file. The default filename given is that
of the file that gets read on startup of the program.
\item[Done] Closes the dialog.
\end{description}
\item{Nick}
\begin{description}
\item[Edit] Opens a dialog for editing the currently selected item in the
list.
\item[New] Opens a dialog with blank entries for appending a new item to
the list.
\item[Delete] Deletes the currently selected item from the list.
\end{description}
\end{description}
\subsubsection{Fields}
Each item in the list consists of 4 fields. Only the 3rd field differs
between the notification and ignore lists and then only by it's label.
\begin{description}
\item[Nick] Nick of the user to be ignored or notified of.
\item[Mask] Address Mask of the user to be ignored or notified of. The
format of this field may be any string that makes for a valid /who query.
In general, it will have a format of \emph{nick}@\emph{server}. because
most people use dynamic IPs, the server will be prefixed with a *. As an
example:
\begin{quote}
peteh@*.satelnet.org
\end{quote}
\item[Ignore/Notify] Checkboxes to enable / disable the item and to select
if the user is to be detected by thier nick or by thier address mask.
\item[Message] For the Ignore List, if a message is present, it will be
sent to the user automatically in response to any message detected by them.
This include any messages they send to a channel you happen to be on also.
(Yes, I can be quite nasty, snicker).
For the Notify List the message present in this field will be sent to the
user on detection of thier arrival. It will be sent only once on each
arrival of the user.
In either case, if this field of empty, no message will be sent.
\end{description}
%%
%% Commands Chapter
%%
\section{Commands}
Commands may be entered in the edit field of the \textit{Message
Windows}. They are distinguished from messages by the line starting
with a '/' character. All white space at the beginning of the line is
skipped, therefore, if you want to 'fake' a command, you must put a
period or some other non-white space character before the '/',
otherwise the command will be invoked! The following commands are
available (Maybe others if I forget to add them to this list as I
release the code).
\begin{description}
\item[ALIAS \textit{tag} \textit{string}]
This command allows you to have simple macro replacements. Though
they are very basic, they can be useful. Basically \textit{string} will
be inserted anywhere \$\textit{tag} is found on an entered
line. For example:
\begin{quote}
\begin{verbatim}
/alias hugs *Big Hairy Hugs*
/me gives so and so $hugs tightly
\end{verbatim}
\end{quote}
will result in an action of '*\textit{nick} gives so and so *Big Hairy Hug*
tightly'.
\item[AWAY \textit{message}]
Sets you away. The \textit{message} will be given to anyone who private
messages you.
\item[INVITE \textit{nick}]
This invites a person to the channel associated with the window it is
typed in on. It is functional but useless on windows used to chat
with others privately
\item[JOIN \textit{channel}]
One of the commands you probably ought to leave alone. Use the
'Channel / People' Dialog instead. It will join you to
\textit{channel},
but the routing of messages will not right and therefore won't
work!
\item[KICK \textit{nick}]
Kicks a \textit{nick} from a channel. Once again, it's functional but
useless if used from a \textit{Message Window} not associated with a
channel.
\item[LINKS]
Lists the servers currently connected to your server. Don't ask me
how to interpret it, I don't know!
\item[LIST]
Lists channels topic and such. Works just like the LIST command in
IRC-II.
\item[MAP]
Similar to the \textbf{/LINKS} command except that it gives a more
'graphical' look to how the servers are connected. Though I still
have to pretend I know what it is telling me.
\item[ME]
Sends a CTCP ACTION message. In DCC Chat windows it will append the
action to the characters \texttt{<=}.
\item[MODE \textit{modes}]
Sets the modes for the channel the window is associated with to
\textit{modes}. It
works just like the MODE command in IRC-II except that the channel
name is derived from the window's name.
\item[NAMES {[}\textit{channel}{]}]
Lists the members on a channel. If channel is not given, the
channel name will be used. If I'm not mistaken, in the latter case,
no results will be display, instead, they will be reflected in the
Nick Dialog for that channel.
\item[NOTICE {[}\textit{nick}{]} \textit{string}]
Sends a NOTICE to the Nick or channel specified.
\item[NICK]
Changes your nick
\item[PART]
Like the JOIN command, it there, but it's best to leave it be!
\item[PING]
Pings the Member or Channel given. If neither are given, the name
pinged is derived from the window's name.
\item[PRIVMSG]
Sends a private message to the channel or member specified.
\item[QUIT]
Closes the connection to the current server sending the optional
message if present.
\item[TOPIC]
Set or displays the topic for the channel associated with the
window.
\item[WHO]
Does a who on the nick provided. Works like IRC-II.
\item[WHOIS]
Does a whois on the nick provided. Works like IRC-II.
\item[WHOWAS]
Does a whowas on the nick provided. Works like IRC-II.
\item[VERSION]
Sends a CTCP Version message to the channel or nick provided. If
no name is given, the name of the window is used.
\end{description}
\section{Command Line Entry and Edit Fields}
Because both the \textit{Message Windows} and the edit fields of the
dialog boxes share a common widget for text entry, they have the same
abilities when it comes to aliases and special character handling.
Though it is not guaranteed that all of the special characters are
appropriate or will even be acceptable in all of the dialog boxes.
\subsection{Handling of Special Characters}
Special characters may be entered using \textit{escape sequences}.
These are with the character $\backslash$ followed by one or more
characters. There are 5 flavors of escape sequences.
\subsubsection{Escape Sequences}
\begin{description}
\item[$\backslash$b\textit{string}$\backslash$b] This sequence will
highlight \textit{string}. String may be anything.
\item[$\backslash$u\textit{string}$\backslash$u] This sequence will
underline \textit{string}.
\item[$\backslash$\textit{number}] This will convert the decimal
number \textit{number} to a single character. Ei. $\backslash$27 will
send an ASCII \textit{Esc} character.
\item[$\backslash$x\textit{hex number}] This will convert the hexadecimal
number \textit{hex number} to a single character. Ei. $\backslash$1b will
send an ASCII \textit{Esc} character.
\item[$\backslash$0\textit{octal number}] This will convert the octal
number \textit{octal number} to a single character. Ei. $\backslash$033 will
send an ASCII \textit{Esc} character.
\end{description}
\subsection{Aliases}
An alias may be used by entering \$\texttt{<tag>}. Where tag is either
a name previously defined using the \textit{/ALIAS} command or the
name of an environment variable. Tag must begin with a letter, and may
consist of letters, numbers and the underscore after that. The regular
expression for aliases is \texttt{\$[a-zA-Z\_]+[a-zA-Z0-9\_]*}. If an
alias is found on the line but not defined it is replaced with
"" (no quotes).
At this point, it is not possible to to immediately follow a \$ with a
letter such as \$A without it being interpreted as an alias. The
upside to this is that you may put in \$456.34 without any special
characters to pass on the \$.
The names for alias are NOT case sensitive. \$fred is equivilent to
\$Fred and \$FRED.
\subsection{Command Lines}
A command line is considered any line entered in the edit field of
either a \textit{Message Window} or a \textit{DCC Chat Window} that
starts with a /\textit{command}. Any leading white space on the line
before the / will be skipped. If the command is not recognized it is
quietly ignored.
Any line that does not begin with a / is considered a message and is
sent on to either the channel or the individual you are chatting with.
In either case, you may imbed aliases and escape sequences as needed.
\section{Configurations Using the xIrc.defaults File}
Currently there are two means used in the configuration of xIrc, the
xIrc.defaults file and the X-Resources. I'm
not sure if this will not change in the future or not. For Y'all who
have been using xIrc for a while, you will find that somethings that
used to be in the xIrc.defaults file have been moved and made into
X-Resources. In the future, others or all may be moved also.
Any aliases that you want to pre-define, may be entered into this
file. It will be read once on startup and then politely ignored
through the remainder of the session.
At this point it MUST reside in the current directory where you are
when you start xIrc. There are just a handful of various things you
can set at this point, hopefully it will not get too much larger in
time.
If you take a look at the defaults file provided, you will get an idea
of how it's formated. definitions can be on multiple lines using the
continuation character as the last character on the line before they
new line. Any handy little definitions you want to be able to use
while chatting can also be placed in this file and they will be there
ready for you to use when you start up.
Here is the list of the currently used tags. Not all of them are
needed, though some do make life much easier. These names may be in
any case to simplifiy reading them.
\begin{description}
\item[BAN\_MESSAGE]
String to use for the kick if the kick is implemented with a ban.
\item[CHANNELS]
List of channels or nicks you want to regularly check out, chat
with or whatever.
\item[DCC\_SEND\_RESPONSE]
Response message you want to send when someone tries to set up a
DCC File transfer to you.
\item[EMAIL\_ADDR]
Entry to specifiy the user name and host name provided when
connecting to the server. It must follow the <user>@<domain> syntax
or you stand the chance that your connection will be rejected. If
this entry is not provided, the user name from the /etc/passwd file
will be used and a dummy domainname of dummy.hostname.org will be
used.
\item[KICKMESSAGE]
Default message to send when you kick someone.
\item[KICKED\_OTHER\_RESPONSE]
Message to send when a kick of someone is detected.
\item[KICKED\_YOU\_RESPONSE]
Message to send someone when they kick you.
\item[NICK]
Now Obsolete tag. See NICKS.
\item[NICKS]
Allows you to define a set of possible nicks to when connecting.
Each nick should be seperated with a space.
\item[QUITMESSAGE]
Default message to append to the QUIT command.
\item[REALNAME]
Will be sent when first connecting to a server as your real name.
Can be anything you like though if you're one of those snots that
don't like people being able to see just who they are really
talking too (Personal oppinion there). If it is not defined, the
user\_name field of the /etc/passwd file will be used instead.
\item[SERVERS]
List of server names you frequent.
\item[TCPPORT]
Default TCP port, probably should be left at 6667.
\item[USERINFO]
Whatever you want to tell the world about yourself when they do a
ctcp USERINFO command of you.
\end{description}
\subsection{Obsolete Tags}
These tags are no longer used as of Version 1.15 and their
functionality has been moved to the X-Resources file.
\begin{description}
\item[FRAME\_FG\_COLOR\_NAME]
\item[FRAME\_FG\_COLOR\_RGB]
\item[FRAME\_BG\_COLOR\_NAME]
\item[FRAME\_BG\_COLOR\_RGB]
\item[WINDOW\_FG\_COLOR\_NAME]
\item[WINDOW\_FG\_COLOR\_RGB]
\item[WINDOW\_BG\_COLOR\_NAME]
\item[WINDOW\_BG\_COLOR\_RGB]
\end{description}
\section{X-Resources}
As of version 1.15, xIrc uses X-Resources to set the colors and fonts
to be used when drawing the widgets. Almost all of its widgets have
both a class name and a resource name. Currently the names are the
same except that the class names have the first letter of each word
capitalized. The names and definitions of the font and color resources
come directly from the definition of the Qt class library. Therefore,
for a better understanding of them, it wouldn't hurt to take a look
at Qt documentation for the classes QColorGroup and QFont.
Currently xIrc does not use the resource definitions defined for the
root window. They are derived by merging the following sources in the
order given.
\begin{itemize}
\item Hardcoded program defaults
\item /usr/lib/X11/app-defaults/xIrc$^*$
\item ~/.Xdefaults
\end{itemize}
\flushleft{
Note:
}
\begin{quote}
$^*$ This file name will be the same as the the name that xIrc was
invoked as. In otherwords, if a link name \textbf{fred} points to the
actuall xIrc program, the resulting file name used will be
/usr/lib/x11/app-defaults/fred.
\end{quote}
The result of this is that if no other source is given, then the hard
coded valuee will be used, otherwise, and values given in the
.Xdefaults will overload those in the app-defaults file which will
overload the hardcoded values.
To simplify the documenting of the resources and the widgets, I will
refer to all of them by thier class name. If you insist on using the
actual names, you can convert them by making the class name all lowercase.
\flushleft{Note:}
\begin{quote}
For now, it is recomended that only class names be used in the
resource files. This is because in the near future the names for each
widget will probably be changing and I'm not sure how yet. Where as I
see very little change (though anything is possible) of the class
names.
\end{quote}
\subsection{Default Values}
The xIrc program has the following defaults built in. They will be in
force unless over ridden by definitions in one of the aforementioned
files.
\begin{quote}
\begin{verbatim}
XIRC*PixMap: xIrc.ppm
XIRC*PixMapPath: ./;~/;/usr/local/lib;
XIRC*Font.Family: Helvetica
XIRC*Font.Size: 12
XIRC*Font.Weight: normal
XIRC*Menu.Font.Weight: Bold
XIRC*Popup.Font.Weight: Bold
XIRC*PushBtn.Font.Weight: Bold
XIRC*PushBtn.Background: #bfafaf
XIRC*Background: 0xc3c3c3
XIRC*Forground: black
XIRC*BaseColor: white
XIRC*TextColor: black
XIRC*AutoFocus: false
XIRC*ListBox.BaseColor: #af9f9f
XIRC*ListBox.Background: #af9f9f
XIRC*MessageDialog.Background: #bfafaf
XIRC*MessageDialog.PushBtn.Background: #af9f9f
XIRC*MessageDialog.MultiLineEdit.Font.Family: Fixed
XIRC*MessageDialog.MultiLineEdit.BaseColor: #af9f9f
XIRC*MessageDialog.MultiLineEdit.TextColor: Navy Blue
XIRC*DccChat.Input.Font.Family: Fixed
XIRC*MsgChat.Input.Font.Family: Fixed
XIRC*ServerDialog.Font.Family: Fixed
XIRC*ServerDialog.ImportFile: servers.ini
XIRC*ServerDialog.ImportPath: ./
XIRC*ServerDialog.ImportFilter: *.ini
XIRC*ServerDialog.File: .servers
XIRC*ServerDialog.Path: /usr/local/lib/xIrc
XIRC*ServerDialog.Filter: .*
\end{verbatim}
\end{quote}
I have tried to keep the defaults to a minimum and as generic as possible
allowing for the greatest flexiblilty. If they cause any problems, I'm
open for suggestions on how they should be set, though I don't make
any promises everybody's suggestions wil be put into place.
\subsection{Common Resources}
Each widget has these resources named.
\begin{description}
\item[Background] Used to se the backgound color of the widget. On
many of the widgets, such as lists, this also includes any scroll bars.
\item[Foreground] Not sure what all the covers. The one thing that I
have noticed that it changes is the caret color in the editible
fields.
\item[BaseColor] Background color of the input fields. The Background
color will be used if this is not set.
\item[TextColor] Color of the text that is displayed in a widget. The
Foreground color will be used if this is not defined.
\item[Font.Family] Family name of the font to use, such as, Helvetica,
Courier, Fixed, etc.
\item[Font.Size] Pixel size of the font to use.
\item[Font.Weight] Weight of font to use. This can be either a number
from 1 to 99 or one of the following names.
\begin{quote}
\begin{itemize}
\item{Light}
\item{Normal}
\item{Bold}
\item{Black}
\end{itemize}
\end{quote}
\end{description}
\subsection{Configurable Widgets}
\begin{description}
\item[XIRC] The application. This has following resource names
in addition to the common ones.
\begin{description}
\item[BanDialog] The dialog box used for banning folks from a channel.
It has the \textbf{Input} and \textbf{PushBtnFrame} widgets beneath
it.
\item[ChannelDialog] The dialog box for selecting the channel to talk
on. It also has the \textbf{ComboBox} and \textbf{PushBtnFrame}
widgets beneath it.
\item[ChannelNickDialog] This dialog box holds the list of current
members of a channel and has buttons for various actions for the
nicks. It has the \textbf{ComboBox} and \textbf{PushBtn} widgets
beneath it.
\item[ComboBox] This is for widgets composed of a list box and an
edit field. It has the \textbf{Input} widget beneath it.
\item[DccChat] Window used for DCC Chats. This has the same
widgets beneath it as the \textbf{MsgChat} widget.
\item[ErrorDialog] The dialog box that pops up when an error is
recieved from the server.
\item[IgnoreDialog] The Dialog Box for viewing and altering the \emph{Ignore
List}. It has the following resources in addition to the standard
resources.
\begin{description}
\item[File] Default name for loading a file into the list.
\item[Filename] Name of the file to load on startup.
\item[Filter] Filter for the files to see in the file dialog.
\end{description}
\item[Input] This widget is a single line editable field.
\item[ListBox] Used to set the colors and fonts of the various list boxes.
\item[Main] Main text window that the server messages go to.
\item[MessageDialog] The dialog box that pops up when someone sends a
private message to you. It has the \textbf{PushBtnFrame} widget
beneath it.
\item[MsgChat] The window you talk with to both a channel or another
person privately. Currently ther is no differentiation between the
two, though later there will probably be so. I will keep the ends of
the new class names \textbf{MsgChat} to simplify the modifications to
the resources when that time comes.
This has the \textbf{MultiLine},
\textbf{PushBtnFrame}, \textbf{ChanNickDialog}, and \textbf{Input}
widgets beneath it.
\item[MultiLine.Frame] This specifies the color of the frame and
scroll bar sourounding the multiline text widget used for displaying
the text of the conversations. At this time, because of how the frame
is layed out, it really only effects the color of the scrollbar.
\item[MultiLine.Window] The multiline text widget used to display the
text of conversations. For the best results, a fixed font such as
lucidatypewriter or fixed should be used for this window. The code for
the widget was written on the assumption that this would be so,
therefore, all bets are off that the widget will display it's contents
correctly if a proportional font is used!
In addition to the standard fonts and color resources that may be
configured, it also include the resource \textbf{HighColor} for
configuring the color of any bolded text.
\item[NickDialog] The dialog box for selecting a nickname. It too has
both the \textbf{ComboBox} and \textbf{PushBtnFrame} widgets beneath it.
\item[NickActionDialog] My favorite, the dialog box to do just about
anything to anyone. It have the \textbf{Input} and \textbf{PushBtnFrame} widgets beneath
it.
\item[NotifyDialog] The Dialog Box for viewing and altering the \emph{Notify
List}. It has the following resources in addition to the standard
resources.
\begin{description}
\item[Menu] Used to set the colors and fonts of the menu bar.
\item[Popup] Used to set the colors and fonts of the popup menus.
\item[File] Default name for loading a file into the list.
\item[Filename] Name of the file to load on startup.
\item[Filter] Filter for the files to see in the file dialog.
\end{description}
\item[PixMap] Name of the Pixmap file to use as an Icon for closed
\textit{Message Windows} and \textit{DCC Chat Windows}. Unfortunately,
This file cannot be of the standard xpm variety. It must be a BMP,
XBM, or a PNM of the type P1 - P6. I have supplied both an XPM and a
P3 format PPM file derived from the XPM. The XPM version is for all of
you fvwm users.
\item[PixMapPath] A list of paths, delimited with semicolons, to
search for the pixmap. The default is './;~/;/usr/local/lib'.
\end{description}
\item[PushBtnFrame] This frame is for holding one or more push
buttons. It has the \textbf{PushBtn} widget beneath it.
\item[ServerDialog] The dialog box for selecting a server to connect
to. It has the \textbf{ComboBox}, \textbf{PushBtnFrame} and
\textbf{Input} (for the port number) widgets beneath it. In addition to the
common resources it also uses these additional resources.
\begin{description}
\item[Menu] Used to set the colors and fonts of the menu bar.
\item[Popup] Used to set the colors and fonts of the popup menus.
\item[ImportFile] Default name for the mIrc servers.ini file
\item[ImportPath] Default path to find the mIrc file.
\item[ImportFilter] Default filter for the mIrc file.
\item[File] Default name for the server file
\item[Path] Default path to find the server file.
\item[Filter] Default filter for the server file.
\end{description}
\item[SocketDialog] The dialog box showing the progress of the
connection attempt. It has the \textbf{PushBtnFrame} widgets beneath it.
\item[TCPSocket] The socket widgit for establishing and accepting
connections. This is truely not a widgit as it is never displayed on
the screen. This object has the following two configurable items.
\begin{description}
\item[ConnectTime] Time to wait to make a connection in milliseconds
(seconds * 1000). The defualt is 1 minute.
\item[AcceptTime] Time to wait for an incomming connection in
milliseconds (seconds * 1000). The default is 5 minutes.
\end{description}
\end{description}
\end{document}
|