В приведенном ниже сценарии измеряется размер области между двумя точками указателя мыши.
Он работает следующим образом:
Поместите указатель мыши в первую позицию (без нажатия). Нажмите комбинацию клавиш по вашему выбору (см. Ниже). Поместите мышь во вторую позицию (снова без нажатия). Повторно нажмите комбинацию клавиш. Уведомление сообщит вам точный размер (px) области.Вы можете выбрать (раскомментируя одну из строк), как вы хотите получать уведомления; либо путем уведомления:
Или информационное окно Zenity:
(Примеры из разных областей)
Поместите указатель мыши в первый (без нажатия)
command = ['notify-send', 'Area size', str(w)+' x '+str(h)]
(для уведомления с помощью опции notify-send)
command = ['zenity', '--info', '--title', 'Area Size', '--text', str(w) + ' x ' + str(h)]
для опции Zenity. Нажмите комбинацию клавиш по вашему выбору (см. ниже) Нажмите комбинацию клавиш по вашему выбору (см. ниже)
measure_area
#!/usr/bin/env python3
import subprocess
import os
import math
home = os.environ["HOME"]
area = home+"/"+".measure_area.txt"
def get_pos():
pos_data = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8")
return [m[2:] for m in pos_data.split()[:2]]
def confirm():
get = subprocess.check_output(["xrandr", "--verbose"]).decode("utf-8").split()
for s in [get[i-1] for i in range(len(get)) if get[i] == "connected"]:
br_data = float(get[get.index("Brightness:")+1])
brightness = lambda br: ["xrandr", "--output", s, "--brightness", br]
flash = ["sleep", "0.1"]
for cmd in [brightness(str(br_data-0.1)), flash, brightness(str(br_data))]:
subprocess.call(cmd)
if not os.path.exists(area):
with open(area, "wt") as measure:
measure.write(str(get_pos()))
confirm()
else:
second = get_pos()
with open(area) as first_m:
try:
first = eval(first_m.read())
w = int(math.fabs(int(second[0]) - int(first[0])))
h = int(math.fabs(int(second[1]) - int(first[1])))
#--- uncomment either one of the lines below:
# command = ['notify-send', 'Area size', str(w)+' x '+str(h)]
command = ['zenity', '--info', '--title', 'Area Size', '--text', str(w) + ' x ' + str(h)]
#---
confirm()
except SyntaxError:
text = "Please try again, there was an error in the data"
command = ['zenity', '--info', '--title', 'Please try again', '--text', text]
subprocess.Popen(command)
os.remove(area)
Скопируйте сценарий ниже в пустой файл, раскомментируйте одну из строк:
xdotool getmouselocation
или:
Добавить комбинацию клавиш для запуска скрипта: Выберите: «Системные настройки»> «Клавиатура»> «Ярлыки»> «Пользовательские ярлыки». Нажмите «+» и добавьте команду:
Вам нужно будет выйти / в первый раз . Добавлена процедура ремонта в случае, если что-то пошло не так с файлом первой информации (например, если пользователь сначала попытался запустить скрипт, не установив xdotool) Не имеет значения, что вы делаете в качестве первой / второй позиции; сценарий измеряет абсолютные значения.