Show HN: Halloy – Modern IRC client (github.com)

381 points by culinary-robot ↗ HN
I started working on Halloy back in 2022, with the goal of giving something back to the community I’ve been a part of for the past two decades. I wanted to create a modern, multi-platform IRC client written in Rust.

Three years later, I’ve made new friends who have become core contributors, and there are now over 200 people idling in our #halloy channel on Libera.

My hope is that this client will outlive me and that IRC will live on.

44 comments

[ 1.6 ms ] story [ 59.1 ms ] thread
I use Halloy on a daily basis and could not be happier. It is super smooth in use and highly configurable using the config file. Halloy is also a great show case for the iced GUI framework and Rust for desktop apps.
I switched to it some months ago and couldn't be happier. Was a die hard irssi user before but there are some parts of halloy that are just really convenient. Maybe I am getting older.
I've tried to use this, but I'm on multiple servers with tons of channels, and it gets a bit unwieldy without tabs. I also can't get it to minimize to tray, and having to "keep it open" at all times is somewhat annoying. I'll stick with Quassel for now.

Really impressive work though, you should be proud!

Can it show channel modes next to the #channel_name and my nick+user mode next to the input field? Two things I find very useful in weechat and couldn't work out how to do in Halloy last time I tried it out.

Thanks for making a client.

Reminds me I haven't logged in to IRC in.. maybe 2-3 years now. It just kind of fizzled out as the main groups of people I interact with moved to Discord. But I kind of miss IRC.
It's my go-to client. Kudos and thanks for developing it!
Not sure if this question will get removed but a tangent nonetheless - I’d like to use this but I don’t know what to do with it since the advent of Discord. What do people do with IRC now and where do you find content?

I remember being a high school student and having an amazing physics conversation on IRC that included a description of Flatworld that really fascinated me.

I haven't used IRC in years, but my teenage of ~12 years ago would've been stoked by this, it's the nicest client I've seen as of yet. Cheers!
Used to use Hexchat and swapped to halloy more than a year ago and couldn't be happier. The development is coming along nicely and a lot of modern features got added since I've been using it. It's a joy to use in conjunction with soju and my irc experience hasn't been this smooth in a long time.
Actually surprised I never stumbled on this while I was looking for an IRC client. I ended up on on The Lounge for a while and that's always been pretty good.

Will give this a go because I would always prefer a native client in the first place and this looks excellent!

I'm amazed people still use IRC! More power to you. I used to use it a fair bit back in the day bit the last programming community that I was a part of that used IRC moved to Discord around 2020 which is when I basically stopped using it.
I use it, it's really good and getting better every release.

It's fast and robust. The toml config is also straight forward.

Highly recommended!

PS: I preferred the old (bird) icon

I've started to notice there are a lot more rust based desktop application appearing vs say Go based or Java. Most of these apps are cross platforms. My guess is they are trying to compete with Electron. There is Tauri runs on Rust.

Can someone please tell me what special about Rust? Say, why aren't desktop application popular based on say Python?

On tangent, ive seen a lot of terminal base application in typescript and go

I can't speak to rust but I think the reason you see CLI tools and Servers written in GO is simply because that is where the language really shines. I don't think it would be very much fun to develop a desktop GUI app in GO.

Go is kind of verbose and just a bit hostile towards fancy structural features and complex abstractions. I think rust is kind of the opposite of GO in a lot of ways, even though they theoretically should be targeting a lot of the same use-cases.

Go and Java are actively hostile to integrating with C libraries, and the easiest way to make clean native UI on all 3 major OSs is to link with C libraries.

There's also something akin to the Python Paradox here: https://www.paulgraham.com/pypar.html

Rust is an interesting and intellectually stimulating language, it lets you use your brain to write clean and pretty code, and rewards you for making clean powerful abstractions.

Java and Go are both anti-intellectual languages that reward you for turning off your brain and writing the most verbose awful code you can think of, and will leave anyone who has ever studied type-theory with a massive migraine for hours after each coding session (go moreso than java).

I think those two factors, C bindings, and whether they respect the programmer's intelligence, are the main reason.

With Python I find that distribution is too much of a pain (I don’t mind creating a virtual env for a cli tool but for a GUI forget it). I love that go links everything statically and so far I haven’t had any problems running rust tools.
I can tell you that writing Java GUI applications is hell. You have the following libraries:

AWT - still actually under-pining the others, but very ugly to work with

Swing - basically runs on top of AWT, with the same design model, plays badly with it. Is hard to write in a testable way, is prone to embedding business logic in UI components

JavaFX - all the worst parts of business Java with all the worst parts of XML and also the worst parts of a game engine. Now you need to care about 'adding a scene to a stage'.

The principle core technology that made Java good was applets. Since they were killed by mobile, the reason for delivering a Java app is functionally zero. You will need to ship a JVM which you need to update alongside your app.

Java is a great back-end development language and a really poor GUI language.

These days you should either ship an Electron app or native code.

I love Halloy and it inspired me to make more software in iced_rs, which is a fantastic simple to use UI framework. [0]

The project is even often cited as a good iced_rs code reference repo.

What I like about iced_rs over Qt is that you can write all your code in a single language in whichever style you like. As opposed to Qt which requires you learn an obtuse scripting language (qml) ontop of Cpp and locks performance improvements behind commercial license.

[0] https://iced.rs/

Wow, that's really cool! I just adopted it :)
i've been very happy with the combination of senpai on my laptop, goguna on Android, and soju on a cloud instance for persistence. i will try this as an alternative laptop frontend.
halloy is not only an awesome app but a fantastic example if you want to learn more about building GUI software with iced.

https://github.com/iced-rs/iced

If you're interested in building a GUI app in Rust, I encourage you to go through the examples and showcase apps like halloy

and if you get stuck, can ask our chill and helpful community on Discord https://discord.gg/3xZJ65GAhd

Nice! I'll give it whirl. For those with terrible eyesight, do you offer accessibility options?

EFNet for life!

I'm sure Timo thought the same about irssi.
Wow, I used this when you first posted a public link to it and I see it’s come a long way since; I should definitely check it out again! Congrats on the success thus far!
Excellent. I never liked mIRC, and for me the terminal was the best interface. But this looks good. I also still use vi. Never made the mental leap to vim. Old habits die hard.
Looks really great. But I am gonna stick to weechat :)
I can't at the top of my head remember all the minor annoyances I ran into when I tried Halloy, but things like not being able to paste a large message because "it exceeds the single message limit" was a real dealbreaker.

I ended up going for Crossover and mIRC

Please file bug reports or feature requests when you find them, if they haven't been filed already. Don't just leave silently. And not just for halloy, but for all FOSS projects in general. The developers/maintainers can choose what to do with them - but they'll at least be aware of the pain points. That too is a contribution to the projects that we use for free.

PS: This assumes that you haven't done so. But even if you did, please leave it as a request to everyone else.

I'd love to test this, however it seems to not be accessible with screen readers. I assume this is because of the GUI library not supporting accessibility. I found an open issue about this on the Iced GitHub where in 2024 it was mentioned that the version after next should support it, and the last comment was in february of this year (https://github.com/iced-rs/iced/issues/552)

I bookmarked this so hopefully once that effort gets further along I can give it a try!

I figured I'd leave this comment so that some folks can see that there are real people even on HN who require these features and that accessibility work is always appreciated. We definitely exist :)