Почему wmctrl не работает для определенных окон?

francisco@Ubuntu:~$ wmctrl -l
0x02600006  0 Ubuntu Área de trabalho
0x03c00002  0 Ubuntu XdndCollectionWindowImp
0x03c00005  0 Ubuntu unity-launcher
0x03c00008  0 Ubuntu unity-panel
0x03c0000b  0 Ubuntu unity-dash
0x03c0000c  0 Ubuntu Hud
0x046000b3  0 Ubuntu How to make a window aways on top? - Stack Overflow - Mozilla Firefox
0x0520000b  0    N/A Qt Creator
0x05002396  0 Ubuntu francisco@Ubuntu: ~
0x0540000b  0    N/A backlight

Для окон, в которых столбец с именем машины указан как N/A, я не могу отправить wmctrl команды, например wmctrl -r "window name" -b add,above. Зачем? (также, я не знаю, почему эти окна отличаются в отношении столбца с именем машины ...)

Моим первоначальным намерением было отправить такую ​​команду в окно backlight, приложение Qt без рамки. Использование системного меню окна и проверка «Всегда сверху» работает для окна, хотя. Мне просто нравится программный способ сделать то же самое.

2
задан 24 December 2013 в 05:58

1 ответ

Это определенно ошибка в wmctrl.
после поиска кода wmctrl кажется, что ошибка заключается в переводе строк с именами окон в соответствующие идентификаторы окон (или XID). поэтому wmctrl -r "window name" -b add,above не является надежным.

в качестве обходного пути, используйте вместо этого XID, то есть wmctrl -i -r window_id -b add,above. в вашем случае wmctrl -i -r 0x0520000b -b add,above должен работать.

Большинство средств управления окнами реализованы в виде свойств X window. Вы можете просмотреть все свойства окна командой -- xprop.

ПРИМЕЧАНИЕ.

  1. Окна, в которых столбец с именем компьютера указан как N / A. свойство имени машины - WM_CLIENT_MACHINE. это редко используется. и некоторые наборы инструментов GUI могут не реализовывать их.
    Вы можете просмотреть свойство имени машины окна, выполнив следующую командную строку и щелкнув окно

    shell> xprop | grep MACHINE
    
  2. Что касается Always On Top, это еще одно значение свойства _NET_WM_STATE_ABOVE.
    чтобы проверить это самостоятельно, запустите следующую командную строку и щелкните окно

    shell> xprop | grep _NET_WM_STATE
    
0
ответ дан 24 December 2013 в 05:58

Другие вопросы по тегам:

Похожие вопросы: