Я использую Ubuntu 16.04 Desktop Edition и у меня возникают проблемы при изменении размеров окон из команд командной строки. Недавно я переключился на Fluxbox в качестве менеджера окон и очень заинтересовался сочетаниями клавиш, которые запускают команды командной строки для работы с позициями окон. Я наткнулся на некоторые препятствия с изменением размеров окон и не могу понять, что происходит.
В Fluxbox действия связывания клавиш для изменения размера окон в процентах от экрана иногда приводят к изменению размера окна, затем к его медленному уменьшению, затем к изменению размера, затем к медленному сокращению, повторяясь некоторое время, пока оно не остановится на каком-то совершенно неправильном размере, или никогда не останавливается Я предположил, что это проблема Fluxbox, и начал пытаться использовать вместо этого xdotool и wmctrl, но такая же проблема возникает.
Я повторил эту проблему на гостевой установке VMWare Ubuntu 16.04 и собственной установке Ubuntu 16.04. Я также повторил это под разными оконными менеджерами в каждой системе: XFCE4, KDE, Fluxbox, Unity, Fluxbox, построенный из исходного кода.
Если у меня есть окно с произвольным размером, выполнение любой из этих команд будет прерывистым:
Числа № 4 и № 5, приведенные выше, являются наиболее распространенными и проблемными, так как единственный способ решить их - закрыть окно и откройте его снова.
Я выполнил эти команды на большой области отображения, которая намного больше, чем указанные размеры. Команды, которые я попробовал (для целевого размера 900x900):
wmctrl -r :ACTIVE: -o 0,-1,-1,900,900
wmctrl -i -r 0x01000004 -o 0,-1,-1,900,900
xdotool getactivewindow windowsize 900 900
xdotool getactivewindow windowsize --sync 900 900
xdotool windowsize 20971524 900 900
xdotool windowsize --sync 20971524 900 900
Как вы можете видеть, я пробовал и xdotool, и wmctrl, используя автоматическое определение активного окна и явную спецификацию активного окно (посмотрел с помощью wmctrl и xdotool соответственно). Я также пробовал разные размеры, которые меньше или больше, окна для разных программ, отличных от терминала, окна, которые не являются текущими, и перемещение окна одновременно. Ни один из них, кажется, не имеет никакого значения в результате. Чтобы попытаться отладить проблему, я попытался запустить strace для команды xdotool, чтобы посмотреть, не застряло ли оно где-то в цикле:
strace xdotool windowsize --sync 20971524 900 900 2>~/trace.log
Я повторял эту команду до тех пор, пока не получил ту, которая отлично работала с первой попытки, затем повторил пока я не получил тот, который застрял в бесконечном цикле, сохраняя журналы трассировки отдельно. Я сравнил их, чтобы увидеть, что отличалось, и отличались только идентификаторы окон. Это наводит меня на мысль, что это не проблема связи с самим инструментом (маловероятно, поскольку и wmctrl, и xdotool имеют одну и ту же проблему) или проблема связи с базовой структурой (также маловероятно).
Куда мне идти отсюда и где мне искать, чтобы решить эту проблему? Возможно ли проблема с Wayland против XWindows, поскольку Wayland был представлен для Ubuntu в 16.04? Есть ли унаследованные XWindows, которые я могу / должен попытаться решить? Это просто ошибка в XWindows, которую все видят? Существуют ли другие инструменты, которые могут изменить размер по-другому? Не учитываю ли я что-то в команде изменения размера?
Проблема с некоторыми окнами и «Подсказками по геометрии окна». В частности, для терминатора (версия gnome) существует известная проблема, когда подсказки геометрии окна могут / могут / намекают на то, что окно должно быть немного меньше или больше, изменяя свое мнение каждый раз, когда X изменяет размер окна до размера подсказки.
Решение, по крайней мере для терминатора (версия gnome), заключается в отключении подсказок геометрии окна в конфигурации. Каждая программа, имеющая проблему, может иметь или не иметь решение в отдельности.