Halloy
An open-source IRC client written in Rust with the Iced GUI library, focused on being simple and fast across Linux, macOS, and Windows.
Halloy is a native desktop IRC client written entirely in Rust using the
Iced GUI library. It targets Linux, macOS,
and Windows from a single codebase, and is configured entirely through a
config.toml file. The focus is on being fast, lightweight, and correct —
Halloy maintains one of the most complete IRCv3 capability sets of any
open-source client.
Features
- IRCv3 support — implements a comprehensive set of modern IRC extensions
including
chathistory,message-tags,labeled-response,echo-message,typingindicators,react,read-marker,multiline, andsasl-3.1. - Multiple servers — connect to any number of IRC networks simultaneously, each in its own section of the TOML config.
- Pane layout — split the window into multiple panes to view several channels and queries side by side.
- Bouncer support — first-class support for
sojuand ZNC bouncers, including thesoju.im/bouncer-networksIRCv3 extension for automatic network discovery. - Themes — fully themeable via TOML colour definitions; a community theme gallery is available at themes.halloy.chat.
- Highlights and notifications — configurable highlight patterns with desktop notifications and optional sounds.
- File transfer — DCC file transfer support.
- Proxy support — connect through SOCKS5 or HTTP proxies.
- Link previews — inline previews for URLs shared in channels.
- Keyboard shortcuts — fully configurable keybindings for navigation and actions.
- Logs — automatic per-channel log files written to disk.
- Calendar versioning — releases are named by year and release number (e.g.
2026.5), making the release cadence immediately apparent.
Installation
# Flatpak (recommended — works on Debian, Fedora, Arch, and all others)
flatpak install flathub org.squidowl.halloy
If Flatpak is not yet configured, add Flathub first:
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo# Snap
snap install halloy
# Debian / Ubuntu
# Download the .deb from the releases page:
# https://github.com/squidowl/halloy/releases
# Fedora
# Download the .rpm from the releases page.
# macOS
# Download the .dmg from the releases page.
# Arch Linux (AUR)
yay -S halloy-bin
# Nix
nix-env -iA nixpkgs.halloy
Halloy can also be built from source with a stable Rust toolchain:
git clone https://github.com/squidowl/halloy.git
cd halloy
cargo build --release
# Binary is at target/release/halloyConfiguration
Halloy is configured through ~/.config/halloy/config.toml on Linux,
~/Library/Application Support/halloy/config.toml on macOS, and
%APPDATA%\halloy\config.toml on Windows.
Connecting to a server
[servers.libera]
server = "irc.libera.chat"
port = 6697
use_tls = true
nickname = "yournick"
channels = ["#halloy", "#rust"]SASL authentication
[servers.libera]
server = "irc.libera.chat"
port = 6697
use_tls = true
nickname = "yournick"
channels = ["#rust"]
[servers.libera.sasl.plain]
username = "yournick"
password = "yourpassword"
Passwords can also be read from a file to avoid storing them in the config:
[servers.libera.sasl.plain]
username = "yournick"
password_file = "/home/user/.config/halloy/libera_password"Connecting to a soju bouncer
[servers.soju]
server = "bouncer.example.com"
port = 6697
use_tls = true
nickname = "yournick"
password = "yourbouncerpassword"
[servers.soju.sasl.plain]
username = "yournick"
password = "yourbouncerpassword"
Halloy's soju.im/bouncer-networks support means connected IRC networks are
discovered automatically — no need to list them individually.
Pane layout
[[pane]]
server = "libera"
channel = "#rust"
[[pane]]
server = "libera"
channel = "#halloy"Themes
[theme]
name = "nord" # loads ~/.config/halloy/themes/nord.toml
Custom themes are defined as TOML files with hex colour values for each interface element. See the custom themes guide for the full schema.
IRCv3 capabilities
Halloy supports a comprehensive set of IRCv3 extensions out of the box:
| Capability | Purpose |
|---|---|
sasl-3.1 | Authenticated logins |
chathistory | Scroll back through server-side history |
message-tags | Rich metadata attached to messages |
echo-message | Confirms sent messages via the server |
typing | Shows when other users are composing |
react | Emoji reactions to messages |
read-marker | Syncs read position across clients |
multiline | Proper multi-line message support |
labeled-response | Correlates responses to specific commands |
server-time | Accurate timestamps from the server |
away-notify | Real-time away status updates |
account-notify | Notifies when users log in/out of accounts |