Как плавать окно с WM_NAME, но без WM_CLASS

конфигурация

Debian Linux 8.2, 64bit, Xmonad 0.11

Когда это началось

Недавно я обновил свою систему (до debian8), поэтому мне пришлось внести некоторые изменения в мою конфигурацию xmonad.hs а именно, сменить managehooks для gst-launch GStreamer:

 , title =? "gst-launch-0.10" --> doFloat 

чтобы:

 , title =? "gst-launch-1.0" --> doFloat 

Я использую title вместо className потому что gst-launch-1.0 имеют только следующие свойства:

 $ xprop _NET_WM_DESKTOP(CARDINAL) = 6 WM_NAME(STRING) = "gst-launch-1.0" WM_STATE(WM_STATE): window state: Normal icon window: 0x0 _MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x2, 0x0, 0x1, 0x0, 0x0 WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW 

Что оно делает

Я встречаю очень странное поведение, которого я не видел со старыми gst-launch-0.10 . Когда gst-launch-1.0 окно gst-launch-1.0 (обычно довольно маленькое – 400×300), это один из следующих случаев с уменьшающейся вероятностью:

  • добавляет окно в виде другой плитки (не плавает вообще) и растягивает ее содержимое, чтобы заполнить эту плиту (сохраняя пропорции), остальная часть плитки черная
  • добавляет окно в виде другой плитки (не плавает вообще), но рисует только в верхнем левом углу этой плитки (без растягивания), остальная часть плитки показывает фон X-Window
  • с вероятностью менее 10% он правильно плавает в окне

Что я пробовал

doFullFloat и doCenterFloat выполняют точно то же самое (за исключением того, что в последнем случае он центрирован или заполнен)

Что я подозреваю

Я уверен, что проблема заключается в использовании только WM_NAME/title вместо WM_CLASS/className/appName , потому что заголовок может быть изменен в течение всего жизненного цикла окна. Я думаю, что gst-launch-1.0 начинается с какого-то другого (или нет) заголовка и через некоторое время переключается на gst-launch-1.0 . Тогда это только вопрос удачи, если xmonad ловит исходное название или окончательный gst-launch-1.0 .

Вопрос

Есть ли способ «подождать какое-то время» в manageHook, чтобы я мог уловить окончательное окно WM_NAME/title ?

Или любая другая идея?

Дополнительная информация:

По-видимому, это было исправлено в gstreamer – https://bugzilla.gnome.org/show_bug.cgi?id=750455 – но, к сожалению, мне нужно использовать gstreamer, который поставляется с debian.

Interesting Posts

Что происходит, когда скрипт встречает ошибку в одной из команд?

/ Принадлежит postfix: root после установки iRedMail

Linux-дистрибутив со встроенным Xen?

denyhosts блокирует доступ существующих пользователей от неизвестных (новых) IP-адресов

Что не так с экранированной новой строкой в ​​этой команде sed?

Как заставить команду sed искать только полные слова?

Поведение записи rsyslog на канал

Философия Unix была оставлена ​​в дизайне веб-приложений?

смонтировать диск во FreeBSD для редактирования файла, используя live CD

Как убить вперед до конца большого слова или следующего символа пробела

Автоматическая загрузка SFTP с завитком

Udev: cmd выполняется при подключении устройства, но ничего не делает

Как установить VertRefresh без перезапуска X?

Невозможно определить, где изменяется umask

Grep и отсортировать несколько несортированных вещей в нескольких строках (в одном документе)

Linux и Unix - лучшая ОС в мире.