amarao (amarao_san) wrote,
amarao
amarao_san

Жизнь - это компромисс

Итого:

удалось сделать "несбиваемый фокус" для mypaint.

При этом не удалось мыше запретить ходить на соседний экран. map-to-output не работает для relative устройств, а для keyboard просто роняет сервер (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=784204).

Чем больше я пытаюсь фичи Xorg'а использовать практически, тем больше я убеждаюсь, что все эти замечательные абстракции, какие кажутся идеалистам издалека правильными и хорошими, на практике просто не работают, а создают проблемы для "простых сетапов".

Если бы оно при этом давало возможность делать адские клёвые вещи - да, ура. Тяжело, зато фичасто. Но ведь оно не фичасто! Я сегодня уже почти 12 часов занимаюсь тем, что выполняю пунктик из моего чеклиста "сделать независимый mypaint".

Изначально это была идея об двух screen'ах, каждый со своим input'ом. Не получилось - input'ы вешаются на layout. Вторая идея с двумя layout'ами оказалась ошибочной - их можно использовать только с несколькими картами.

Попытка завести вместе intel и nvidia в режиме multiseat закончилась эпик глюками и segfault'ом X'ов, когда я таки заставил их работать вместе.

Сдавшись и расставшись с идеей нескольких скринов, я сделал multipointer в типовом конфиге с xrandr'ом. Словил ещё один segfault, кое-как сделал MPX, который вместе с map-to-output для wacom'а сделал мне несбиваемый фокус, но при этом все второстепенные цели не достигнуты:

1) Редкоглючные игрушки стима всё так же будут пытаться расползтись по всем экранам.
2) gimp будет показывать диалоги иногда не на том мониторе, где его запустили.
3) nvidia'вский глюк с залипанием плееров и steam'а при включении/выключении второго монитора (см п1 - зачем оно нужно) будет сохраняться.

То есть достигнута программа-минимум. Заодно найдено хорошее место для скрипта инициализации:
/etc/lightdm/lightdm.conf:
session-setup-script=/usr/local/bin/configure_pointers.sh

Печально это. Вроде бы замечательная конструкция, а на деле - трухлявое всё.

UPD: Всё ещё больший epic fail. Mypaint рисует попапные диалоги по месту нахождения primary pointer'а. То есть мыши, которую я хочу юзать на другом экране. Другими словами, неюзабельная фича, и у меня есть подозрение, что set-cp для диалогов тоже работать не будет.

Другими словами, единственная "компромиссная" фича, которую я выцепил, всё равно не достаточно хорошо работает. Тьфу, да и только.

Залез в сырцы mypaint, понять насколько это всё плохо.

Цитирую:

    d = Gtk.Dialog(title,
                   window,
                   Gtk.DialogFlags.MODAL,
                   (Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT,
                    Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT))
    d.set_position(Gtk.WindowPosition.MOUSE)

Читаем про Gtk.WindowPosition.MOUSE.

Так сказать, удачи патчить gtk.

Тьфу, да и только x2.
Tags: desktop linux, wacom, x-server, xorg, баги, грабли
Subscribe

  • Админская мудрость

    Когда вывод strace на башовый скрипт становится понятнее самого скрипта, граница разумности давно пройдена.

  • Rules of internet

    Rule 34. There is porn of it. Rule 35. It's used to mine cryptocurrencies.

  • CI без сервера

    А вот у меня есть такой запрос: я хочу иметь CI-подобный инструмент (задачи/автоматически вычисляемые зависимости порядка выполнения, параметры,…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment