Expose session ID in libseat API
This sends the seatd session ID to a seatd client, and exposes this in
the API. It is currently stubbed out for logind.
seatd: Set errno in seat_add_client
seatd: Add seat selection to open_seat message
This allows the client application to request a seat.
ci: Clean up build manifests
readme: Update mailing list link
libseat: Better error reporting from open_seat
logind: Use seat_path for SwitchTo
logind: close_device should not close fd
seat: Only close VT if no new session was found
terminal: Ack both release and acquire
Linux only requires acking release and ignores ack of acquire, but
FreeBSD is more stringent and will patiently wait for both to be acked.
Implement proper acking for both events.
seat: Use current VT for switch and ack
terminal: Fix VT numbering on FreeBSD
FreeBSD adds one to the VT number returned by the GET_ACTIVE ioctl, so
to match things up, the wrapper here subtracted by one. This lead to
ttyv0 being named VT 0. This had the side-effect of VT numbering not
matching expectations, and switching not behaving as intended.
Align numbers with expectations, and move the required subtraction to
terminal_open, so that VT 1 matches ttyv0.
libseat/seatd: Fix socket path bounds
meson: Make default seatd socket path configurable
FreeBSD and Linux have different preferred socket locations. Expose an
option to set the location, and implement simple auto-logic for
drm: Relax drm file detection, support FreeBSD
Path check was done on /dev/dri/card and /dev/dri/renderD. However,
/dev/dri/by-path is a thing, and on FreeBSD, /dev/dri/ symlinks to
Relax Linux check to /dev/dri/, and add FreeBSD check for /dev/drm/.
libseat: Execute bg events after IPC calls
If a background event was queued during call dispatch, and no unread
data was left on the socket, there would be no incentive for the user to
call dispatch, and as a result, the events would never be executed.
Execute events at the end of IPC calls that read from the socket to
libseat: Dispatch all non-bg events on IPC call
Dispatch on IPC call only dispatched until the first message was
successfully processed. This could lead to premature dispatch
termination if a background event was received during an IPC call.
Instead, continue dispatching until a non-bg opcode is reported or an
error is received.