Files
holckmirk/README.md
T
anders 71f6699aa9 Add window levels, status bar, UTF-8 input, charset conversion
- Isolated window levels with 500-line scrollback per window
  - Window 1: status + private messages
  - Windows 2-9: channels
- Status bar showing window, channel, nick prefix, channel modes
- Automatic charset conversion (UTF-8/UTF-16 -> ISO-8859-1 on wire)
- UTF-8 aware input editing with Ctrl-A/E/U/K/Y
- CTCP VERSION reply with real OS info from uname()
- Real name from passwd GECOS field
- SIGWINCH handling for terminal resize
- Ctrl-C quit confirmation (y + Enter)
- /whois, /wii, /mode, /quit with default reason
- Green prompt, timestamps on all messages
2026-04-29 12:03:57 +02:00

81 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 and private messages
- Windows 29: 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+19 | 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+2 to switch to window 2
2. `/join #channel` — the channel is bound to that window
3. Press ESC+3, `/join #other` — second channel on window 3
4. ESC+1 to check status and 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.