Pesquisa de site

Gtkdialog - Crie interfaces gráficas (GTK+) e caixas de diálogo usando shell scripts no Linux


Gtkdialog (ou gtkdialog) é um utilitário bacana de código aberto para criar e construir interfaces GTK+ e caixas de diálogo com a ajuda de scripts shell do Linux e usando a biblioteca GTK, bem como usar uma sintaxe semelhante a xml, que facilita a criação de interfaces usando gtkdialog. É muito semelhante à ferramenta mais famosa chamada Zenity, mas vem com alguns recursos personalizáveis úteis que permitem criar facilmente muitos widgets como vbox, hbox, botão, quadro, texto, menu e muito mais.

Leia também: Crie caixas de diálogo gráficas GTK+ usando Zenity

Instalação do Gtkdialog no Linux

Você pode baixar gtkdialog-0.8.3 (que é a versão mais recente) ou também pode usar o comando wget, descompactar o arquivo baixado e executar os seguintes comandos para compilar a partir do código-fonte.

sudo apt-get install build-essential		[on Debian based systems]
yum install gcc make gcc-c++			[on RedHat based systems]
wget https://gtkdialog.googlecode.com/files/gtkdialog-0.8.3.tar.gz
tar -xvf gtkdialog-0.8.3.tar.gz
cd gtkdialog-0.8.3/
./configure
make
sudo make install

Agora vamos começar a criar algumas caixas, crie um novo script “myprogram” na sua pasta pessoal.

Meu primeiro programa
cd
touch myprogram

Agora abra o arquivo “meuprograma” usando qualquer editor de texto desejado e adicione o seguinte código a ele.

#!/bin/bash 

GTKDIALOG=gtkdialog 
export MAIN_DIALOG=' 

<window title="My First Program" icon-name="gtk-about" resizable="true" width-request="300" height-request="310"> 

<vbox> 
	<hbox space-fill="true" space-expand="true"> 
		<button>	 
			<label>Welcome to TecMint.com Home!</label> 
			<action>echo "Welcome to TecMint.com Home!"</action> 
		</button> 
	</hbox> 
</vbox> 
</window> 
' 

case $1 in 
	-d | --dump) echo "$MAIN_DIALOG" ;; 
	*) $GTKDIALOG --program=MAIN_DIALOG --center ;; 

esac 
------------

Salve o arquivo, defina a permissão de execução e execute-o conforme mostrado.

chmod 755 myprogram
./myprogram

Foi assim que seu primeiro programa foi criado e executado usando gtkdialog.

Agora, explicaremos o código resumidamente.

  1. #!/bin/bash: A primeira linha de qualquer script de shell, é usada para especificar o caminho do shell bash.
  2. GTKDIALOG=gtkdialog: Aqui definimos uma variável para usá-la posteriormente ao executar o shell script com gtkdialog, esta linha deve estar em todos os scripts que você criar usando gtkdialog.
  3. export MAIN_DIALOG=: Outra variável que definimos que conterá toda a sintaxe da nossa interface, você pode substituir MAIN_DIALOG pelo nome que desejar, mas terá que substituí-lo também nas últimas 4 linhas do script.
  4. Título da janela: Não acho que esse código precise ser explicado, criamos um título, um ícone padrão para a janela, escolhemos se era redimensionável ou não, e definimos a largura e altura que queremos, é claro que todas essas opções são secundárias, você pode apenas usar a tag se quiser.
  5. : Usamos a tag vbox para criar uma caixa vertical, é importante criar uma tag vbox para conter outras tags como hbox e button, etc.
  6. : Aqui criamos uma caixa horizontal usando a tag , “space-fill” e “space-expand” são opções para expandir o hbox pela janela.
  7. <button>: Crie um novo botão.
  8. : Este é o texto padrão do botão, fechamos a tag do rótulo usando , claro que é muito importante fechar todas as tags que usamos.
  9. : Isto é o que acontece quando o botão é clicado, você pode executar um comando shell se quiser ou executar qualquer outro arquivo se quiser, há muitas outras ações e sinais também, não não se esqueça de fechá-lo usando .
  10. : Para fechar a tag do botão.
  11. : Para fechar a tag hbox.
  12. : Para fechar a tag da janela.

As últimas 4 linhas também devem estar em todos os scripts de shell que você cria usando gtkdialog, elas executam a variável MAIN_DIALOG usando o comando gtkdialog com a opção –center para centralizar a janela, muito útil na verdade.

Meu segundo programa

Da mesma forma, crie outro arquivo e chame-o de ‘segundo programa‘ e adicione todo o seguinte conteúdo a ele.

#!/bin/bash 

GTKDIALOG=gtkdialog 
export MAIN_DIALOG=' 

<window title="My Second Program" icon-name="gtk-about" resizable="true" width-request="250" height-request="150"> 

<vbox> 
	<hbox space-fill="true"> 
		<combobox>	 
			<variable>myitem</variable> 
			<item>First One</item> 
			<item>Second One</item> 
			<item>Third One</item> 
		</combobox> 
	</hbox> 
	<hbox> 
		<button> 
			<label>Click Me</label> 
			<action>echo "You choosed $myitem"</action> 
		</button> 
	</hbox> 
<hseparator width-request="240"></hseparator> 

	<hbox> 
		<button ok></button> 
	</hbox> 
</vbox> 
</window> 
' 

case $1 in 
	-d | --dump) echo "$MAIN_DIALOG" ;; 
	*) $GTKDIALOG --program=MAIN_DIALOG --center ;; 

esac

Salve o arquivo, defina a permissão de execução nele e execute-o conforme mostrado.

chmod 755 secondprogram
./secondprogram

Agora, explicaremos o código resumidamente.

  1. Criamos um widget combobox usando , a tag é o nome padrão da variável na qual o item escolhido será armazenado, usamos esta variável para imprimir o item selecionado posteriormente usando echo.
  2. é um separador horizontal, você pode definir a largura padrão para ele usando a opção de solicitação de largura.
  3. é um botão OK que fechará a janela assim que você clicar nele, é muito útil, então não precisamos criar um botão personalizado para fazer isso.
Meu terceiro programa

Crie outro arquivo chamado 'terceiroprograma' e adicione todo o código a ele.

#!/bin/bash 

GTKDIALOG=gtkdialog 
export MAIN_DIALOG=' 

<window title="My Second Program" icon-name="gtk-about" resizable="true" width-request="250" height-request="150"> 

<notebook tab-label="First | Second|"> 
<vbox> 
	<hbox space-fill="true"> 
		<combobox>	 
			<variable>myitem</variable> 
			<item>First One</item> 
			<item>Second One</item> 
			<item>Third One</item> 
		</combobox> 
	</hbox> 
	<hbox> 
		<button> 
			<label>Click Me</label> 
			<action>echo "You choosed $myitem"</action> 
		</button> 
	</hbox> 
<hseparator width-request="240"></hseparator> 

	<hbox> 
		<button ok></button> 
	</hbox> 
</vbox> 

<vbox> 

	<hbox space-fill="true"> 
		<text> 
		<label>Spinbutton </label> 
		</text> 
	</hbox> 

	<hbox space-fill="true" space-expand="true"> 
		<spinbutton range-min="0" range-max="100" range-value="4"> 
			<variable>myscale</variable> 
			<action>echo $myscale</action> 
		</spinbutton> 
	</hbox> 

	<hbox> 
		<button ok></button> 
	</hbox> 

</vbox> 
</notebook> 
</window> 
' 

case $1 in 
	-d | --dump) echo "$MAIN_DIALOG" ;; 
	*) $GTKDIALOG --program=MAIN_DIALOG --center ;; 

esac

Salve o arquivo, conceda permissão de execução e dispare-o conforme mostrado.

chmod 755 thirdprogram
./thirdprogram

Aqui, a explicação do código de forma mais detalhada.

  1. Criamos duas abas de notebook usando , a opção tab-label é onde você pode criar abas, gtkdialog criará abas dependendo dos rótulos que você inserir, cada é definido como uma aba, então a primeira aba começa com o primeiro , a segunda guia começa com o segundo .
  2. é um widget de texto, usamos a tag
  3. A tag criará um novo botão de rotação, a opção range-min é o valor mínimo e range-max é o valor máximo para o botão de rotação, range-value é o valor padrão para a rotação botão.
  4. Demos uma variável “myscale” ao .
  5. Imprimimos o valor selecionado usando echo e a variável $myscale, o sinal padrão para a ação aqui é “valor alterado”, o que nos ajudou a fazer isso.

Esta foi apenas uma janela de exemplo, você pode criar interfaces mais complicadas usando gtkdialog se quiser, você pode navegar na documentação oficial no site gtkdialog para visualizar todas as tags gtkdialog no link abaixo.

Documentação do Gtkdialog

Você já usou gtkdialog para criar GUIs para seus scripts de shell antes? Ou você usou algum utilitário desse tipo para criar interfaces? O que você acha disso?