Com o swaywm sou quase multiseating (duas pessoas simultaneamente usando o mesmo computador) com dois teclados, dois mouses e uma GPU com duas saídas.
No início da sessão sway, uma sessão X aninhada é aberta com o Xephyr consultando o servidor XDMCP localhosts (habilitado no lightdm)
Resumindo, estes são os comandos executados:
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"
O Xephyr abre com sucesso uma nova sessão, então é movido para o monitor apropriado e um dos mouses se move apenas para lá, e pronto.
Agora, como eu poderia capturar os pressionamentos de teclas do teclado e do mouse dos dispositivos de entrada conectados a "seat1" apenas para essa janela/contêiner, independentemente do foco?
As configurações do driver Xephyr -keybd/-mouse não funcionam, nem -seat.
Eu sei como multiseat com várias GPUs e loginctl definindo assentos, mas meu objetivo é multiseat com uma GPU em qualquer distribuição Linux recente e não em antigas e corrigidas.
Consegui funcionar em um ambiente chroot, não o que eu queria, mas pelo menos não estou quebrando o sistema host e ao mesmo tempo não exigindo muitos recursos adicionais, com uma VM por exemplo. Aqui o que eu fiz:
schroot e debootstrap instalados.
Adicionadas as seguintes linhas no final do arquivo /etc/schroot/schroot.conf para configurar um chroot.
Crie o diretório chroot e obtenha a distribuição desejada com os pacotes necessários
Execute o Xephyr em chroot com a linha.
Ok, o Xephyr se conecta ao servidor XDMCP aceitando apenas o teclado e o mouse definidos.
Observe que não passei os dispositivos com a opção -seat, acho que preciso do Udev para isso e não posso instalá-lo em um ambiente chroot.