Как я могу сделать снимок экрана из окна с настраиваемыми полями

Мне нужен инструмент, который сделает следующее: выбор окна, сделает снимок экрана того окна с дополнением x, как в следующем изображении:

Так, в большинстве случаев x будет равен с y, но иногда мне нужны различные расстояния.

Как сделать такой снимок экрана, автоматически? Я попробовал Затвором, но я не мог найти такую установку там. Однако это поддерживает плагины. Таким образом, плагин мог быть должен обрезать окно этот путь.

17
задан 28 January 2015 в 03:56

3 ответа

Сценарий, с помощью Затвора

Я не думаю, что это существует, но как что-либо, это может быть сделано.

При создании сценария ниже доступного под сочетанием клавиш (объяснение далее ниже), окно откроется, позволяя Вам установить поля Вашего снимка экрана слева, права, вершины и нижней части, разделенной пространством:

enter image description here

результат:

enter image description here

или:

enter image description here

результат:

enter image description here

и т.д.

Я установил значение по умолчанию на 30 пкс, но можно установить любое значение по умолчанию (см. ниже).

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

  • Использование сценария Shutter и wmctrl. Принятие Shutter уже находится в Вашей системе (так как Вы упомянули это), установка wmctrl:

    sudo apt-get install wmctrl
    

    N.B. Если Вы используете Kubuntu, Zenity не установлен по умолчанию:

    sudo apt-get install zenity
    
  • Скопируйте сценарий ниже в пустой файл. Если Вы хотите Вас, может изменить "значение по умолчанию' marge в строке сценария:

    `arg =`
    
  • сохраните его как custom_screenshot.py.

  • Добавьте сценарий к ключевой комбинации ярлыка: выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:

    python3 /path/to/custom_screenshot.py
    

Примечание:

Использование сценария wmctrl определить положение окна. На различных менеджерах окон однако, выводе wmctrl -lG управляйте показывает небольшие различия в y-position окна. Эти различия устраняются значением, набор deviation= - строка сценария. В настоящее время установленное значение (0) подходит для Единицы и KDE.

Сценарий также тестируется и хорошо работает на Xfce и Gnome, но значение должно быть изменено затем, как объяснено в главном разделе сценария.

Сценарий

#!/usr/bin/env python3
import subprocess
import time

"""
On different window managers, the window geometry as output of wmctrl differs slightly.
The "deviation" should compensate these differences. Most likely appropriate (tested) settings:
Unity: 0, Gnome: -36, Xfce (Xubuntu): -26, KDE (Kubuntu): 0
"""
#---
deviation = 0
#---
get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
try:
    arg = get('zenity --entry --entry-text "30 30 30 30" --text "border left, right, top, bottom" --title "Screenshot margins"').strip().split()
except:
    pass
else:
    time.sleep(0.5)
    # frontmost window pos
    frontmost = [l.split()[4] for l in get("xprop -root").splitlines() if "ACTIVE_WINDOW(WINDOW)" in l][0].replace(",", "")
    frontmost = frontmost[:2]+"0"+frontmost[2:]
    f_data = [l.split() for l in get("wmctrl -lG").splitlines() if frontmost in l][0][2:6]
    # extent
    xt_data = get("xprop -id "+frontmost).split()
    xt_i = xt_data.index("_NET_FRAME_EXTENTS(CARDINAL)")
    xt = [int(n.replace(",", "")) for n in xt_data[xt_i+2:xt_i+6]]
    # set data for screenshot command
    x = str(int(f_data[0])-int(arg[0])-xt[0])
    y = str(int(f_data[1])-int(arg[2])-xt[2]+deviation)
    w = str(int(f_data[2])+int(arg[0])+int(arg[1])+xt[0]+xt[1])
    h = str(int(f_data[3])+int(arg[3])+int(arg[2])+xt[2]+xt[3])

    command = "shutter -s="+(",").join([x,y,w,h])+" -e"
    subprocess.call(["/bin/bash", "-c", command])
19
ответ дан 23 November 2019 в 02:22

Можно также использовать комбинацию Сдвиг и кнопки PrtScr для взятия снимка экрана определенной области с пользовательскими размерами.

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

2
ответ дан 23 November 2019 в 02:22

Можно сделать снимки экрана с scrot утилита снимка экрана командной строки:

scrot -s  

или

scrot -ub -d 5  

вторая команда помещает границу вокруг выбранного окна, которое имеет хорошую ширину относительно размера окна. -d 5 опция обозначает задержку и дает Вам задержку 5 секунд для выбора окна, чтобы быть в снимке экрана.

Установка с этим:

sudo apt-get install scrot

Ссылка: Руководство Ubuntu - scrot

2
ответ дан 23 November 2019 в 02:22

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

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