aboutsummaryrefslogtreecommitdiffstats
path: root/README
blob: 0d35f4f0a68d0bd3db2c1a6a080ed247f7f286a3 (plain)
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
kirc

KISS for IRC, an IRC client written in POSIX C99.


BACKGROUND
----------

After having tried multiple IRC clients, I decided to develope my own. The 
result is a portable application that has no dependencies other than a C99 
compiler.


OBJECTIVES
----------

- Per the UNIX philosophy, "Do one thing and do it well" [3].
- True to the KISS principle [4], the code-base is intentionally smaller 
  than most IRC clients (<250 sloc). The benefits of a small code base
  reflects in the ability for kirc to be reviewed, understood and 
  maintained by a single person. Therefore, all feature requests and 
  commits shall be considered with respect to the readability and 
  maintainance of the overall project. 
- Let's not "reinvent the wheel". Commands and functionality should
  feel familiar (e.g. vi command shortcuts) and accessable via a  
  standard 104-key US QWERTY keyboard layout [5].  Where possible, the 
  number of keystrokes shall be minimized per command.


FEATURES
--------

- automatic host PING response.
- vi-like shortcuts:

  <message>                send a message to the current channel
  /m <nick|channel> <message> send a message to a specified nick or channel
  /n <message>                send a message to NickServ
  /j <channel>                join a specified channel
  /p <channel>                leave (part) a specified channel
  /Q <message>                send a message and close the host connection
  /q                          close the host connection

- automatic word wrapping using the greedy algorithm.
- color scheme definition via ANSI 8-bit colors [1]. Therefore, one could
  theoretically achieve uniform color definition across all shell applications
  and tools.


INSTALLATION
------------

Building and installing on KISS Linux using the Community repository [2]:

    kiss b kirc
    kiss i kirc

Building and installing on Arch Linux using the AUR [6]:

    git clone https://aur.archlinux.org/kirc-git.git
    cd kirc
    makepkg -si

Building and installing from source:

    git clone https://github.com/mcpcpc/kirc.git
    cd kirc
    make
    make install


USAGE
-----

usage: kirc [-s hostname] [-p port] [-c channel] [-n nick] [-r real name]
[-u username] [-k password] [-w columns] [-W columns] [-o path] [-v|V]
-s     server address (default: 'irc.freenode.org')
-p     server port (default: '6667')
-c     channel name (default: '#kisslinux')
-n     nickname (required)
-u     server username (optional)
-k     server password (optional)
-r     real name (optional)
-v     version information
-V     verbose output (e.g. raw stream)
-o     output path to log irc stream
-w     maximum width of the printed left column (default: '10')
-W     maximum width of the entire printed stream (default '80')


REFERENCES
----------

[0] https://tools.ietf.org/html/rfc2812
[1] https://en.wikipedia.org/wiki/ANSI_escape_code
[2] https://github.com/kisslinux/community
[3] https://en.wikipedia.org/wiki/Unix_philosophy
[4] https://en.wikipedia.org/wiki/KISS_principle
[5] https://en.wikipedia.org/wiki/Keyboard_layout
[6] https://aur.archlinux.org/packages/kirc-git/