Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: OpenBox 3.2
Por darfman
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

Apresentando o Yad - "zenity melhorado"
Linux user
rai3mb
04/06/2011
Nesse artigo vou mostrar uma maravilhosa ferramenta para GUI (Interface Gráfica com o Usuário), que acabou de sair do forno, o Yad, um fork do zenity que vem com diversas melhorias, dentre elas a possibilidade de fazer formulários, melhorando a interação do usuário com nossos scripts em shell.
Por: Raimundo Alves Portela | Blog: http://portela.tendalinux.com
[ Hits: 12889 ]
Conceito: 10.0   4 voto(s)4 voto(s)4 voto(s)4 voto(s)4 voto(s) + quero dar nota ao artigo

Apresentando o Yad

Nesse artigo vou mostrar uma maravilhosa ferramenta para GUI (Interface Gráfica com o Usuário), que acabou de sair do forno, o Yad, um fork do Zenity que vem com diversas melhorias, dentre elas a possibilidade de fazer formulários, melhorando a interação do usuário com nossos scripts em shell.

O bichinho é tão recente que nem o manual cobre todas as opções disponíveis, cito um exemplo mais adiante no uso de diálogo para selecionar fontes.

O autor do Yad é o ucraniano Victor Ananjevsky, e a página do projeto pode ser encontrada no:
Mesmo nessa página ainda há pouca informação sobre o uso do Yad, o melhor lugar que achei no momento é o manual dele (man yad) :-).

Caso forem buscar informações, pouca coisa ainda está disponível, o manual está datado em “Marth 24, 2011”, e ainda tem o fato de Yad ser o nome de uma ferramenta “...usada em para apontar o texto durante a leitura do Torá...” (Fonte: http://en.wikipedia.org/wiki/Yad). Então ao buscar informações, busque por 'yad fork zenity' vai ser mais fácil.

Ok, vamos em frente pois no artigo pretendo mostrar vários recursos do Yad, com um pequeno exemplo de cada um.

Instalação

Baixe a versão mais recente do Yad no link abaixo:
Descompacte:

$ tar –Jxf arquivo.tar.xz

Instale:

$ ./configure
$ sudo make
$ sudo make install


Pode acontecer dele reclamar de alguma dependência, aqui no meu Debian, reclamou do libgtk2, basta instalar com:

$ sudo apt-get install libgtk2.0-dev

Após instalar, podemos testar com:

$ yad
Linux: Apresentando o Yad - 'zenity melhorado'
Prontinho, vamos à parte divertida e viciante, programar :-)

Possibilidades e Exemplos de Uso

A sintaxe básica é :

yad [--tipo-dialogo] [--options]

Abaixo mostro exemplo com os tipos de diálogo:

--calendar (calendário)
--color (paleta de cores)
--entry (entrada de dados)
--icons (mostra uma caixa com ícones de atalho para aplicações)
--file (diálogo para selecionar arquivos)
--font (diálogo para seleção de fontes)
--form (aeeeeeee formulários)
--list (diálogo com ítens em lista)
--notification (mostra um ícone da barra de notificação do sistema)
--progress (diálogo de progresso)
--text-info (mostra o conteúdo de um arquivo texto)
--scale (diálogo para seleção de valor, usando uma escala)

Vamos lá, para cada um dos exemplos coloco o script e depois algumas imagens da sua execução.

--calendar:

Mostra um calendário permitindo selecionar a data e envia o valor para a saída padrão

Exemplo:

#!/bin/bash
# uso do yad com --calendar

# mostra um calendário iniciando com o dia 20/05/2011
# guarda o valor selecionar na variável $DATA

DATA=$(\
        yad --calendar \
        --day=20 \
        --month=5 \
        --year=2011 \
        --date-format=%d\/%m\/%Y \
                --title=Calendario \
                --center \ # disposição do diálogo na tela
)

# mostra um diálogo informando a $DATA selecionada
yad --title="AVISO" \         --text="Você selecionou a data $DATA"
#.EOF


Salve com o nome de "calendar.sh", dê permissão de execução:

$ chmod +x calendar.sh

Execute:

$ ./calendar.sh
Linux: Apresentando o Yad - 'zenity melhorado'
Após selecionar uma data:
Linux: Apresentando o Yad - 'zenity melhorado'

Exemplo com yad --color

yad --color:

Diálogo de seleção de cores, permite selecionar uma determinada cor usando a paleta de cores, editando diretamente por código, etc. Bom para saber o código de uma cor específica.

Exemplo:

!/bin/bash
# uso do yad - com color
# permite selecionar determinada cor numa paleta de cores
# e envia o valor para a saída padrão, no caso armazenei na variável $COR

COR=$(\
yad --color \
        --init-color="#FFFFFF" \ #cor que inicialmente fica selecionada na paleta de cores.
        --palette \
)

yad --title="YAD COM COLOR" \
        --text="Você selecionou a cor $COR"
#.EOF

Salve com o nome de "color.sh", dê permissão de execução:

$ chmod +x color.sh

Execute:

$ ./color.sh
Linux: Apresentando o Yad - 'zenity melhorado'
Após selecionar uma cor:
Linux: Apresentando o Yad - 'zenity melhorado'
Próxima página >>




Páginas do artigo
   1. Apresentando o Yad
   2. Exemplos 1
   3. Exemplos 2
   4. Conclusão

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por bolche em 04/06/2011 - 03:59h:

Uau, bem legal essa ferramenta. Agora é esperar que entre no repositório da maioria das distros...

[2] Comentário enviado por ru4n em 04/06/2011 - 10:20h:

ótimo artigo!

já conhecia o yad, mas não tive tempo de fuçar nele. Esses exemplos do artigo me motivou a estudar a fundo esse programa!
No SlackBuilds.com tem uma versão antiga do yad, acredito que nos repositórios de outras distros também tenha uma versão do programa. Estou com a versão 0.12.0 aqui.
Essa opção de formulários era o que faltava para scripts bash. Se não me engano, o uníco programa que permitia construír formulários em bash, era o falecido kommander.

Abraços


[3] Comentário enviado por nickmarinho em 04/06/2011 - 11:19h:

Você não tem noção de como isso vai me ajudar com uns SH que construi pra conversão de audio e video que criei uns anos atrás.
Muito bom mesmo.

Parabéns pela dica.
Abraços

www.lucianomarinho.com.br
www.racaboxer.com.br

[4] Comentário enviado por rai3mb em 04/06/2011 - 13:18h:

Pessoal no site do projeto tem um código maravilhoso para aprender, o código do USBStartupDisk, para criar um disco USB (Pendrive) a partir de uma imagem ISO, muito bacana:

http://code.google.com/p/yad/wiki/USBStartupDisk

[5] Comentário enviado por danniel-lara em 04/06/2011 - 22:09h:

Parabéns pelo artigo
estava fazendo um script de backup com zenity mas tinha algumas limitações
mas agora com o yad meu script de backup vai ser concluído

[6] Comentário enviado por rai3mb em 04/06/2011 - 22:13h:

Obrigado,
a intenção é essa, ajudar e divulgar a ferramenta.
Gostei muito e quero vê-la evoluir, e quem sabe já virar como padrão em algumas distribuições.

Abraços

[7] Comentário enviado por izaias em 04/06/2011 - 23:09h:

Que aplicativo polivalente. Muito interessante.
Gostei. Torço para que cresça e torne-se padrão em muitas distribuições.

Parabéns pelo artigo e divulgação deste ótimo aplicativo.

[8] Comentário enviado por master_foca em 05/06/2011 - 20:12h:

Excelente artigo, gostaria de saber se existe uma forma de construir janela com menu flutuante no YAD ?

[9] Comentário enviado por rai3mb em 05/06/2011 - 20:37h:

@master_foca

Ainda não :-), seria um passo mais evolutivo, veja que houve uma boa evolução em relação ao zenity.

É para uso com scripts em SHELL, geralmente usados para automatizar tarefas sem IHC (interação humano com computador).

Agora dar pra fazer muita coisa interessante com SHELL + ZENITY, SHELL + YAD, e SHELL com outras ferramentas, inclusive integrando com interfaces de outras linguagens, como o JAVA, criando os tais "menus flutuantes"só que vai ficar mais pesado e dependente da JVM, e é preciso avaliar a necessidade prática disso.

[10] Comentário enviado por rai3mb em 05/06/2011 - 20:39h:

@master_foca

Dar pra usar uma lista (drop-down) e ficaria como um menu suspenso....é uma ideia, vai depender mesmo da sua necessidade.

[11] Comentário enviado por Piu em 06/06/2011 - 00:18h:

Muito bom.
Agora só preciso de ajuda, para adaptar o diálogo de progresso num script que fiz:

[piu@sayumin ~]$ cat /usr/bin/converter_ipod
#!/bin/bash
#Aviso:
#Este script foi escrito e desenvolvido por Piu, e tem como base converter videos avi para o formato de Ipod Touch.

for arq in *.avi ; do mencoder "$arq" -oac copy -aid 1 -ovc lavc -ffourcc XVID -vf scale=960:640 -lavcopts vcodec=mpeg4:trell:mbd=2:sc_threshold=1000000000:cgop:vbitrate=6000:aspect=16/9 -o "${arq/.avi/.divx}"; done && /usr/bin/mp4


teria idéia de como fazê-lo?

[12] Comentário enviado por rai3mb em 06/06/2011 - 01:20h:

@piu

Veja se ajuda: (coloquei uma função para chamar a barra de progresso e rodar em paralelo com sua conversão)


#!/bin/bash
#Aviso:
#Este script foi escrito e desenvolvido por Piu, e tem como base converter videos avi para o formato de Ipod Touch.

barra_progresso () {
tail -f $0 | yad --title='Convertendo arquivo' --text="$@" --progress --width='300' --pulsate --auto-close --auto-kill --no-buttons
}

for arq in *.avi ; do
barra_progresso "Convertendo arquivo..." & mencoder "$arq" -oac copy -aid 1 -ovc lavc -ffourcc XVID -vf scale=960:640 -lavcopts vcodec=mpeg4:trell:mbd=2:sc_threshold=1000000000:cgop:vbitrate=6000:aspect=16/9 -o "${arq/.avi/.divx}"
killall tail
done


[13] Comentário enviado por dimasdaros em 06/06/2011 - 08:08h:

Opa, vai ser muito útil cara, não tens idéia o quanto =D
veio na hora certa

vlw aew cara
vlw mesmo

[14] Comentário enviado por celosop em 09/06/2011 - 10:36h:

caramba, muito bom, já estou divulgando pra meus amigos que trabalham com shell!!
parabéns!

[15] Comentário enviado por rai3mb em 10/06/2011 - 00:53h:

Pessoal, estou muito feliz com essa ferramente, estou quase conseguindo convencer minha empresa a usar um Programa Usando SHELL+YAD, está ficando muito legal, espero poder continuar contribuindo com as ideias que estamos colocando no projeto.

Abraços

[16] Comentário enviado por edps em 30/12/2011 - 23:45h:

Ótimo trabalho!

grande Yad, instalado no Debian Squeeze assim:

$ wget http://yad.googlecode.com/files/yad-0.16.3.tar.xz
$ tar -Jxvf yad-0.16.3.tar.xz
$ cd yad-0.16.3/
$ ./configure --prefix=/usr --sysconfdir=/etc
$ sudo checkinstall -D --install=no --pkgarch=all
$ sudo dpkg -i yad_0.16.3-1_all.deb

fui!



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.