Window-Manager

幾乎與 Xephyr 的多人座位

  • May 14, 2022

使用 swaywm,我幾乎可以使用兩個鍵盤、兩個滑鼠和一個帶兩個輸出的 GPU 進行多座位(兩個人同時使用同一台電腦)。

在 sway 會話開始時,打開一個嵌套的 X 會話,Xephyr 查詢 localhosts 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 進行多座位,而不是在舊的、打更新檔的發行版中。

讓它在 chroot 環境中工作,這不是我想要的,但至少我沒有破壞主機系統,同時不需要太多額外的資源,例如使用 VM。這是我所做的:

安裝廢品和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

使用該行執行 chrooted 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 環境中。

引用自:https://unix.stackexchange.com/questions/700762