与 Xephyr 几乎可以同时使用多个座位

与 Xephyr 几乎可以同时使用多个座位

使用 swaywm,我几乎可以使用两个键盘、两个鼠标和多个座位(两个人同时使用同一台计算机)GPU 有两个输出。

在 sway 会话开始时,会打开一个嵌套的 X 会话,其中 Xephyr 查询本地主机 XDMCP 服务器(在 lightdm 中启用)

简而言之,这些是执行的命令:

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 成功打开一个新会话,然后将其移动到正确的监视器,其中一只鼠标仅移动到那里,仅此而已。

现在,我如何从连接到“seat1”的输入设备捕获键盘和鼠标按键,仅捕获到该窗口/容器,而不管焦点如何?

Xephyr -keybd/-mouse 驱动程序设置根本不起作用,-seat 也不起作用。

我知道如何使用多个 GPU 进行多座操作并使用 loginctl 定义座席,但我的目标是在任何最新的 Linux 发行版中使用一个 GPU 进行多座操作,而不是在旧的、打过补丁的发行版中使用。

答案1

让它在 chroot 环境中工作,这不是我想要的,但至少我没有破坏主机系统,同时不需要太多额外的资源,例如虚拟机。这是我所做的:

安装了 schroot 和 debootstrap。

someuser:~$ sudo apt install debootstrap schroot

在末尾添加了以下行/etc/schroot/schroot.conf文件来配置 chroot。

[stretch]
type=directory
description=Debian stretch
message-verbosity=quiet
directory=/opt/stretch
root-users=root
root-groups=root
users=someuser
groups=someuser
preserve-environment=true

创建 chroot 目录并获得所需的发行版和所需的软件包

someuser:~$ sudo mkdir -p /opt/stretch
someuser:~$ sudo debootstrap --no-check-gpg --arch amd64 --variant=minbase --include=xserver-xephyr,libgl1-mesa-dri stretch /opt/stretch/ http://httpredir.debian.org/debian

使用该行运行 chroot 后的 Xephyr。

someuser:~$ schroot -c stretch -- Xephyr -query 127.0.0.1 -br -glamor -noreset -no-host-grab -keybd evdev,,device=/dev/input/event3,xkbmodel=pc105,xkblayout=br -mouse evdev,3,device=/dev/input/event2 -3button -zaphod -softCursor -output VGA-1 :2

好的,Xephyr 连接到 XDMCP 服务器,仅接受定义的键盘和鼠标。

请注意,我没有使用 -seat 选项传递设备,我猜我需要 Udev,而且我无法在 chroot 环境中安装它。

相关内容