Unix & Linux Stack Exchange
Q&A for users of Linux, FreeBSD and other Unix-like operating systems
Latest Questions
0
votes
0
answers
35
views
How to configure Multi-Seat on Linux with KDE-Wayland?
I am trying to configure dual-seat on my Linux with KDE-Wayland. I have two graphic cards which should make it possible. I configured an /etc/udev/rules.d/72-multiseat.rules ``` # Assign second graphics card to seat1 SUBSYSTEM=="drm", KERNEL=="card1", TAG+="seat", ENV{ID_SEAT}="seat1" # Assign Logit...
I am trying to configure dual-seat on my Linux with KDE-Wayland. I have two graphic cards which should make it possible.
I configured an /etc/udev/rules.d/72-multiseat.rules
# Assign second graphics card to seat1
SUBSYSTEM=="drm", KERNEL=="card1", TAG+="seat", ENV{ID_SEAT}="seat1"
# Assign Logitech K120 keyboard to seat1
SUBSYSTEM=="input", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c31c", TAG+="seat", ENV{ID_SEAT}="seat1"
# Assign Logitech Logi Bolt Receiver (mouse) to seat1
SUBSYSTEM=="input", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c548", TAG+="seat", ENV{ID_SEAT}="seat1"
Then applying the configuration:
sudo udevadm control --reload-rules
sudo udevadm trigger
Unfortunately, after this login into KDE is not possible anymore, for either seat.
-----------------
How to configure multi-seat (several users at the same time) on Linux with KDE-wayland?
Adrian Maire
(2042 rep)
Jul 27, 2025, 02:36 PM
1
votes
0
answers
28
views
systemd-logind: seat0 CanGraphical=yes despite untagging master-of-seat in 99- udev rule
Ubuntu 24.04 LTS, systemd 255 In a multiseat setup, I'm trying to set seat0 (Matrox DRM) to CanGraphical=no for TTY-only, but loginctl shows yes even after untagging master-of-seat in a 99- custom rule with minus-equal: ```SUBSYSTEM=="drm", ATTRS{vendor}=="0x102b", ATTRS{device}=="0x0533", ENV{ID_AU...
Ubuntu 24.04 LTS, systemd 255
In a multiseat setup, I'm trying to set seat0 (Matrox DRM) to CanGraphical=no for TTY-only, but loginctl shows yes even after untagging master-of-seat in a 99- custom rule with minus-equal:
=="drm", ATTRS{vendor}=="0x102b", ATTRS{device}=="0x0533", ENV{ID_AUTOSEAT}="0", ENV{ID_SEAT}="seat0", TAG+="seat", TAG-="master-of-seat", ENV{ID_FOR_SEAT}=""
Full udevadm test/loginctl output here .
udevadm test on the device shows master-of-seat not in CURRENT_TAGS (though in TAGS earlier) so I conclude my rule worked right. Why does CanGraphical remain yes? How to force no? I'm confused. Can somebody give me a hint?
trleith
(11 rep)
Jul 14, 2025, 12:17 PM
3
votes
1
answers
2011
views
Start two X servers on boot on RHEL
I have a powerful machine that I want to use as a multi-seat system. It has two graphic cards and two pairs of keyboards and mice. I've been able to successfully configure two "seats" using udev and Xorg.conf, and launch two X servers from a script so two users can have independent sessions. Just fo...
I have a powerful machine that I want to use as a multi-seat system. It has two graphic cards and two pairs of keyboards and mice. I've been able to successfully configure two "seats" using udev and Xorg.conf, and launch two X servers from a script so two users can have independent sessions. Just for the record, here's my udev rules file, where I identify each USB hub and label the devices and the seats:
SUBSYSTEM=="drm", KERNEL=="card[0-9]*", ATTRS{vendor}=="0x10de", DRIVERS=="nvidia", TAG+="master-of-seat"
# SUBSYSTEM=="drm", KERNEL=="card0", ENV{ID_SEAT}="seat0"
# SUBSYSTEM=="drm", KERNEL=="card1", ENV{ID_SEAT}="seat1"
SUBSYSTEM=="input", ENV{ID_INPUT.tags}="input_default"
# KVM HUBS
KERNELS=="3-2", ATTRS{bDeviceClass}=="09", ENV{KVM_HUB}="1", ENV{ID_SEAT}="seat0"
KERNELS=="3-8", ATTRS{bDeviceClass}=="09", ENV{KVM_HUB}="2", ENV{ID_SEAT}="seat1"
# Devices of HUB 1
KERNEL=="event*", ENV{KVM_HUB}=="1", ATTRS{bInterfaceProtocol}=="01" SYMLINK+="kvm_keyboard_1"
KERNEL=="event*", ENV{KVM_HUB}=="1", ATTRS{bInterfaceProtocol}=="02" SYMLINK+="kvm_mouse_1"
# Devices of HUB 2
KERNEL=="event*", ENV{KVM_HUB}=="2", ATTRS{bInterfaceProtocol}=="01" SYMLINK+="kvm_keyboard_2"
KERNEL=="event*", ENV{KVM_HUB}=="2", ATTRS{bInterfaceProtocol}=="02" SYMLINK+="kvm_mouse_2"
# Default seat
SUBSYSTEM=="input", TAG=="seat", ENV{ID_SEAT}=="" , ENV{ID_SEAT}="seat0"
# set all tags accordingly
ENV{ID_SEAT}!="", ENV{ID_INPUT.tags}+="$env{ID_SEAT}" TAG+="$env{ID_SEAT}"
The relevant part of my
xorg.conf
file looks like this:
Section "ServerFlags"
# Option "AutoAddDevices" "false"
# Option "AutoEnableDevices" "false"
Option "DefaultServerLayout" "Layout0"
Option "AllowMouseOpenFail" "true"
Option "Xinerama" "0"
EndSection
# ---------------------------------------------------------------
# LAYOUT
Section "ServerLayout"
Identifier "Layout0"
Screen "Screen0"
MatchSeat "seat0"
Option "Clone" "off"
EndSection
Section "ServerLayout"
Identifier "Layout1"
Screen "Screen1"
MatchSeat "seat1"
Option "Clone" "off"
EndSection
As I said, **I can successfully launch** two independent sessions using the following script, but I'd like this to happen automatically on boot.
#!/bin/bash
set +x
rm /etc/X11/xorg.conf
cp ./xorg_independientes /etc/X11/xorg.conf
# X (:0)
systemctl stop gdm
killall Xorg
killall X
systemctl restart gdm
sleep 7
# X (:1)
su - sit -c "startx /usr/bin/gnome-session -- :1 vt4 -layout Layout1 -seat seat1 -sharevts" &
sleep 10
DISPLAY=:1 xhost +
My approach would be setting the default target runlevel to 4 (so it has everything but graphics) and then placing these commands in a script somewhere.
José Tomás Tocino
(170 rep)
Dec 12, 2016, 09:02 AM
• Last activity: Jun 25, 2025, 10:09 PM
2
votes
1
answers
301
views
Force SeatN to display :N
I have a multiseat setup using 3 GPUs, `loginctl` and `lightdm` and it mostly just works. Two small areas where it doesn't is with bluetooth audio devices and `ssh` X forwarding misbehaving when I'm not on `:0` or at least not the same display number as last time I logged in. ``` ❯ ps axo pid,user,a...
I have a multiseat setup using 3 GPUs,
loginctl
and lightdm
and it mostly just works. Two small areas where it doesn't is with bluetooth audio devices and ssh
X forwarding misbehaving when I'm not on :0
or at least not the same display number as last time I logged in.
❯ ps axo pid,user,args | grep xorg
6279 root /usr/lib/Xorg :1 -seat seat0 -auth /run/lightdm/root/:1 -nolisten tcp vt7 -novtswitch
6284 root /usr/lib/Xorg :0 -seat seat2 -auth /run/lightdm/root/:0 -nolisten tcp
6285 root /usr/lib/Xorg :2 -seat seat1 -auth /run/lightdm/root/:2 -nolisten tcp
...instead of...
❯ ps axo pid,user,args | grep xorg
6279 root /usr/lib/Xorg :0 -seat seat0 -auth /run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
6284 root /usr/lib/Xorg :1 -seat seat2 -auth /run/lightdm/root/:1 -nolisten tcp
6285 root /usr/lib/Xorg :2 -seat seat1 -auth /run/lightdm/root/:2 -nolisten tcp
Putting...
# Force seatN to run on display :N
[Seat:seat0]
xserver-command=/usr/lib/Xorg :0 -seat seat0 -auth /run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch #
[Seat:seat1]
xserver-command=/usr/lib/Xorg :1 -seat seat1 -auth /run/lightdm/root/:1 -nolisten tcp #
[Seat:seat2]
xserver-command=/usr/lib/Xorg :2 -seat seat2 -auth /run/lightdm/root/:2 -nolisten tcp #
...into /etc/lightdm.conf.d/71-seatdisplays.conf
makes thing very confusing when I log in at what should be seat0
. I end up on display :0
but either seat0
, seat1
or seat2
, despite the GPU and the mouse and keyboard USB ports feeding that monitor being bound to seat0
:
❯ echo $DISPLAY
:0
❯ ps axo pid,user,args | grep xorg
6711 root /usr/lib/Xorg :1 -seat seat1 -auth /run/lightdm/root/:1 -nolisten tcp
6713 root /usr/lib/Xorg :2 -seat seat2 -auth /run/lightdm/root/:2 -nolisten tcp
6731 root /usr/lib/Xorg :0 -seat seat0 -auth /run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
❯ loginctl list-sessions
SESSION UID USER SEAT TTY
3 1000 myuser seat1
c1 958 lightdm seat2
c2 958 lightdm seat0
3 sessions listed.
If I remove the comment #
from the end of the xserver-command
line, I end up on my correct seat0
but not necessarily display :0
. It auto appends what's actually happening to the manually set command and while I end up on the correct seat number, the display is again random:
❯ echo $DISPLAY
:2
❯ ps axo pid,user,args | grep xorg
6423 root /usr/lib/Xorg :1 -seat seat1 -auth /run/lightdm/root/:1 -nolisten tcp :0 -seat seat1 -auth /run/lightdm/root/:0 -nolisten tcp
6428 root /usr/lib/Xorg :2 -seat seat2 -auth /run/lightdm/root/:2 -nolisten tcp :1 -seat seat2 -auth /run/lightdm/root/:1 -nolisten tcp
6437 root /usr/lib/Xorg :0 -seat seat0 -auth /run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch :2 -seat seat0 -auth /run/lightdm/root/:2 -nolisten tcp vt7 -novtswitch
❯ loginctl list-sessions
SESSION UID USER SEAT TTY
3 1000 myuser seat0
c1 958 lightdm seat1
c2 958 lightdm seat2
3 sessions listed.
Since it looks like it's just appending the command with whatever it wants, I've tried setting xserver-command
to something inane like sleep 1; /usr/lib/Xorg
for seat1
and 2
but that just breaks seat1
and 2
:
❯ echo $DISPLAY
:0
❯ ps axo pid,user,args | grep xorg
6064 root /usr/lib/Xorg :0 -seat seat0 -auth /run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
❯ loginctl list-sessions
SESSION UID USER SEAT TTY
3 1000 myuser seat0
1 sessions listed.
I can only assume it's just whatever command executes or completes first gets :0 and so on.
Is there a way to force seat0
to display :0
, seat1
to :1
and seat2
to :2
?
Alternatively, is there a way to delay the launch of seat1
and 2
so seat0
always gets first crack at :0
?
SHawarden
(554 rep)
Oct 21, 2022, 08:53 AM
• Last activity: Mar 28, 2024, 04:31 AM
1
votes
1
answers
296
views
nvidia (proprietary) output not resuming after suspend
After suspend+resume, the display connected to my NVidia card (3050 ti) with proprietary drivers on Manjaro keeps getting 'no signal' about 95% of the times. All of the standard tricks (updating bios, toggling nvidia-drm.modeset, various other kernel flags, various XOrg options, using NVidia's custo...
After suspend+resume, the display connected to my NVidia card (3050 ti) with proprietary drivers on Manjaro keeps getting 'no signal' about 95% of the times. All of the standard tricks (updating bios, toggling nvidia-drm.modeset, various other kernel flags, various XOrg options, using NVidia's custom systemd suspend service, ..).
I'm using the NVidia card as part of the second seat of a multi-seat setup (using loginctl and lightdm). This may be related, as the second seat doesn't allow Virtual Terminal switching, which the NVidia custom systemd suspend service seems to be using to trick XOrg into reinitializing.
(After many hours, I've found a workaround. I'm posting this to save others the headache, and perhaps to discover a less hacky solution.)
Frank
(21 rep)
Sep 16, 2023, 01:31 PM
• Last activity: Sep 16, 2023, 02:08 PM
5
votes
0
answers
879
views
How to attach virtual (SSH) session to (systemd) seat0?
I am logging in on a PC using SSH and need to access some devices which are attached to seat0. `loginctl` shows that my session is not attached to any seat: ``` SESSION UID USER SEAT TTY 50 1000 septatrix pts/0 ``` The devices are added to the seat using udev rules though I explicitly do not want to...
I am logging in on a PC using SSH and need to access some devices which are attached to seat0.
loginctl
shows that my session is not attached to any seat:
SESSION UID USER SEAT TTY
50 1000 septatrix pts/0
The devices are added to the seat using udev rules though I explicitly do not want to make the device world read-/writeable or add it to another group.
Reading though the man pages for systemd-logind
, pam_systemd
etc did not lead me anywhere helpful but only confirmed the fact that virtual session are not assigned any seat be default.
However I was unable to find information how it is determined if a session is "virtual" or whether it can be configured for pam/logind/udev...
Septatrix
(161 rep)
Jul 14, 2022, 12:13 PM
• Last activity: Aug 8, 2023, 11:03 AM
1
votes
1
answers
1567
views
Writing udev rules - wildcards?
Is it possible to use wildcard characters when writing udev rules? I have multiseat and i want to assign every device (keyboard, mouse etc) that gets connected to a certain USB hub - or even better, a specific port on the front of the PC - to seat1. It's kind of cumbersome to have to redo new rules...
Is it possible to use wildcard characters when writing udev rules? I have multiseat and i want to assign every device (keyboard, mouse etc) that gets connected to a certain USB hub - or even better, a specific port on the front of the PC - to seat1. It's kind of cumbersome to have to redo new rules each time i swap stuff around or don't remember in which USB slot each device was connected.
Using just simple udev rules, as generated by 'loginctl attach' command:
TAG=="seat", ENV{ID_FOR_SEAT}=="usb-pci-0000_00_14_0-usb-0_5_3", ENV{ID_SEAT}="seat1"
delt
(111 rep)
Jul 26, 2023, 03:50 AM
• Last activity: Jul 26, 2023, 05:59 PM
2
votes
0
answers
986
views
udev rule to attach bluetooth headset to seat
I have a multiseat setup using `loginctl` and I'm having issues with a bluetooth headset. The USB bluetooth dongle in on `seat0` but my display number `:N` changes randomly on restarts and my headset attaches to whatever display number it attached to last time, or `seat0` if there's no other active...
I have a multiseat setup using
loginctl
and I'm having issues with a bluetooth headset.
The USB bluetooth dongle in on seat0
but my display number :N
changes randomly on restarts and my headset attaches to whatever display number it attached to last time, or seat0
if there's no other active seats.
Connecting the headset gives me...
❯ sudo udevadm -d monitor -p
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[11828.639536] add /devices/pci0000:00/0000:00:05.0/0000:06:00.0/usb8/8-2/8-2:1.0/bluetooth/hci0/hci0:12 (bluetooth)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:05.0/0000:06:00.0/usb8/8-2/8-2:1.0/bluetooth/hci0/hci0:12
SUBSYSTEM=bluetooth
DEVTYPE=link
SEQNUM=5747
UDEV [11828.643688] add /devices/pci0000:00/0000:00:05.0/0000:06:00.0/usb8/8-2/8-2:1.0/bluetooth/hci0/hci0:12 (bluetooth)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:05.0/0000:06:00.0/usb8/8-2/8-2:1.0/bluetooth/hci0/hci0:12
SUBSYSTEM=bluetooth
DEVTYPE=link
SEQNUM=5747
USEC_INITIALIZED=11828643524
SYSTEMD_ALIAS=/sys/subsystem/bluetooth/devices/hci0:12
SYSTEMD_WANTS=bluetooth.target
SYSTEMD_USER_WANTS=bluetooth.target
TAGS=:systemd:
CURRENT_TAGS=:systemd:
KERNEL[11830.906947] add /devices/virtual/input/input74 (input)
ACTION=add
DEVPATH=/devices/virtual/input/input74
SUBSYSTEM=input
PRODUCT=5/0/0/0
NAME="NC-25 (AVRCP)"
PHYS="5c:f3:70:6a:03:6c"
PROP=0
EV=100007
KEY=2fc800 145200000000 0 10300 49e800000c00 e16800000000f f810000010000ffc
REL=0
MODALIAS=input:b0005v0000p0000e0000-e0,1,2,14,k71,72,73,8A,8B,A3,A5,A6,A7,A8,AB,AE,C8,C9,D0,161,164,166,16A,16C,18B,18E,18F,190,191,192,193,195,ramlsfw
SEQNUM=5748
KERNEL[11830.907167] add /devices/virtual/input/input74/event265 (input)
ACTION=add
DEVPATH=/devices/virtual/input/input74/event265
SUBSYSTEM=input
DEVNAME=/dev/input/event265
SEQNUM=5749
MAJOR=13
MINOR=265
UDEV [11831.445222] add /devices/virtual/input/input74 (input)
ACTION=add
DEVPATH=/devices/virtual/input/input74
SUBSYSTEM=input
PRODUCT=5/0/0/0
NAME="NC-25 (AVRCP)"
PHYS="5c:f3:70:6a:03:6c"
PROP=0
EV=100007
KEY=2fc800 145200000000 0 10300 49e800000c00 e16800000000f f810000010000ffc
REL=0
MODALIAS=input:b0005v0000p0000e0000-e0,1,2,14,k71,72,73,8A,8B,A3,A5,A6,A7,A8,AB,AE,C8,C9,D0,161,164,166,16A,16C,18B,18E,18F,190,191,192,193,195,ramlsfw
SEQNUM=5748
USEC_INITIALIZED=11830908664
ID_INPUT=1
ID_INPUT_KEY=1
ID_BUS=bluetooth
TAGS=:seat:
CURRENT_TAGS=:seat:
UDEV [11832.553850] add /devices/virtual/input/input74/event265 (input)
ACTION=add
DEVPATH=/devices/virtual/input/input74/event265
SUBSYSTEM=input
DEVNAME=/dev/input/event265
SEQNUM=5749
USEC_INITIALIZED=11831463188
ID_INPUT=1
ID_INPUT_KEY=1
ID_BUS=bluetooth
LIBINPUT_DEVICE_GROUP=5/0/0:5c:f3:70:6a:03:6c
MAJOR=13
MINOR=265
TAGS=:power-switch:
CURRENT_TAGS=:power-switch:
loginctl
creates udev rules to attach specific devices to specific seats, but the bluetooth device doesn't show up at all on loginctl seat-status seat0
, only the bluetooth adaptor shows up, but that's already on seat0
by default. None of the sound devices match the bluetooth headset:
❯ loginctl seat-status seat0 | grep sound
├─/sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:00.0/0000:03:00.1/sound/card3
│ sound:card3 "HDMI_1"
│ ├─/sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:00.0/0000:03:00.1/sound/card3/input27
│ ├─/sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:00.0/0000:03:00.1/sound/card3/input28
│ ├─/sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:00.0/0000:03:00.1/sound/card3/input29
│ ├─/sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:00.0/0000:03:00.1/sound/card3/input30
│ └─/sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:00.0/0000:03:00.1/sound/card3/input31
├─/sys/devices/pci0000:00/0000:00:14.2/sound/card2
│ sound:card2 "SB"
│ ├─/sys/devices/pci0000:00/0000:00:14.2/sound/card2/input40
│ ├─/sys/devices/pci0000:00/0000:00:14.2/sound/card2/input41
│ ├─/sys/devices/pci0000:00/0000:00:14.2/sound/card2/input42
│ ├─/sys/devices/pci0000:00/0000:00:14.2/sound/card2/input43
│ ├─/sys/devices/pci0000:00/0000:00:14.2/sound/card2/input44
│ ├─/sys/devices/pci0000:00/0000:00:14.2/sound/card2/input45
│ ├─/sys/devices/pci0000:00/0000:00:14.2/sound/card2/input46
│ └─/sys/devices/pci0000:00/0000:00:14.2/sound/card2/input47
Can I write a udev rule similar to the ones that loginctl
creates in order to force the bluetooth headset to always bind to seat0
?
❯ cat /etc/udev/rules.d/72-seat-sound-pci-0000_04_00_1.rules
TAG=="seat", ENV{ID_FOR_SEAT}=="sound-pci-0000_04_00_1", ENV{ID_SEAT}="seat1"
SHawarden
(554 rep)
Oct 26, 2022, 05:16 AM
6
votes
0
answers
3203
views
Why does other user stay logged in on seat0 and prevent me to hibernate?
Using openSUSE Leap 15.1 with KDE. I log in as `user1` then switch to `user2` and log that on off again. Hibernating as `user1` was until recently no problem (if I logged off `user2`). But now I get this: $ systemctl hibernate User user2 is logged in on seat0. Please retry operation after closing in...
Using openSUSE Leap 15.1 with KDE.
I log in as
user1
then switch to user2
and log that on off again.
Hibernating as user1
was until recently no problem (if I logged off user2
).
But now I get this:
$ systemctl hibernate
User user2 is logged in on seat0.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl hibernate -i'.
The w
- and users
-commands show only user1
.
$ users
user1 user1
$ w
10:24:52 up 30 min, 2 users, load average: 0,32, 0,22, 0,23
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user1 tty7 :0 09:56 30:37 34.94s 0.03s /bin/sh /usr/bin/startkde
user1 pts/0 :0 10:03 4.00s 0.04s 0.00s w
loginctl
shows
$ loginctl
SESSION UID USER SEAT TTY
2 1000 user1 seat0
4 1001 user2 seat0
6 1000 user1 seat0
Why is that? And how can I get back to the hasslefree previous behavior?
**EDIT:**
I know I can do sudo loginctl kill-session 4
. But that is just dealing with a reappearing problem I want to go for good.
Lester
(183 rep)
Jan 5, 2020, 09:28 AM
• Last activity: Oct 21, 2022, 07:28 AM
1
votes
0
answers
460
views
X11 multiseat configuration
I am trying to achieve a Windows-like multiseat effect on my Linux machine with Xorg. My goals are: - Each user has a single graphical session where they run their graphical applications. - They can disconnect from their session while keep all their applications running. - They can access their sess...
I am trying to achieve a Windows-like multiseat effect on my Linux machine with Xorg. My goals are:
- Each user has a single graphical session where they run their graphical applications.
- They can disconnect from their session while keep all their applications running.
- They can access their session from either console (screen + keyboard + mouse) or remote (VNC). Once they connect from one place,other places are disconnected. In short, they can only connect to their session from one place.
- When they switch from console to remote or vice versa, their graphical applications are still running without being interrupted.
- Once a console user disconnect and connect their session using VNC, another user can use the console simultaneously, so the system is running two sessions.
- Users can logon completely using VNC, i.e. showing the display manager over VNC, and creating a session if needed, without using the console.
I tries to access my desktop using x11vnc(1), and it works. However, my screen is shared on both the console and my remote VNC client. This is not what I would like. Also, using x11vnc(1) does not support the multi-user scenario.
I Googled and found that this is a technique called "multiseating", but this technology seems no longer actively used because people no longer need to connect to a shared Unix machine (correct me if I am wrong).
Are there any ways to achieve this? Thanks very much for any help provided.
My specs:
- GNU / Linux with Xorg
- Display manager: SDDM
- Window manager: i3wm
- Session manager: systemd-logind
Yuuta Liang
(21 rep)
Sep 24, 2022, 09:45 PM
• Last activity: Sep 24, 2022, 09:50 PM
2
votes
0
answers
49
views
Limit mouse / pen tablet to a single app (i.e. Krita)
Multi seating use case (Using Kubuntu 22.04.1 / Plasma5) with single display: - Huge 65/4K Desktop Screen with plenty of space - Second mouse/Tablet/Keyboard USB input devices plugged on the same computer (and X session) - Second seat / user that wants to use an application with his own input device...
Multi seating use case (Using Kubuntu 22.04.1 / Plasma5) with single display:
- Huge 65/4K Desktop Screen with plenty of space
- Second mouse/Tablet/Keyboard USB input devices plugged on the same computer (and X session)
- Second seat / user that wants to use an application with his own input devices, without interfering with the first user (me) using other apps on other areas of the same desktop.
What's the best way to achieve this ?
The dream would be to be able to "ignore" input events from those secondary input devices for the whole desktop, and be able to set a Window or Application rule to give those input devices to only one (or more) application. I'm using KDE with has per application possible ruleset, but nothing about input / mice / keyboards.
An option might be to unregister the input device from XOrg, start a VM (with KVM/Qemu or Virtualbox), and attach the needed devices (USB) to the VM. This is a bit too bad to require a full VM for this, but might be a viable option. If it's possible, would you have a howto ?
Do you see another option ?
Pivert
(131 rep)
Aug 3, 2022, 09:18 AM
22
votes
2
answers
8291
views
Can one PC be used by two users at the same time via dual-monitor?
Since modern PCs can use two screens at the same time I wonder if it is possible to plug in two keyboards and mouses as well to have the two screens run two (more or less) independent X-sessions at once?
Since modern PCs can use two screens at the same time I wonder if it is possible to plug in two keyboards and mouses as well to have the two screens run two (more or less) independent X-sessions at once?
Tobias Kienzler
(9574 rep)
Dec 30, 2010, 04:26 PM
• Last activity: Jul 11, 2022, 03:00 PM
3
votes
1
answers
1086
views
Almost multiseating with Xephyr
With swaywm I'm almost multiseating (two people simultaneously using the same computer) with two keyboards, two mice and **one** GPU with two outputs. At the start of the sway session, one nested X session is opened with Xephyr querying the localhosts XDMCP server (enabled in lightdm) In short, thes...
With swaywm I'm almost multiseating (two people simultaneously using the same computer) with two keyboards, two mice and **one** GPU with two outputs.
At the start of the sway session, one nested X session is opened with Xephyr querying the localhosts XDMCP server (enabled in lightdm)
In short, these are the commands executed:
swaymsg "input abc:xyz:mouse map_to_output VGA-1"
swaymsg "seat seat1 attach abc:xyz:keyboard"
swaymsg "seat seat1 attach abc:xyz:mouse"
swaymsg "seat seat1 shortcuts_inhibitor enable"
Xephyr -query 127.0.0.1 -glamor -screen 1280x720 -noreset -no-host-grab -name Xephyr1 :1 &
sleep 3
swaymsg "[instance=Xephyr1] move window to output VGA-1"
swaymsg "[instance=Xephyr1] focus"
swaymsg "floating disable"
Xephyr successfully opens a new session, then it's moved to the proper monitor and one of the mice moves only there, and that's it.
Now, how could I capture the keyboard and mouse keypresses from the input devices attached to "seat1" only to that window/container regardless of focus?
Xephyr -keybd/-mouse driver settings don't work at all, neither does -seat.
I know how to multiseat with multiple GPUs and loginctl defining seats, but my goal is to multiseat with one GPU in any recent Linux distribution and not in old, patched ones.
igorkattar
(81 rep)
Apr 28, 2022, 05:43 PM
• Last activity: May 14, 2022, 01:54 AM
0
votes
0
answers
117
views
Why nvidia card get poweroff after logout on a multiseat arch system?
Recently I moved to arch Linux from Ubuntu 21.04. I am using a multi seat option for Ubuntu as well as archlinux. When I am using Ubuntu linux, my seat1 can logout without any problem. But in arch Linux when I logout from seat1 my NVIDIA card get powered-off. It seems like I am missing some sort of...
Recently I moved to arch Linux from Ubuntu 21.04. I am using a multi seat option for Ubuntu as well as archlinux. When I am using Ubuntu linux, my seat1 can logout without any problem. But in arch Linux when I logout from seat1 my NVIDIA card get powered-off. It seems like I am missing some sort of package or configuration that Ubuntu give me out-of-box. Pls highlight what I am missing and why this happening?
Bapi
(101 rep)
May 17, 2021, 09:18 AM
1
votes
0
answers
4354
views
How to create a multi-seat with one graphics card (having three DisplayPorts / HDMI)?
I am planning to build a reasonably powerful PC, for my needs (scientific calculations, as well as general computing needs; no gaming). And I will have a couple of collaborators coming to join me. I have realized it could be useful to have a multi-seat Linux operating system. If I understand correct...
I am planning to build a reasonably powerful PC, for my needs (scientific calculations, as well as general computing needs; no gaming).
And I will have a couple of collaborators coming to join me.
I have realized it could be useful to have a multi-seat Linux operating system. If I understand correctly, a multi-seat operating system allows all users to work independently (with their own monitor, mouse and keyboard) and concurrently.
However, when I look for documentation, I see lots of old webpages, and the information is a bit confusing (to me, at least).
For example, I read the statement that each user needs a graphics card. But for example, if we have a single GPU, and this GPU had 3 DisplayPorts (or HDMI), couldn't this GPU be used for the three users? Note: I have read Zephyr allows to have a multi-seat with a single GPU, but I want to avoid third-party applications, I would like to rely only on Linux.
If it is not possible, has anybody tried a Threadripper (or any other board with enough PCIe lanes) with say 3 passive, low power GPU, like the nvidia GT 730 for example?
Edit: I have changed the word "multi-user" for "multi-seat", given a recommendation in the replies (thank you).
BlackSwan
(11 rep)
Apr 13, 2021, 02:13 PM
• Last activity: Apr 13, 2021, 03:17 PM
2
votes
0
answers
158
views
PulseAudio ignoring seat assignment when plugging in USB audio device
I'm trying to create a multiseat setup for two seats, with a monitor, keyboard, mouse, and USB soundcard for each seat. With my primary user logged in, I created a second seat with its own monitor, keyboard, and mouse using loginctl attach as described in https://wiki.archlinux.org/index.php/Xorg_mu...
I'm trying to create a multiseat setup for two seats, with a monitor, keyboard, mouse, and USB soundcard for each seat. With my primary user logged in, I created a second seat with its own monitor, keyboard, and mouse using loginctl attach as described in https://wiki.archlinux.org/index.php/Xorg_multiseat . GDM started on that seat automatically. I have everything for the second seat plugged into a powered USB hub, and I assigned that hub to the second seat, as recommended in the above link:
>It would be more flexible to add a specific USB port to the seat instead, allowing any device plugged into that USB port to be assigned to the seat (keyboard, mouse, USB sound card, etc.) Here, two USB ports are assigned to the seat, which you can see has just come from the same list above with the end part removed:
I logged in as a separate user on on that seat. I can see two pulseaudio processes running, one for each seat, and I'm using the system default pulseaudio configuration for both users. If I do "loginctl seat-status seatnew", I see all devices plugged into that second hub listed as expected, including the audio device. When I unplug my USB audio device, and then plug it back in, it seems that both of the pulseaudio processes try to grab the device with their udev module, instead of just the one whose user is logged in at that seat.
I would expect Pulseaudio's udev module should be paying attention to the ID_SEAT, which I verified was assigned properly to the second seat using udevadm info. Why is the wrong pulseaudio process sometimes picking up the audio device plugged into the second seat USB hub?
davex_
(51 rep)
Dec 9, 2020, 12:07 AM
1
votes
1
answers
579
views
Run X11 but leave tty1 available for console logins
Is it possible to run X11 but leave the tty1 console available for logging in, with a different screen and keyboard? Like a multi-seat system, with one seat running X11 and the other seat running a normal console on tty1? The reason I ask is that I am using an old server as my PC, and the onboard Ma...
Is it possible to run X11 but leave the tty1 console available for logging in, with a different screen and keyboard? Like a multi-seat system, with one seat running X11 and the other seat running a normal console on tty1?
The reason I ask is that I am using an old server as my PC, and the onboard Matrox video card is too slow for anything useful. So I added a PCI-E nVidia video card which allows me to do what I need, and I can bring up X11 on this without any issues. The onboard Matrox card is not part of the X11 config and is ignored, however it still goes blank when X11 loads as the active TTY gets changed. The machine boots on the Matrox card, and the Linux kernel loads here too, with the nVidia card remaining blank until X11 loads.
The server has the ability to use VNC to get a remote console, so you can view the boot process, access the BIOS, etc. from a remote machine. When Linux boots to the console, this can also be accessed via the VNC connection. However the VNC connection can only display the contents of the onboard Matrox card, it can't see anything that's on the nVidia card. So as soon as I load X11, the remote console goes blank, just like any monitor connected to the Matrox card.
Since the VNC connection appears to Linux as having its own USB keyboard and mouse, along with a separate video card not used by X11, there are enough resources to keep the tty1 console active while X11 is loaded, but I can't see how to set this up. I'd like to be able to use VNC as a backup way of remotely accessing the machine via its console if I can't connect to it over the network for some reason (since it has a second Ethernet connection just for this remote management access.)
I have told X11 to only use the nVidia card and the physical keyboard and mouse, so how can I tell the Linux console to stay active on tty1 using the Matrox card with the USB virtual keyboard and mouse?
(I have tried configuring X11 on both cards and this works fine, but because the Matrox card is so slow it's next to unusable, even only running an xterm, so I'd get more use out of it leaving it as a native Linux console. I also tried disabling the onboard video in the BIOS setup, but this just causes the Matrox card to remain blank all the time. The boot messages don't appear on the nVidia card, and the remote console can't see anything either.)
---
**Duplicate clarification:** There are plenty of questions about how to run multiseat X11, but these cover running X11 on each seat. I am instead trying to work out how to run the native Linux console on one of the seats, which is where this question is unique.
If you can find another question that covers running the native VGA text-mode Linux console on one of the seats please post a link as I have not been able to find one.
Malvineous
(7395 rep)
May 30, 2020, 02:03 PM
• Last activity: Sep 20, 2020, 01:14 PM
5
votes
0
answers
901
views
How to make udev not assign seat to bluetooth keyboard
I would like to use a bluetooth keyboard as a remote control (PIN entry pad for opening an electric strike) instead of as an actual keyboard for console input. I can get access to the bluetooth keyboard just fine using the following udev rule: ENV{ID_BUS}=="bluetooth", ATTRS{phys}=="00:1a:7d:e3:76:6...
I would like to use a bluetooth keyboard as a remote control (PIN entry pad for opening an electric strike) instead of as an actual keyboard for console input. I can get access to the bluetooth keyboard just fine using the following udev rule:
ENV{ID_BUS}=="bluetooth", ATTRS{phys}=="00:1a:7d:e3:76:60", ENV{ID_INPUT_KEYBOARD}=="?*", GROUP="uucp", SYMLINK+="btremote"
This puts the device node in the
uucp
group (which is the group that needs access to the key events), and also creates a symbolic link from /dev/btremote
to /dev/input12
or whichever is the appropriate device (since the number seems to vary). So far so good.
Unfortunately, the keyboard and a built-in pointing device _also_ get attached to to my X session, and show up when I run loginctl seat-status seat0
. This is annoying and dangerous, because I plan to leave the remote in a less secure location than my console and definitely don't want people typing at my console (or using the pointing device also built into this keyboard).
I've tried a number of variations of:
ATTRS{phys}=="00:1a:7d:e3:76:60", TAG-="seat", ENV{ID_AUTOSEAT}=""
to try to exclude the device from getting attached to my X session, but nothing works with udev. As a workaround, I know I can create a bogus seat and loginctl attach
the keyboard to seat1
, but since this is a security issue, I'd rather have a simple udev rule that completely excludes any bluetooth device matching that MAC address as something untrusted that nothing automatic can happen to.
My question is how this seat assignment mechanism works and how I can securely exclude a set of devices from consideration (a set because the keyboard actually shows up as 4 input devices). In case it's relevant, I'm using arch linux with systemd-242.32.
**update** I'm adding the rules to a file called /etc/udev/rules.d/72-btremote.rules
, so that it runs between /usr/lib/udev/rules.d/71-seat.rules
and /usr/lib/udev/rules.d/73-seat-late.rules
. The former seems to be where the seat
tag gets added, while the latter seems to assign the seat number, but I admittedly do not understand how this works.
**update 2** After a bunch more playing around, I was able to get what I wanted with
ATTRS{phys}=="00:1a:7d:e3:76:60", ENV{ID_SEAT}="none"
This still feels ugly because I think it's creating a seat called "none" instead of disabling the seat tag (or at least would be if any other device had the master-of-seat
tag). I still don't understand what's going on or why TAG-="seat"
didn't work, so am still leaving this question unanswered in the hopes that someone else can explain.
user3188445
(5539 rep)
Jul 20, 2019, 10:56 PM
• Last activity: Jul 21, 2019, 04:50 AM
3
votes
1
answers
1231
views
X11 multi-pointer, pointer conflicts
In an attempt to continue using my PC whilst automating a GUI application, I have created 2 pointers on my machine using xinput, one being controlled by me, the other by pyautogui. on my system this is done by: xinput create-master mynewpointer xinput reattach 10 11 I use master pointer 11 pyautogui...
In an attempt to continue using my PC whilst automating a GUI application, I have created 2 pointers on my machine using xinput, one being controlled by me, the other by pyautogui.
on my system this is done by:
xinput create-master mynewpointer
xinput reattach 10 11
I use master pointer 11
pyautogui uses default pointer 2
However the pointers conflict with each other in various ways, snatching focus from each other being one of the major problems.
Even using xinput --map-to-output or --set-cp does not work, the pointer still "flicks" back from the window/monitor being tested when my pointer grabs focus on a new window.
Is there anyway to seperate these pointers?
keda
(82 rep)
May 18, 2016, 11:22 PM
• Last activity: Jul 7, 2019, 03:07 PM
0
votes
1
answers
1194
views
xorg multi-GPU - no keyboard input on second screen
I'm running Ubuntu 19.04 (Disco) on a machine with two video cards and three monitors, an NVidia 1080ti in the top slot and a Vega 64 in the bottom slot. Two of the monitors are plugged into the display ports of the Vega 64, one HDMI in the NVidia 1080ti. When I let Ubuntu autodetect the graphics se...
I'm running Ubuntu 19.04 (Disco) on a machine with two video cards and three monitors, an NVidia 1080ti in the top slot and a Vega 64 in the bottom slot. Two of the monitors are plugged into the display ports of the Vega 64, one HDMI in the NVidia 1080ti.
When I let Ubuntu autodetect the graphics setup (with no xorg.conf file), then Gnome extends across all three monitors and both video cards just fine, but it only renders on one of them (in other words, anything run on the display ports is using the nvidia or nouveau driver - like the rendering is being passed through).
So I came up with an xorg.conf file (below) that does close to what I need but has a few problems. The biggest one is that when I start an xterm on one of the other screens
DISPLAY=:0.1 xterm
, the mouse works just fine, but the keyboard doesn't work. This file is very similar to what Xorg -configure
generates. What am I doing wrong? How do I get the keyboard to work in windows on Screen1
or Screen2
?
Section "InputDevice"
Identifier "keyboard0"
Option "Device" "/dev/input/event10"
Option "Xinerama" "On"
Driver "evdev"
EndSection
Section "InputDevice"
Identifier "mouse0"
Option "Device" "/dev/input/event4"
Driver "evdev"
EndSection
Section "Monitor"
Identifier "HDMI-1"
EndSection
Section "Monitor"
Identifier "DisplayPort-3"
EndSection
Section "Monitor"
Identifier "DisplayPort-4"
EndSection
Section "Device"
Identifier "Device1"
Driver "amdgpu"
BusID "PCI:41:00"
EndSection
Section "Device"
Identifier "Device0"
Driver "nouveau"
BusID "PCI:38:00"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "HDMI-1"
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "DisplayPort-3"
EndSection
Section "Screen"
Identifier "Screen2"
Device "Device1"
Monitor "DisplayPort-4"
EndSection
Section "ServerLayout"
Identifier "seatx"
Screen 0 "Screen0"
Screen 1 "Screen1" LeftOf "Screen0"
Screen 2 "Screen2" RightOf "Screen0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "ServerFlags"
Option "AutoAddGPU" "off"
Option "AutoAddDevices" "false"
EndSection
Brad
(103 rep)
May 12, 2019, 08:59 PM
• Last activity: May 29, 2019, 02:04 AM
Showing page 1 of 20 total questions