LINUX.ORG.RU

multiseat desktop

 , ,


8

1

Всем привет! Поделюсь еще одним способом организации multiseat desktop (на xephyr).

Понадобилось мне настроить второе рабочее место дома. Решил не заморачиваться покупкой отдельного системника по ряду причин(шум, место, время на включение, потребление энергии, затраты на поддержку в актуальном состоянии). Купил второй монитор и клавиатуру+мышь. На видеокарте есть DVI и HDMI.

Сначала пытался настроить отдельный X-сервер на втором мониторе, но так как у меня оказались одинаковые клавиатуры, в половине случаев они менялись местами. Это оказалось не так то просто, с точки зрения настройки самого X сервера и связанных компонент(DM). К тому же каждая попытка требовала перезапуска DM и нередко ломала первый X-сервер. Забил на это решение и настроил с помощью Xephyr. Как выяснилось, он не требует никаких конфигов, может быть запущен всего несколькими командами.

На скриншоте(пришлось уменьшить, реальный размер 1920x2160), собственно, два рабочих пространства, физически они находятся на разных мониторах и управляются разными комплектами HID устройств. В качестве DE - дефолтный mate с тёмной темой. На нижнем рабочем столе опенсорсная игрушка teeworlds и inkscape на фоне. Терминала(tilda) не видно, выпадает по хоткею на полный экран.

Вот скрипт запуска, может кому пригодится:

#!/bin/bash
set -e
mo_l=/dev/input/by-id/usb-15d9_USB_OPTICAL_MOUSE-event-mouse
mo_r=/dev/input/by-id/usb-A4TECH_USB_Device-if01-event-mouse
kb_l=/dev/input/by-id/usb-USB_USB_Keykoard-event-kbd
kb_r=/dev/input/event0
KBD="evdev,,device=$kb_l,xkbrules=xorg,xkbmodel=evdev,xkblayout=ru,en;";
MOUSE="evdev,5,device=$mo_l";
bash -c 'sleep 5;setxkbmap -print | sudo -u sec_user xkbcomp - :1'&
DISPLAY=:0 sudo /usr/sbin/Xephyr :1 -ac -br -noreset -xinerama -tst -zaphod -nolisten TCPIP -screen 1920x1080+0+0 -keybd $KBD -mouse $MOUSE -dpi 92 &
sleep 1;
wmctrl -r Xephyr -e 0,0,1050,1920,1050 #G,X,Y,W,H
DISPLAY=:1 sudo -u sec_user mate-session

Из недостатков пока заметил, что при работе в inkscape внутри xephyr, иногда падает xephyr с какими то невнятными ошибками.

>>> Просмотр (1400x1575, 1443 Kb)

★★★

Проверено: JB ()

полезная вещь, я так же дома делаю, только вместо второго монитора, телек использую, с ноутом, на компе работаю, а на телеке сериалы или просто кино смотрю. клаву usbшную беспроводную , для телека использую.

ziperman2011 ()

Кстати о Xephyr - он у тебя по Alt-F4 молча закрывается?

И, если уж у тебя указана -ac, то настраивать клавиатуру можно без sudo:

xkbcomp :0 :1
tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)

Из недостатков пока заметил, что при работе в inkscape внутри xephyr, иногда падает xephyr с какими то невнятными ошибками.

Привет, я баг репорт, я сам не напишусь.

tazhate ★★★★★ ()
Ответ на: комментарий от tailgunner

Спасибо, работает) Да, закрывается, но пока не возникало неудобств, его окно в фокусе не часто оказывается.

disarmer ★★★ ()
Ответ на: комментарий от Porthos

На что? она именно так у меня в /dev/input и определяется.

С Xephyr кстати тоже путаются одинаковые клавиатуры в половине случаев, но тут плюс в том, что xephyr быстрее перезапустить чем DM

disarmer ★★★ ()

домашняя папка пользователя ...

..... facepalm

q11q11 ★★★★★ ()
Ответ на: комментарий от tazhate

Привет, я баг репорт, я сам не напишусь.

Привет, багрепорт. Спасибо, что ты есть. А ты не мог бы вернуть того человека, который тебя написал? А то он пропал и не отвечает (или перестал пользоваться и потерял интерес), а в тебе слишком мало данных для воспроизведения. Я поправил похожий баг, но не уверен, что это тот же, что описан в тебе. Мне что с тобой теперь делать? Закрыть или оставить открытым до скончания времён?

i-rinat ★★★★★ ()
Ответ на: комментарий от tazhate

*вы открыли сюжетную линию «баги не чинится годами, разработчикам на них плевать»*

i-rinat ★★★★★ ()

А звук как между местами поделили?

RedNikifor ★★ ()
Ответ на: комментарий от RedNikifor

Да, со звуком пришлось немного похачить конфиг /etc/asound.conf:

pcm.!default {
	type plug
	slave.pcm "dmixer"
}
pcm.dmixer  {
 	type dmix
 	ipc_key 1024
	ipc_key_add_uid 0
	ipc_perm 0660
 	slave {
		pcm "hw:0,0"
		period_time 0
		period_size 1024
		buffer_size 4096
		rate 44100
	}
	bindings {
		0 0
		1 1
	}
}
ctl.dmixer {
	type hw
	card 0
}
(Ключевой момент ipc_key_add_uid 0)

disarmer ★★★ ()
Ответ на: комментарий от Porthos

Ох лол, я и не замечал что там опечатка. Реально у меня в директории /dev/input/by-id/ есть usb-USB_USB_Keykoard-event-if01 и usb-USB_USB_Keykoard-event-kbd. Клавиатура какая то китайская gembird за чуть больше ста рублей.

disarmer ★★★ ()

Что за разноцветная муть вместо шрифтов?

Xintrea ★★★★★ ()

И что - зефир не тормозит? А почему нельзя просто было купить второй комп? Или производственная необходимость?

ktulhu666 ☆☆☆ ()
Ответ на: комментарий от Xintrea

Ш наверное Г, но я не ценитель) Практически дефолтный mate если что

disarmer ★★★ ()
Ответ на: комментарий от ktulhu666

Не, не тормозит(игры не пробовали внутри xephyr).

Второй комп это затраты на покупку, заморочки с установкой-поддержкой, место, шум, время запуска.

Самое главное - с отдельным компом невозможно, например, когда не нужен второй десктоп, запустить на нём фильм (ну или если только перетыкать разьём).

disarmer ★★★ ()
Ответ на: комментарий от disarmer

Второй комп это затраты на покупку, заморочки с установкой-поддержкой, место, шум, время запуска.

ИМХО, ТСО всё-равно меньше.

Самое главное - с отдельным компом невозможно, например, когда не нужен второй десктоп, запустить на нём фильм (ну или если только перетыкать разьём).

Покупаешь ещё монитор, не? Или KVM.

ktulhu666 ☆☆☆ ()
Ответ на: комментарий от ktulhu666

Почему со вторым системником TCO меньше?

Третий монитор, когда рядом стоит незадействованный?) kvm еще куда не шло)

disarmer ★★★ ()
Ответ на: комментарий от disarmer

Ключевой момент ipc_key_add_uid 0

Кстати, в дебиане это по дефолту.

aidaho ★★★★★ ()

А чем /dev/input/by-path/pci-0000\:00\:14.0-usb-0\:6\:1.0-event-kbd, например, не устраивает? Клавиатуры то от перезагрузки не меняют своего USB порта.

bkarm ()
Ответ на: комментарий от bkarm

Кстати да, так наверняка бы прокатило. Но уже одну клавиатуру сменил, слишком уж те хлипкие.

disarmer ★★★ ()
Ответ на: комментарий от disarmer

А Xephyr остался?

Удобство классического Multiseat через xorg.conf в том, что можно сделать xorg.1.conf, с прописанными для рабочего места устройствами, а другое (основное) - оставить без конфиг-файла, или, если он нужен, добавить Option «AutoAddDevices» «true», и можно спокойно менять устройства ввода, как и на ПК без Multiseat'a.

bkarm ()
Ответ на: комментарий от bkarm

xephyr остался, да.

С xorg.conf мне не понравилось то, что я не нашёл мануала/способа заставить lxdm запускать разные X-серверы там где они должны быть. Пришлось еще и менять dm на gdm. Ну и перезапуск lxdm после каждой попытки настройки.

disarmer ★★★ ()
Ответ на: комментарий от disarmer

Пришлось еще и менять dm на gdm

С какого? У меня в lightdm

Seats=Seat:0 Seat:1
[Seat:0]
xserver-command=/usr/bin/X -isolateDevice PCI:0:2:0 -nolisten tcp vt7  :0
[Seat:1]
xserver-command=/usr/bin/X -config /etc/X11/xorg.config -nolisten tcp -sharevts -novtswitch vt8 :1 
А в xorg.config дополнительно прописано
Section "Device"
    Identifier     "DeviceGame"
    Driver         "nvidia"
    BusID          "PCI:1:0:0"
    Option	   "ProbeAllGpus" "false"
EndSection

Section "ServerFlags"
	Option "AutoAddDevices"  "false"
	Option "AllowEmptyInput" "false"
	Option "AutoAddGPU"	 "false"
EndSection

Как с одной видеокартой сделать - наверное можно, там же есть PCI ID для каждого выхода? В настройке не так уж сложно, не нужно делать конфиг на каждое ребочее место, а только на одно, и второе запускать в автоматическом режиме.

bkarm ()
Ответ на: комментарий от bkarm

Нет, только один:

lspci|grep vga -i
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cedar [Radeon HD 5000/6000/7350/8350 Series]

С одной видеокартой вроде как можно сделать через xorg, но там дополнительные пляски с чем то нужны. Возможно я рано сдался с этим способом)

disarmer ★★★ ()

Еще я написал костыль, который периодически смотрит на idletime второго X-сервера, и если он больше 15 секунд то разворачивает mplayer на полный экран, если меньше 5 то сворачивает в окно.

disarmer ★★★ ()

вот смотрю на мультисетщиков — и мне их жалко..

ну почему бы просто не купить ещё один комп :)

шум, место, время на включение, потребление энергии, затраты на поддержку в актуальном состоянии

жиденькие аргументы какие-то.. :)

а поддержка в актуальном состоянии — только усложнится в случае multiseat :)

user_id_68054 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.