/ Статьи / Графика и GUI / Как сделать скриншот в Linux без дополнительных средств /

Как сделать скриншот в Linux без дополнительных средств

Дата публикации: April 12, 2010, 3:44 p.m.
Теги: скриншот, консоль,
Автор: Brainsburn

делаем скриншоты в linux

В этой небольшой заметке я хотел бы поделиться своим способом удобно и быстро делать скриншоты в Linux не прибегая к различным графическим утилитам. В качестве оконного менеджера я использую OpenBox, в качестве утилиты для снятия скриншотов - scrot.

Делаем скриншоты рабочего стола в Linux

Пишем простой скрипт:
$ cat screenshot.sh 
#!/bin/bash
name=`date +%x-%X-%N.png`
scrot ~/$name
Кидаем его в свой домашний каталог и ставим права на исполнение
$ chmod +x screenshot.sh

Такой скрипт будет делать скриншоты рабочего стола в формате PNG и сохранять их в вашем домашнем каталоге. Имена файлов будут выглядеть так

12.04.2010-14:56:02-327180314.png

Теперь забиндим выполнение этого скрипта на кнопку PrintScreen. Узнать код клавиши PrintScreen можно так: запускаете в терминале утилиту xev, наводите курсор мыши на появившееся квадратное окно и жмете нужную клавишу. В терминале вы увидите что-то подобное:

KeyRelease event, serial 39, synthetic NO, window 0x2800001,
    root 0x15a, subw 0x0, time 31117653, (-897,780), root:(592,900),
    state 0x0, keycode 107 (keysym 0xff61, Print), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
"keycode 107" означает что код клавиши - 107. Я использую OpenBox, если вы используете другой оконный менеджер, гуглите, как в нем надо привязывать сочетания клавиш. В OpenBox это делается так: открываете в текстовом редакторе файл ~/.config/openbox/rc.xml , находите секцию keyboard и добавляете в нее следующие строки.
<keybind key="0x6B">
<action name="Execute">
<command>~/screenshot.sh</command>
</action>
</keybind>
В OpenBox код клавиши надо перевести в шестнадцатиричную систему. Делается это просто:
$ printf "%X\n" 107
6B
К получившемуся числу спереди надо добавить "0x". Отсюда и строка
<keybind key="0x6B">

После реконфигурации (обновления настроек) OpenBox, вы сможете делать скриншоты клавишей PrintScreen не используя никаких графических надстроек, только утилиту scrot, которая весит 70кб.



Можно вообще обойтись без дополнительных утилит и сделать скриншот только средствами иксов, командой import:
$ import -window root screenshot.png
В этом случае скрипт screenshot.sh будет выглядеть так:
$ cat screenshot.sh 
#!/bin/bash
name=`date +%x-%X-%N.png`
import -window root ~/%name

UPDATE:
Случайно для себя открыл консольную утилиту xwd, позволяющую делать снимки экрана. Xwd весит 25Кб и должна входить в состав "иксов". Конечно, если вы собирали xorg server сами, то у вас ее может и не быть. В таком случае ее можно скачать отсюда.

Пример использования xwd: $ xwd -root > file.xwd
Формат изображения понимается Gimp-ом и утилитой convert из ImageMagick.
После такой команды файл на выходе будет в формате PNG:
$ xwd -root | convert - file.png
Если xwd запустить без ключа -root, то будет предложено выбрать окно, которое нужно заскриншотить.
Если нету Gimp-а и ImageMagick-а, посмотреть файл XWD можно утилитой xwud




Возможно, эти материалы Вас заинтересуют:


Рекомендовать эту страницу:

Комментарии:(6)

# zdima April 28, 2010, 11 a.m.
Да, доходчиво.
Только у меня в системе import почему-то отсутствует, придеться ставить scrot, хотя посмотрю в каком он пакете должен быть и оценю что "весит" меньше, т.к. стараюсь не ставить лишние пакеты.

# admin April 28, 2010, 9:10 p.m.
Да, насчет того, что import это "средства иксов" я погорячился. Import входит в состав ImageMagick, а он установлен не у всех. Кстати при работе с import я заметил, что иногда одно из окон на скриншоте получается в виде Квадрата Малевича... Scrot работает через библиотеку imlib2. Если найдете, что-то еще более "легкое", отпишитесь :)

# _Andrey_ April 12, 2011, 11:54 p.m.
У себя использую такие варианты:

окно:
scrot -s '%Y.%m.%d-%H%M-$wx$h.png' -e 'mv $f ~/' 2>/dev/null

весь экран:
scrot '%Y.%m.%d-%H%M-$wx$h.png' -e 'mv $f ~/' 2>/dev/null

p.s. Похоже, что xwd пишет индек + неупакованный растр. Нужно будет добавить этот формат в SimpleViewer GL.

# Сергей July 12, 2014, 9:11 a.m.
Решил немного улучшить данный скрипт, в плане того, что не всегда понятно нажал кнопку или нет, бывает, что клавиша PrtScr немного туговата. Дополнил создание скрина звуковым сопровождением и всплывающим уведомлением.

#!/bin/bash
play /Путь к звуковому файлу/.fotokamera.ogg
scrot -q 100 ‘%Y-%m-%d_%H.%M.%S.png’ -e ‘mv $f /Путь к папке со скриншотами/Скриншоты’
notify-send “Снимок экрана” “сохранён в папке скриншотов”

Если нужно только звуковое сопровождение, то строчку - notify-send “Снимок экрана” "сохранён в папке скриншотов - можно удалить, соответственно, если нужно только уведомление, то удаляете строчку - play /Путь к звуковому файлу/.fotokamera.ogg

З.Ы. Для всплывающих уведомлений нужен пакет notify, есть в репах Убунты. Звуковой файл можете поставить любой (для удобства делаете его скрытым поставив точку в начале названия файла), но только с расширением ogg или wav. У меня установлен звук затвора фотокамеры, желающие могут скачать на сайте:
http://allsoundsaround.com/zvuk_fotokamery_3.html

# Сергей July 12, 2014, 10:12 a.m.
З.Ы.З.Ы.
Привязать скрипт к клавише PrtScr или любой другой можно также через: Меню-Настройки-Клавиатура-Комбинации клавиш-Добавить-Открыть-выбрать исполняемый файл.
http://s011.radikal.ru/i315/1407/4f/71287307eac5.png

# Kitika Feb. 17, 2015, 10:58 a.m.
Спасибо! Ваш совет оказался полезен :).

Комментировать:

Гость, Вы можете оставить свой комментарий.

Стиль кода:
Имя
Сайт * не обязательное поле
Поставьте галку, если вы - бот
Поставьте галку, если вы - человек

Друзья! Убедительная просьба воздержаться от нецензурной лексики!



Справка:
Если вы хотите использовать в тексте комментария специальные символы, например, [ и ], используйте их внутри тега [code] [/code]
Вы можете использовать теги BBcode. Для оформления кода и подсветки синтаксиса используйте тег [code] или [code=название_языка], например, [code=python]
Ссылки вставляйте так: [url]zenux.ru[/url] или так: http://zenux.ru, но не так: zenux.ru
Текст сообщения должен быть в пределах 3000 символов.




Последние комментарии:

Brainsburn_: “Написание в 1-й” подразумевает “в первой”, а не в... >>>
ZZZ: “Написание в 1-й” подразумевает &ldquo... >>>
SBOdin: Спасибо за полезное руководство... >>>
fanyit: Спасибо за обзор. очень полезно и доступно.... >>>
cheech: Спасибо, статья полезная )... >>>