AnotherIRC


A fast, futuristic, cross-platform IRC client built in Go + MiQT (Qt6), styled by my own miqt-theme-engine. macOS-first, with native Liquid Glass vibrancy, system notifications and a Dock menu — plus full ZNC bouncer support, SASL/NickServ, IRCv3, graphical channel-mode & ban management, and a real mIRC-style scripting engine.
Two ways to use it
- Main window — networks/channels/PMs tree, themed chat view, nick list with
~ & @ % +mode-prefix icons, smart input (tab-complete,/commands, history). - Tray quick-reply — left-click the tray icon to toggle a compact frameless window listing recent PMs and active channels for a one-line reply; right-click for the menu (Open Main, Quit).
Features
Connectivity & protocol
- Hand-rolled IRC core: RFC1459 + IRCv3 (CAP, message-tags, server-time, batch, account/away-notify).
- SASL PLAIN / EXTERNAL, with NickServ IDENTIFY fallback; server passwords; auto-join.
- ZNC bouncer integration: detection,
znc.in/*caps, playback/buffer replay, multi-network. - TLS via Go
crypto/tls. Sleep/wake reconnect and stalled-connection recovery on macOS. - Credentials encrypted at rest (AES-256-GCM + PBKDF2).
Chat & navigation
- mIRC color/format rendering, per-nick colors, your-nick highlight + configurable highlight words.
- Clickable
#channellinks in messages (click to join/switch) and inline image thumbnails with a built-in viewer (fetch, zoom/pan, save). - Chat logging to
<config>/logs/…and in-buffer search (⌘F find bar). - Jump-to-buffer fuzzy switcher (⌘K); next/prev buffer (⌃Tab / ⌃⇧Tab); close (⌘W).
- Clicking a channel/PM or a nick focuses the input so you can type immediately; standard text selection + copy in the chat view.
- Colored join/part/quit/kick/mode events; CTCP requests and replies shown; desktop notifications + per-event sounds.
Channel operator tools
- Graphical channel-mode editor built dynamically from the server's
CHANMODES: checkboxes with plain-language descriptions for flag modes, value fields for keys/limits/throttles. - Tabbed list manager for bans (+b), ban exceptions (+e) and invite exceptions (+I) — add / edit / remove.
- Right-click nick (or PM) menu: query, whois, ignore, CTCP, op/voice, kick, ban.
- Ignore list with
nick!user@hostwildcard masks; Events, Colors & Sounds editor.
Scripting
A built-in mIRC-style scripting engine (mSL) — aliases, custom identifiers, remote events, hash tables, timers, file I/O and custom menus. See Scripting below.
Theming & native macOS
- Theme engine with live switching across all built-in themes (Liquid Glass, Cyberpunk, GNOME, KDE, …) in light/dark; controls sized to native macOS norms; optional native window vibrancy.
- Native notifications (UNUserNotificationCenter), Dock menu, and Dock unread badge.
Scripting
AnotherIRC runs scripts from <config>/scripts/*.mrc (macOS:
~/Library/Application Support/AnotherIRC/scripts/). Edit via Tools ▸ Script Editor…
(Save & Reload) or /reload; a commented main.mrc is created on first run. The engine implements
a large, practical subset of mIRC's scripting language:
- Aliases & custom identifiers —
alias x { … }runs as/x; an alias that uses/return <value>is callable as the identifier$x(args). Plus$iif(cond, a, b). - Remote events —
on *:TEXT:!ping:#:{ msg $chan pong $nick }, andJOIN PART QUIT NICK KICK MODE TOPIC OP DEOP VOICE DEVOICE BAN ACTION NOTICE CONNECT DISCONNECT NUMERIC INPUT, with event identifiers ($nick $chan $knick $opnick $vnick $bnick $numeric …). - Identifier/function library — strings (
$pos $replace $remove $count $str $chr $asc $strip), tokens ($gettok $numtok $addtok $deltok $reptok $puttok $sorttok $findtok $istok), math ($calc $int $abs $round $sqrt $min $max $base), time ($duration $asctime $ctime $ticks), and regex ($regex $regml $regsub). - Variables & control flow —
%globals//varlocals,/set /inc /dec /unset,if / elseif / else,while, conditions with== != < > <= >= isin iswm && ||. - Commands —
/msg /me /notice /ctcp /amsg /ame /omsg /onotice /join /mode …, plus named timers (/timer<name> reps interval cmd,/timers off), hash tables (/hadd,$hget), and sandboxed file I/O (/write,$read,$lines). - Custom menus —
menu nicklist|channel { Label:command }(with submenus and separators) adds items to the right-click menus.
Project status
There are currently no public releases yet. The project is intended primarily for testing purposes for now.