[HN Gopher] Show HN: Halloy - A GUI Application in Rust for IRC
___________________________________________________________________
Show HN: Halloy - A GUI Application in Rust for IRC
Author : culinary-robot
Score : 140 points
Date : 2023-06-30 14:43 UTC (8 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| egonschiele wrote:
| Wow, that logo is gorgeous. Who is the artist?
| neilalexander wrote:
| It's strange to me though that people release new apps on macOS
| without making the icons conform to the usual shape. Makes
| applications stand out like a sore thumb on the Dock.
| hu3 wrote:
| I'm tempted to say it was AI generated:
| https://i.imgur.com/ZIfbAca.png
| ilrwbwrkhv wrote:
| +1 would love to work with the artist for my company.
| unshavedyak wrote:
| Apparently it's AI. So...
| culinary-robot wrote:
| It's made with the Midjourney niji engine and finished up in
| Photoshop.
| riquito wrote:
| Turned out gorgeous. Do you remember the original prompt?
| culinary-robot wrote:
| Yes, but promise not to laugh: "application icon, a side
| view of a fat seagull". Fat seagull :D
| ComputerGuru wrote:
| It's beautiful but from decades of experience in app
| development, I moved away about 10 years ago from using
| images as icons to insisting that all icons be vector files.
|
| But hiring an Adobe Illustrator expert to professionally
| recreate the icon as a layered SVG wouldn't cost much. Well
| done!
| halkony wrote:
| I misread the title and had a mini-heart attack when I thought I
| was on the front page of HN.
| intelVISA wrote:
| You are now. :)
| throwaway2037 wrote:
| Holy shit this GUI framework looks good. I am a Qt fanboi, but
| this looks great. Normally, I skip all the "X for Rust" posts as
| a bunch of fanaticism. Could it really be different this time???
|
| The feature list is really impressive: https://github.com/iced-
| rs/iced
|
| Plus, here is the road map with many things _already done_ :
| https://github.com/iced-rs/iced/blob/master/ROADMAP.md
|
| Wow, wow, wow: Keep up the great work.
|
| One of the rendering engines is Skia by Google. This library is
| sneaking up fast on us...
| intelVISA wrote:
| As a fellow Qt fanboi I admit this looks damn good, maybe this
| once we'll permit a "rewrite it in Rust" moment?
| nu11ptr wrote:
| It is looking good, but I'm still waiting for a "table" (they
| do have a "grid" now) and "tree" widget to give it a try
| nicoburns wrote:
| There's a more recent iced Roadmap here:
| https://whimsical.com/roadmap-iced-7vhq6R35Lp3TmYH4WeYwLM
| WhyNotHugo wrote:
| iced is a really weird one. It has a lot of widgets and lots of
| really advanced features... but clipboard support is almost
| non-existant (basically you can only copy small strings and
| nothing else). (I also think drag-and-drop is not possible
| either)
|
| I've wanted to work on a few tiny tools in Rust, but so much of
| my workflow relies on proper clipboard support that it's never
| worked out.
|
| Maybe some day I'll have time and energy to work on this, but
| the issue seem to come from underlying libraries providing
| abstractions that just don't allow properly inter-operating
| with the clipboard.
|
| Of course, this isn't a problem for an IRC client, since you
| can't send images or anything like that anyway.
| bpicolo wrote:
| > I also think drag-and-drop is not possible either
|
| This seems to have a form of drag and drop in the demo gif.
| culinary-robot wrote:
| Thanks!
| duped wrote:
| Are they still backed by kraken?
| hencoappel wrote:
| They're also using it for the new Cosmic DE for Pop! OS
| koito17 wrote:
| Overall looks cool, but how does its implementation of IRC
| compare to other clients? How about support for extensions like
| XDCC?
| ComputerGuru wrote:
| From another comment:
|
| > We use https://crates.io/crates/irc under the hood which is
| compliant with RFC 2812, IRCv3.1, IRCv3.2.
| samstave wrote:
| It shows right there on the page that it embeds XKCD - it even
| has the IRC comic embedded!
| csomar wrote:
| I see you didn't publish it to crates.io because of patched
| dependencies. I registered the "halloy" name so no one else
| abuses it. Contact me to transfer it to you.
| culinary-robot wrote:
| Thank you! I'll reach out.
| creesch wrote:
| Upvoted based on the XKCD alone, I used the same argument a few
| years ago for this spaghetti mess:
| https://github.com/creesch/discordIRCd
|
| How feature complete is this client? As in what IRC versions (and
| dialects) are supported?
| TingPing wrote:
| Looks basic, only ircv3 capability is server-time.
| culinary-robot wrote:
| We use https://crates.io/crates/irc under the hood which is
| compliant with RFC 2812, IRCv3.1, IRCv3.2.
|
| And thanks for noticing the XKCD!
| distcs wrote:
| What are you using for the GUI toolkit? The GUI looks awesome.
| tekknolagi wrote:
| Looks like https://github.com/iced-rs/iced
| distcs wrote:
| The cross-platform support and screenshots look impressive.
| Anyone knows how it does that? Does it have runtime
| dependencies to render those GUIs across OSes? Or is it all
| baked into the Rust source code?
| codetrotter wrote:
| Judging from the Cargo.toml
|
| https://github.com/squidowl/halloy/blob/main/Cargo.toml
|
| It seems to use iced gui toolkit
|
| https://github.com/iced-rs/iced
| heyarviind2 wrote:
| This looks interesting. I wonder if i can redesign it like GTalk
| and bring back the old memories :')
| AiAi wrote:
| Looks nice from the GIF. I wish more chat apps had a tiled UI,
| like mIRC. I use IRC via Matrix/Element, and this is something I
| miss a lot.
| neilalexander wrote:
| This really is quite beautiful and feels great. It would be super
| nice if it was possible to control the pane behaviour when
| selecting channels but it is so refreshing for an application to
| feel this fast and not be Electron-based.
| SkyMarshal wrote:
| Wow that is beautiful. Iced is really pushing the limits of what
| terminals can do. Nice job.
| zokier wrote:
| Terminals?
| voytec wrote:
| For terminals, look at notcurses[1]
|
| [1] https://www.youtube.com/watch?v=dcjkezf1ARY
| wpwpwpw wrote:
| Beautiful interface. Nonetheless would be nice to have a linux
| screenshot on main page.
| jeltz wrote:
| Yeah, I wish there was a Matrix client which was equally
| beautiful.
| dethos wrote:
| It would be nice to have something similar for matrix. I stopped
| using IRC directly a while ago, and now I rely on matrix to join
| the channels.
|
| However, to be sincere, I'm not a huge fan of element and this
| client look great indeed.
| smodo wrote:
| Man, I wish I still knew people on IRC... Whenever I see a link
| to Discord I let out a deep sigh. We had it all and we blew it!
| We threw it all away for gifs and centralization!
|
| So here's a question: if I download this, what's a good place to
| hang out?
|
| PS I've never used this Ui toolkit (being an egui man myself) but
| that panel snapping looks amazing!
| distcs wrote:
| > Man, I wish I still knew people on IRC
|
| IRC is still alive. I still know people on IRC. Most opensource
| channels have thriving communities on IRC with 100s of regulars
| logged into the channels everyday. The people I knew in the IRC
| world in 2010 are still very much there in 2023. The only big
| change has been that all of us moved away from Freenode over to
| Libera after the Freenode takeover. And everyone has become
| older and more mellow and more friendly to beginners.
|
| If you've been away from IRC recently, I urge you to get back
| to Libera chat network and see for yourself. The IRC world is
| much better now than it was before.
| sho_hn wrote:
| There's a fair amount of enthusiastic or expert communities
| that remain the most vibrant in their IRC edition.
|
| I recently looked for an active chat for hobbyist/DIY EE
| stuff, and I joined around half a dozen Discords and they
| were all nearly completely deserted. Part of it is that each
| individual Discord aims to be a complete lifestyle, replate
| with completely redundant #general rooms and what not - it's
| too hard to sustain that kind of thing.
|
| ##electronics on Libera, meanwhile, is alive and kicking
| every time of the day.
|
| I've made similar experiences with non-tech topics like e.g.
| cycling.
| 542458 wrote:
| > We threw it all away for gifs and centralization!
|
| Simpler configuration, easy voice chat and screen share,
| simpler administration, user accounts and profile pictures by
| default, visually appealing and more noob-friendly client,
| persistent chat history, media embeds, file uploads, rich
| presence, etc...
| floren wrote:
| IRCv3 ticks a lot of boxes server-side; you get chat history,
| user accounts (you can even log with the same nick from
| multiple clients), replies, and a bunch of other stuff.
|
| Some clients show link/image previews. I think the #1 thing
| that would make them better would be configuration options to
| drag&drop/paste images and other files, and have those
| automatically uploaded to a user-configured service with a
| link dropped into the channel. Hassle to implement, though.
| welterde wrote:
| Polari [1] seems to support automatically uploading images
| and text to some imagebin/pastebin and then posting the
| link to the channel. The Lounge [2] also supports it (with
| the files self-hosted in thelounge instance).
|
| [1] https://wiki.gnome.org/Apps/Polari [2]
| https://thelounge.chat/
| [deleted]
| ok123456 wrote:
| > Simpler configuration
|
| Never had an IRC server want to verify me through SMS or
| FORCE me to update my client.
|
| > simpler administration
|
| IRC is just a ban list, an except list and an invite list.
|
| > user accounts and profile pictures by default
|
| Don't want it.
|
| > persistent chat history
|
| Liability.
| Filligree wrote:
| > Never had an IRC server want to verify me through SMS or
| FORCE me to update my client.
|
| Which destroyed several channels through spam. The
| authentication is a _feature_.
| ok123456 wrote:
| You can do authentication without something that's
| tantamount to someone's government ID. I love when
| companies make me give them my phone number, and then
| they get hacked.
| saulrh wrote:
| > IRC is just a ban list, an except list and an invite
| list.
|
| Now use that to implement RBAC for a server with a hundred
| channels.
|
| Go ahead, I'll wait.
|
| Less pithily, IRC's built-in permissions may be simple, but
| they're so simple primarily because they're basically
| useless for real moderation tasks. Every IRC channel I've
| ever seen handles moderation with a mod-bot, and "set up a
| bot" _instantly_ blows the complexity budget.
| ok123456 wrote:
| > Now use that to implement RBAC for a server with a
| hundred channels.
|
| Don't want it.
| doublerabbit wrote:
| > user accounts and profile pictures by default: Don't want
| it.
|
| You may not, but many others do, like myself.
|
| Lets be frank, IRC is boring without content. There is no
| easy way to share any imagery, videos. Any form of
| simplification of media hosting is a tragic mess.
|
| > Never had an IRC server want to verify me through SMS or
| FORCE me to update my client.
|
| NickServ.
|
| "If you don't register your nick in 1 minute you be renamed
| to "anonymous".
|
| I've been on networks where mIRC has been banned which is
| my client of choice.
| progval wrote:
| > NickServ. "If you don't register your nick in 1 minute
| you be renamed to "anonymous".
|
| Are you sure it was prompting you to register rather than
| to authenticate? It sounds like you were using a nick
| someone else registered, but you can usually use
| unregistered nicks freely.
| doublerabbit wrote:
| Some Channels enforce the flag for registered users.
|
| I've visited networks where you have forced you to
| register nicks. You have the option to leave, but same
| principle.
| tredre3 wrote:
| Some channels do indeed enforce registered users. But the
| message you quoted is 100% because you were using
| someone's nickname and they enabled nick protection.
| doublerabbit wrote:
| No. My nick was an unregistered nick. I know IRC -.-
| don't tell me otherwise.
|
| "To use this server you _MUST_ register with IRC
| services. "
|
| The server had mandatory nickserv registration.
| ok123456 wrote:
| > no easy way to share any imagery.
|
| You share it the same way you share it on r*ddit. Upload
| it to imgur, imbb or whatever.
|
| > NickServ. "If you don't register your nick in 1 minute
| you be renamed to "anonymous".
|
| It's telling you exactly what you need to do. If you
| don't like having services, don't use a server that has
| services.
|
| > "You can't use BitchX on this network" I've been on
| networks where mIRC has been banned.
|
| You're free to make your client respond however you like.
|
| > IRC is boring
|
| IRC is just a tool. If IRC is boring, it's a reflection
| of you and your friends.
| doublerabbit wrote:
| > You share it the same way you share it on r*ddit.
| Upload it to imgur, imbb or whatever.
|
| I can drag and drop with Discord, Slack and Teams. And
| look its there!
|
| No one wants to click links. I updated my post, but to
| send any type of media is a tragic-mess for IRC.
| Including if its hosted on my own domain as my own nick!
|
| > It's telling you exactly what you need to do. If you
| don't like having services, don't use a server that has
| services.
|
| Right, sure.
|
| > You can't use BitchX on this network" I've been on
| networks where mIRC has been banned. You're free to make
| your client respond how
|
| And to a user who wants to join and connect, I don't have
| time to do that anymore. That it self is tech-savy stuff.
| Not so easy for the average user. It's not common, but
| networks have implemented.
|
| > IRC is just a tool. If IRC is boring, it's a reflection
| of you and your friends.
|
| IRC is a protocol, the client is the tool to connecting
| to the network. IRC as a whole provides the services to
| communicate and if no one is communicating as like "your
| not 1337 because your not using a znc bouncer with irssi"
|
| Or those folk who already know each other in channel and
| don't want to reach out to new folk even introduce
| newbies to the channel.. you don't have a voice.
|
| Or just a channel with a topic that's not been changed
| since 2017.
|
| I -really- dislike Discord, it sucks. However at least
| it's easy and tacky enough to allow you to introduce
| yourself rather than black text on a white background. It
| allows you to enjoy media, show off stuff.
|
| And up until recently could use any nick even if had been
| taken.
|
| If you want to host your own channel on IRC you need to
| understand cryptic flags, Host a bot. Know how to operate
| chanserv.
|
| YIM, MSN Messenger and all those services had it right,
| games, media and voice.
| smolder wrote:
| > No one wants to click links.
|
| I actually prefer that my chat client doesn't auto follow
| links, so I have a choice of whether to look at them, and
| so they don't interrupt conversations by taking up huge
| space in the chat.
| ComputerGuru wrote:
| All the open source Discord rooms I'm in, absolutely no one
| uses the voice chat and I didn't even know there was a screen
| sharing option. The ratio of users to admins is probably
| 10,000:1 so ease of admin isn't really an issue (see also
| reddit where mod tools suck). There are plenty of visually
| appealing clients (e.g. this one!).
|
| I personally think persistent message history (XMPP botched
| that rollout terribly) - which goes hand-in-hand with
| multipresence - and the extreme dearth of any - let alone
| actually good and usable - IRC (or XMPP) mobile clients (esp.
| on iOS) was the real reason they lost mainstream use.
|
| Multipresence is more than just a checkbox; doing it
| correctly involves actually setting up a SSO system with
| actual first-party user account support (not just relegating
| it as a stateful detail of the underlying IRC library you are
| using). IMHO actual account integration would have bound
| users more loyally to IRC and would have created more of a
| "network effect".
|
| Inline attachments, emoji reactions, etc are all just icing
| on the cake.
| jeltz wrote:
| Not sure why you are downvoted because you I feel you are
| pretty much correct for many non-gamers. I do not use voice
| chat and it is not what made me start using Discord. But I
| still see why voice chat is very useful to many gamers.
| Different groups missed different features from IRC.
|
| Message history on the other hand is a huge Discord feature
| for me as is inline attachments (e.g. being able to post
| code snippets without having to use s pastebin).
| ComputerGuru wrote:
| I'm not sure either, but it's HN :)
|
| Native attachments support was _personally_ a big thing
| for me (inline images or gifs.. not so much) but what I
| meant to say is that I think the ecosystem could have
| survived without it if that were the only issue - just
| look at how long Reddit went without any sort of image or
| video upload support. Ultimately and "at some point,"
| attachment support would have "just happened" naturally.
| I just really think multi-presence w/ history and the
| lack of a good web or mobile client was the bigger deal.
| Unlike attachments which you can just staple on to the UI
| and squint at it the right way, these were actual,
| fundamental issues that required a rearchitecture (or
| even rewrite) of existing servers _and_ clients, and
| despite how obvious their importance was (at least to
| some of us) the mainstream client /server options didn't
| really relish the idea or jump on board.
|
| I still vividly remember being locked out of a hacker
| space maybe seven years ago and needing to figure out how
| to get on the irc from my iPhone. I scoured the app store
| looking for a good (free) client for this one-time need I
| had and found nothing. I searched online and found a
| really shady, insecure, and ad-infested website that
| would open an IRC connection in the backend and then
| stream the text to your browser in an interface intended
| for desktop use. The interface was neigh impossible to
| use on a phone, all the UI bits were overlaid atop of one
| another, text wrapping was broken, etc.
|
| I was able to use this to post on the IRC channel and get
| someone to let me in, but every time I changed tabs or my
| phone timed out and turned off, the connection would be
| severed and I would have to start again.. and ask "sorry
| did anyone reply to my earlier message, I am logging in
| from a web frontend and was forced to refresh, I might
| have missed your reply if you did."
| MisterTea wrote:
| Discord is far from simple. Simple is a text based protocol I
| can interact with through a telnet session.
|
| A few channels have Matrix-IRC bridges attached so that is an
| option for servers who want to enable multiple interfaces for
| those who prefer not to interact with discord.
| Halfwhit wrote:
| I completely agree with your definition of simple, but to
| less technically minded people Discord is simpler in that
| it's a "batteries included" experience
| culinary-robot wrote:
| Iced is awesome. Slightly biased being a contributed though :)
| I would recommend https://libera.chat/. There are a ton of
| great channels: ##rust, #linux, #networking, #security to
| mention a few.
| TkTech wrote:
| There are many, many IRC networks that are still very active
| with tens of thousands of active users. Libera.chat is probably
| the best one I can suggest at the moment for a wide selection
| of topics. Politics, news, every tech group and subject under
| the sun, etc...
|
| I've run https://n.tkte.ch/ for the last decade and it's bots
| are currently connected to over 200 unique, active IRC servers.
| Still very much alive!
| tcmart14 wrote:
| No kidding. I miss IRC. I still use it, but yea, its mostly
| silence. About the only time I've seen interaction is on
| something like #fedora or #freebsd where people just ask
| support type questions.
| [deleted]
| Groxx wrote:
| And chat history. Chat history is huge. And so is integrated
| search.
|
| Yeah, you can run a bouncer... but then it depends on that
| bouncer working, and wtf is a bouncer, why is it necessary, and
| how do you explain that to normal people? And splits?
|
| IRC is a ridiculous experience comparatively. Its big benefit
| is that it's super cheap to run.
| jacobsenscott wrote:
| I hate chat history. That's corporate mentality invading your
| non-work brain. IRC should feel like walking into a bar full
| of nerds, and you just join the conversation wherever it is.
| Even at work, if I'm out for a few days I definitely don't
| "catch up on slack" - that's not what chat is for. Long lived
| conversations belong somewhere else - email, or PR, or (god
| forbid) jira.
| gochi wrote:
| I don't see how chat history prevents that feeling. There's
| no requirement to read through history every time.
| jacobsenscott wrote:
| I mean the lack of history on IRC is a feature, not a
| bug.
| bluejekyll wrote:
| The simple story here is hosting. Self-hosted IRC while not
| hard to maintain are not easily discoverable, and ad-hoc
| communities.
| mrits wrote:
| The feeling I got of IRC in the mid 90s is that it was more
| centralized than it appeared. Most of the server operators hung
| out in the same channels.
| iforgotpassword wrote:
| #xkcd on slashnet? ;-)
| MisterTea wrote:
| I'm idling on OFTC, Libera and two private servers.
| metadaemon wrote:
| As a suggestion, you might want to modify the default config, I
| see a lot of people logging into #rust as the `halloy` user.
| ComputerGuru wrote:
| Maybe/at least append an rng value to the end?
| metadaemon wrote:
| Well not sure how possible that is with the current YAML
| implementation of config.
| ComputerGuru wrote:
| The app can write (or modify) the yaml template file on
| first run. That's how I discovered the configuration file
| in the first place, with the app prompting me to open the
| directory and copy config.yaml.template to config.yaml and
| customize.
| qwertox wrote:
| Which made me look how mIRC is doing:
|
| "mIRC 7.73 has been released! (June 18th 2023)" and runs on
| Windows XP/Vista/7/8/10/11.
| oh_sigh wrote:
| I wonder how much money Khaled has made over the years from
| mirc
| mrits wrote:
| At age 10 I hopped on every BBS I could that wasn't long
| distance. Then I did a few free trials of AOL.
|
| At age 12 I got unlimited internet for $20/month where I spent
| all my free time on mIRC. I learned to code making mIRC bots,
| then I found eggdrop bots.. Then I had to learn Linux to run
| them. Before I knew it I was a teenager with better coding
| knowledge than most of the professionals I knew.
| unshavedyak wrote:
| > I learned to code making mIRC bots
|
| Hah, same. I went really far with mIRC scripting, much pain
| was had. Hard lessons that built a career i imagine.
| Capricorn2481 wrote:
| How was working in Iced? It looks like you did a lot of the work
| just this month
| culinary-robot wrote:
| This is Iced, not Tauri. Yeah, it's been a productive month.
| Once you get hooked it's hard to stop.
| jakswa wrote:
| Looks slick for how quickly it was built. I was surprised by the
| download size and RAM footprint, but... if it was easy to do
| cross-platform, I'm thinking this is still ahead of electron on
| footprint? Or at least competitive. Interesting!
| tarkah wrote:
| A lot of the ram usage is actually coming from the wgpu
| backend. You can use ICED_BACKEND=tiny-skia to try software
| rendering and the footprint should be a lot smaller.
|
| The footprint should be very consistent throughout the
| lifecycle of the app. Message history is pretty small and we
| only keep opened buffers in memory. Everything else is flushed
| to disk.
|
| Now compared to Electron, there is no comparison for speed and
| responsiveness
| MisterTea wrote:
| The UI seems to work like the plan 9 Acme text editor (itself
| based on Oberon). in fact, you can use Acme as an IRC client or
| mail client.
| JimmyRuska wrote:
| Imagine, someone makes an IRC client that looks like a discord
| clone, adds some centralized proprietary emoji/background/mini-
| game features that touches their own servers, and we go full
| circle back to IRC once discord IPOs.
| TeddyDD wrote:
| There are proposals for ircv3 that aim to add support for
| custom emoji, reactions, message editing etc. Soju + Gamja +
| Goguma is pretty usable combo even today.
___________________________________________________________________
(page generated 2023-06-30 23:02 UTC)