File: xIrc.doc

package info (click to toggle)
xirc 2.0-3
  • links: PTS
  • area: contrib
  • in suites: hamm, slink
  • size: 2,624 kB
  • ctags: 2,093
  • sloc: cpp: 21,094; makefile: 1,033
file content (1394 lines) | stat: -rw-r--r-- 49,762 bytes parent folder | download
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
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394

xIrc  User  Reference

           Joe Croft

        croftj@dfw.net

 http://www.dfw.net/ croftj



        June 22, 1997

Contents


1   Introduction                                                    2
    1.1 Features . . . . . . . . . . . . . . . . . . . . . . . .   2
    1.2 Future Dreams and Wishes   . . . . . . . . . . . . . . .   3
    1.3 Known Bugs   . . . . . . . . . . . . . . . . . . . . . .   3
    1.4 Credits  . . . . . . . . . . . . . . . . . . . . . . . .   3


2   Installation and Compilation                                   4
    2.1 Installation   . . . . . . . . . . . . . . . . . . . . .   4
    2.2 Re-compilation   . . . . . . . . . . . . . . . . . . . .   4


3   Usage                                                           4
    3.1 Connecting to a Server   . . . . . . . . . . . . . . . .   5
    3.2 Entering a Channel   . . . . . . . . . . . . . . . . . .   5
    3.3 DCC Chat . . . . . . . . . . . . . . . . . . . . . . . .   5
    3.4 Ignoring People  . . . . . . . . . . . . . . . . . . . .   6
    3.5 Notifications  . . . . . . . . . . . . . . . . . . . . .   6


4   Windows, Dialogs and Buttons                                   6
    4.1 Main Window  . . . . . . . . . . . . . . . . . . . . . .   7
    4.2 Message Window   . . . . . . . . . . . . . . . . . . . .   7
    4.3 DCC Chat Window  . . . . . . . . . . . . . . . . . . . .   8
    4.4 Server Selection Dialog  . . . . . . . . . . . . . . . .   8
    4.5 Server Connection Dialog   . . . . . . . . . . . . . . .  10
    4.6 Server Edit Dialog   . . . . . . . . . . . . . . . . . .  10
    4.7 Nick List Dialog   . . . . . . . . . . . . . . . . . . .  10
    4.8 Nick Actions Dialog  . . . . . . . . . . . . . . . . . .  11
    4.9 Channels / People Dialog   . . . . . . . . . . . . . . .  12
    4.10Nickname Dialog  . . . . . . . . . . . . . . . . . . . .  12
    4.11Folks Online List  . . . . . . . . . . . . . . . . . . .  13
    4.12Ignore / Notify List Maintanence Dialogs  . . . . . . .  13


5   Commands                                                       15


6   Command Line Entry and Edit Fields                            17
    6.1 Handling of Special Characters   . . . . . . . . . . . .  17
    6.2 Aliases  . . . . . . . . . . . . . . . . . . . . . . . .  17
    6.3 Command Lines  . . . . . . . . . . . . . . . . . . . . .  17


7   Configurations Using the xIrc.defaults File                   18
    7.1 Obsolete Tags  . . . . . . . . . . . . . . . . . . . . .  19


8   X-Resources                                                    20
    8.1 Default Values   . . . . . . . . . . . . . . . . . . . .  20
    8.2 Common Resources   . . . . . . . . . . . . . . . . . . .  21
    8.3 Configurable Widgets   . . . . . . . . . . . . . . . . .  22



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



1.1   Features

   o Individual Windows for each channel you are joined to or each
     private conversation.

   o Nick Lists for the channels that allow you to various things on
     the folks listed in them.

   o Initiate and respond to DCC chat requests.

   o Aliases that allow multiple words to be represented by a symbol.
     Similar to the IRC-II set command.

   o Subset of similar commands and formats to IRC-II though many have
     been simplified.

   o Auto responses to people getting kicked from a channel or for
     you being kicked from a channel.

   o Auto re-join if you've been kicked from a channel.

   o Simplified Banning w/ optional kick

   o Use of X-Resources for the configuration of fonts, colors and
     a few other things.

   o Cut and Paste functionality at least for the input fields few
     other things.

   o Member arrival notification either by nick or by address mask

   o Member ignore lists.



                                  2

1.2   Future Dreams and Wishes

   o Command line histories

   o DCC File transfers

   o Cut and Paste functionality for the chat windows in general.

   o Script language based on the one provided by IRC-II.

   o Anything else that you or I may think of that sounds handy, nifty
     or just plain fun to have.



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



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



                                  3

2    Installation and Compilation


2.1   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 *Servers.Path  and *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.



2.2   Re-compilation

Change directories to the libX++ directory.  Modify the CFLAGS entry
to reflect the home of the qt include files.  Then run make depend
then make.  This can be done on a single line as 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 make depend  then make.  This too can be done
on a single line as 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.



3    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



                                  4

not sure what all are available.



3.1   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 New  entry under the 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 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.



3.2   Entering a Channel

To enter into a channel, select the Open Channel  entry in the 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 OK  or 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 Nick List  button at the top of the channel window, it will
toggle the display of the member list for the channel.



3.3   DCC Chat

3.3.1  Initiating a DCC Chat Connection

A DCC chat is initiated by either opening the Channels & People  dialog
by selecting the Open Channel  entry of the File  menu, selecting the
person or entering in thier nick followed by pressing the DCC Chat
button.  Or by double clicking on the nick which will open the Nick
Action  dialog and pressing the 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.
                                  5

3.3.2  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.



3.4   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 Nick Action  dialog is presented, press
ignore.  This will do a /who  command on them and build an appropriate
adres filter for the person and present you with a dialog showing the
results.  Press the OK  button to add the entry to the list.
   The second means is to enter the name in manually.  Select the Ignore
List  entry in the Lists  menu of the main window.  This will display
the Ignore List.  You may at this point double click on an empty row
or select the New  entry under the 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.



3.5   Notifications

The mechanics of setting up notifications of peoples comings ang goings
are identical to that of the 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.


3.5.1  By Nick or by Address

Both ignores and notifications allow you to select whether they are
by nick or by address.  Pressing the By Addr  button indicates that
it should be done by address.  Otherwise, they are done by nick.



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



                                  6

4.1   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.


4.1.1  Menus

Enough actions have been added that I finaly had to replace the buttons
with menus.

File Server and Channel related functions

     Connect Server   Opens the Server Select Dialog (4.4) allowing you
          to connect to or disconnect from a server.

     Open Channel    Opens a dialog (4.9) for joining a channel a channel
          or starting up a chat with an individual.

     Quit  Opens up a dialog allowing you to select an exiting statement
          then exits the program

Nick  Nick related functions

     Show Folks Online   Toggles the visibility of the Folks Online  list
          (4.11).

     Actions  Opens the 'Nick Action' dialog (4.8).

     Change Nick   Opens a dialog for changing your nick.  If you select
          this, you will be forced to enter in a nick.

Lists List Access / Maintanence

     Server List Same as the Connect Server menu item under the File
          menu.(4.4)

     Ignore List Allow the editing and removing of existing, and the
          entry of new members on the ignore list (4.12.1).

     Notify List Allow the editing and removing of existing, and the
          entry of new members on the notification list (4.12.2).



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



                                  7

4.2.1  Buttons

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.

Ping  Pressing this button send a CTCP Ping command to the individual
     or channel.

Nick Actions  Pressing this button opens the same dialog box as the
     Nick Actions  button of the Main window.

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.

Clear Line  Pressing this window erases any text currently present in
     the edit field.



4.3   DCC Chat Window

This window is for chatting to another person via the CTCP DCC Chat
mechanism.  It has the Close  and the Clear Line  buttons.  These buttons
have the same functionality as the same buttons on the Message Window



4.4   Server Selection Dialog

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


4.4.1  Buttons

This dialog has 3 buttons, Connect, Disconnect, and Cancel.


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.

Disconnect  Pressing this button disconnects the server.



                                  8

Cancel  Pressing this button closes the dialog box without any action.


4.4.2  Menu Bar

The menu bar has two items, File  and Server.  The File  menu has entries
for manipulating the server file.  The Server  menu hes entries for
manipulating individule entries in the table.
   These are the entries in the File  menu.

New   This menu entry clears the table of all entries

Load  This menu entry opens a file dialog to select and load a file
     of servers into the table.

Import  This menu entry is like Load  except that it imports server
     files in the format of mIrc's servers.ini files.

Save As  This menu item saves the table to a file.

Done   This menu item behaves as the Cancel  button.

   These are the entries in the Server  menu.

Connect   This menu entry behaves as the Connect  button.

Disconnect  This menu entry behaves as the Disconnect  button.

Edit  This menu entry opens a Server Entry Edit  dialog bos for editing
     an enties contents.

Delete  This menu item deletes an entry from the table.


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


Group   Name of the group of servers the server belongs to.

Country   Name of the country or continent where the server is located.

State  Name of the state or country where the server is located.

City  Name of the city where the server is located.

Server  Domain name or IP number of the server.

Ports  Comma delimited list of ports that can be connected to.


   An example of a valid entry is

BeyondIRC:US:MI:St.Louis:irc.primary.net:6660,6662,6664,6666,6668



                                  9

4.5   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.



4.6   Server Edit Dialog

This dialog allows for updating information in the Server Table.



4.7   Nick List Dialog

This dialog box is created and maintained for each 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.


4.7.1  Buttons

Who is  Perform a /whois  command on the selected nick.

Chat  Opens the 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 Channels / People  dialog
     box.

Ping  Send a CTCP Ping command to the selected nick.

Invite Invite the selected nick (Uh, only makes sense if you entered
     a non-members nick in the edit field) to the channel.

Kick  Open the Kick Message  dialog box to kick a member from the channel.
     This only works if you are a channel operator.

Clear  Erases the contents of the edit field.

Close  Should close the window but I don't think it does anything at
     this point.  *Sheepish Grin*


                                 10

4.8   Nick Actions Dialog

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 Message Window  or the 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.


4.8.1  Buttons

Dcc Chat   Initiates a DCC Chat connection with the nick entered in
     the nick field and opens a corresponding DCC Chat Window.

Priv Chat  Opens a Message Window  for the nick entered in the nick
     field.

User Info  Sends a CTCP UserInfo command to the nick entered.

Whois   Sends a /whois  command for the nick entered.

WhoWas    Sends a /whowas  command for the nick entered.

Finger  Sends a CTCP Finger command to the nick entered.

Ban  This command sends a /who  command on the nick entered, then builds
     an appropriate ban string and bans that person from the channel
     specified.

Kick  Same as the 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.

Time   Sends a CTCP Time command to the nick entered.

Give Ops   Performs a /mode +o  command for the nick and channel entered.

Take Ops   Performs a /mode -o  command for the nick and channel entered.

Ping  Sends a CTCP Ping command to the nick entered.

Who   Sends a /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.

Notify  Opens an edit dialog with a template Nick  and Address Mask  for
     inclusion in the Notify  list.  This command may respond a bit
     slow because it performs a /who  command on the nick to build its
     Address Mask.



                                 11

Ignore  Opens an edit dialog with a template Nick  and Address Mask  for
     inclusion in the Ignore  list.  This command may respond a bit
     slow because it performs a /who  command on the nick to build its
     Address Mask.

Close  Closes the dialog box.



4.9   Channels / People Dialog

This dialog box is for joining channels and initiating either private
or DCC chats with individuals.  In Either case, an appropriate Message
Window  or 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.


4.9.1  Buttons

OK   This button either joins a channel or opens a Message Window  to
     the selected individual.

Join  Does the same as the OK  button.

DCC Chat    Initiates a DCC Chat session with an individual and opens
     a DCC Chat Window.

Chat  Does the same as the OK  button.

Names/Whois    Sends either a /names  or /whois  command to the selected
     channel or individual.

Clear  Clears the edit field.

Close  Closes the dialog box.



4.10    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 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 MUST exit with the OK  button.

                                 12

4.11    Folks Online List

This is a small dialog showing the people from the Notify List  (4.12.2)
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
Nick Action  dialog box (4.8) with the nick shown.



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


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


4.12.2  Notify List

The 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
Main Window  of thier arrival.  When a person has been detected as having
departed, another message will be posted to the Main Window  staing
so.
   Detecting people is done with the 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 /who  on some hosts, there may be many people online from that
host.  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 /who  with no name

                                 13

on a busy night.  The list will be so long, chances are the server
will knock you offline.


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


4.12.4  Menus

 File

     New   Clears the list of all entries.

     Load  Reads in an existing file appending it's items in to the
          list.

     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.

     Done  Closes the dialog.

 Nick

     Edit  Opens a dialog for editing the currently selected item in
          the list.

     New   Opens a dialog with blank entries for appending a new item
          to the list.

     Delete  Deletes the currently selected item from the list.


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


Nick  Nick of the user to be ignored or notified of.

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 nick @server.  because most
     people use dynamic IPs, the server will be prefixed with a *.
     As an example:
                                 14

          peteh@*.satelnet.org


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.

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.



5    Commands


Commands may be entered in the edit field of the 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).


ALIAS tag string   This command allows you to have simple macro replacements.
     Though they are very basic, they can be useful.  Basically string
     will be inserted anywhere $tag  is found on an entered line.  For
     example:

          /alias hugs *Big Hairy Hugs*
          /me gives so and so $hugs tightly

     will result in an action of '*nick  gives so and so *Big Hairy
     Hug* tightly'.

AWAY message     Sets you away.  The message  will be given to anyone
     who private messages you.

INVITE 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

JOIN channel   One of the commands you probably ought to leave alone.
     Use the 'Channel / People' Dialog instead.  It will join you to
     channel, but the routing of messages will not right and therefore
     won't work!



                                 15

KICK nick   Kicks a nick  from a channel.  Once again, it's functional
     but useless if used from a Message Window  not associated with
     a channel.

LINKS   Lists the servers currently connected to your server.  Don't
     ask me how to interpret it, I don't know!

LIST  Lists channels topic and such.  Works just like the LIST command
     in IRC-II.

MAP    Similar to the /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.

ME   Sends a CTCP ACTION message.  In DCC Chat windows it will append
     the action to the characters <=.

MODE modes     Sets the modes for the channel the window is associated
     with to modes.  It works just like the MODE command in IRC-II
     except that the channel name is derived from the window's name.

NAMES [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.

NOTICE [nick] string   Sends a NOTICE to the Nick or channel specified.

NICK   Changes your nick

PART    Like the JOIN command, it there, but it's best to leave it be!

PING   Pings the Member or Channel given.  If neither are given, the
     name pinged is derived from the window's name.

PRIVMSG     Sends a private message to the channel or member specified.

QUIT   Closes the connection to the current server sending the optional
     message if present.

TOPIC    Set or displays the topic for the channel associated with the
     window.

WHO    Does a who on the nick provided.  Works like IRC-II.

WHOIS    Does a whois on the nick provided.  Works like IRC-II.

WHOWAS      Does a whowas on the nick provided.  Works like IRC-II.

VERSION     Sends a CTCP Version message to the channel or nick provided.
     If no name is given, the name of the window is used.
                                 16

6    Command Line Entry and Edit Fields


Because both the 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.



6.1   Handling of Special Characters

Special characters may be entered using escape sequences.  These are
with the character \ followed by one or more characters.  There are
5 flavors of escape sequences.


6.1.1  Escape Sequences

\bstring\b  This sequence will highlight string.  String may be anything.

\ustring\u  This sequence will underline string.

\number   This will convert the decimal number number  to a single character.
     Ei.  \27 will send an ASCII Esc  character.

\xhex number   This will convert the hexadecimal number hex number  to
     a single character.  Ei.  \1b will send an ASCII Esc  character.

\0octal number  This will convert the octal number octal number  to
     a single character.  Ei.  \033 will send an ASCII Esc  character.



6.2   Aliases

An alias may be used by entering $<tag>.  Where tag is either a name
previously defined using the /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 $[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.



6.3   Command Lines

A command line is considered any line entered in the edit field of
either a Message Window  or a DCC Chat Window  that starts with a /command.



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



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

BAN_MESSAGE       String to use for the kick if the kick is implemented
     with a ban.

CHANNELS      List of channels or nicks you want to regularly check
     out, chat with or whatever.

DCC_SEND_RESPONSE         Response message you want to send when someone
     tries to set up a DCC File transfer to you.

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.



                                 18

KICKMESSAGE        Default message to send when you kick someone.

KICKED_OTHER_RESPONSE            Message to send when a kick of someone
     is detected.

KICKED_YOU_RESPONSE           Message to send someone when they kick
     you.

NICK   Now Obsolete tag.  See NICKS.

NICKS    Allows you to define a set of possible nicks to when connecting.
     Each nick should be seperated with a space.

QUITMESSAGE       Default message to append to the QUIT command.

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.

SERVERS     List of server names you frequent.

TCPPORT     Default TCP port, probably should be left at 6667.

USERINFO     Whatever you want to tell the world about yourself when
     they do a ctcp USERINFO command of you.



7.1   Obsolete Tags

These tags are no longer used as of Version 1.15 and their functionality
has been moved to the X-Resources file.

FRAME_FG_COLOR_NAME

FRAME_FG_COLOR_RGB

FRAME_BG_COLOR_NAME

FRAME_BG_COLOR_RGB

WINDOW_FG_COLOR_NAME

WINDOW_FG_COLOR_RGB

WINDOW_BG_COLOR_NAME

WINDOW_BG_COLOR_RGB


                                 19

8    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.

   o Hardcoded program defaults

   o /usr/lib/X11/app-defaults/xIrc*

   o  /.Xdefaults

Note:

     * This file name will be the same as the the name that

     xIrc was invoked as.  In otherwords, if a link name fred
     points to the actuall xIrc program, the resulting file
     name used will be /usr/lib/x11/app-defaults/fred.

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.

Note:

     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.



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



                                 20

     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: .*

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.


8.2   Common Resources

Each widget has these resources named.

Background   Used to se the backgound color of the widget.  On
     many of the widgets, such as lists, this also includes any
     scroll bars.

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.



                                 21

BaseColor   Background color of the input fields.  The Background
     color will be used if this is not set.

TextColor  Color of the text that is displayed in a widget.  The
     Foreground color will be used if this is not defined.

Font.Family  Family name of the font to use, such as, Helvetica,
     Courier, Fixed, etc.

Font.Size Pixel size of the font to use.

Font.Weight  Weight of font to use.  This can be either a number
     from 1 to 99 or one of the following names.

           o Light

           o Normal

           o Bold

           o Black



8.3   Configurable Widgets

XIRC   The application.  This has following resource names in
     addition to the common ones.


     BanDialog   The dialog box used for banning folks from a
          channel.  It has the Input and PushBtnFrame widgets
          beneath it.

     ChannelDialog   The dialog box for selecting the channel to
          talk on.  It also has the ComboBox and PushBtnFrame
          widgets beneath it.

     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 ComboBox and PushBtn widgets
          beneath it.

     ComboBox    This is for widgets composed of a list box and an
          edit field.  It has the Input widget beneath it.

     DccChat   Window used for DCC Chats.  This has the same
          widgets beneath it as the MsgChat widget.

     ErrorDialog  The dialog box that pops up when an error is
          recieved from the server.

     IgnoreDialog  The Dialog Box for viewing and altering the
          Ignore List.  It has the following resources in addition
          to the standard resources.

          FileDefault name for loading a file into the list.

          Filename  Name of the file to load on startup.



                                 22

     FilterFilter for the files to see in the file dialog.

Input  This widget is a single line editable field.

ListBox  Used to set the colors and fonts of the various list
     boxes.

Main  Main text window that the server messages go to.

MessageDialog   The dialog box that pops up when someone
     sends a private message to you.  It has the PushBtnFrame
     widget beneath it.

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 MsgChat to simplify the modifications to the
     resources when that time comes.

     This has the MultiLine, PushBtnFrame, ChanNickDialog,
     and Input widgets beneath it.

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.

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
     HighColor for configuring the color of any bolded text.

NickDialog  The dialog box for selecting a nickname.  It too
     has both the ComboBox and PushBtnFrame widgets beneath
     it.

NickActionDialog   My favorite, the dialog box to do just
     about anything to anyone.  It have the Input and
     PushBtnFrame widgets beneath it.

NotifyDialog  The Dialog Box for viewing and altering the
     Notify List.  It has the following resources in addition
     to the standard resources.

     Menu  Used to set the colors and fonts of the menu bar.

                            23

          Popup  Used to set the colors and fonts of the popup
             menus.

          FileDefault name for loading a file into the list.

          Filename  Name of the file to load on startup.

          FilterFilter for the files to see in the file dialog.

     PixMap   Name of the Pixmap file to use as an Icon for closed
          Message Windows  and 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.

     PixMapPath    A list of paths, delimited with semicolons, to
          search for the pixmap.  The default is
          './; /;/usr/local/lib'.


PushBtnFrame    This frame is for holding one or more push
     buttons.  It has the PushBtn widget beneath it.

ServerDialog  The dialog box for selecting a server to connect to.
     It has the ComboBox, PushBtnFrame and Input (for the port
     number) widgets beneath it.  In addition to the common
     resources it also uses these additional resources.

     Menu   Used to set the colors and fonts of the menu bar.

     Popup   Used to set the colors and fonts of the popup menus.

     ImportFile  Default name for the mIrc servers.ini file

     ImportPath   Default path to find the mIrc file.

     ImportFilter  Default filter for the mIrc file.

     File Default name for the server file

     Path  Default path to find the server file.

     Filter Default filter for the server file.

SocketDialog  The dialog box showing the progress of the
     connection attempt.  It has the PushBtnFrame widgets beneath
     it.

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.

     ConnectTime    Time to wait to make a connection in
          milliseconds (seconds * 1000).  The defualt is 1 minute.



                                 24

AcceptTime   Time to wait for an incomming connection in
     milliseconds (seconds * 1000).  The default is 5
     minutes.


                            25