você está aqui: Home  → Arquivo de Mensagens

Uma breve apresentação do YAD (Yet Another Dialog)

Colaboração: Julio Cezar Neves

Data de Publicação: 06 de setembro de 2018

Ainda tem tempo para você se inscrever no curso sobre Programação Shell Linux do Prof. Julio Neves.

Saiba mais e faça sua inscrição


Uma breve apresentação do YAD (Yet Another Dialog)

Mermão, se você gosta de usar a interface a caractere, lhe aconselho a instalar o yad (Yet Another Dialog) com urgência. O yad é um fork do zenity, só que muuuuuito mais incrementado. Para termos uma pequena ideia, pois este artigo é só um ensaio, nele você pode:

  • Inserir imagens nos diálogos;
  • Criar formulários com alto grau de complexidade;
  • Criar quantos botões quiser e customizá-los quanto aos nome e aos códigos de retorno quando clicados;
  • Criar diálogos drag'n drop;
  • Criar diálogos com ícones de atalho
  • Criar diálogos com barras de progresso múltiplas (muito legal para instalação. Uma serviria para o progresso de cada arquivo e outra para o progresso geral);
  • E muito mais...

Vamos logo aos exemplos para acabar com a encheção de saco:

Saida=$(yad --form --image logo-dicas-l.png --image-on-top        \
    --title "Dicas-L/Livra-TE ensino profissional" --text         \
      "Demo do YAD para Livra-TE/Dicas-L"\
    --field Nome 'Juliana'                                        \
    --field Nascimento:DT 01/01/2000                              \
    --field "Há quantos anos usa Linux:NUM" '1!0..25!1'    \
    --field "Sites preferidos:CB"                                 \
        'BR-Linux!^Dicas-l!Viva o Linux!Outros'                   \
    --field "Vou passar a usar o yad:CHK" TRUE                    \
    --field "Vou continuar usando zenity:CHK")

Clicando nas caixas deste formulário, você verá que:

  • No campo Nascimento, a opção :DT abriria um calendário com a data 01/01/2000 previamente selecionada;
  • No campo Há quanto tempo usa Linux, aumentaria ou diminuiria os números pois a opção :NUM define uma SpinBox, da qual se informa: Valor Inicial!ValorMínimo..ValorMáximo!Incremento;
  • No campo Sites Preferidos, a opção :CB gera uma ComboBox com os valores especificados como Valor1!Valor2!...!Valorn. Ainda sobre este campo convém chamar a atenção para um circunflexo (^) antes de Dicas-l. Isso faz com que este seja o valor default.

Repare que o código é autoexplicativo e extremamente simples e veja ainda que o yad aceita todas as facilidades de formatação oferecidas pelo GTK. Nesse exemplo usei as tags <b> e <big> da linguagem Pango Markup do GTK. Poderia ter trocado também cores do texto, fazer sub ou super escrito, itálico, ...

Deixando os campos com seus valores default, as linhas a seguir mostram o conteúdo da variável $Saida e uma forma rápida de separar os campos em variáveis.

$ echo $Saida 
Juliana|01/01/2000|1|Dicas-l|TRUE|FALSE|

O separador é a barra vertical (|), então vamos trocar $IFS para fazer uma leitura rápida. Note que dessa forma $IFS será alterado somente para executar o read, voltando ao seu valor default após a instrução.

$ IFS='|' read Nome Nascimento HaQtoTempo Sites Yad Zenity <<< "$Saida" 
$ echo $Nome ^ $Nascimento ^ $HaQtoTempo ^ $Sites ^ $Yad ^ $Zenity 
Juliana ^ 01/01/2000 ^ 1,000000 ^ BR-Linux ^ TRUE ^ FALSE

Como você pode ver, em Shell é tudo muito complicado. Em uma linha monto um formulário (sim, foi em uma linha, pois a contrabarra (\) foi usada para poder quebrar a linha e facilitar o entendimento) e em outra linha (a do read) passei todos os valores lidos para as respectivas variáveis. Ou seja, tudo foi feito em duas linhas somente.

Também podemos customizar botões, veja:

$ 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"

Duas coisas a destacar neste exemplo:

  1. A opção --entry-text gerou uma ComboBox com os valores passados;
  2. Podemos especificar não só os botões, como também os seus códigos de retorno ($?) para serem analisados por um comando case que viria logo a seguir.

Então pessoal, tem muito mais coisas para contar acerca do yad, porém temos uma limitação de espaço e por isso temos de ficar por aqui.

Para de ler este artigo e saia correndo para instalar o yad e colocar uma cara bonita nos seus scripts. Na vida real, não adianta nada ter um corpinho lindo, se a cara é feia... ;)

Se você já instalou o yad e deseja ver uma coisa inusitada, execute a linha a seguir e clique em qualquer ícone:

$ yad --icons --read-dir=/usr/share/applications \
    --width 670 --height 400 --no-buttons

SuShellso!! ;)



Veja a relação completa dos artigos de Julio Cezar Neves

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script