No description
Find a file
Kenny Levinsen 60c370d4ec seat: Allow new clients when active is pending ack
New clients could only be added to a VT bound seat if there were no
"active" client, regardless of its actual state. This meant that if one
switched from an "active" VT to an "inactive" VT, the seat would be
blocked while the "active" client was in CLIENT_PENDING_DISABLE, causing
new clients to possibly fail should the old client take its time with
the ack.

Instead, allow new clients to also be added if there is an active client
whose state is CLIENT_PENDING_DISABLE, and there is no client with the
new VT as its session ID.
2021-09-07 22:24:24 +02:00
.builds ci: Fix meson flags 2021-08-06 01:29:52 +02:00
common Normalize log texts a bit 2021-03-02 00:27:38 +01:00
contrib/systemd contrib/systemd: Use a different group 2021-04-17 17:09:45 +02:00
examples/simpletest simpletest: Close fd after closing device 2020-12-14 23:41:17 +01:00
include seat: Avoid holding a tty fd 2021-09-02 20:02:55 +02:00
libseat libseat: Fix build of builtin backend 2021-08-15 14:32:05 +02:00
man seatd: s6-style readiness notification support 2021-08-06 01:15:55 +02:00
seatd seat: Allow new clients when active is pending ack 2021-09-07 22:24:24 +02:00
seatd-launch seatd-launch: Command line argument support 2021-08-06 23:00:05 +02:00
tests connection: Add unittest 2020-10-12 18:02:00 +02:00
.clang-format Add clang format specification 2020-07-31 00:23:03 +02:00
.editorconfig Add .editorconfig 2021-09-02 20:41:47 +02:00
LICENSE Add LICENSE 2020-07-31 01:34:04 +02:00
meson.build meson.build: fix build with gcc < 7 2021-09-02 20:00:03 +02:00
meson_options.txt build: add prefix to libseat options 2021-07-06 22:11:43 +02:00
README.md readme: Update discuss section 2021-05-19 17:48:12 +02:00

seatd and libseat

A minimal seat management daemon, and a universal seat management library.

Currently supports Linux and FreeBSD.

What is seat management?

Seat management takes care of mediating access to shared devices (graphics, input), without requiring the applications needing access to be root.

What's in the box?

seatd

A seat management daemon, that does everything it needs to do. Nothing more, nothing less. Depends only on libc.

libseat

A seat management library allowing applications to use whatever seat management is available.

Supports:

  • seatd
  • (e)logind
  • embedded seatd for standalone operation

Each backend can be compile-time included and is runtime auto-detected or manually selected with the LIBSEAT_BACKEND environment variable.

Which backend is in use is transparent to the application, providing a simple common interface.

Why not (e)logind?

systemd-logind is not portable, and being part of the systemd project, it cannot be used in an environment not based on systemd. Furthermore, "simple" is definitely not within the set of adjectives that can be used to describe logind. For those in the dark, take a glance at its API. Plus, competition is healthy.

elogind tries to isolate systemd-logind form systemd through brute-force. This requires actively fighting against upstream design decisions for deep integration, and the efforts must be repeated every time one syncs with upstream. And even after all this work, one is left with nothing but a hackjob.

Why spend time isolating logind and keeping up with upstream when we could instead create something better with less work?

Why does libseat support (e)logind?

In order to not be part of the problem. We will not displace systemd-logind anytime soon, so for user shells like sway, seatd joins the ranks of logind and direct session management for things they need to support.

Instead of giving user shell developers more work, libseat aims to make supporting seatd less work than what they're currently implementing. This is done by taking care of all the seat management needs with multiple backends, providing not only seatd support, but replacing the existing logind and direct seat management implementations.

How to discuss

Go to #kennylevinsen @ irc.libera.chat to discuss, or use ~kennylevinsen/seatd-devel@lists.sr.ht.