Этот вопрос является продолжением: Манипулировать размером окна в linux с помощью скомпилированного кода?
В заголовке я хочу изменить размер активного окна на половину размера экрана (либо слева, либо справа от экрана. Я могу сделать это с помощью bash script следующим образом (за ответ на предыдущий вопрос):
#!/bin/bash
w_h=$(xrandr | awk '/\*/{sub(/[0-9\.\*\+]*$/, ""); sub("x", " "); $1=$1/2; print}')
w=${w_h% *} ; h=${w_h#* }
wmctrl -r :ACTIVE: -b remove,maximized_horz,maximized,vert
wmctrl -r :ACTIVE: -e 0,${w},0,${w},${h}
Однако этот метод имеет заметное, но не серьезное отставание 0,25 секунды на моем ноутбуке, что я хотел бы спуститься до 0,1 секунды. Как я могу достичь такого же эффекта, как выше bash script в python?
Задержка, вызванная командой xrandr, в любом случае будет медленной. Вы можете уменьшить это время, разобрав вывод xdpyinfo | grep 'dimensions:'
. Из python вы можете вызвать эту команду, используя subprocess.Popen.
wmctrl -r :ACTIVE: -b remove,maximized_horz,maximized,vert
должно быть:wmctrl -r :ACTIVE: -b remove,maximized_horz,maximized_vert
т.е. развернуто, vert должно быть maximized_vert