You are not logged in.
По умолчанию в slitaz есть Grab screenshot
Но он "снимает" весь экран и связан с mpaint, что иногда получается несколько громоздко.
В репозитории slitaz есть scrot - утилита давно известная во многих Линуксах.
Она может "снимать" любой участок экрана, выделенный рамкой, или любое окно экрана (ткнуть курсором в шапку окна)
Также может выполнять захват изображения с указанной пользователем задержкой и сохранять изображение в указанном месте/директории.
На мой взгляд это удобней первого варианта.
Утилиту scrot можно задействовать, как минимум, двумя способами:
1. самый простой - через создание скрипта, вот он:
scrot.sh
#!/bin/sh
xterm
scrot -d 2 -s -e 'mv $f ~/Documents/'
(скрипт-языка я совсем не знаю, поэтому прошу знатоков его поправить,
чтобы не появлялось окно терминала, которое приходится закрывать
и только после этого можно выделять нужную область экрана);
2. немного сложней, но и гораздо удобней впоследствии
в /usr/share/applications открыть текстовым редактором любой .desktop файл
и заменить в нем текст на следующий:
[Desktop Entry]
Encoding=UTF-8
Name=scrot
Name[fr]=Capture d'écran
Name[pt]=Captura de Screenshots
Exec=scrot -d 2 -s -e 'mv $f ~/Documents/'
Icon=camera-photo
Type=Application
Terminal=false
Categories=Application;Graphics;
и сохранить содеянное под именем scrot.desktop
В строке Exec=scrot -d 2 -s -e 'mv $f ~/Documents/'
-d 2 означает задержку в 2 секунды, а ~/Documents/ место сохранения png-файла.
После этого в меню: Applications -> Графика появится новый пунтк scrot
Как все это выглядит показано на скриншотах:
[attachment=17640,728] [attachment=17640,729]
Offline
Хорошо.
Сам пользуюсь программой scrot. Хотелось бы всё таки получать снимок экрана с помощью этой программы по нажатию клавиши "PrtSc" (так же в домашней директории). А также снимок активного окна по нажатию клавиш "Alt" + "PrtSc".
Сам помочь не могу, не умею писать скриптов. Или оба варианта можно записать в desktop-файл?
Offline
Сделай через xbindkeys
Offline
Нужная тема про скриншоты и xbindkeys нашлась аж на 18-й странице: http://forum.slitaz.org/topic/slitaz-40-how-to-made-screen-shots-captures-d-ecran
Помнится, я там довольно подробно описал как прибиндить определенное действие к любой кнопке.
Также, можно сделать почти то же самое, но при помощи «горячих клавиш» в Openbox (с 12-й страницы): http://forum.slitaz.org/topic/keyboard-shortcuts-how-create-them
Про desktop-файлы, что они могут. Они могут появляться в определенной категории меню или их можно поместить на рабочий стол. При клике (или двойном клике) на нём выполняется заданное действие. В desktop-файле также может быть прописан тип файла и тогда система будет открывать файлы этого типа при помощи этой программы. Как-то смутно сказал. Ну, например, устанавливаем Audacious и сразу нажимаем на mp3-файл, он открывается в Audacious. Desktop-файлы могут лежать в системной папке /usr/share/applications и в домашней папке пользователя ~/.local/share/applications
Вот и почти всё, не считая переводов, комментариев и маскировки.
scrot.sh
[c]#!/bin/sh
xterm
scrot -d 2 -s -e 'mv $f ~/Documents/'[/c]
(скрипт-языка я совсем не знаю, поэтому прошу знатоков его поправить,чтобы не появлялось окно терминала, которое приходится закрывать
и только после этого можно выделять нужную область экрана);
xterm здесь явно прописан по ошибке, остальное нормально, но [c]-e 'mv $f ~/Documents/'[/c] — это индивидуальное, авторское, на любителя. Подробнее изучите [c]scrot --help[/c] там куча возможностей.
Кстати, спасибо за scrot! Я раньше о нём и не знал 
+++
Какие-то аналогии сегодня!
black dog (в этой теме):
Сам помочь не могу, не умею писать скриптов.
Pro (link):
я за, но я скрипты писать не умею, поэтому за всех не могу сказать
Вот оно как бывает-то.
Offline
OK!
Попробую сделать с помощью горячих клавиш. Что-то я уже делал, но успел забыть. Лучший способ "не забыть" - это написать инструкцию. 
Offline
В скрипте scrot.sh
без строки: xterm
только строка: scrot -d 2 -s -e 'mv $f ~/Documents/'
у меня не работает.
Кнопки конечно хорошо, но (на мой взгляд) удобнее дать пользователю возможность выбора:
1. весь экран, любое окно на экране, любая область экрана выбранная рамкой-курсором
2. время задержки между нажатием "ОК" и снимком
3. место сохранения снимка.
Задержка нужна для того, чтобы например показать меню с вложениями (см. 2-й скриншот)
В том виде, как я выложил, снимок кладется в ./Documents, а если такого нет, то в текущий DIR.
Если не забуду, то сделаю окно интерфейса для scrot с помощью gtkdialog
смотри сообщение: http://forum.slitaz.org/topic/gtkdialog-not-for-scripting-only
и конкретный пример: http://www.murga-linux.com/puppy/viewtopic.php?p=639831#639831
Offline
Возможно, проблема в том, что scrot делает скриншот в текущую папку, а потом при помощи команды mv переносит ее куда надо (почему-то не находит файл в текущей папке). Возможно, что символ «~» не разворачивается. В общем, вариант со скриптом какой-то нежизнеспособный.
Насчет интерфейса. Я установил себе пакет glade3 — при помощи него можно делать интерфейсы в графическом мастере, а не писать xml-код вручную. Но вот, что-то не получается у меня его запустить. А ведь раньше запускался. Или это было в одном из puppy? Код запуска такой:
[c]gtkdialog -g путь/к/файлу.glade[/c]
Ошибка:
[c]tux@slitaz:~$ gtkdialog -g /home/tux/scripts/scrot/scrot-gtk.glade
** ERROR **: Can not load '(null)' from file '/home/tux/scripts/scrot/scrot-gtk.glade'
Trace/breakpoint trap
tux@slitaz:~$[/c]
Прикрепляю и сам диалог (пока только «болванка» без каких-нибудь действий) (убрать расширение «.txt»).
Offline
> В общем, вариант со скриптом какой-то нежизнеспособный.
Взято из scrot --help иных источников не имею.
Я не буду столь категоричным - скрипты плохо знаю, и это главная причина.
> А ведь раньше запускался.
Я уже сталкивался с "неработой" glade-формы и даже скомпилированной программы при переносе ее на другой PC или на другой раздел с другой Линукс-ОС.
Есть какие-то нюансы установки glade с которыми нет нужды бороться/разбираться. например libglade-dev
Поэтому я выбрал CodeBlocks в качестве IDE, а потом и вовсе gedit и GTK+ (GTK-окна пишу руками).
А совсем недавно "открыл для себя новые прокладки" (ха-ха-ха) - gtkdialog.
Но поскольку я знаю немного только СИ (без плюсов) и не знаю script-coding, то пишу в gtkdialog используя его СИ-возможности.
slitaz имеет gtkdialog по умолчанию (что очень правильно) и даже примеры.
Сам дистрибутив gtkdialog обновляется до сих пор (версия 0.8.2) и имеет примеры "на все случаи жизни".
Смотрите вот здесь:
http://code.google.com/p/gtkdialog/ - много примеров, туториалы и прочее.
А это исходники последней версии gtkdialog:
http://code.google.com/p/gtkdialog/downloads/detail?name=gtkdialog-0.8.2.tar.gz
В slitaz несколько устаревшая версия, но и она может ОЧЕНЬ много чего делать.
Если программа может уместиться в одном окне, то gtkdialog - самое оно.
Offline
Хмм, я ведь и так использую gtkdialog!
(чешу репу)
Offline
У меня тоже не хочет его загружать:
-----------------------------------
sklimkin@sklimkin-desktop:~/Загрузки$ gtkdialog -g scrot-gtk.glade
** ERROR **: Can not load '(null)' from file 'scrot-gtk.glade'
aborting...
Аварийный останов
gtkdialog на СИ
---------------
Выглядеть это будет примерно так - см. скриншот.
Никак здесь нельзя положить исполняемый файл?
Кто знает обходные пути?
Переименование его в scrotdlg.txt и другие расширения не проходит.
Пока не могу найти в gtkdialog функции для работы с комбо-боксом.
[attachment=17728,743]
Offline
Я уже знаю решение :-B
Оказывается, я упустил важный параметр. Так как в файле glade может содержаться несколько диалогов, то обязательно нужно явно указать какой из них нужно отобразить. Теперь полный код для запуска моей болванки такой:
[c]gtkdialog -g /home/tux/scripts/scrot/scrot-gtk.glade --program=dialog1[/c]
где:
--program=dialog1 — тот упущенный параметр
dialog1 — ID из файла Glade:
[c]<?xml version="1.0" encoding="UTF-8"?>
<glade-interface>
<!-- interface-requires gtk+ 2.24 -->
<!-- interface-naming-policy project-wide -->
<widget class="GtkDialog" id="dialog1">
. . . . . . . . .[/c]
(Болванка не реагирует ни на что, поэтому пока запускаем ее из терминала и закрываем ее при помощи [Ctrl+c].)
+++
Кто знает обходные пути?
Переименование его в scrotdlg.txt и другие расширения не проходит.
Фильтрация прикрепляемых файлов идёт по расширению файла и по его размеру (≤ 500 КБ).
++++++
Пример комбо-бокса я видел пол-часа назад здесь: http://www.pclinuxos.com/forum/index.php?topic=59050.0
Просто поищи на странице «combobox» и обрати внимание на variable.
Offline
Комбо-боксы осилил, но так и не смог собрать командную строку из gtkdialog для СИ-версии.
Поэтому завершил дело в gcc + GTK2
При этом не стал менять версию scrot (пока новая от Алексея не появится в репозитории).
Можно выбирать режим захвата, время задержки и место сохранения.
Наименование файлов при захвате не стал менять (типа 2012-10-28-022741_1028x773_scrot.png)
Куда положить исполняемый файл scrotdlg (32 КБ а в gtkdialog получалось 7 КБ - почувствуйте разницу) ?
Могу выложить на media-fire.com (конечно если это кому-нибудь интересно).
Пока выкладываю 3 скриншота полученные программой:
1. ALL
2. window
3. area
Скриншоты:
[attachment=17763,751] [attachment=17763,752] [attachment=17763,753]
Offline
Привет, sklimkin!
Могу выложить на media-fire.com (конечно если это кому-нибудь интересно).
Делай добро и бросай его в воду! ©
Конечно же!
32 КБ а в gtkdialog получалось 7 КБ - почувствуйте разницу
Бинарник? Можно попробовать пройтись по нему strip и/или upx.
пока новая от Алексея не появится в репозитории
Хмм… Появится в Cooking. Для себя можно взять версию из вложения на форуме в одной из наших последних тем и заблокировать от обновлений. Думаю, корректнее будет создать свою репу новых программ для Stable на Mediafire. Вот, например, присматриваюсь к Double Commander. Да и вообще, нужно много чего выложить. Поздно уже, завтра… Сижу тут, ядро компилирую, спать пора.
Offline
Выложил по адресу:
http://www.mediafire.com/?u3860bikpsatd2t
В архиве:
1. исходник на СИ scrotdlg.c
2. Makefile (для компиляции в терминале выполнить $ make)
3. скомпилированный бинарный scrotdlg
4. scrot-howto.txt
5. три скриншота
Я специально не оптимизировал при компиляции.
Исходник для тех, кто захочет понять как выглядит создание окон в gcc GTK2
Я как мог прокомментировал его на английском-пингвинском.
Алексей! Имеет смысл выложить бинарник для буржуинов в общем разделе?
Offline
Имеет смысл выложить бинарник для буржуинов в общем разделе?
Я думаю, будет интересно сделать свой пакет. Например, назвать его scrot-gtk. А?
Я пока не могу этим заняться. Как освобожусь (вечером-ночью) посмотрю.
Offline
> Я думаю, будет интересно сделать свой пакет.
Я пока до такой степени не просветлился.
И честно говоря не вижу необходимости:
1. надеюсь Вы допилите glade-вариант,
2. есть мой GTK2-вариант,
3. надеюсь допилить еще и bash-вариант (может кто поможет)
4. и как-то неловко приклеиваться с окошком к такой всемирно известной программе, как SCROT.
Вот что я не могу осилить в bash-gtkdialog:
#!/bin/bash
GTKDIALOG=gtkdialog
if [ "$COMBOBOX1" == "All" ]; then
COMMAND1=
##sprintf( COMMANDSTRING, "scrot -d %s -e 'mv $f ~%s'", COMBOBOX2, FILE );
else COMMAND1="-s"
##sprintf( COMMANDSTRING, "scrot -d %s -s -e 'mv $f ~%s'", COMBOBOX2, FILE );
echo "COMMAND1= $COMMAND1"
COMMAND2="$COMBOBOX2"
echo "COMMAND2= $COMMAND2"
COMMANDSTRING="-d $COMMAND2 $COMMAND1 -e 'mv $f ~'"
export COMMANDSTRING
echo "COMMANDSTRING= $COMMANDSTRING"
echo "End of export variables."
fi
export MAIN_DIALOG='
<window title="SCReenshOT screen-grabber">
<vbox>
... ... ...
пропускаю несущественное
надо связать переменную COMMANDSTRING вот с чем:
<button>
<label>ACCEPT</label>
<variable>GOMMANDSRING</variable>
<action>echo "Start of scrot:"</action>
<action>cat [ echo $COMMANDSTRING ] | scrot </action>
</button>
то есть передать ф-ции <action> строку аргументов для scrot
Все остально работает: каталог для сохранения выбирается,
установки выбранные пользователем хранятся до выхода из программы.
// закомментированные в начале файла строки ##sprintf(...) это то,
что работает в bash, но не принимается в gtkdialog, а ТАК хотелось...
Размер bash-файла 1.7 КБ
Вот скриншот его окна:
[attachment=17915,756]
Offline
4. Ну, нет так нет.
...
Специфику программирования gtkdialog-bash я давно уже забыл. Помню, что приходилось писать очень много xml-кода, за которым нужно было зорко следить и который трудно было уразуметь и править. А какое-то действие прикрутить, так это вообще... Или вот что, обычно диалог сначала полностью формируется, а потом показывается, как-то вывести "живую" информацию в уже имеющийся диалог было на грани возможного. В общем, я тут не советчик.
Свой диалог я дорабатывать не собираюсь. Я просто хотел показать, что тот же диалог гораздо удобнее создать в специальном графическом редакторе, чем в текстовом редакторе. А запускается и тот и другой вариант диалога всё в том же gtkdialog.
Я думаю, что никакого окне не нужно вовсе. Достаточно клавиш-модификаторов (ctrl, alt, shift) с горячей кнопкой PrtSc. Не знаю, есть ли уже устоявшееся ожидаемое поведение?
Например, без модификаторов - весь экран; ctrl - выделение; alt - активное окно; всё вышеперечисленное и shift - задержка 5 секунд перед вышеперечисленными действиями.
Ну и желательно, чтобы был rc-файл, в котором можно раз и навсегда прописать настройки под себя, как то: папка, формат имени, тип файла, длительность паузы. Но для этого, похоже, нужно или хакать сырцы или обернуть бинарник своим скриптом.
Offline
Тогда вспомним Великого Кормчего (Мао-Цзе-Дуна):
"Пусть расцветают все цветы..."
(Подразумевалось, что ненужные будут подстрижены).
Offline
Все же позволю себе некоторые комментарии
-----------------------------------------
> А какое-то действие прикрутить, так это вообще...
Есть строки-действие <action> ... </action>
> как-то вывести "живую" информацию в уже имеющийся диалог было на грани возможного.
То же самое строки-событие <event> ... </event>
> Я просто хотел показать, что тот же диалог гораздо удобнее создать в специальном графическом редакторе
Его (граф. редактора), а еще хуже библиотек может не оказаться у другого пользователя.
> Я думаю, что никакого окне не нужно вовсе. Достаточно клавиш-модификаторов (ctrl, alt, shift) с горячей кнопкой PrtSc.
Вот с этим полностью согласен. Но...
Клавиши-модификаторы, мне кажется, прерогатива разработчиков системы (буду разбираться с этим).
Имя файла по умолчанию длинное, но оно содержит <дату-время>. Если их убрать и пользователь будет делать подряд более одного скриншота, то будет конфликт имен. Поэтому <имя_файла> scrot'а я не стал трогать.
А переименовать файл/файлы потом большого труда не составит.
> Ну и желательно, чтобы был rc-файл, в котором можно раз и навсегда прописать настройки под себя,
Если делать ТОЛЬКО для себя, то согласен.
Если делать ДЛЯ ВСЕХ, то нет.
> как то: папка, формат имени, тип файла, длительность паузы. Но для этого, похоже, нужно или хакать сырцы
Все это есть в аргументах/ключах вызова программы (если мы говорим о scrot).
> или обернуть бинарник своим скриптом
Что я и сделал. Но... опять но:
Я "отважился" дать пользователю только три параметра:
1. тип захвата (всё, окно, область-рамка)
2. время задержки "снимка" от 0 до 30 сек
3. место куда помещать снимки.
И вот почему:
1. новый инструмент потребует установки из репы программы scrot - с этим пользователь надеемся справится (а на нет и суда нет),
2. поиск/установка новых версий чего-либо вдогонку к scrot для пользователя может быть уже "перебор",
3. мышиное управление де-факто переползло из Windows в Linux и с этим надо считаться,
4. даже свой бинарник, сделанный на GTK2 я решил переделать в скрипт для большей совместимости с тем, что имеет ОС в минимальной конфигурации, а вовсе не из-за его размера.
Резюме: если для себя, то можно все переделать в конкретной ОС, если для других, то как у врачей: "не навреди".
Надеюсь,что мы с Алексеем рассматриваем все это, ТОЛЬКО КАК ОБМЕН МНЕНИЯМИ и ни в коем случае не как спор.
По моему глубокому убеждению в споре рождается все что угодно, кроме истины.
Offline
В процессе мучений со скриптом для scrot + gtkdialig решение нашел, но оно неутешительное.
В ОС slitaz старая версия gtkdialig (0.7.20), которая не "видит" дополнительные функции пользователя.
А без них невозможно собрать строку аргументов для вызова scrot.
root@slitaz:~/Desktop/scrotdlg-bash2# gtkdialog -v
gtkdialog version 0.7.20 (C) 2004, 2005, 2006, 2007 by Laszlo Pere
Вот как выглядят ф-ции, которые пишет в начале скрипта автор (в данном случае я сам):
call() {
funccommand $COMBOBOX1 $COMBOBOX2
echo "call_COMMANDSTRING= $COMMANDSTRING"
cat "$COMMANDSTRING" | scrot
}
она вызывается из основного кода скрипта:
<button>
<label>ACCEPT</label>
<variable>GOMMANDSRING</variable>
<action>echo "Start of scrot:"</action>
<action>call </action>
</button>
и она вызывает другую пользовательскую ф-цию funccommand () :
funccommand () {
if [ "$COMBOBOX1" == "All" ]; then
COMMAND1=
else COMMAND1="-s"
fi
... ... ...
... ... ...
echo "End of export variables."
}
В результате получаем строку аргументов для вызова программы scrot такого вида:
scrot -d 5 -s -e 'mv $f ~' (задержка 5 сек., выбор области, поместить в DIR)
Но для этого нужно иметь gtkdialig версии не ниже 0.8.0
Установка gtkdialig версии0.8.2 из исходников выдает ошибку:
./configure
make
/usr/lib/gcc/i486-slitaz-linux/4.5.2/../../../libxml2.so: undefined reference to `gzopen64@ZLIB_1.2.3.3'
Finita la comedia!
Не стал разбираться, что за отсутствующая ссылка на gzopen64@ZLIB_1.2.3.3
Установил gtkdialig версии0.8.2 в Юбунте и там разбирался со скриптованием на bash.
Но вывод для себя сделал такой:
Ваять программы на СИ получается надежней, хоть и дольше.
(Ха-ха! За время маяты со скриптом можно было добежать до финской границы).
Правда немного изучил, то от чего уклонялся, возможно пригодится позднее.
Offline
>В ОС slitaz старая версия gtkdialig (0.7.20), которая не "видит" дополнительные функции пользователя.
Попросить собрать новую не вариант?
Offline
> Попросить собрать новую не вариант?
Конечно вариант, но во-первых неловко грузить своими неглобальными для slitaz проблемами, а во-вторых такую новую версию хотелось бы не только для себя юзать, а видеть в репозитории.
Offline
Pushed to wok: http://hg.slitaz.org/wok/rev/a61559756120
Кстати, в исходниках есть документация в формате html и куча примеров.
Я бы собрал из них пакет, но: среди страниц документации нет главной (можно было бы сделать пункт в меню, открывающий какую-нибудь страничку док.); во-вторых, пакет с примерами? куда их ложить? /usr/share/gtkdialog?
Offline
> Pushed to wok:
Я не очень понимаю, что это означает. Новый пакет скоро будет в репозитории, или что-то другое?
> можно было бы сделать пункт в меню, открывающий какую-нибудь страничку док.
Мануала практически нет. Есть очень старый и "кургузый" от первого разработчика:
http://xpt.sourceforge.net/techdocs/language/gtkdialog/gtkde03-GtkdialogUserManual/
Может быть проще дать ссылку на сайт нового разработчика?
http://code.google.com/p/gtkdialog/
Если "политика партии" позволяет, то ссылку на страничку сайта "конкурирующей фирмы":
http://www.murga-linux.com/puppy/viewtopic.php?t=38608
> во-вторых, пакет с примерами? куда их ложить?
Может быть проще дать ссылку на сайт с примерами?
http://pclosmag.com/html/Issues/200910/page21.html
http://code.google.com/p/gtkdialog/source/browse/#svn%2Ftrunk%2Fexamples
А это примеры с картинками:
http://xpt.sourceforge.net/techdocs/language/gtkdialog/gtkde02-GtkdialogExamples/single/
Offline
> Pushed to wok:
Я не очень понимаю, что это означает. Новый пакет скоро будет в репозитории, или что-то другое?
Я уже объяснял в одном из недавних постов, какой путь проходится от изменений до непосредственно пакета. Неохота повторяться.
> можно было бы сделать пункт в меню, открывающий какую-нибудь страничку док.
Мануала практически нет. Есть очень старый и "кургузый" от первого разработчика:
http://xpt.sourceforge.net/techdocs/language/gtkdialog/gtkde03-GtkdialogUserManual/
Я имел ввиду именно документацию, поставляемую с исходниками.
Может быть проще дать ссылку на сайт нового разработчика?
http://code.google.com/p/gtkdialog/
В обновленном рецепте имеется ссылка на этот сайт нового разработчика. Ссылка имеется всегда. В любом пакете. Перейти на сайт разработчика можно нажав на глобус в менеджере пакетов (часть TazPanel).
Если "политика партии" позволяет, то ссылку на страничку сайта "конкурирующей фирмы":
http://www.murga-linux.com/puppy/viewtopic.php?t=38608
В документации, поставляемой с исходниками имеется ссылка на murga-linux (внизу).
> во-вторых, пакет с примерами? куда их ложить?
Может быть проще дать ссылку на сайт с примерами?
http://pclosmag.com/html/Issues/200910/page21.html
http://code.google.com/p/gtkdialog/source/browse/#svn%2Ftrunk%2Fexamples
Куда это прописать?
Offline
[ Generated in 0.019 seconds, 7 queries executed - Memory usage: 1.64 MiB (Peak: 1.77 MiB) ]