Neste artigo pretendo mostrar as novidades que vieram com a última versão estável do Yad. Faço uma cobertura mais completa dessa fantástica ferramenta, além de colocar exemplos úteis, comentando as possibilidades que podem ser implementadas.
No Artigo anterior não cobrir esta parte com detalhes, mas ela é bem básica, vou postar uma lista de opções e fazer um exemplo que usa boa parte deles ao mesmo
tempo:
Os recursos gerais são aqueles que podem ser usados dentro de qualquer um dos Dialogs do Yad, durante este artigo você verá vários recursos destes sendo utilizados nos
diversos exemplos mostrados.
Jogo do Milho
Vamos a um exemplo usando diversos destes recursos e logo após passo uma explicação rápida.
#!/bin/bash
# Exemplo usando vários recursos gerais do Yad
yad --list \
--title='Jogo do Milho' --width=500 --height=500 \
--window-icon='vux.png' --image='milho.jpg' \
--image-on-top --borders=50 \
--undecorated --sticky --center --timeout=5 \
--timeout-indicator='left' \
--text="Pergunta que vale 1 Milhão de Reais\n\nQuem criou a Fundação para o Software Livre (Free Software Foundation) ?" \
--button='Cartas':"tela_cartas" --button='Eu pulo':"tela_pulo" --button='Parar':1 --button='Respondo':0 \
--column='OP':NUM --column='Opções':TEXT \
1 'Com certeza Linus Torvalds' \
2 'Claro que foi o Tux' \
3 'Richard Stallman' \
4 'Steve Jobs ora pois'
Após executar:
Observem que o ícone definido em --window-icon vai aparecer no local destinado aos ícones das janelas abertas (a imagem abaixo é do Gnome 3):
Explicação rápida:
--title : define o título do Dialog;
--width, --height : largura e altura, respectivamente;
--window-icon : ícone exibido na decoração da janela, menu do sistema e painel;
--image : adiciona uma imagem ao Dialog;
--image-on-top : posicione a imagem do item --image no topo do Dialog;
--borders : configura a largura da borda da janela;
--sticky : deixa o Dialog visível sobre as demais janelas;
--center : inicia o Dialog centralizado na tela;
--undecorated : deixa o Dialog sem a decoração (basicamente o título com seus ícones)
--timeout : define um tempo em segundos para a janela fechar sozinha, caso não o seja feito manualmente;
--timeout-indicator : coloca uma barra que identifica visualmente o --timeout;
--text : exibe um texto logo no início do Dialog;
Esta foi a primeira intenção que tive quando estava desenvolvendo um script para simular um jogo de perguntas e respostas genérico. A versão completa bem como uma
explicação de uso podem ser encontradas em: http://vivaolinux.com.br - Jogo de Perguntas e
Respostas.
./main.sh
Existem mais opções, não as listei pois já temos ótimo caminho para descobri-los, pois sempre está disponível o 'comando mãe' de todo usuário de terminal no GNU/Linux,
o 'main':
main yad
Se quiser dar uma lembrada rápida nas opções disponíveis para um Dialog específico, é só usar o comando '--help-DIALOG', trocando o DIALOG pelo nome do dialog
desejado, veja:
[5] Comentário enviado por slavko em 09/01/2012 - 15:45h
Please, provide the right information. The latest version of the yad on my public debian repo (mentioned in article) is 0.16.3 (for Debian testing), the 0.12 version is provided only for Debian stable, while most of my packages for stable is in state, when squeeze was released.
Any debian stable user can download source from testing and rebuild it, or try to install the testing version manualy.
[10] Comentário enviado por rai3mb em 12/01/2012 - 00:07h
Obrigado pessoal, demorou mas saiu, acho que comecei esse artigo em outubro, mas como fiquei bem ocupado, fui adiando, adiando, até que resolvi terminar no nas ultimas semanas de 2011 e primeiras de 2012.
Ótima ferramenta realmente, muito bom pra deixar nossos scripts mais usáveis ;-), podendo fornecer interface via shell e gráfica ao mesmo tempo.
[11] Comentário enviado por manchatnt em 27/01/2012 - 00:12h
Muito bom seu artigo.
Estou montando um script baseado no seu artigo e encontrei algumas dificuldades que não estou conseguindo resolver.
yad --list --width 350 --height 300 --checklist\
--column=Select --column=Dispositivo \
$( \
for dispositivo in $(mount | awk '{print $1,$2,$3}')
do
echo FALSE \"$dispositivo\"
done)
O problema é que ele não está entendendo a separação das colunas. Vi que vc usou um while num de seus exemplos, mas mesmo assim não obtive sucesso. Alguém poderia me ajudar nessa?
[12] Comentário enviado por rai3mb em 28/01/2012 - 00:15h
O problema no caso é que o separador das colunas é um espaço, e vc está usando três campos $1 $2 $3, que retornam 3 espaços, e dispositivo tem todo o conteúdo do resultado do comando mount, e o laço vai ser executado para cada palavra...
Faça assim que dar certo:
#!/bin/bash
#gere o arquivo com os dipositivos
mount | awk '{print $1,$2,$3}' > /tmp/lista
#execute o yad lendo o arquivo
eval yad --list --width 350 --height 300 --checklist \
--column=Select --column=Dispositivo \
$( \
while read dispositivo
do
echo FALSE "\"$dispositivo\""
done < /tmp/lista)