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, typing indicators, react, read-marker, multiline, and sasl-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 soju and ZNC bouncers, including the soju.im/bouncer-networks IRCv3 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/halloy

Configuration

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:

CapabilityPurpose
sasl-3.1Authenticated logins
chathistoryScroll back through server-side history
message-tagsRich metadata attached to messages
echo-messageConfirms sent messages via the server
typingShows when other users are composing
reactEmoji reactions to messages
read-markerSyncs read position across clients
multilineProper multi-line message support
labeled-responseCorrelates responses to specific commands
server-timeAccurate timestamps from the server
away-notifyReal-time away status updates
account-notifyNotifies when users log in/out of accounts