<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; bash (sh) & gtkdialog]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=25092&amp;type=atom" />
	<updated>2012-11-30T16:31:32Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=25092</id>
		<entry>
			<title type="html"><![CDATA[Re: bash (sh) & gtkdialog]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=311879#p311879" />
			<content type="html"><![CDATA[<p>3 новых варианта на bash скриншотера scrotdlg<br /><a href="http://www.mediafire.com/?mzill1xlng47g31">http://www.mediafire.com/?mzill1xlng47g31</a></p><p><strong>bash и gtkdialog позволяют создать окно, содержащее вверху панель-меню <br />и одновременно поместить на это окно некоторые виджеты.</strong><br />Это пример-этюд. В скрипте 3 диалога: MAIN_DIALOG, CHOOSER, ABOUT и 1 ф-ция&nbsp; funccommand()<br />которые дают представление о чем-то большем, чем стандартные примеры с 1-2 кнопками.<br />Если у Вас есть abiword, gnumeric, gimp, то они открываются из меню &quot;Run Programs&quot;.<br />Из меню &quot;Help&quot; в окно терминала выводятся некоторые man-страницы.<br />В меню &quot;About&quot; краткий текст &quot;О программе&quot; и &quot;Выход&quot;.<br />Есть еще StatusBar, но до его &quot;наполнения&quot; я пока не добрался.<br />Дальше можно перекраивать/наполнять этот этюд под свои задачи (на то он и этюд).<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>#!/bin/bash

GTKDIALOG=gtkdialog

IMAGEFILE=( $(find /usr/share/icons -maxdepth 4 -type f | head -3) )

funccommand () {
if [ &quot;$COMBOBOX1&quot; == &quot;All&quot; ]; then
COMMAND1=&quot;-m&quot;
else COMMAND1=&quot;-s&quot;
fi
## !!! Attention: This works in scrot ver. &gt;= 0.8 only !!!
if [ &quot;$COMBOBOX1&quot; == &quot;Window&quot; ]; then
COMMAND1=&quot;-u&quot;
fi
COMMAND2=&quot;$COMBOBOX2&quot;
COMMANDSTRING=&quot;$COMMAND1-b-d $COMMAND2&quot;
_dir=`dirname &quot;$FILE&quot;`
cd &quot;${_dir}&quot;
echo FILE= &quot;${_dir}&quot;
scrot &quot;$COMMANDSTRING&quot;
}; export -f funccommand

export ABOUT=&#039;
&lt;window title=&quot;About&quot;&gt;
        &lt;text&gt;
            &lt;variable&gt;PROGRAM&lt;/variable&gt;
            &lt;label&gt;This program is only demonstration of some possibilities of sharing of the program gtkdialog and bash-script. Here are specially used menubar and a main window with widgets. Also as well as various methods of a call of functions. See FileChooser in menubar &amp; DIR-icon in main-window. It is only demo.&lt;/label&gt;
        &lt;/text&gt;
            &lt;action&gt;echo PROGRAM= $PROGRAM&lt;/action&gt;
&lt;/window&gt;
&#039;

export CHOOSER=&#039;
&lt;window title=&quot;Chooser&quot;&gt;
    &lt;frame DubleClick any file in Selected DIR for save screenshot&gt;
        &lt;chooser&gt;
            &lt;width&gt;360&lt;/width&gt;
            &lt;height&gt;250&lt;/height&gt;
            &lt;variable&gt;FILE&lt;/variable&gt;
            &lt;default&gt;/home/&lt;/default&gt;
            &lt;action&gt;save:FILE&lt;/action&gt;
            &lt;action&gt;echo FILE= $FILE&lt;/action&gt;

        &lt;/chooser&gt;
    &lt;/frame&gt;
&lt;/window&gt;
&#039;

export MAIN_DIALOG=&#039;
&lt;window title=&quot;MenuBar&quot; resizable=&quot;false&quot; width-request=&quot;300&quot; height-request=&quot;120&quot;  border-width=&quot;1&quot;&gt;
   &lt;vbox spacing=&quot;1&quot;&gt;
   &lt;vbox&gt;
      &lt;menubar&gt;
         &lt;menu label=&quot;About&quot;&gt;
            &lt;menuitem stock-id=&quot;gtk-about&quot;&gt;
                &lt;action&gt;Launch:ABOUT&lt;/action&gt;
            &lt;/menuitem&gt;

            &lt;menuitem stock-id=&quot;gtk-add&quot;&gt;&lt;/menuitem&gt;
            &lt;menuitem stock-id=&quot;gtk-file&quot;&gt;&lt;/menuitem&gt;
            &lt;menuitemseparator&gt;&lt;/menuitemseparator&gt;
            &lt;menuitem stock-id=&quot;gtk-quit&quot; accel-key=&quot;0x51&quot; accel-mods=&quot;4&quot;&gt;
               &lt;action&gt;exit:Quit&lt;/action&gt;
            &lt;/menuitem&gt;
         &lt;/menu&gt;

         &lt;menu&gt;
            &lt;menuitem icon-name=&quot;abiword&quot; label=&quot;AbiWord&quot;&gt;
            &lt;action&gt;abiword&lt;/action&gt;
            &lt;/menuitem&gt;
            &lt;menuitem icon-name=&quot;gnumeric&quot; label=&quot;Gnumeric 32px&quot;&gt;
               &lt;height&gt;32&lt;/height&gt;
            &lt;action&gt;gnumeric&lt;/action&gt;
            &lt;/menuitem&gt;
            &lt;menuitem icon-name=&quot;gimp&quot; label=&quot;_Gimp 48px&quot; use-underline=&quot;true&quot;&gt;
               &lt;height&gt;48&lt;/height&gt;
            &lt;action&gt;gimp&lt;/action&gt;
            &lt;/menuitem&gt;

            &lt;menuitem label=&quot;FileChooser&quot;&gt;
            &lt;action&gt;Launch:CHOOSER&lt;/action&gt;
            &lt;/menuitem&gt;

            &lt;label&gt;&quot;Run Programs&quot;&lt;/label&gt;
         &lt;/menu&gt;

         &lt;menu label=&quot;Help&quot;&gt;
            &lt;menuitem label=&quot;Help&quot;&gt;
            &lt;action&gt;help&lt;/action&gt;
            &lt;/menuitem&gt;
            &lt;menuitem label=&quot;help export&quot;&gt;
            &lt;action&gt;&#039;&quot;help export&quot;&#039;&lt;/action&gt;
            &lt;/menuitem&gt;
            &lt;menuitem label=&quot;help cd&quot;&gt;
            &lt;action&gt;&#039;&quot;help cd&quot;&#039;&lt;/action&gt;
            &lt;/menuitem&gt;
            &lt;menuitem label=&quot;help set&quot;&gt;
            &lt;action&gt;&#039;&quot;help set&quot;&#039;&lt;/action&gt;
            &lt;/menuitem&gt;
         &lt;/menu&gt;
      &lt;/menubar&gt;

   &lt;hbox&gt;
   &lt;text&gt;
      &lt;variable&gt;FILE&lt;/variable&gt;
      &lt;label&gt;Pick any file in target DIR&lt;/label&gt;
   &lt;/text&gt;
   &lt;button&gt;
      &lt;input file stock=&quot;gtk-open&quot;&gt;&lt;/input&gt;
      &lt;action&gt;Fileselect:FILE&lt;/action&gt;
      &lt;action&gt;echo FILE= $FILE&lt;/action&gt;
&lt;action type=&quot;$FILE&quot;&gt;&quot;$StatBar&quot;&lt;/action&gt;
&lt;action&gt;echo StatBar= &quot;$StatBar&quot;&lt;/action&gt;
   &lt;/button&gt;
    &lt;button cancel&gt;&lt;/button&gt;
   &lt;/hbox&gt;

    &lt;hbox&gt;
        &lt;combobox width-request=&quot;90&quot;&gt;
          &lt;width&gt;10&lt;/width&gt;
          &lt;variable&gt;COMBOBOX1&lt;/variable&gt;
          &lt;item&gt;All&lt;/item&gt;
          &lt;item&gt;Window&lt;/item&gt;
          &lt;item&gt;Area&lt;/item&gt;
          &lt;action&gt;save:COMBOBOX1&lt;/action&gt;
        &lt;/combobox&gt;
        &lt;combobox width-request=&quot;60&quot;&gt;
          &lt;width&gt;10&lt;/width&gt;
          &lt;variable&gt;COMBOBOX2&lt;/variable&gt;
          &lt;item&gt;0&lt;/item&gt;
          &lt;item&gt;1&lt;/item&gt;
          &lt;item&gt;2&lt;/item&gt;
          &lt;item&gt;3&lt;/item&gt;
          &lt;item&gt;5&lt;/item&gt;
          &lt;item&gt;10&lt;/item&gt;
          &lt;item&gt;20&lt;/item&gt;
          &lt;action&gt;save:COMBOBOX2&lt;/action&gt;
        &lt;/combobox&gt;
        &lt;button&gt;
            &lt;label&gt;ACCEPT&lt;/label&gt;
            &lt;action&gt;funccommand&lt;/action&gt;
        &lt;/button&gt;
    &lt;/hbox&gt;

      &lt;statusbar has-resize-grip=&quot;false&quot;&gt;
         &lt;variable&gt;StatBar&lt;/variable&gt;
         &lt;label&gt;StatBar: Message from an input commande&lt;/label&gt;
         &lt;default&gt;StatBar: Message from an input command&lt;/default&gt;
         &lt;input&gt;echo StatBar: Message from an input command&lt;/input&gt;
         &lt;input file&gt;inputfile&lt;/input&gt;
         &lt;sensitive&gt;true&lt;/sensitive&gt;
         &lt;output file&gt;outputfile&lt;/output&gt;
      &lt;/statusbar&gt;
   &lt;/vbox&gt;
   &lt;/vbox&gt;
&lt;/window&gt;
&#039;

case $1 in
   -d | --dump) echo &quot;$MAIN_DIALOG&quot; ;;
   *) $GTKDIALOG --program=MAIN_DIALOG ;;
esac </code></pre></div></div></div>]]></content>
			<author>
				<name><![CDATA[sklimkin]]></name>
				<uri>https://linuxforum.ru/profile.php?id=18807</uri>
			</author>
			<updated>2012-11-30T16:31:32Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=311879#p311879</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: bash (sh) & gtkdialog]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=309636#p309636" />
			<content type="html"><![CDATA[<p>Вот пример, в котором&nbsp; bash+gtkdialog открывают из одного окна другое, из другого третье.<br />Это всего-лишь этюд. И я пока не нашел правильного способа закрывать одно окно из другого или из него самого.</p><div class="codebox"><pre><code>#! /bin/bash

funccommand () {
if [ &quot;$COMBOBOX1&quot; == &quot;All&quot; ]; then
COMMAND1=&quot;-m&quot;
else COMMAND1=&quot;-s&quot;
fi
## !!! Attention: This works in scrot ver. &gt;= 0.8 only !!!
if [ &quot;$COMBOBOX1&quot; == &quot;Window&quot; ]; then
COMMAND1=&quot;-u&quot;
fi
COMMAND2=&quot;$COMBOBOX2&quot;
COMMANDSTRING=&quot;$COMMAND1-b-d $COMMAND2&quot;
##cd &quot;$FILE&quot;
_dir=`dirname &quot;$FILE&quot;`
cd &quot;${_dir}&quot;
echo FILE= &quot;${_dir}&quot;
scrot &quot;$COMMANDSTRING&quot;
}; export -f funccommand

export CHOOSER2=&#039;   
&lt;window width-request=&quot;240&quot; title=&quot;Select target DIR&quot; decorated=&quot;true&quot;&gt;
&lt;vbox&gt;
   &lt;hbox&gt;
   &lt;text&gt;
      &lt;variable&gt;FILE&lt;/variable&gt;
      &lt;label&gt;Pick any file in target DIR&lt;/label&gt;
   &lt;/text&gt;
   &lt;button&gt;
      &lt;input file stock=&quot;gtk-open&quot;&gt;&lt;/input&gt;
      &lt;action&gt;Fileselect:FILE&lt;/action&gt;
      &lt;action&gt;echo return_value: $?&lt;/action&gt;
      &lt;action&gt;echo FILE= $FILE&lt;/action&gt;
   &lt;/button&gt;
   &lt;/hbox&gt;
&lt;/vbox&gt;         
&lt;/window&gt;&#039;

export CHOOSER=&#039;
&lt;window title=&quot;Chooser&quot;&gt;
    &lt;frame Select DIR for save screenshot&gt;
        &lt;chooser&gt;
            &lt;width&gt;320&lt;/width&gt;
            &lt;height&gt;250&lt;/height&gt;
            &lt;variable&gt;FILE&lt;/variable&gt;
            &lt;default&gt;/home/&lt;/default&gt;
            &lt;action&gt;save:FILE&lt;/action&gt;
            &lt;action&gt;echo FILE= $FILE&lt;/action&gt;
        &lt;/chooser&gt;
    &lt;/frame&gt;
&lt;/window&gt;
&#039;

export DIALOG1=&#039;
&lt;window title=&quot;Dialog1&quot; width-request=&quot;320&quot;&gt;
  &lt;vbox&gt;
    &lt;text&gt;
      &lt;label&gt;Select options in combo-boxes&lt;/label&gt;
    &lt;/text&gt;
    &lt;frame Widgets&gt;
    &lt;hbox spacing=&quot;5&quot;&gt;
    &lt;combobox width-request=&quot;90&quot;&gt;
      &lt;width&gt;10&lt;/width&gt;
      &lt;variable&gt;COMBOBOX1&lt;/variable&gt;
      &lt;item&gt;All&lt;/item&gt;
      &lt;item&gt;Window&lt;/item&gt;
      &lt;item&gt;Area&lt;/item&gt;
      &lt;action&gt;save:COMBOBOX1&lt;/action&gt;
    &lt;/combobox&gt;
    &lt;combobox width-request=&quot;60&quot;&gt;
      &lt;width&gt;10&lt;/width&gt;
      &lt;variable&gt;COMBOBOX2&lt;/variable&gt;
      &lt;item&gt;0&lt;/item&gt;
      &lt;item&gt;1&lt;/item&gt;
      &lt;item&gt;2&lt;/item&gt;
      &lt;item&gt;3&lt;/item&gt;
      &lt;item&gt;5&lt;/item&gt;
      &lt;item&gt;10&lt;/item&gt;
      &lt;item&gt;20&lt;/item&gt;
      &lt;action&gt;save:COMBOBOX2&lt;/action&gt;
    &lt;/combobox&gt;
    &lt;button&gt;
        &lt;label&gt;ACCEPT&lt;/label&gt;
        &lt;action&gt;funccommand&lt;/action&gt;
    &lt;/button&gt;
    &lt;/hbox&gt;
    &lt;/frame&gt;
    &lt;hbox&gt;
      &lt;button&gt;
        &lt;label&gt;Select DIR&lt;/label&gt;
        &lt;action&gt;Launch:CHOOSER&lt;/action&gt;
      &lt;/button&gt;
      &lt;button&gt;
        &lt;label&gt;Select DIR2&lt;/label&gt;
        &lt;action&gt;Launch:CHOOSER2&lt;/action&gt;
      &lt;/button&gt;
      &lt;button&gt;
        &lt;label&gt;Main Dialog&lt;/label&gt;
        &lt;action&gt;Launch:MAIN_DIALOG&lt;/action&gt;
      &lt;/button&gt;
      &lt;button&gt;
        &lt;label&gt;Close&lt;/label&gt;

        &lt;action&gt;Closewindow:DIALOG1&lt;/action&gt;

      &lt;/button&gt;
    &lt;/hbox&gt;
  &lt;/vbox&gt;
&lt;/window&gt;
&#039;

export MAIN_DIALOG=&#039;
&lt;window title=&quot;SCROT gtkdialog&quot; width-request=&quot;280&quot; height-request=&quot;260&quot;&gt;
 &lt;vbox&gt;
  &lt;frame Widgets&gt;
    &lt;checkbox&gt;
      &lt;label&gt;This is a checkbox&lt;/label&gt;
      &lt;variable&gt;CHECKBOX&lt;/variable&gt;
    &lt;/checkbox&gt;
    &lt;entry&gt;
      &lt;input&gt;date&lt;/input&gt;
      &lt;variable&gt;ENTRY&lt;/variable&gt;
    &lt;/entry&gt;
  &lt;/frame&gt;
  &lt;frame Button actions&gt;
    &lt;hbox&gt;
      &lt;button&gt;
        &lt;label&gt;launch DIALOG1&lt;/label&gt;
        &lt;action&gt;Launch:DIALOG1&lt;/action&gt;
      &lt;/button&gt;
      &lt;button&gt;
        &lt;label&gt;close window ONLY&lt;/label&gt;

        &lt;action&gt;Closewindow:MAIN_DIALOG&lt;/action&gt;

      &lt;/button&gt;
    &lt;/hbox&gt;
    &lt;hbox homogeneous=&quot;true&quot;&gt;
      &lt;button&gt;
        &lt;label&gt;enable&lt;/label&gt;
        &lt;action type=&quot;enable&quot;&gt;ENTRY&lt;/action&gt;
        &lt;action type=&quot;enable&quot;&gt;CHECKBOX&lt;/action&gt;
      &lt;/button&gt;
      &lt;button&gt;
        &lt;label&gt;disable&lt;/label&gt;
        &lt;action type=&quot;disable&quot;&gt;ENTRY&lt;/action&gt;
        &lt;action type=&quot;disable&quot;&gt;CHECKBOX&lt;/action&gt;
      &lt;/button&gt;
    &lt;/hbox&gt;
    &lt;hbox homogeneous=&quot;true&quot; spacing=&quot;5&quot;&gt;
      &lt;button&gt;
        &lt;label&gt;refresh&lt;/label&gt;
        &lt;action type=&quot;refresh&quot;&gt;ENTRY&lt;/action&gt;
      &lt;/button&gt;
      &lt;button&gt;
        &lt;label&gt;clear&lt;/label&gt;
        &lt;action type=&quot;clear&quot;&gt;ENTRY&lt;/action&gt;
      &lt;/button&gt;
      &lt;button&gt;
        &lt;label&gt;fileselect&lt;/label&gt;
        &lt;action&gt;Fileselect:ENTRY&lt;/action&gt;
      &lt;/button&gt;
    &lt;/hbox&gt;
  &lt;/frame&gt;
  &lt;hbox&gt;
   &lt;button cancel&gt;&lt;/button&gt;
  &lt;/hbox&gt;
 &lt;/vbox&gt;
&lt;/window&gt;
&#039;

case $1 in
    func) funccommand $2 ;;
    *) gtkdialog --program=MAIN_DIALOG ;;
esac</code></pre></div><p>Здесь показаны также 2 разных способа вызова окна file-chooser:<br />CHOOSER и CHOOSER2</p>]]></content>
			<author>
				<name><![CDATA[sklimkin]]></name>
				<uri>https://linuxforum.ru/profile.php?id=18807</uri>
			</author>
			<updated>2012-11-17T17:23:55Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=309636#p309636</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: bash (sh) & gtkdialog]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=308491#p308491" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>sklimkin пишет:</cite><blockquote><p>scrot по умолчанию вставляет в имя файла дату и время до секунд - это удобно.</p></blockquote></div><p>Можно формировать имя с помощью <em>date</em>.</p>]]></content>
			<author>
				<name><![CDATA[-=Serj=-]]></name>
				<uri>https://linuxforum.ru/profile.php?id=16175</uri>
			</author>
			<updated>2012-11-09T20:49:29Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=308491#p308491</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: bash (sh) & gtkdialog]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=308490#p308490" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Можно самому задавать имя файла.</p></blockquote></div><p>scrot по умолчанию вставляет в имя файла дату и время до секунд - это удобно.<br />Если делать больше 2-х снимков подряд, то не возникает конфликта имен.<br />Можно и самому задавать, много чего можно...</p><div class="codebox"><pre><code>А что программа должна делать то? GUI для scrot?</code></pre></div><p>Да.</p>]]></content>
			<author>
				<name><![CDATA[sklimkin]]></name>
				<uri>https://linuxforum.ru/profile.php?id=18807</uri>
			</author>
			<updated>2012-11-09T20:46:43Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=308490#p308490</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: bash (sh) & gtkdialog]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=308450#p308450" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>sklimkin пишет:</cite><blockquote><p>Если кто-то знает более изящное решение вопроса, с удовольствием поучусь.</p></blockquote></div><p>Можно самому задавать имя файла.</p><p>PS. А что программа должна делать то? GUI для <em>scrot</em>?</p>]]></content>
			<author>
				<name><![CDATA[-=Serj=-]]></name>
				<uri>https://linuxforum.ru/profile.php?id=16175</uri>
			</author>
			<updated>2012-11-09T15:20:30Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=308450#p308450</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: bash (sh) & gtkdialog]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=308419#p308419" />
			<content type="html"><![CDATA[<p>А вот вариант без обратных кавычек, так даже поизящней.<br />Проверил. Можно в одном сеансе раскладывать снимки даже в разные каталоги.<br />Привожу только исправленную функцию:<br /></p><div class="codebox"><pre><code>funccommand () {
if [ &quot;$COMBOBOX1&quot; == &quot;All&quot; ]; then
COMMAND1=&quot;-m&quot;
else COMMAND1=&quot;-s&quot;
fi
## !!! Attention: This works in scrot ver. &gt;= 0.8 only !!!
if [ &quot;$COMBOBOX1&quot; == &quot;Window&quot; ]; then
COMMAND1=&quot;-u&quot;
fi
COMMAND2=&quot;$COMBOBOX2&quot;
COMMANDSTRING=&quot;$COMMAND1-b-d $COMMAND2&quot;
cd &quot;$FILE&quot;
scrot &quot;$COMMANDSTRING&quot;
} </code></pre></div><p>Варианты того же самого на СИ смотри:<br /><a href="http://linuxforum.ru/viewtopic.php?pid=308495#p308495">http://linuxforum.ru/viewtopic.php?pid=308495#p308495</a></p>]]></content>
			<author>
				<name><![CDATA[sklimkin]]></name>
				<uri>https://linuxforum.ru/profile.php?id=18807</uri>
			</author>
			<updated>2012-11-09T13:23:43Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=308419#p308419</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[bash (sh) & gtkdialog]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=308414#p308414" />
			<content type="html"><![CDATA[<p><strong>GUI-диалог для программы scrot</strong><br /><em>Есть такая &quot;всемирно известная&quot; программа для &quot;фотографирования&quot; экрана или его частей - scrot</em><br />Есть и многие другие подобные программы, но это интересна тем, что она:<br />1. маленькая по размеру и зависимостям<br />2. присутствует в репозиториях всех маленьких Линуксов<br />3. имеет достаточное для практики количество ключей<br />4. легко интегрируется с программами позволяющими реализовать графический интерфейс с пользователем, т.е. окно.</p><p>Есть еще одна программа, компактная по коду и зависимостям, также доступная из самых разных репозиториев: <strong>gtkdialog</strong><br />gtkdialog позволяет вызывать его из скриптов bash/sh и иже с ними, и даже из кода написанного на СИ (например gcc &amp; GTK+).</p><p>Вот что из этого получилось:<br />-----------------------------------------<br />Программа scrot создает файл - снимок экрана в том каталоге, откуда она вызывается.</p><p>Включение в код скрипта chooser&#039;а было бы бессмысленным, если бы созданный программой scrot файл не перемещался туда, куда указал пользователь.</p><p>Help смотри в конце поста, или еще проще: scrot --help</p><p>Но команда перемещения, указанная в help&#039;е scrot вида:<br />scrot operation.png -e &#039;mv $f /home/kurt/Desktop/&#039;<br />работает только из командной строки терминала и не работает из скрипта, если имя файла задает сам scrot.<br />Поясняю:<br />1. если задавать имя файла явно, то премещение происходит,<br />2. если создание имени файла доверить scrot&#039;у, то премещение не происходит,<br />3. создание имени файла scrot&#039;ом предпочтительно потому, что он включает в него дату и время до секунд - это не создает конфликта имен файлов, если делается более одного снимка за сеанс.</p><p>Поэтому процесс создания и перемещения скриншота/скриншотов решается в 2 приема:<br />scrot &quot;$COMMANDSTRING&quot;<br /> - в этой строке параметры захвата экрана и время задержки снимка<br />mv `echo *_scrot.png` &quot;$FILE&quot;<br /> - а в этой строке получение имени файла, созданного scrot&#039;ом и адрес, куда переместить этот файл.</p><p>Команда нахождения имени файла обязательно берется в обратные (или косые) кавычки - тогда то, что в них интерпретируется именно как КОМАНДА.<br />Каталог назначения $FILE берется в двойные кавычки на тот случай, если в нем окажется нечто типа &lt;Рабочий стол&gt;, то есть в имени есть пробелы.<br />Иначе до команды mv дойдет только &lt;стол&gt; и она не сработает.</p><p>Таким образом команда mv получает правильное имя файла и правильный каталог назначения.</p><p>Нет в компьютерном мире совершенства: если в каталоге со скриптом будут файлы, с окончанием на _scrot.png то перемещения снимка не получится и снимок осядет в этом ТЕКУЩЕМ каталоге.<br />Значит надо &quot;следить за чистотой рядов&quot;.</p><p>Если кто-то знает более изящное решение вопроса, с удовольствием поучусь.</p><div class="codebox"><pre><code>#!/bin/bash 
## or /bin/sh
funccommand () {
if [ &quot;$COMBOBOX1&quot; == &quot;All&quot; ]; then
COMMAND1=&quot;-m&quot;
else COMMAND1=&quot;-s&quot;
fi
## !!! Attention: This works in scrot ver. &gt;= 0.8 only !!!
if [ &quot;$COMBOBOX1&quot; == &quot;Window&quot; ]; then
COMMAND1=&quot;-u&quot;
fi
COMMAND2=&quot;$COMBOBOX2&quot;
COMMANDSTRING=&quot;$COMMAND1-b-d $COMMAND2&quot;
##echo &quot;COMMANDSTRING= $COMMANDSTRING&quot;
##echo &quot;COMBOBOX1= $COMBOBOX1&quot;
##echo &quot;COMBOBOX2= $COMBOBOX2&quot;
##echo &quot;FILE= $FILE&quot;
scrot &quot;$COMMANDSTRING&quot;
mv `echo *_scrot.png` &quot;$FILE&quot;
}

export MAIN_DIALOG=&quot;
&lt;window&gt;
    &lt;vbox&gt;
        &lt;text&gt;
            &lt;label&gt;SCReenshOT  screen-grabber&lt;/label&gt;
        &lt;/text&gt;
        &lt;frame Command button EXIT&gt;
            &lt;hbox&gt;
                &lt;button cancel&gt;&lt;/button&gt;
            &lt;/hbox&gt;
        &lt;/frame&gt;
        &lt;frame User-settings&gt;
            &lt;hbox&gt;
                &lt;vbox&gt;
                    &lt;text&gt;
                        &lt;label&gt;Select grab-mode&lt;/label&gt;
                    &lt;/text&gt;
                    &lt;combobox&gt;
                        &lt;variable&gt;COMBOBOX1&lt;/variable&gt;
                        &lt;item&gt;All&lt;/item&gt;
                        &lt;item&gt;Window&lt;/item&gt;
                        &lt;item&gt;Area&lt;/item&gt;
                        &lt;action&gt;save:COMBOBOX1&lt;/action&gt;
                    &lt;/combobox&gt;
                &lt;/vbox&gt;
                &lt;vbox&gt;
                    &lt;text&gt;
                        &lt;label&gt;Time-delay-sec&lt;/label&gt;
                    &lt;/text&gt;
                    &lt;combobox&gt;
                        &lt;variable&gt;COMBOBOX2&lt;/variable&gt;
                        &lt;item&gt;0&lt;/item&gt;
                        &lt;item&gt;1&lt;/item&gt;
                        &lt;item&gt;2&lt;/item&gt;
                        &lt;item&gt;3&lt;/item&gt;
                        &lt;item&gt;5&lt;/item&gt;
                        &lt;item&gt;10&lt;/item&gt;
                        &lt;item&gt;20&lt;/item&gt;
                        &lt;action&gt;save:COMBOBOX2&lt;/action&gt;
                    &lt;/combobox&gt;
                &lt;/vbox&gt;
                &lt;button&gt;
                    &lt;label&gt;ACCEPT&lt;/label&gt;
                    &lt;action&gt;$0 func&lt;/action&gt;
                &lt;/button&gt;
            &lt;/hbox&gt;
        &lt;/frame&gt;
        &lt;frame Select DIR for save screenshot&gt;
            &lt;chooser&gt;
                &lt;height&gt;200&lt;/height&gt;
                &lt;width&gt;200&lt;/width&gt;
                &lt;variable&gt;FILE&lt;/variable&gt;
                &lt;default&gt;/home/&lt;/default&gt;
                &lt;action&gt;save:FILE&lt;/action&gt;
                &lt;action&gt;$2= $FILE&lt;/action&gt;
            &lt;/chooser&gt;
        &lt;/frame&gt;
    &lt;/vbox&gt;
&lt;/window&gt;
&quot;

case $1 in
    func) funccommand $2 ;;
    *) gtkdialog --program=MAIN_DIALOG ;;
esac</code></pre></div><p>Ссылки по теме:<br /><a href="http://ru.wikibooks.org/wiki/UNIX">http://ru.wikibooks.org/wiki/UNIX</a><br /><a href="http://en.wikipedia.org/wiki/Scrot">http://en.wikipedia.org/wiki/Scrot</a><br /><a href="http://linuxandfriends.com/2008/10/25/take-screenshots-in-linux-with-scrot/">http://linuxandfriends.com/2008/10/25/t … ith-scrot/</a><br /><a href="http://www.itnewb.com/tutorial/Using-Scrot-the-Screen-Shot-Command-Line-Utility-for-Linux">http://www.itnewb.com/tutorial/Using-Sc … -for-Linux</a></p><p>P.S. Закомментированные строки вида: ##echo ... ...<br />были нужны только для отладки, их можно смело удалить.<br /><strong>В строке mv `echo *_scrot.png` &quot;$FILE&quot;&nbsp; обязательно заключается в одинарные обратные (или косые) кавычки echo *_scrot.png.<br />Это буква Ё - но в латинской раскладке<br /></strong>обратите на это внимание, то есть: <strong>ОБРАТНАЯ_КАВЫЧКА</strong>echo *_scrot.png<strong>ОБРАТНАЯ_КАВЫЧКА</strong></p>]]></content>
			<author>
				<name><![CDATA[sklimkin]]></name>
				<uri>https://linuxforum.ru/profile.php?id=18807</uri>
			</author>
			<updated>2012-11-09T12:59:20Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=308414#p308414</id>
		</entry>
</feed>
