Window-Manager
幾乎與 Xephyr 的多人座位
使用 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 環境中。