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: send a message to the current channel /m send a message to a specified nick or channel /n send a message to NickServ /j join a specified channel /p leave (part) a specified channel /Q 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/