Hacker News new | past | comments | ask | show | jobs | submit login
The Lounge – Modern web IRC client designed for self-hosting (github.com/thelounge)
223 points by Naac on Aug 27, 2020 | hide | past | favorite | 76 comments



This looks great. Kudos to the authors! The available options are pretty lacking.

I would have loved to have this the past few years.

I recently shifted all my IRC usage to Matrix with Element.

There is a official IRC bridge. It will let you authenticate with IRC servers and join rooms, which will appear as regular Matrix rooms for you. On the IRC side you seem like a normal user as well.

You get multi-device support, history, one less client to keep open, ...

Steps:

* Start a conversation with "@appservice-irc:matrix.org"

* Send commands:

!nick irc.freenode.net mynickname

!storepass irc.freenode.net MYPW

!join chat.freenode.net #someroom


>On the IRC side you seem like a normal user as well.

Until you accidentally start using Matrix features that don't translate well.

Eg your matrix client will let you post large messages. On the IRC side this will generally appear as

    foo[m] send a long message: <https://matrix.org/some/long/url/uNiQuEcOdE>
    <foo[m]> How do I fix this?
and now IRC users have to open a browser to answer your question.

Also I've heard that if a Matrix user edits their message, the bridge resends the whole message to the IRC channel. I've not experienced Matrix users repeating themselves with tiny differences, so I can't confirm this.

Thankfully this is rare, at least in the channels I hang out in. But in general I have a dim view of all these protocols that attempt to interop with IRC - they all have some form of impedance mismatch that causes jank. The worst one was probably gitter, where its users were used to posting kilobytes of code in markdown code fences because the browser UI would collapse it by default so it'd look fine, but their IRC bridge sent the whole thing line-by-line to all clients. And if the gitter user edited that code block, the bridge would send the whole code block down again. I disconnected from that thing as soon as it happened to me (The fact that its IRC impl was broken and required me to patch my client was also part of the reason.)


That matrix example seems like strictly worse and much more complicated to implement than the obvious naive solution of just splitting the big matrix message across multiple IRC messages.


And then you are automatically kicked for spam. Long messages are strongly disliked on irc and the typical workflow is you paste your text in to a pastebin and link it in a message which matrix does.


You type the prose part of your question in the channel. The thing that gets pastebin'd is code or logs if they're more than one line long. [1]

The problem I was describing is that the Matrix user has no reason to follow this rule, because the Matrix client UI lets them type arbitrary long prose and code and logs in a single message and send that. And then the bridge has no choice but to put the whole thing in a pastebin.

[1]: Unless the prose part of your question is itself an essay. But in that case the solution is not to put your question in a pastebin. It's to spend some time distilling your question down to remove all the fluff that made it an essay.


Probably the correct thing is for matrix to realize that this is an IRC bridge, and warn the user this behavior will occur; they can fix it accordingly, and everyone is happy



The bridge should be smart and use the pastebin referenced in the channel topic!


I’ve been using a few Freenode channels via Matrix lately a while keeping my traditional irc clients open. A noticeable amount of messages never make it over to Matrix - as I collaborate with other developers in our irc, I don’t find these bridges very reliable unfortunately.


I want to use them but about 5-7 years ago I created an account there with my username and forgot my password and they won't give me access even though I can verify pretty much everything on the account except for my pass and it certainly hasn't been logged into in years... :(


What plugin for Synapse do you use?



I used this a few years back. My only grips with it are the usual NodeJS application gripes (too many dependencies etc.), the UI is clean, the interface is responsive and configuration is easy.

I'd personally switch to a Matrix bridge + Riot if I were to need to access IRC these days, but for anyone seeking a nice self-hosted method of accessing IRC from the browser without intermediate software, I can strongly recommend this.


Can you also in a nutshell tell me/us how the 'Always connected. Remains connected to IRC servers while you are offline.' works? Can't find much on the site itself, and tbh don't want to scroll the source code.


The NodeJS backend keeps connected and syncs up the messages to the frontend when you reconnect. The actual IRC happens on your server, the frontend has a separate API for fetching messages (it doesn't do IRC directly).


aaah okay so it functions as a bouncer :) was a bit confusing as they mention 'forget' bouncers :)

thanks for the update


You run Lounge on a server that remains connected. You then connect to Lounge with mobile apps or a URL.

The official site is more useful than the GitHub repo in this regard: https://thelounge.chat/docs



The Lounge is the first app to make me really use IRC. The ability to have it running on my home server and be easily accessible from all the devices in my house through a nice, mobile optimized web interface is an absolute delight.


If that amazes you, you’ll be even more impressed with Matrix + Riot/Element and IRC-bridges (plus lots of other bridges of course).


I'm already a Matrix/Element user, and I honestly don't see the point in using a bridge for my personal IRC usage. I think it's cool for groups that want to maintain IRC after switching to Matrix, but it feels like it's a bit too much complexity to use Matrix as a UI for IRC.


Fair enough.

For me, Matrix was not just about bridging IRC, but about unifying communications. And when you first decide to do that, bridging IRC too becomes a no-brainer.


What I don't understand about these "modern" apps is that users simply seem to accept that they waste megapixels of screen real estate for nothing. This has always put me off from using these, so still "stuck" with irssi + screen and (if no ssh) CGI:IRC.


I was looking at the screenshot on the linked page, and I failed to see where you think the megapixels were wasted? The channel list? Or the alignment of username/message?


Yes, channel list, user list, lots of white space next to the usernames, for my taste there's also excessive spacing between the single message lines, the channel topic line could take up half of the space, and so on.

I know that many modern apps follow this pattern and it may have to do with making things responsive and work well across many different devices and platforms, but I simply cannot be happy with low information density.

YMMV. It's good that there are so many different clients to chose from. IRC still rocks.


At some point if you have too little spacing, everything becomes very crowded.

That being said, The Lounge supports themes, and it's trivial to reduce spacing to fit your needs. There's even a box in settings where you can put custom css directly in.


The channel list can be collapsed by clicking the icon to the left of the topic. The user list can be collapsed by clicking the icon in the top right corner. There is also an area in the settings to add your own CSS rules. Just wanted to point those things out because they probably aren't immediately visible from the linked page and the screenshot.


So you used irssi without both channel list and user list?

I mean, HexChat use roughly the same space (the username part is configurable), so this is hardly a problem of 'modern UI'. (XChat, which HexChat fork from, was initially released in 1999)


I use weechat without the user list and with the channel list taking up exactly 1 line of space. The default theme for TheLounge is certainly more. You can hide the side-bar with the channel list by hitting the hamburger button, and hide the user list by hitting the people-icon button.

That being said, I think the whitespace between the lines was the complaint (IIRC the default is a line size of 1.4 and 3px padding)

With a little CSS I eliminated the WS, and here's a screenshot with the two sidebars hidden:

https://imgur.com/ZRiDhJz.png


> So you used irssi without both channel list and user list?

Not the guy you asked, but isn't that the default? I've always done '/names' to see who was there and '/list' to see what channels were available.


You might like some of their other themes, like this one: https://www.npmjs.com/package/lounge-theme-mininapse

I personally find most "slack-ified" IRC clients to be much more legible and easy on the eyes than weechat/irssi although I do like the terminal clients for their keyboard nav and even deeper theme options.

But obviously the best part about The Lounge being browser-based and overall more modern is that I can easily use it from my phone, too. SSHing into an irssi session is far more tedious and annoying when I'm not sitting in front of my desktop.


I've heard good things about irccloud[1]. Costs money, but has good integration on phones (e.g. sends you notifications, keeps you connected even if you use ios and apps aren't allowed to run in the background).

1. https://www.irccloud.com/


If you look at the example represented by the screenshot, with a half-dozen people in a channel, these issues probably don't matter that much.

Using this on a channel with 200 people in the channel and 2-4 conversations taking place at once, and they matter a lot.


Why would it matter? Can't I just zoom out my browser window to fit more conversations on screen?


i spend many hours every day in an IRC channel with the "200 people, 2-4 conversations at one time" characteristics. i don't want huge blank pixel spaces between lines, because that just means i'm going t need to scroll more often to get context. i don't want to zoom the text, because then i can't read it as easily.


Got it, that makes sense. It reminds me of the email list interface in Gmail, and how even at the "compact" setting, there is still too much space.

I think with thelounge the problem can be solved with some custom CSS ( which thelounge supports adding ). But this is not a very user-friendly option.

Funny enough, just like at a previous online book company I worked at, the problem can also be solved by a greasemonkey script :p


You can simply remove the padding with:

/* remove padding for channel switcher */

#jump-to-container .channel-list-item[data-type=lobby] {

  padding: 0px;
}

in the custom stylesheet section of your thelounge installation.


Lounge is very conservative in screen space usage. You have your channels, content and users.


There is also Quassel-Web, the web front end for Quassel Core, over here[1]. The Linux Server guys packaged it for self-hosting here[2].

[1] https://github.com/magne4000/quassel-webserver

[2] https://github.com/linuxserver/docker-quassel-web


Reminds me a bit of [Convos](https://convos.chat/), a nice Perl based client.


It's actually a fork of shout https://github.com/erming/shout


Another Perl client from back in the day:

https://github.com/leedo/alice



Ugh. I tried to get color support added (full rgb and the 16 mIRC named colors), but the PR sat there for years and I ended up removing the PR.


I use weechat for the same (more or less purpose): Run weechat through tmux or screen (so it won't stop when you disconnect your ssh session) on an always on server and connect to all your IRC channels.

Then use an ssh tunnel to connect to that weechat instance with glowing bear on your computer or weechat android on your mobile.

Profit.


I think the mobile story for thelounge is simpler. Just visit the same url using your mobile browser and everything Just Works.


This works just fine too in Glowing Bear on my phone (Firefox on Android 10). https://github.com/glowing-bear/glowing-bear


Note that it's not just a client but a irc bouncer. Like znc and quassel.


Quassel isn't a traditional bouncer though. It doesn't proxy the IRC protocol but uses a custom one between core and client, so you can properly run multiple clients connected to one core, and it will synchronize the read/unread state, highlights etc. between clients.

I prefer it over the lounge because it's not web based. I'm old and hate everything web based.


There's also a Quassel web front end here[1]. I prefer the way Quassel handles IRC, so I use the daemon and various front ends, including the web one.

[1] https://github.com/magne4000/quassel-webserver


Ah, good to know. Is that a requirement that the client and the core talk IRC to qualify as a bouncer? I guess that will also rule lounge as a bouncer since afaik it talks HTTP and not IRC. ZNC is a proper bouncer then.


I don't think there is a formal definition, but for the longest time that's how it has been, so people might assume they can just use any IRC client to connect to the bouncer, so it might be worth pointing that out for clarification when talking about the lounge or quassel.


Well back in the day your connection to a university shell account might have been through dialup, so using the low-bandwidth IRC protocol to talk to the BNC was perfect.


It's a persistent client that runs remote from the interface, but it doesn't speak IRC protocol to another client that acts as the interface.

I use it exactly the same way I used screen+irssi, just instead of using ssh to hit it, I use Firefox to hit it. In either case, the client runs remotely and only the displayed portion is coming to my local machine.


I've been using The Lounge for quite some time as my IRC client. I run it in a Docker container. Its run really smoothly with no issues. I've been very happy with it.


Same here! I had a little hiccup because the prebuilt Docker container wasn't built for ARM and I was running it on a raspberry pi, but I got that sorted and it's been stable for months. I guess I should learn how to upgrade the thing, as I understand there've been some nice features added!


Latest version has prebuilt images for ARM now :)


Same setup, 0 complaints!


I played around with this and love it. Setting up to work with a locally running ircd was a breeze (in contrast to setting up the ircd itself). It even allows you upload pictures which are stored and accessed via the embedded web server. You do need an optional database installed if you want conversation history to persist, and this is needed to really make it useful on mobile.


> You do need an optional database installed if you want conversation history to persist

sqlite installs by default (unless something went wrong), but it's only required to persist between restarts (or leaving and reopening a channel). But just having it running will keep history in memory (up to a limit), so not strictly required to have it work between devices.


Hey, sorry for the tangent, but while I have you here - would you ever consider adding a hosted option for The Longue? I might be interested in collaborating on that on behalf of sourcehut.


I have no interest in that.


Pity. I think the Lounge has a great and easy to use interface for new IRC users, and a hosted option would be the cherry on top for making it easy to get into IRC.


I learned of the Lounge when I was looking at the hosting panel of some random rent-an-instance service and it was in there alongside Wordpress and Nextcloud and stuff, and I said "what's this Lounge thing I've never heard of?"

I ended up hosting it on a raspi in my basement, but there are definitely services out there who will host it for you. I have no idea who that was now, though!


Irccloud does that already, no im not affiliated, I'm a happy thelounge user


Well nothing stops you from doing that yourself.


Yeah, I've looked into it a few times. Have to manage priorities. Would've been helpful to have some cooperation with upstream if you guys were into it.


I've been running this for over a year now. The best part is, apart from being a bouncer I can access IRC from multiple devices, with the same account. Even on mobile, without the need to install anything.


I do it the same way, it's really nice. I'd like a search though for past conversations, right now I have to look at the log files.



I've had lounge for a while, running on the home server. its great that I can keep it open at work on the browser, or on the phone.

its got all the features I need, and its as fast as pigeon, more or less.


FYI, push notifications don’t work on iOS:

> Push notifications are supported on all platforms except for iOS, due to Apple not supporting web push specification and all browsers being reskins of Safari.

From https://thelounge.chat/docs/usage


I switched to a self-hosted (on AWS) inspircd instance with The Lounge running in front of it for friends earlier this year. It’s nice. The biggest issue was getting a native-like experience on iOS and Android phones, and discovering that safari doesn’t support notifications.


I like mIRC.


Relevant xkcd: Team Chat

https://xkcd.com/1782/


>Cross platform. It doesn't matter what OS you use, it just works wherever Node.js runs.

Is Node the new JVM?




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

Search: