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
This commit is contained in:
2026-04-29 12:03:57 +02:00
parent e2a5ddf9a0
commit 71f6699aa9
3 changed files with 39 additions and 20 deletions
+5 -6
View File
@@ -6,9 +6,8 @@ A lightweight terminal IRC client written in C with automatic charset conversion
- **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 39: Channels
- 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
@@ -63,10 +62,10 @@ Typing text without a `/` prefix sends to the channel on the current window.
## Window Workflow
1. Press ESC+3 to switch to window 3
1. Press ESC+2 to switch to window 2
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
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.