Справка по мини-компьютеру после попытки установки

Как это работает

В приведенном ниже сценарии измеряется размер области между двумя точками указателя мыши.

Он работает следующим образом:

Поместите указатель мыши в первую позицию (без нажатия). Нажмите комбинацию клавиш по вашему выбору (см. Ниже). Поместите мышь во вторую позицию (снова без нажатия). Повторно нажмите комбинацию клавиш. Уведомление сообщит вам точный размер (px) области.

Опции

Вы можете выбрать (раскомментируя одну из строк), как вы хотите получать уведомления; либо путем уведомления:

Или информационное окно Zenity:

enter image description here

(Примеры из разных областей)

Как использовать

Поместите указатель мыши в первую позицию (без нажатия)

Поместите указатель мыши в первый (без нажатия)

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

Примечания [ ! d40] Вам нужно будет выйти / вначале. Не имеет значения, что вы делаете в качестве первой / второй позиции; сценарий измеряет абсолютные значения.

Сценарий

#!/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) Не имеет значения, что вы делаете в качестве первой / второй позиции; сценарий измеряет абсолютные значения.
0
задан 12 November 2017 в 05:51

0 ответов

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

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