first commit
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user