.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== .de Sh \" Subsection heading .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. | will give a .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' .\" expand to `' in nroff, nothing in troff, for use with C<>. .tr \(*W-|\(bv\*(Tr .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .\" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .hy 0 .if n .na .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "NETHIRC 1" .TH NETHIRC 1 "2005-03-02" "perl v5.8.8" "User Contributed Perl Documentation" .SH "NAME" nethirc \- A nethack\-flavored IRC client .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBnethirc\fR [\fB\-m?\fR] [\fB\-b\fR \fIdbfile\fR] [\fB\-f\fR \fIrcfile\fR] [\fB\-h\fR \fIhostname\fR] [\fB\-i\fR \fIircname\fR] [\fB\-j\fR \fIchannel\fR] [\fB\-l\fR \fIlocalport\fR] [\fB\-n\fR \fInick\fR] [\fB\-p\fR \fIport\fR] [\fB\-s\fR \fIserver\fR] [\fB\-u\fR \fIusername\fR] [\fB\-\-dump\-database\fR] [\fB\-\-help\fR] [\fB\-\-database\fR=\fIdbfile\fR] [\fB\-\-hostname\fR=\fIhostname\fR] [\fB\-\-rc\-file\fR=\fIrcfile\fR] [\fB\-\-join\fR=\fIchannel\fR] [\fB\-\-local\-port\fR=\fIlocalport\fR] [\fB\-\-nick\fR=\fInick\fR] [\fB\-\-port\fR=\fIport\fR] [\fB\-\-server\fR=\fIserver\fR] [\fB\-\-username\fR=\fIusername\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBnethirc\fR is an \s-1IRC\s0 client written almost entirely in Perl, with the help of the \f(CW\*(C`POE::Component::IRC\*(C'\fR module from \s-1CPAN\s0. It is named \fBnethirc\fR because of the influence of \fBnethack\fR, which is the theme behind many of the things that \fBnethirc\fR displays on your screen. .Sh "Switches" .IX Subsection "Switches" \&\fBnethirc\fR's command line interface is intentionally a bit different than that of \fBircII\fR, arguably the standard \s-1IRC\s0 client. .IP "\fB\-b\fR \fIdbfile\fR" 4 .IX Item "-b dbfile" .PD 0 .IP "\fB\-\-database\fR=\fIdbfile\fR" 4 .IX Item "--database=dbfile" .PD Use a database of quips, quotes, and other text found in \fIdbfile\fR. This file can be created with the \fB\-m\fR or \fB\-\-dump\-database\fR switches, and modified with a text editor. This is a \s-1YAML\s0 file. .IP "\fB\-f\fR \fIrcfile\fR" 4 .IX Item "-f rcfile" .PD 0 .IP "\fB\-\-rc\-file\fR=\fIrcfile\fR" 4 .IX Item "--rc-file=rcfile" .PD Use the named file for initialization instead of the default \&\f(CW\*(C`~/.nethirc\*(C'\fR. This is also a \s-1YAML\s0 file. .IP "\fB\-h\fR \fIhostname\fR" 4 .IX Item "-h hostname" .PD 0 .IP "\fB\-\-hostname\fR=\fIhostname\fR" 4 .IX Item "--hostname=hostname" .PD Assert a particular hostname to \s-1IRC\s0 servers. They may not always like it. This switch can be used to pick an interface to which to bind on a multi-homed host. .IP "\fB\-i\fR \fIircname\fR" 4 .IX Item "-i ircname" .PD 0 .IP "\fB\-\-ircname\fR=\fIircname\fR" 4 .IX Item "--ircname=ircname" .PD Use the indicated witty comment as your \*(L"real name\*(R" on \s-1IRC\s0. The default may be less than flattering, if you do not set the \f(CW\*(C`IRCNAME\*(C'\fR environment variable. .IP "\fB\-j\fR \fIchannel\fR" 4 .IX Item "-j channel" .PD 0 .IP "\fB\-\-join\fR=\fIchannel\fR" 4 .IX Item "--join=channel" .PD For the first server which you specify, join the indicated channel. You may specify this switch more than once. By default, you join no channels. .IP "\fB\-l\fR \fIlocalport\fR" 4 .IX Item "-l localport" .PD 0 .IP "\fB\-\-local\-port\fR=\fIlocalport\fR" 4 .IX Item "--local-port=localport" .PD Use the indicated port for your client instead of letting the operating system pick one for you. .IP "\fB\-m\fR" 4 .IX Item "-m" .PD 0 .IP "\fB\-\-dump\-database\fR" 4 .IX Item "--dump-database" .PD Dump \fINetHirc\fR's internal database to the standard output. You can feed this back into later invocations with \fB\-b\fR or \fB\-\-database\fR. .IP "\fB\-n\fR \fInick\fR" 4 .IX Item "-n nick" .PD 0 .IP "\fB\-\-nick\fR=\fInick\fR" 4 .IX Item "--nick=nick" .PD Use the indicated nick. If not specified, the environment variable \&\f(CW\*(C`IRCNICK\*(C'\fR will be consulted. If that's empty, you will get your login name, or something worse. .IP "\fB\-p\fR \fIport\fR" 4 .IX Item "-p port" .PD 0 .IP "\fB\-\-port\fR=\fIport\fR" 4 .IX Item "--port=port" .PD Connect to the indicated port on the remote server instead of the default. The default is usually what you want. .IP "\fB\-s\fR \fIserver\fR" 4 .IX Item "-s server" .PD 0 .IP "\fB\-\-server\fR=\fIserver\fR" 4 .IX Item "--server=server" .PD Connect to the named server. If you do not have a startup file (see \fB\-f\fR and \fB\-\-rc\-file\fR), you must specify this switch. .IP "\fB\-u\fR \fIusername\fR" 4 .IX Item "-u username" .PD 0 .IP "\fB\-\-username\fR=\fIusername\fR" 4 .IX Item "--username=username" .PD Use the indicated user name, instead of choosing a default (probably your login name). .IP "\fB\-?\fR" 4 .IX Item "-?" .PD 0 .IP "\fB\-\-help\fR" 4 .IX Item "--help" .PD Ask for help. .Sh "The Initialization File" .IX Subsection "The Initialization File" The initialization file (see the \fB\-f\fR and \fB\-\-rc\-file\fR switches) is a \s-1YAML\s0 file that has at least one top-level section, called \&\f(CW\*(C`nethirc\*(C'\fR. Inside it are several servers to which to connect, and how to do it. A minimal example would be: .PP nethirc: \- Server: irc.example.com .PP There can also be a section called \f(CW\*(C`commands\*(C'\fR, which are executed after the first \s-1IRC\s0 server greets you. They are executed just as if they were typed. For your own safety, please do not put anything that causes network traffic in the \f(CW\*(C`commands\*(C'\fR section. .PP A more complex example of an initialization file: .PP nethirc: \- Server: irc.example.com Nick: Eggplant \- Server: irc.freenode.net Nick: Aubergine Ircname: le plante du egg channels: \- \*(L"#nethirc\*(R" \- \*(L"#perl\*(R" \- Server: irc.example.dal.net Nick: Nasu-chan Hostname: I.know.stupid.DNS.tricks LocalPort: 23456 Port: 12345 Username: notvegan channels: \- \*(L"#lasagna\*(R" commands: \- \*(L"/bigbrother on\*(R" \- \*(L"/count start nethirc.counts\*(R" .PP If it's not obvious what this file attempts to do, keep reading it until it makes sense. :\-) .PP Note that the file is case\-sensitive, and whitespace is important. .PP Switches specified on the command line override things only for the first server specified. .Sh "The Database File" .IX Subsection "The Database File" The database file (see \fB\-b\fR, \fB\-\-database\fR, \fB\-m\fR, and \fB\-\-dump\-database\fR) is also full of \s-1YAML\s0, and is arguably more interesting than the initialization file. .PP If you see an interesting message appear on your screen, look for its counterpart in the database file. Note that a lot of things in here may not make sense to you unless you know the source somewhat. But don't let it stop you from trying. :\-) Perhaps the most interesting portions of the file are the \f(CW\*(C`channel_mode_comments\*(C'\fR, \&\f(CW\*(C`complaints\*(C'\fR, \fBformats\fR, and \f(CW\*(C`self_mode_comments\*(C'\fR. .SH "USAGE" .IX Header "USAGE" Start the client. Have fun. Yell at people. There is a full command set at your disposal. Those used to ircII should have little problem with the default command set. .SH "EXIT STATUS" .IX Header "EXIT STATUS" Does it really matter? .SH "FILES" .IX Header "FILES" \&\f(CW\*(C`$HOME/.nethirc\*(C'\fR .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" The \f(CW\*(C`IRCNAME\*(C'\fR and \f(CW\*(C`IRCNICK\*(C'\fR variables retain their usual meaning. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\s-1RFC1459\s0, \fIperl\fR\|(1), \fInethack\fR\|(6), \fIfortune\fR\|(6), POE::Component::IRC, \&\s-1YAML\s0. .SH "BUGS" .IX Header "BUGS" The command set is not complete yet. .PP The event set is not complete yet. Need to generate more error-type events. .PP This client is not very oper\-friendly. .PP \&\s-1DCC\s0 support is nonexistent. This may actually be a feature. .PP Should provide various files for i18n/l10n, based on locale, \s-1LC_LANG\s0, whatever. The mechanism we use should support this...once we write it. (Probably based on various database files.) .SH "AUTHOR" .IX Header "AUTHOR" Tony Monroe , sometimes known as Eggplant on EFnet. .SH "HISTORY" .IX Header "HISTORY" \&\fBnethirc\fR was written in a fit of experimentation and madness and frustration with a previous creation known as hoserchat. The main idea was, of course, \*(L"Wouldn't a Nethack-like \s-1IRC\s0 client be cool? Or at least amusing?\*(R" And so, several months of on-and-off development time later, I felt that the world won't wince too much at the sight of version 0.01 of this program. So it was released. .PP It went through a few revisions after that, but it suffered because its internal architecture was rather stinky. Starting with version 0.7, its code layout made much more sense, though it lost a good deal of its dynamic-reload capability (which was a gross hack anyway). However, it added some random amusements, to increase the appalling factor. .PP Version 0.9 was a complete rewrite to be even cleaner than version 0.7, gratuitously interface\-incompatible, yet somehow cleaner and more willing to play nicely with multiple servers. And to take advantage of \s-1POE\s0, which is insanely cool. (Yes, both insane and cool.) .PP Version 0.91 takes advantage of new features in \f(CW\*(C`POE::Component::IRC\*(C'\fR 3.0 and later. .PP Version 0.92 uses the \*(L"new way\*(R" to create \f(CW\*(C`POE::Component::IRC\*(C'\fR objects, as presented in version 3.4 and later.