Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Dispatch: web-based IRC client in Go (github.com/khlieng)
119 points by buovjaga on June 17, 2018 | hide | past | favorite | 40 comments


I've been using a similar client called thelounge for the past year and I really love it.

https://github.com/thelounge/thelounge

It's a node based IRC client you can install on a server and then connect to with a web browser.

It essentially turns IRC into slack/irc cloud, it has inline images/video, URL prefetching, push notifications, themes and custom css, mobile support, and allows you to idle indefinitely persisting your connection to your favorite channels across numerous devices. You can even hook it into active directory if you wanted.


Yeah. This tool has essentially solved chat for me. In combination with bitlbee (a generic IRC-to-lots-of-protocols gateway), I've unified my chat needs onto one interface.

And the bit you fail to mention is that the client naturally adapts and works great on a phone. So the same chat logs and interface and channels go with me in my pocket.


I see bitlbee supports slack with libpurple. Have you been using that? How does it hold up with slack features like emojis, threads and so on?


I use bitlbee for jabber and sipe. I haven't played with slack, happily none of the communities I frequent are on slack. I wouldn't expect much in the way of proper feature parity though: it's an IRC gateway. It maps features to what IRC provides, and that's it.


Used to use this, until I realised it's memory usage goes over what my slot is actually capable of.

Does an IRC client/webserver really need several hundred megabytes of ram? I then began just tunnelling hexchat. Only needed to bypass a firewall for irc


You can adjust how many messages are saved in memory in the config, that may help


if it's re hosting video like mine does then yes.


That’s off by default, so it shouldn’t be the cause


Several months ago I switched from MacOS to Fedora.

Two things I really missed from MacOS that I thought didn't have a good alternative in Linux were Colloquy and Sequel Pro.

The Lounge via Docker Container and https://applicationize.me/ :

    docker run --detach \
            --name thelounge \
            --publish 9100:9000 \
            --volume ~/.config/thelounge:/home/lounge/data \
            --env THELOUNGE_HOME=/home/lounge/data \
            --restart always \
            -u "$(id -u $USER):$(id -g $USER)" \
            thelounge/lounge:latest
solved my IRC itch, and it works even better than Colloquy.

Still haven't found anything that comes close to Sequel Pro, though.


that's pretty slick, but you miss out on the best features (persistance/push notifications) if you're running it locally in a docker container.


It connects to a ZNC server on DigitalOcean.


Why not run thelounge on your VM then?


Maybe for speed. Local lounge installation would feel more like a desktop app.


Having Lounge reconnect to ZNC every time you start the app neglects any speed gains you'd have from running it locally. And it gives you overall a negative experience because unread markers and other things are reset.


why docker for such a small application?

thelounge start


Size doesn't matter. I don't have node or npm or ruby or PHP or go installed on my system, it's all in containers.


seems like overkill


>seems like overkill

Welcome to modern js development.


I am using that too. It was my way to use Slack before they shut down the IRC channels.


This seems like a promising project, but right now it still is lacking some features that are very nice to have in my opinion:

* Colored nick-names

* Theme-ability, even if only through user-provided CSS overrides

* Nickname autocompletion when hitting tab, preferably with some logic such as "you talked to this user recently"

* A locked down mode in which only authorised users can connect

That said, I really like the fact that you can search the history right from the client. Since I am not using this in production, maybe someone with more experience can tell me about how well it scales?

Also I feel that the separation of channels and DMs with users is very sensible.

I personally use The Lounge (https://github.com/thelounge/thelounge) for my web IRC needs, which solves my main issues outlined above, but doesn't have searchable history nor separated users and channels (there might be a setting for this that I haven't found yet).


> doesn't have searchable history nor separated users and channels (there might be a setting for this that I haven't found yet).

Yes it does: https://thelounge.chat/docs/server/users.html


I didn't express myself very clearly, I'm afraid. I didn't mean separated users as in user accounts, but that there is no visual separation between channels I join in a network and the users I open direct messages with.


They have different icons by default.

If that's not enough, I'm sure you could write some CSS to make the difference stand out even further. There's a custom CSS box in settings that you can put your styles in easily.


Thank you, I'm aware of that and currently using the custom CSS for some things. I realize I didn't say exactly what I meant to say (again; sorry about that)...

By visual separation I meant for example a vertical line with all channels being above that line and all users below it. I realize I can rearrange them manually, but I frequently join/quit channels and message new users in some networks and have that happen automatically would be a "nice to have" feature for me.

Clearly this didn't bother me enough to actually implement it or even open an issue with a feature request, so please do take this with a grain of salt.

Thank you for working on this awesome project and responding to my feedback!


I've been using The Lounge too, but noticed that my IRC sessions often time out silently and don't reconnect automatically, which is a dealbreaker since I don't check IRC that often.


This shouldn’t happened in recent versions. What version are you on?


What do you mean separated users and channels?


I should have been more clear about that. I meant a visual separation between the channels I join in a network and the users in the same network that I open DMs with.

I realize I can achieve this by hand, but I frequently join/leave channels and open new DMs and it would just be a nice to have thing for it to happen automatically.

So far it hasn't bothered me enough to actually open a feature request, so take this with a grain of salt.


Maybe seperate channel info and chat messages (like e.g. kvirc enables to do)?


Would take a lot to make me abandon trusty irssi, but I welcome this. The image of IRC seems tied to mIRC-era UI design and some attribute the current state with competing proprietary chat programs to perceived user unfriendliness of IRC, as if it's the protocol's fault the clients don't "look modern"


Would like to get my colleagues on IRC, but a crucial element is missing which Slack nails: Copy link

Conversations need to be able to referenced. Getting some logbot + archive going is way too painful.


I really like this! It's such a pretty client. Minor nitpick though:

The SSL checkbox shows up as two checkboxes (one regular, one fancy), the regular one way out in the middle of nowhere:

https://i.imgur.com/tFqN4HK.png

If you don't have a large monitor to test it on, you can use Chrome's dev tools to emulate a higher resolution.


Completely offtopic, but what DE/WM is that?


I'm using i3-gaps and polybar. My GTK theme is Arc [0] and the paper icon set [1]

My dotfiles are really disorganized, but here's my polybar config which I copied from some reddit post:

https://github.com/veggiedefender/dotfiles/blob/master/polyb...

You'll need fontawesome 4 and material icons

[0] https://github.com/horst3180/arc-theme

[1] https://snwh.org/paper


It's quite amazing the longevity that IRC has enjoyed, still essential around a lot of the OSS community. I know a lot of my Fedora questions are answered on #fedora.

I'm often a little baffled when I try to get help with a project and it doesn't have a chan on Freenode!


Wasn't able to connect to freenode. SSL didn't work at all, then without SSL I was "throttled" (few minutes later). So only one thing I can comment on is that the connect form shouldn't be reset every time.


I don't know why the underlying language for the code is important in the product description? Seems a little clickbait to me. Instead why not focus of the UX you provide or the speed that you have. I just don't get why the mention of GoLang is required, unless its a hobby project for someone learning GoLang. I've seen a lot of these projects mentioning Rust or GoLang lately, capitalising on their popularity, I get that Open Source projects help in understanding the language and hacking around it, but repetitive projects also do this! Is there some reason for it? Btw, I did like the UI, only ended up with this error "Error: tls: oversized record received with length 20306" post login.


The language is important. If I want to customise it for example it helps to know that I know the language. Also it gives me a rough idea of how fast and robust it will be.

Finally the language affects deployment. Given that it is Go I know it will be trivial to cross-compile a static binary.


For me as a user it would be important because programs written in Go tend to be more resource-efficient than programs written in, say, Python – so this program is more likely to run well as one of many daemons on a small personal server, and not fall over in high-volume IRC channels. (There's no guarantee, of course, especially since the client side is HTML/JavaScript.)


> Is there some reason for it?

Attracting contributors who are familiar with the language might be one of the reasons?




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: