murmur.priet.us — A native, opinionated IRC client. Built in Rust with iced.
Murmur is a quiet client. Joins, parts, and noise fade into the background; conversation gets the foreground. Subtle by default, with /dimm for focus mode, inline media previews, tab-complete, command palette (⌘K), built-in emoji picker, per-channel logs, and SASL PLAIN / EXTERNAL (CertFP).
Alpha. Tested on macOS. Linux/Windows builds produced by CI but not heavily tested yet.
Murmur attempts to establish the following IRCv3 capabilities with the server while connecting:
Identity & presence
account-tag— every message carries the sender's services accountextended-join— JOIN lines show services account when presentaccount-notify— see when other users log in/out of NickServaway-notify— away users render dimmed in the member listchghost— host/ident changes shown in place, no fake quit/joinecho-message— your own messages get a server-assignedmsgidfor editing/reactingsetname— change your realname mid-session with/setname <new realname>
Member list enrichment
multi-prefix— every channel prefix shown (@+nick, not just the highest)userhost-in-names—ident@hostcaptured from NAMES for tooltips/whois
Protocol plumbing
message-tags+server-time+batch— IRCv3 message metadata + tagged batchesinvite-notify— channel ops see who's being invitedcap-notify— react toCAP NEW/CAP DELmid-session (bouncer network attach/detach)labeled-response— response correlation for parallel commandssts— Strict Transport Security, persists per host; forces TLS+port on next connect
Authentication
- SASL
PLAIN(password) - SASL
EXTERNAL(CertFP — auto-selected whenclient_cert_pathis set) draft/sasl-ir— initial response on the firstAUTHENTICATEline, skips the+challenge roundtrip
History & catch-up
draft/chathistory— server-side scrollback on channel attach (LATEST)draft/chathistoryTARGETSsubcommand —/historyshows active conversationsdraft/event-playback— soju/bouncer replays joins/parts/nicks alongside PRIVMSGs in chathistory- IRCv3 standard replies (
FAIL/WARN/NOTE) — rendered uniformly in the status buffer RPL_ISUPPORT(005) parser — usesMODES=for op-bulk chunking,CHANTYPES=for/joinvalidation
Modern drafts
draft/typing— "X is typing…" indicator below the input; sends+typing=activewhile you typedraft/multiline— receives BATCH multiline as a single message with line breaksdraft/read-marker— sendsMARKREADwhen you focus a channeldraft/message-redaction—/deleteremoves your last message (or/delete <msgid>); incoming REDACTs render as tombstones+draft/react—/react <emoji>reacts to the latest message; reactions render as grouped badges
Server support varies — Ergo and Soju cover the most ground; Libera supports identity/presence/history but not the editing/redaction drafts.
cargo build --releaseOn Linux you'll need a few system packages. E.g., on Debian (and derivatives):
sudo apt-get install -y libxkbcommon-dev libwayland-dev libxkbcommon-x11-dev pkg-configThe first run writes a commented config template to:
- macOS:
~/Library/Application Support/murmur/config.toml - Linux:
~/.config/murmur/config.toml - Windows:
%APPDATA%\murmur\config.toml
Edit nickname and server, restart, and you're in!
See the Releases page.
MIT — see LICENSE.