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.
#!/bin/bash # yad com --text-info # exemplo para selecionar um arquivo e ver seu conteúdo (editá-lo se desejar)
ARQUIVO=$(\
yad --file \
--filename="$HOME/" \
--title="Selecione um arquivo" \
--width="500" \
--height="400" \
) # testa se o usuário quer cancelou
ACAO="$?"
test "$ACAO" -eq "1" || test "$ACAO" -eq "252"
if [ "$?" -eq 0 ]; then
exit
fi
# filename - nome do arquivo, editable - permite edição, fore - cor do texto # back - cor do fundo, fontname - fonte a ser usada, justify - alinhamento do texto # margins - tamanho da margem, tail - barra de rolagem
MOD_ARQUIVO=$( \
yad --text-info \
--title="Visualizando o arquivo $ARQUIVO" \
--filename="$ARQUIVO" \
--editable \
--fore="#00FF00" \
--back="#000000" \
--fontname="Ubuntu" \
--justify="left" \
--margins="2" \
--tail \
--width="500" \
--height="400" \
--button="Cancelar":1 \
--button="Salvar":0 \
)
# testa se o usuário quer cancelou
ACAO="$?"
test "$ACAO" -eq "1" || test "$ACAO" -eq "252"
if [ "$?" -eq 0 ]; then
exit
fi
# salva as modificações no arquivo
echo $MOD_ARQUIVO \n > $ARQUIVO
#.EOF
Salve com o nome de "text_info.sh", dê permissão de execução:
chmod +x text_info.sh
Execute:
./text_info.sh
Após selecionar o arquivo:
Exemplo com yad --scale
yad --scale:
Mostra um diálogo de escala.
#!/bin/bash # yad com --scale # neste exemplo uso o scale para permitir escolher o tamanho da imagem numa pagina html #armazena o valor escolhido na escala
VALOR=$(\
yad --scale \
--title="Escolha o tamanho da imagem" \
--value="100" \
--min-value="100" \
--max-value="500" \
--step="50" \
)
#grava o conteúdo a ser gravado em uma pagina html com o tamanho da imagem escolhido
CONTEUDO="Vux Todos os direitos reservados ao VOL :$
echo $CONTEUDO > scale.htm
#abre o arquivo no firefox
firefox scale.htm
#.EOF
Salve com o nome de "scale.sh", dê permissão de execução:
chmod +x scale.sh
Execute:
./scale.sh
Após selecionar:
Mais um teste:
Após selecionar:
Conclusões e Agradecimentos
Estou adorando conhecer o Yad, espero que a comunidade goste também, quanto mais pessoas apoiarem esse projeto, seja usando, seja divulgando, mais temos chances que ele se torne padrão futuramente nas distribuições mais usadas, como Ubuntu.
As possibilidades com o Yad são várias, depende apenas da criatividade, meus exemplos foram apenas demonstrativos. No site do projeto, temos alguns exemplos bem interessantes, inclusive um do brasileiro Julio Neves, que aliás foi quem tive o prazer de conversar rapidinho nos corredores do CONSEGI 2011, e durante a conversa o Julio me falou sobre o Yad, então fiquei curioso e essa curiosidade resultou nesse trabalho :-)
O Julio Neves apresentou uma palestra sobre o Yad no CONSEGI, não pude assistir pois estava ajudando no Install Fest pela manhã e à tarde ia trabalhar.
[2] Comentário enviado por removido 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.
[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:
[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.
[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.
[11] Comentário enviado por removido 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
[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.
[17] Comentário enviado por natalia.belarte em 14/08/2015 - 09:32h
Bom dia,
é possivel criar uma mendagem de alerta ao usuario com " nao esqueça de fazer o seu backup diario " no cron, ou seja o cron consegue executar este aplicativo que abre uma mensagem grafica?
[18] Comentário enviado por removido em 07/09/2015 - 14:51h
[17] Comentário enviado por natalia.belarte em 14/08/2015 - 09:32h
Bom dia,
é possivel criar uma mendagem de alerta ao usuario com " nao esqueça de fazer o seu backup diario " no cron, ou seja o cron consegue executar este aplicativo que abre uma mensagem grafica?
Crie um script com a mensagem e depois indique para o cron executar o script, exemplo:
echo yad --title="Aviso" --text="Hora do backup :)"' > aviso.sh