De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Júlio Cezar Neves
Data de Publicação: 19 de outubro de 2017
Sou fã de carteirinha do Shell e frequentemente preciso melhorar a interface de um script com o usuário. Para isso, invariavelmente usava o Zenity
que é extremamente fácil e melhora muito a apresentação.
Minha satisfação como o Zenity
só não era total porque todos que conhecem um pouquinho de GTK 2, sabem que se pode tirar muito mais dessa linguagem do que o Zenity
tira. Sempre esperei que a qualquer momento o gnome
lançaria uma nova versão deste software que seria arrasadora, viria com todos os incrementos que eu (e acho que todos) aguardavam.
Estava enganado, acompanhei o lançamento de diversas revisões do software mas elas simplesmente tratavam bugs e apresentação. Infelizmente nada de inovação. Porém um dia descobri o YAD
.
YAD
significa Yet Another Dialog, mas sua tradução do russo é "veneno" (e essa é a inspiração de seu ícone) e se define como um fork do Zenity
. Porém o YAD
, distancia-se um pouco dele por não utilizar bibliotecas descontinuadas como libglade
ou gnome-canvas
. Utiliza somente o GTK 2, o que lhe dá uma maior portabilidade dentro do ambiente *n?x.
Poderia defini-lo como um Zenity
com muitos aperfeiçoamentos, como botões customizados, diálogos adicionais, menu pop-up no ícone do notification
(sim é o mesmo notification
do Zenity
, porém mais incrementado), diálogo para montar formulários complexos e muito mais.
Este artigo não é para mostrar como se instala, isso eu sei que vocês sabem se virar. O que quero é mostrar algumas (infelizmente muito poucas) novidades que o YAD
traz para trabalharmos com interface GUI em Shell. Vamos ao que interessa:
Este é um dos poucos exemplos que achei pela internet e está no wiki do YAD
(http://code.google.com/p/yad/wiki/Examples). Lá ele coloca o código completo para dar shutdown
, reboot
, ... Mas aqui executaremos somente a parte do YAD
direto na linha de comandos.
$ yad --width 300 --entry --title "System Logout" \ --image=gnome-shutdown \ --button="_Switch User:2" \ --button="gtk-ok:0" --button="gtk-close:1" \ --text "Choose action:" \ --entry-text \ "Power Off" "Reboot" "Suspend" "Logout"
Aqui você pode ver uma ComboBox, diversos botões (um deles customizado) e um código extremamente simples. Repare que após a declaração do nome de cada botão, tem um :N
, onde N
é o valor que retorna em $?
quando este botão for clicado. Simples, não?
Um outro exemplo usando o diálogo --form:
$ yad --form --title "Dicas-l de Rubens Queiroz" \ --text "Informe sua preferência sobre frutas" \ --image Frutas.jpg \ --field "Excolha uma fruta:CB" \ --field Outra --field "Qtas vc come?:NUM" \ --field "Arquivo:FL" \ --field "Como e chupo o caroço:CHK" \ 'Pera!Uva!Maçã!Manga' \ "" \ '1!10!1'
Com certeza você sabe que as contrabarras foram colocadas somente para tornar o texto mais visível e fácil de comentar, mas poderia ter sido escrito em somente uma linha.
O diálogo --form
permite que eu use uma opção --field
que aceita um monte de modificadores. Aqui usei, na ordem, :CB
, nenhum, :NUM
, :FL
e :CHK
que são, respectivamente, ComboBox
, Entrada de texto, SpinBox
numérico, Seletor de arquivos e uma CheckBox
e para finalizar passei os valores das 3 primeiras. Veja o que gerou:
Ainda quero fazer uns comentários:
Repare no título (--text
) que usei tags de formatação;
Veja a facilidade de colocar qualquer imagem no diálogo usando a opção --image;
Especifiquei os textos do ComboBox
separando-os com um ponto de exclamação (!
). Este é o default, mas pode ser alterado;
O campo Outra
, por não ter tido nenhum valor especificado assume que é uma simples entrada de dados.
O campo Qtas vc come?
É um SpinBox
e seu valor foi especificado com Mínimo!Máximo!Incremento
.
Quando o campo Arquivo for clicado, abrirá um super diálogo para seleção de arquivo;
O campo Arquivo
e o CheckBox
não foram inicializados por serem os últimos e por isso poderem assumir seus valores default (Nome
e FALSE
, respectivamente).
Fora esses pequenos exemplos ainda existem muitos outros diálogos que não foram implementados no Zenity
como diálogos drag'ndrop
, diálogos com ícones para escolha de aplicativos, dialogo para escolha de fonte, diálogo para escolha de cores, ? E mesmo muitos dos diálogos existentes no Zenity
, no YAD
passam a ter mais opções.
Para finalizar, experimente fazer:
$ ls -l | yad --text-info --fontname "mono 10" --width 600 --height 300 $ ls -l | zenity --text-info --width 600 --height 300
e veja a falta que a opção --fontname
faz no Zenity
.
Só para clarear o que falei, existe um diálogo --fonte
para escolha de fontes e uma opção --fontname
para especificar qual fonte um determinado diálogo usará. Agora, para finalizar mesmo vou mostrar o exemplo anterior, porém com escolha da fonte:
#! /bin/bash # Exemplo de uso dos diálogos --font #+ e --text-info Fonte=$(yad --font --title "Escolha de fontes" \ --text "Escolha uma fonte Dê preferência a fontes monoespacejadas" \ --height=300 --width 600) || exit 1 ls -l | eval yad --text-info \ --width=600 --height 300 \ --title \"Listagem do diretório $PWD\" \ --fontname \'$Fonte\'
Espero que você instale o YAD
e teste esses exemplos que dei. Tenho certeza que você se amarrará no software.
O 4º UNIX do mundo nasceu na Cidade Maravilhosa, mais precisamente na Cobra Computadores, onde à época trabalhava o Julio. Foi paixão à 1ª vista! Desde então, (1980) atua nessa área como especialista em Sistemas Operacionais e linguagens de programação. E foi por essa afinidade que quando surgiu o Linux foi um dos primeiros a estudá-lo com profundidade e adotá-lo como Sistema Operacional e filosofia de vida. É autor dos livros Programação Shell Linux, 11ª edição e Bombando o Shell.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários