você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

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.


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