LINUX.ORG.RU

Xephyr multiseat помогите со «Змеем горынычем»

 , , ,


1

2

Приветствую!

После успешной реализации двух рабочих мест на одной машине на встроенной графике от intel (Multiseat на ubuntu 14.04 на карте Intel HD (VGA+DVI-D)) и более того почти пятилетняя проверка стабильности работы такой схемы, хочу запустить полноценного Змея горыныча на три рабочих места.

Но пока не получается стартануть Xephyr на 3-м мониторе (на втором стартует успешно). Вылазит такая вот портянка: https://pastebin.com/SVFz1e7D

Вот xorg.conf Горыныча: https://pastebin.com/WPHP63Qv Вот xrandr выводы всех мониторов: https://pastebin.com/dhbhH9tB

На «DISPLAY=:0.2» всё прекрасно запускается. Не запускается именно на «DISPLAY=:0.1», но если отключить (заремарить) «Screen 2 «RightScreen» 4000 0» - то Xephyr начинает работать на «Screen 1».

Причём Xephyr не запускается даже на DISPLAY=:0.0 (то есть на Главном экране). Даже если отключить другие два монитора (и в xorg.conf конечно тоже). Но если убить процесс Xephyr и попытаться запустить снова на DISPLAY=:0.1 то вылазит такая ошибка: https://pastebin.com/RwUv40Tf

Помогите пожалуйста. Очень хочу воплотить свою мечту с названием мифического персонажа из нашей Русской сказки. Думал, что получится по аналогии с Двухголовым, а ннет. Не всё так просто…

Думаю, что проблема в xorg.conf

Система ubuntu 20.04, DM: lxdm, sddm, Оконный менеджер: lxde, LXQt



Последнее исправление: babel (всего исправлений: 4)

user1@user1-ab350mds3hv2:~$ DISPLAY=:0.2 xrandr

AM4, два видеовыхода + еще чего-то ?!

Вот xorg.conf Горыныча: https://pastebin.com/WPHP63Qv

cat WPHP63Qv | grep -e Driver -e ZaphodHeads

	Driver      "kbd"
	Driver      "mouse"
        ### Available Driver options are:-
        Option     "ZaphodHeads"                "HDMI1"
	Driver      "intel"
        Option     "ZaphodHeads"                "DP2"
        Driver      "intel"
        Option     "ZaphodHeads"                "HDMI3"
        Driver      "intel"

Intel с тремя цифровыми видеовыходами ?!

Железо озвучивай.

Xephyr

Сейчас mainline это Xwayland, накладные расходы меньше.
Запускать можно например weston-ом (как из X-ов, так и из консоли).
Я правда особо не тестировал, там свои глюки (много).

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

«Железо озвучивай.» G5420/LGA1151v2/B365M-ITX/AC/Mini-ITX На надпись «user1@user1-ab350mds3hv2:~$ DISPLAY=:0.2 xrandr» - ab350mds3hv2 - это восстановленный архив ubuntu, установленной когда то на другую систему (мать).

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

https://www.intel.ru/content/www/ru/ru/support/articles/000025673/graphics.html

Подозреваю, что три дисплея просто не поддерживаются.
А DVI приделали, что аналоговый сигнал вывести.

Если удалить xorg.conf компьютер определяет все три монитора?

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

Всё прекрасно поддерживается, при чем в варианте HDMI+DP+SVGA(DVI-I) и HDMI+DP+DVI-D.

Да, если удалить xorg.conf все три дисплея работают. Да и с xorg.conf тоже работают. Проблема в том, что не запускается Xephyr ни на главном монике (LeftScreen) ни на 2-м (MiddleScreen), если подключены все три. На главном мониторе (LeftScreen) я запускаю Xephyr только для проверки. Так то он там и не нужен. Просто странно, что Xephyr запускается только на Последнем (RightScreen) мониторе, если подключены 3, и на 2-м (MiddleScreen), если подключены два моника.

Но если запустить Firefox, например, вместо Xephyr, то он разумеется, запустится, но в случае с xorg.conf к нему не подключиться и не поуправлять, так как сеанс/сессия графического окружения не запущена. То есть, я внутри Xephyr запускаю LXDE сеанс. И всё, там можно работать, захватив доп. клаву и мышь, и удалённо подключаться запустив, например x11vnc server, или можно просто NoMachine установить, и он сам будет запускать сервер для дистанционного управления, и при подключении выдавать запрос, на какой монитор подключаться.

babel
() автор топика
Ответ на: комментарий от arson

«Подозреваю, что три дисплея просто не поддерживаются.» Просто перед самой покупкой железа узнал, сколько дисплеев поддерживает проц (G5420) и чип матери (Intel® B365): https://ark.intel.com/content/www/ru/ru/ark/products/189763/intel-b365-chipset.html https://ark.intel.com/content/www/ru/ru/ark/products/135456/intel-pentium-gold-g5420-processor-4m-cache-3-80-ghz.html Параметр: Количество поддерживаемых дисплеев (3 и 3). Раньше с этим было сложнее и дороже на встроенной графике, сейчас дешевле. Не обязательно покупать Core i5, что бы получить поддержку 3 дисплеев.

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

Да, если удалить xorg.conf все три дисплея работают.

То есть ты можешь запустить Xephyr и таскать его окошко по всем трем мониторам (без дублирования на разных мониторах)?

arson ★★★★★
()
Последнее исправление: arson (всего исправлений: 1)
Ответ на: комментарий от arson

Убрал, xorg.conf, запустил ArandR, растащил мониторы друг за другом в одну линию, запустил Xephyr окне и там внутри сеанс под user2, перетащил на второй монитор, запустил ещё Xephyr окне и там внутри сеанс под user3, перетащил на третий монитор монитор. Так работает. И можно поидее xdotool и прочими запускать и растаскивать по нужному пространству, сделать скрипт, и всё будет чики пуки, НО курсор мыши пользователя, который работает без Xephyr (в живую), бегает по всем мониторам, а это будет мешать другим (соседним) работать. Нет, ну конечно можно и главного пользователя под Xephyr запустить, но смысл, у него ведь уже запущен сеанс под своим пользователем, надо создавать ещё одного. Хотя я слышал, что вроде можно программно ограничить область передвижения мыши, и даже убрать из панели окон убрать окна пользователей Xephyr, но это какие то лишние костыли, хотя и решение.

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

запустил Xephyr

Сравни Xephyr c Xwayland-ом

Тест:
Создай фалик ~/.config/weston.ini:

[shell]
panel-position=none

[output]
name=X1
mode=1280x720

Запусти weston/Xwayland/WM (WM свой): weston & sleep 0.5 && Xwayland :1 -nolisten tcp & sleep 0.5 && DISPLAY=:1 icewm-session &
И сравни выхлоп: vblank_mode=0 glxgears с Xephyr-ом (и с основной системой). Ну и mpv сравни (vaapi не забудь включить).

Несколько экземляров запускать от разных пользователей.

Единственная проблема, привязка клавы/мыши. Привязка то есть, но похоже она только для запуска weston-а из консоли (drm), и помимо клавы/мыши обязательно привязывается видеоадаптер (целиком), т.е. не годится.

Вроде была какая-то тулза для привязки к/м к X-окну, но найти не могу.

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

Если запускаешь от того же пользователя, что и запустил Xorg (но только один экземпляр), то лучше сделать глобально unset XDG_RUNTIME_DIR, а запускать, так:

XDG_RUNTIME_DIR=/run/user/$EUID weston & sleep 0.5 && XDG_RUNTIME_DIR=/run/user/$EUID Xwayland -nolisten tcp :1 & sleep 0.5 && DISPLAY=:1 icewm-session &

Иначе после запуска weston-а приложения с поддержкой wayland-а (geany, LO и т.п.) будут запускаться в Xwayland, даже если запущены в основной системе. А если запущены в Xwayland, будут вне X-сессии.

При запуске от другого пользователя (su -l <другой>), тоже надо запускать с XDG_RUNTIME_DIR (директория должна существовать).

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

Пока с wayland разбираться времени пока нет, оставлю на другой раз. Сейчас у меня всё взлетело без xorg.conf, но с настройкой xrandr при запуске состемы (настройку сделал с помощью ArandR), мониторы прикасаются углами по диагонали, основная мышка не перескакивает на другие мониторы (только через нижний правый угол). Но вот ведь не задача, теперь проблема с Xephyr в плане захвата мышки и клавиатуры. Пишет что проблемы с evdev - драйвер не найден. Что делать? Помню, я брал пакет xserver-xephyr (с поддержкой захвата клавы и мыши) из PPA Multiseat, но там поддерживаются только Убунту до версии 14.04. Где взять xserver-xephyr с патчем для Убунту 20.04? или может от 14.04 подойдёт?

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

Но вот ведь не задача, теперь проблема с Xephyr в плане захвата мышки и клавиатуры.

Похоже поддержку удалили - https://gitlab.freedesktop.org/xorg/xserver/-/commit/27819950e4158326e0f83a30f2e8968b932625ef

Пока с wayland разбираться времени пока нет

А придется :)
Хотя сюда похоже ее еще не завезли :(
Проще купить еще две видеокарты.

FIX (предыдущее сообщение):

лучше сделать глобально unset XDG_RUNTIME_DIR

Не, лучше запускать weston с именованным сокетом (а unset WAYLAND_DISPLAY):

weston -S WD1 & sleep 1 &&  WAYLAND_DISPLAY=WD1 Xwayland -nolisten tcp :1 & sleep 2 && DISPLAY=:1 icewm-session &

Тогда их можно запускать несколько от одного пользователя.
Правда, могут быть проблемы с программами, которые должны быть запущены в одном экземпляре.

mpv сравни (vaapi не забудь включить)

Во вложенном X-сервере лучше hwdec=vaapi-copy. Тестировал правда на AMD, но думаю на intel, то же самое будет.

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

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

== Для wayland ==
(применимо только для weston-а запущенного из консоли (drm-backend), X-ам и консоли на эти правила плевать).

Присваиваем клаво-мышам логические seat-ы с помощью udev-правил. Типа, /etc/udev/rules.d/99-test.seat1.rules:

ACTION=="add|change", KERNEL=="event[0-9]*", ENV{ID_VENDOR_ID}=="093a", ENV{ID_MODEL_ID}=="2510", ENV{WL_SEAT}="WL1"
ACTION=="add|change", KERNEL=="event[0-9]*", ENV{ID_VENDOR_ID}=="09da", ENV{ID_MODEL_ID}=="0006", ENV{WL_SEAT}="WL2"

Результат можно посмотреть через:

# libinput list-devices 
...
Seat:             seat0, WL1
...

seat0 - это физический seat (ID_SEAT), WL1 (по умолчанию ‘default’) - логический (WL_SEAT).
Физический seat работает только в «комплекте» с видеоадаптером (нам не подходит).
После присвоения логического seat-а и запуска weston-а появляется несколько мышей, но привязать их к чему-либо (окну, вложенному weston-у) у меня не получилось :(
Единственное что, клава из seat-а печатает в том окне куда ткнула мышка из того же seat-а. Можно печать на двух клавах одновременно.

== Для Xorg ==

Тоже можно создать кучу пар клаво-мышей. Создать новую master-пару:

xinput create-master WL1

Прокинуть туда физические устройства:

xinput reattach  <slave> <master>

Но дальше тоже затык.
Вроде есть какая-то команда xinput set-cp <window> <master>.
Я думал, что она привяжет мышку к окну, но нет, ничего не происходит.
Может нужна поддержка MPX на уровне WM? Не знаю.

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

Моё видение. Какие есть варианты:

  1. Поставить Ubuntu 16.04 - там ещё есть поддержка Multiseat через репозиторий Xephyr с evdev там работать будет. Но ОСь старая. Буквально сейчас её поддержка и заканчивается. Это не очень хорошо.
  2. Захватить от хоста мышку с клаваой можно через гостевую VirtualBox, но что туда внутрь поставить? Такую же тяжелую Ubuntu? Нужна более ли менее современная ОСь. Хотя проц вроде норм и памяти 16 Гб, виртуальную машину потянет. Нужно то всего лишь одну. На третий монитор хватит Xephyr без мыши и клавы (это в моём случае).
  3. Пробовать wayland / weston. Но тут есть затыки.
  4. Пробовать «собрать» (с патчем) или каким то другим образом присобачить xserver-xephyr с поддержкой evdev.

Очень странен один момент:

Если в консоли вызвать помощь по командам Xephyr, то среди этих команд можно найти следующее: [code] -mouse driver [,n,,options] Specify the pointer driver and its options (n is the number of buttons) -keybd driver [,,options] Specify the keyboard driver and its options [/code] … то есть поддержка подразумевается, раз эти команды указаны в справочнике команд…

  • в системе не был установлен пакет «xserver-xorg-input-evdev», я его установил, но толку ноль.

Походу тема с захватом клавы и мыши не востребована, печально Есть ещё такая инфа: http://report5.blogspot.com/2012/10/linux-building-xorg-kdrive-server.html

и вообще, если в команде «-keybd driver [,,options]» слово «driver» - что подразумевает? Может ли он использовать какие то другие драйвера кроме «evdev»? Тогда вопрос - какие?

Ещё такой момент: Когда запускаешь Xephyr первоначально в окне, то в заголовке окна прописываетя «Xephyr crtrl+shift grabs mouse and keyboyard», когда нажимаешь это сочетание, то мышь с клавой захватываются!!! НО захватываются все доступные пары, и даже если сперва захватить одну и позже подключить другую пару, то она тоже попадает под захват клавы и мышки. Значит захват всётаки работает!

Спасибо arson за помощь, варианты, ты уже не первый раз мне помогаешь. :) Спасибо!

babel
() автор топика
Последнее исправление: babel (всего исправлений: 2)
Ответ на: комментарий от babel

Да ладно, Xephyr такая тормозня, что не жалко.
Другое дело Xwayland: запустил в Xorg Xwayland, в Xwayland еще один Xwayland и в нем еще один, а шестеренок (vblank_mode=0 glxgears) меньше не становится :) (ну может пару процентов съело)
Главное, чтобы видеокарта не nvidia была.

Ну а привязка… не знаю, зачем-то же сделали возможность завести кучу мышеклав.

P.S. Кстати как там на intel-е? Ты запускал? Я тестировал на AMD (на intel-е запускал, но давно).

arson ★★★★★
()
Последнее исправление: arson (всего исправлений: 1)
Ответ на: комментарий от babel

Кстати, я решал немного другую задачу.
Пытался запустить несколько X-серверов (каждый со своей клаво-мышью) на одном мониторе.

А в твоем случае похоже можно обойтись вообще без вложенных X-серверов !
Просто запускаешь на каждом screen-е (:0.0, :0.1, :0.2, ) по одному WM.
Создаешь пару клаво-мышей (xinput create-master ..., xinput reattach ...).
Перемещаешь указатель одной мыши консольной командой на другой экран, фокусируешь ей какое-нибудь окно, после чего она там со своей клавой и живет.
Проблема в команде, xdotool mousemove --screen 1 1000 1000 может переместить только одну мышь ;) (надо еще что-то поискать)

Для домашнего компа сойдет.

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

А е, главное после того как сконфигурируешь мышки не передергивать :)
А то они на базу (:0.0) возвращаются.

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

А в твоем случае похоже можно обойтись вообще без вложенных X-серверов !

Вернул обратно xorg.conf Попробовал запустить от имени другого (user2) пользователя, но не стартует: DISPLAY=:0.2 startlxde

В лог валится следующее: nano /home/user2/.cache/lxsession/LXDE/run.log https://pastebin.com/wVJ00JJW

Да ладно, Xephyr такая тормозня, что не жалко.

Бывают моменты…

P.S. Кстати как там на intel-е? Ты запускал? Я тестировал на AMD (на intel-е запускал, но давно).

Wayland пока не запускал на Intel, надо пробовать…

Просто запускаешь на каждом screen-е (:0.0, :0.1, :0.2, ) по одному WM.

А от какого пользователя запускать? Я вроде и понимаю схему работы, но некоторые моменты у меня пробелы…

babel
() автор топика
Последнее исправление: babel (всего исправлений: 2)
Ответ на: комментарий от babel

Section «ServerLayout» Identifier «triplehead»

Screen      0  "LeftScreen" 0 0
Screen      1  "MiddleScreen" 2000 0
Screen      2  "RightScreen" 4000 0
InputDevice    "Mouse0" "CorePointer"
InputDevice    "Keyboard0" "CoreKeyboard"

EndSection

Мне кажется, что у меня ещё с самим xorg.conf есть проблемы в цифрах разметки Screen 1 и 2 (2000 0 и 4000 0). Тут что то не то. Нет у меня понимания в этой теме. https://pastebin.com/WPHP63Qv

babel
() автор топика
Последнее исправление: babel (всего исправлений: 2)
Ответ на: комментарий от babel

но не стартует: DISPLAY=:0.2 startlxde

Ну запусти что-нибудь попроще, xterm например.

А от какого пользователя запускать?

Я тестировал от одного. Попробуй просто запустить приложение от другого пользователя (без DISPLAY), если не дает, то man xhost

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

startlxde - это WM LXDE на базе openbox, вроде, удобный легковес, я им постоянно пользуюсь, раньше шел, как штатный оконный менеджер в Lubuntu, вот я к нему и привык с ubuntu 14.04, вместе с ним использую lxdm, как дисплей менеджер. Но вот установив новый Lubuntu 20.04 увидел, что там уже LXQt менеджер окон и sddm - дисплей менеджер. Можно и другой запустить, не проблема.

babel
() автор топика
Ответ на: комментарий от arson

Короч, в итоге пока сделал на VirtualBox одну голову, и третью голову на Xrphyr, так как там клавомыши не нужны - это информационное окно. Позднее выложу скрипт и параметры запуска. xorg.conf используется. Работает прекрасно. Понимаю, что это не идеальный (в плане ресурсов вариант), но зато работает.

babel
() автор топика
Последнее исправление: babel (всего исправлений: 1)
Ответ на: комментарий от babel

Сейчас на VirtualBox работает та же тяжелая убунту. У меня есть идея. Раз проблема только с захватом клавомыши, то можно использовать в VirtualBox (раз он это умеет делать) лёгкую гостевую ОС, тоже на базе Linux, например тот же thinstation. На thinstation будет сразу при старте запускаться клиент например NoMachine (или VNC), и подключаться к тому же Xephyr, с уже запущенным сеансом WM (DE), в моём случае startlxde (LXDE). Это дало бы разгрузку памяти места на диске. Так сказать, «костыль» бы здорово уменьшился. Ну что поделать, если на второй и третий монитор не хочет стартовать WM (DE), а Xephyr больше не поддерживает захват клавомыши. Думаю дальше… Может всётаки какая нибудь WM (DE) запустится «наголо» на втором и третьем мониторе… Или может у меня xorg.conf как то не верно настроен и из-за этого не получается запустить DE startlxde (LXDE)? Сейчас на трёх мониторах картина такая: На главном мониторе бегает мышка и запущен сеанс DE startlxde (LXDE), мышка не выходит за пределы этого монитора, а на остальных мониторах видно только значки и обои рабочего стола первого монитора. На эти мониторы можно из консоли запустить любые приложения (и в принципе даже управлять ими, если запустить на них vnc server), кроме DE startlxde (LXDE). DE на этих мониторах запускаться не хочет.

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

а на остальных мониторах видно только значки и обои рабочего стола первого монитора.

Значит WM запустился на трех мониторах, а не на одном.
При запуске два нуля писал: DISPLAY=:0.0 startlxde?

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

Сейчас у меня установлено 2 Дисплей менеджера: sddm (по умолчанию стартует) lxdm. Если сделать «sudo service sddm restart» или «sudo service lxdm restart» - автоматом стартует пользователь, которому назначен автологин (sudo nano /etc/lxdm/lxdm.conf или sudo nano /etc/sddm.conf). Если убрать автологин из конфигов - стартует окошко с запросом логина и пароля (только на одном мониторе, остальные черные). Вопрос: Требуется ведь запустить голый X, даже без окна запроса пользователя? Как это сделать? Может ли так работать X server - вообще без **dm ? Если может, то как? Я не совсем понимаю этот механизм…

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

В файле: sudo nano /etc/X11/xinit/xinitrc заремарил: #. /etc/X11/Xsession

при запуске «sudo service lxdm start» получается на всех мониторах черный экран и слева сверху в углу моргает нижнее подчеркивание. xrandr показывает правильное разрешение на всех мониторах согласно xorg.conf, что делать дальше?

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

Если рыть глубже то: sudo nano /etc/X11/Xsession.d/ 20dbus_xdg-runtime 35x11-common_xhost-local 55gnome-session_gnomerc 70im-config_launch 90qt-a11y 99x11-common_start 20x11-common_process-args 40x11-common_xsessionrc 60x11-common_localhost 75dbus_dbus-launch 90x11-common_ssh-agent 30x11-common_xresources 50x11-common_determine-startup 60x11-common_xdg_path 90gpg-agent 95dbus_update-activation-env

есть такие файлы…

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

Наверное у меня ещё пока просто не тот уровень понимания... Буду учиться...

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