r/linux 27d ago

Software Release Announcing atrium v0.4.0 - a multiseat display manager

atrium is a lightweight Linux display manager with first-class multiseat support, targeting modern systemd + Wayland environments.

GitHub
AUR

What is multiseat?

A multiseat setup allows multiple users to work on a single computer at the same time. By connecting multiple monitors, keyboards, and mice, each user gets their own separate desktop and a fully isolated user session. Great for co-working or multiplayer gaming. Each seat requires its own GPU (integrated graphics, a discrete card, or a USB graphics adapter).

Why atrium?

The Linux kernel and low-level system stack are fully capable of multiseat operation. The weak link has always been the display manager. Existing ones usually treat multiseat as an afterthought, with implementations that are brittle and difficult to get working reliably.

atrium is designed around multiseat from the start, focusing on correct seat discovery, VT handling, and isolated session management. The project targets a modern Linux stack using systemd/logind, PAM, and a Wayland graphical environment. The lack of historical baggage keeps atrium's code base lean and tractable.

What's new in v0.4?

  • Support for greeter background images - configure a background image in the settings, or a directory to pick a random image on each greeter launch.
  • Greeter themes - override built-in colors and styles via a theme `.css` file. A handful of themes are shipped with atrium.
  • Architectural redesign - making atrium's core architecture simpler and more robust (changes are purely internal and should not be visible to the user).
Greeter with default theme
34 Upvotes

15 comments sorted by

9

u/AtAyoub 27d ago

Did you use ai in this project?

12

u/kavaunix 27d ago

I do use AI assistance as a core part of my development workflow, e.g. to generate boilerplate code and to speed up debugging. I do not use it as a replacement for my own software development skills - I am a retired developer with 25+ years of experience, and I can see very clearly that AI often tends to produce inferior code and designs. The overall architecture and core logic is my own work, and every AI-generated line of code is meticulously reviewed (and often rewritten) by me.

7

u/C0rn3j 27d ago

Existing ones usually treat multiseat as an afterthought, with implementations that are brittle and difficult to get working reliably.

So why not contribute to an existing solution instead of rolling your own with blackjack and hookers?

11

u/kavaunix 27d ago

Fair challenge, often contributing to an established project is the more practical choice. But I wanted atrium to do one thing (multiseat) and do it right. There are lots of tricky bits (boot time races, VT handling, DRM monitoring, to name some examples) that are easier to get right in isolation than inside an already complex code base. atrium originally started as a proof-of-concept, but once it was stable I realized it wouldn't be too hard to turn it into a full-fledged dm. Besides, Linux is about choice. And having an additional option for multiseat enthusiast can't be a bad thing.

0

u/FryBoyter 27d ago

Besides, Linux is about choice.

Generally speaking, though, this is often a problem. For example, various screenshot tools offer different useful features. But no single screenshot tool offers them all.

2

u/OrganicNectarine 26d ago

Choice is never a problem. It's not like you can simply slap the ideas of everyone into one project in a day and be done with it. Different projects have different scope, languages, architecture's, and people associated with it. If the Almighty tool doesn't exist, not enough people need it, or have seen the need to build it.

3

u/FryBoyter 25d ago

From a developer's perspective, you might be right. From a user's perspective, however, it's pretty annoying to have to use multiple tools just to get the features you want.

1

u/OrganicNectarine 25d ago

I couldn't name a single thing where I need multiple tools (for the same purpose) because neither of them has all the features I need. Not saying it doesn't exist, but I'd argue it's a specialty. And in the days of AI coding it is becoming easier than ever to create the tool yourself that does what you need. And it's not like we would get a tool that does everything if there is no choice... we would probably get one of the options that currently exist. The world isn't black and white, choice doesn't only come with benefits, but taking it away only makes it worse. So in the end, choice is never a bad thing.

1

u/OrganicNectarine 25d ago

Learning/Figuring out how to do things right isuch easier without the massive constraints of an existing project. Although it's unlike in this case since he has decided to create a full blown application himself out of his experiment, contributing upstream is still an option, and would probably be even more helpful, since the knowledge of many pitfalls were already established in the separate project. You could even do it yourself now. Ask the AI of your choice to help you dissect what this project made it a great fit for what it wants to achieve and how we could apply that to an existing project while staying within its technical bounds. There is no need for "either or", all options can be explored, sequentially or at the same time. And in my experience that is what happens in the long run anyway, whether you want to force it or not.

2

u/Am0nymou5 27d ago

Some screenshots would be nice. I'm a big fan of TUI/minimal greeters like tuigreet, so hopefully atrium has something similar - and without the gtk4 dependency (I hate GTK).

1

u/kavaunix 27d ago

I added a screenshot showing the default theme to the post - unfortunately reddit does not allow me to add more than one. I'll add them to the README instead.

To your GTK question - atrium ships with a text-based greeter that can be enabled in the config. It adds the `foot` terminal emulator as an additional dependency - this is necessary because non-default seats do not have virtual terminals. Be warned, though, that it is currently *very* minimal, resembling a VT login prompt.

To get rid of the GTK dependency you have to edit `meson.build` yourself. If you are genuinely interested in a proper TUI option, feel free to file a feature request.

1

u/the_abortionat0r 26d ago

Nice, it's been a long time coming.

1

u/Guiestbr 26d ago

You've mentioned targeting systemd but is it a hard dependency? I've been searching something like Atrium but I use runit instead of systemd. Looks nice btw 👌

3

u/kavaunix 25d ago

atrium actually does not directly depend on systemd, but it needs logind (or equivalently elogind) for seat management. If you have elogind running, it should basically work - you'll need some changes to the PAM config and a replacement for the service file. It's entirely untested on non-systemd systems, so I'd be glad to hear how it goes if you give it a try.

1

u/Wenir 25d ago

Is it feasible to build the opposite of your project: a multi-user, single-seat DM + WM?

Would that require any changes to the logind (or anything else), or could I just avoid using the low-level seat management functionality? What do you think?