82 lines
2.3 KiB
Markdown
82 lines
2.3 KiB
Markdown
# Mirk — Holck's IRC Client
|
||
|
||
A lightweight terminal IRC client written in C with automatic charset conversion and ircII-style window levels.
|
||
|
||
## Features
|
||
|
||
- **Automatic charset conversion** — detects UTF-8, UTF-16 (BOM), and ISO-8859-1 input; always sends ISO-8859-1 on the wire
|
||
- **Window levels** — isolated windows with independent 500-line scrollback:
|
||
- Window 1: Status (server messages, numerics, notices)
|
||
- Window 2: Private messages
|
||
- Windows 3–9: Channels
|
||
- **Status bar** — shows current window, channel, nick prefix (@/+), and channel modes
|
||
- **UTF-8 terminal support** — full multi-byte input editing
|
||
- **CTCP VERSION** reply with OS info
|
||
- **SIGWINCH** handling (terminal resize)
|
||
- **Ident** — works with system identd on port 113
|
||
- **Real name** from passwd GECOS field
|
||
|
||
## Building
|
||
|
||
```
|
||
make
|
||
```
|
||
|
||
Requires only a C compiler and POSIX headers. No external dependencies.
|
||
|
||
## Usage
|
||
|
||
```
|
||
./irc <nick> <server> [port]
|
||
```
|
||
|
||
Port defaults to 6667.
|
||
|
||
## Key Bindings
|
||
|
||
| Key | Action |
|
||
|-----|--------|
|
||
| ESC+1–9 | Switch window |
|
||
| Ctrl-A | Beginning of line |
|
||
| Ctrl-E | End of line |
|
||
| Ctrl-U | Kill to beginning (yank buffer) |
|
||
| Ctrl-K | Kill to end (yank buffer) |
|
||
| Ctrl-Y | Yank (paste) |
|
||
| Ctrl-D | Quit (EOF) |
|
||
| Ctrl-C | Quit prompt (Y/N, default N) |
|
||
|
||
## Commands
|
||
|
||
| Command | Description |
|
||
|---------|-------------|
|
||
| `/join #channel` | Join channel (assigned to current window) |
|
||
| `/part [#channel]` | Part channel (defaults to current) |
|
||
| `/msg <target> <text>` | Send private message |
|
||
| `/nick <newnick>` | Change nickname |
|
||
| `/mode <target> <modes>` | Set mode |
|
||
| `/whois <nick>` | WHOIS query |
|
||
| `/wii <nick>` | Extended WHOIS (queries remote server) |
|
||
| `/quit [reason]` | Quit (default: "See you later") |
|
||
| `/raw <line>` | Send raw IRC command |
|
||
|
||
Typing text without a `/` prefix sends to the channel on the current window.
|
||
|
||
## Window Workflow
|
||
|
||
1. Press ESC+3 to switch to window 3
|
||
2. `/join #channel` — the channel is bound to that window
|
||
3. Press ESC+4, `/join #other` — second channel on window 4
|
||
4. ESC+1 to check status, ESC+2 for private messages
|
||
|
||
Each window maintains its own scrollback. Switching redraws the full history.
|
||
|
||
## CTCP VERSION Reply
|
||
|
||
```
|
||
Holck's Mirk, OS: Linux 6.x.x x86_64 :: This space available for rent
|
||
```
|
||
|
||
## License
|
||
|
||
Public domain.
|