Окна просмотра в Unity
Если вы используете Unity , текущий видовой экран не может быть получен непосредственно из
wmctrl -d
поскольку Unity имеет видовые окна, которые не обнаруживаются напрямую wmctrl -d
. Вывод покажет только одно рабочее пространство:
0 * DG: 5040x2100 VP: 1680,1050 WA: 59,24 1621x1026 N/A
- где мое разрешение составляет 1680 х 1050 (от
xrandr
)
- охватывающее рабочее пространство (все области просмотра)
5040x2100
. Это 3x2 окна просмотра: 5040/1680 = 3 и 2100/1050 = 2.
- Я в настоящее время на (viewport-) позиции
1680,1050
(х, у)
Сценарий ниже вычисляет текущий видовой экран из этой информации:
#!/usr/bin/env python3
import subprocess
def get_res():
# get resolution
xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
pos = xr.index("current")
return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]
def current():
# get the resolution (viewport size)
res = get_res()
# read wmctrl -d
vp_data = subprocess.check_output(
["wmctrl", "-d"]
).decode("utf-8").split()
# get the size of the spanning workspace (all viewports)
dt = [int(n) for n in vp_data[3].split("x")]
# calculate the number of columns
cols = int(dt[0]/res[0])
# calculate the number of rows
rows = int(dt[1]/res[1])
# get the current position in the spanning workspace
curr_vpdata = [int(n) for n in vp_data[5].split(",")]
# current column (readable format)
curr_col = int(curr_vpdata[0]/res[0])
# current row (readable format)
curr_row = int(curr_vpdata[1]/res[1])
# calculate the current viewport
return curr_col+curr_row*cols+1
print(current())
Использовать:
устанавливать wmctrl
sudo apt install wmctrl
Запустите его по команде
python3 /path/to/get_viewport.py
Он выведет 1, 2, 3 или любой другой текущий видовой экран. Он автоматически подсчитывает строки / столбцы, которые может содержать ваша конфигурация окна просмотра.
объяснение
Сценарий
- получает размер одного видового экрана (разрешения)
xrandr
, включая возможные дополнительные мониторы.
- получает текущую позицию в рабочей области
- рассчитывает количество столбцов / строк в настройках вашего окна просмотра
- Исходя из этого, он рассчитывает текущий видовой экран