
The Lounge – Modern web IRC client designed for self-hosting - Naac
https://github.com/thelounge/thelounge
======
the_duke
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

~~~
Arnavion
>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.)

~~~
p1necone
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.

~~~
Polylactic_acid
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.

~~~
Arnavion
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.

~~~
setr
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

~~~
ptman
It's being worked on: [https://github.com/matrix-org/matrix-appservice-
irc/issues/7...](https://github.com/matrix-org/matrix-appservice-
irc/issues/701)

------
jeroenhd
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.

~~~
mobilemidget
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.

~~~
jeroenhd
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).

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

thanks for the update

------
dang
If curious see also

2018
[https://news.ycombinator.com/item?id=18406684](https://news.ycombinator.com/item?id=18406684)

2016
[https://news.ycombinator.com/item?id=12063689](https://news.ycombinator.com/item?id=12063689)

------
dstaley
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.

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

~~~
dstaley
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.

~~~
josteink
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.

------
curiousfab
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.

~~~
innocenat
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?

~~~
curiousfab
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.

~~~
innocenat
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)

~~~
aidenn0
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](https://imgur.com/ZRiDhJz.png)

------
heavyset_go
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](https://github.com/magne4000/quassel-webserver)

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

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

~~~
nmaleki
[https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat)
Rocket chat aswell

~~~
xellisx
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.

------
spapas82
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.

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

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

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

~~~
iforgotpassword
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.

~~~
gramakri
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.

~~~
iforgotpassword
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.

------
alexgaribay
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.

~~~
myself248
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!

~~~
xPaw
Latest version has prebuilt images for ARM now :)

------
tenebrisalietum
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.

~~~
xPaw
> 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.

~~~
ddevault
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.

~~~
xPaw
I have no interest in that.

~~~
ddevault
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.

~~~
xPaw
Well nothing stops you from doing that yourself.

~~~
ddevault
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.

------
IceWreck
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.

~~~
gsich
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.

~~~
MaxLeiter
This is coming eventually:
[https://github.com/thelounge/thelounge/pull/3664](https://github.com/thelounge/thelounge/pull/3664)

------
KaiserPro
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.

------
asymmetric
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](https://thelounge.chat/docs/usage)

------
kevinmobrien
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.

------
xellisx
I like mIRC.

------
phre4k
Relevant xkcd: Team Chat

[https://xkcd.com/1782/](https://xkcd.com/1782/)

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

Is Node the new JVM?

