quarta-feira, janeiro 10, 2024
  • Login
Linux Descomplicado
Advertisement
No Result
View All Result
No Result
View All Result
Linux Descomplicado
No Result
View All Result
Home Administradores de Rede

Saiba como criar uma interface gráfica para seu script em shell

20 de outubro de 2013
Reading Time: 4 mins read
5
1
SHARES
4.1k
VIEWS
Compartilhar no FacebookCompartilhar no Twitter

Criar uma interface gráfica para scripts em shell é recomendado para quem deseja desenvolver um ambiente gráfico para oferecer uma interação amigável entre o usuário e seu script. Isto é muito importante, pois dominando o shell script você pode desenvolver scripts oferecendo um “acabamento” gráfico. Portanto, para aprender como desenvolver interfaces gráficas para seus seus scripts, continue lendo este arquivo!


O Zenity é um programa que utiliza o GTK, conjunto de bibliotecas projetadas para o desenvolvimento de interface gráfica, a partir de scripts em shell. O Zenity é muito simples de usar, produz muito escrevendo muito pouco. Ele facilita sua vida em programas curtos, poderosos e que necessitem de uma interface gráfica.

Além do Zenity, existe o YAD (Yet Another Dialog). Ele é um fork (“processo filho”) do Zenity (citado acima) e oferece mais opções gráficas para seus scripts. Para muitos, o YAD se torna uma opção completa para este fim. Sendo assim, nesse artigo irei mostrar, na prática, como desenvolver interfaces gráficas para seus scripts em shell tanto no Zenity como no YAD!

Como pré-requisito é necessário que você tenha um conhecimento intermediário no desenvolvimento de scripts em shell (Shell Script).Em todos os exemplos do artigo, recomendo que copie o script exibido, crie um arquivo no seu diretório pessoal e cole o código nesse arquivo. Depois execute o comando: chmod +x meu_arquivo e execute no terminal: ./meu_arquivo para observar o script funcionando em seu computador 😉

Interface gráfica com o Zenity

Por padrão, o Zenity vem instalado na maioria das distribuições Linux (FEDORA, UBUNTU, DEBIAN, MINT, etc). Portanto, não será necessário a instalação de um pacote adicional!

Como dito anteriormente, o Zenity é uma ferramenta bem simples de ser usada. Como no exemplo abaixo, basta uma linha de comando para oferecer um recurso gráfico imediato:

zenity –info \
–text=”Merge complete. Updated 3 of 10 files.”

Contudo, para “dá vida” ao seu script em shell você precisará unir seus conhecimentos de programação shell a ferramenta Zenity. Como exemplo prático, segue um programa COMPLETO, que desenvolvi, onde listará os 10 arquivos, de maior tamanho, contidos na pasta pessoal do usuário:

#!/bin/bash

zenity –info \
–window-icon=logo-LD.png \
–text=”Este programa exibe os 10 maiores arquivos presentes na pasta pessoal do usuário, listado por tamanho e caminho do arquivo.”\
” \n\n Para mais informações: “\
” \n Blog Linux Descomplicado \n https://www.linuxdescomplicado.com.br”

if [ “$?” = 1 ] ; then
zenity –error \
–timeout=”1″ \
–text=”Pesquisa cancelada.”
fi

if [ “$?” = 5 ];
then
exit;
fi

cd $HOME
touch temp

#find . -xdev -printf ‘%s %p\n’ |sort -nsr|head -20 | awk ‘{print $2}’

find $HOME -type f -size +5M -exec ls ‘-1Ssh’ ‘{}’ ‘+’ | head -n 10 > temp

(
echo “10” ; sleep 1
echo “# Acessando diretório $HOME” ; sleep 1
echo “20” ; sleep 1
echo “# Pesquisando por arquivos” ; sleep 1
echo “50” ; sleep 1
echo “# Ordenando arquivos” ; sleep 1
echo “75” ; sleep 1
echo “# PRONTO! Mostrando…” ; sleep 1
echo “100” ; sleep 1
) |
zenity –progress \
–title=”Pesquisando arquivos” \
–text=”Procurando diretório pessoal…” \
–auto-close \
–no-cancel \
–auto-kill \
–percentage=0

if [ “$?” = 1 ] ; then
zenity –error \
–timeout=”1″ \
–text=”Pesquisa cancelada.”
else
zenity –text-info \
–width=”1024″ \
–height=”350″ \
–title=”Resultado da Pesquisa – Os 10 maiores arquivos” \
–filename=temp
fi

rm -f temp

Este script, carrega um tela inicial de aviso (zenity –info) e posteriormente invoca um processo de carregamento (zenity –progress), onde simultaneamente roda o comando find para buscar os 10 maiores arquivos da pasta /home do usuário! Por fim, exibe numa janela de texto (zenity –text-info) o resultado encontrado, como segue as imagens:

Recomendo que execute este arquivo no seu computador!

Interface gráfica com o YAD

O YAD não difere muito, em relação a estrutura de código, do Zenity. Contudo, diferentemente do Zenity, o YAD é preciso instalar um pacote para poder utilizá-lo. Nas distros derivadas do Debian (Ubuntu, Mint), você pode instalar via PPA:

sudo add-apt-repository ppa:webupd8team/y-ppa-manager [ENTER] sudo apt-get update [ENTER] sudo apt-get install yad [ENTER]

Ou baixar o fonte no site oficial

O que há de mais inovador e interessante é a quantidade de recursos a mais que o YAD pode oferecer, como:

 

  • Inserir imagens nos diálogos;
  • Criar formulários com alto grau de complexidade;
  • Criar diálogos drag’n drop;
  • Criar diálogos com ícones de atalho
  • Criar diálogos com barras de progresso múltiplas;
  • E muito mais…

Só para você ter uma ideia, veja o resultado de ambos comandos de ajuda do app notification e observe as opções a mais que o YAD oferece:

yad –help-notificationNotification icon options
–notification                                 Display notification
–command=CMD                                  Set left-click action
–notification-listen                          Listen for commands on stdin
–separator=SEPARATOR                          Set separator character for menu values
–item-separator=SEPARATOR                     Set separator character for menu items
–no-middle                                    Disable exit on middle click

zenity –help-notificationOpções do ícone de notificação
–notification                                      Exibir notificação
–text=TEXTO                                        Definir o texto da notificação
–listen                                            Esperar por comandos em stdin

Para ter uma noção, execute este comando no terminal; e veja um recurso do multi-progress (múltiplas barras de progresso) em funcionamento com YAD:

yad –image=drive-harddisk –text=”Disk\ usage” –buttons-layout=end –multi-progress \
$(df -h $1 | tail -n +2 | awk ‘{printf “–bar=\”%s (%s) [%s/%s]\” %s “, $6, $1, $3, $2, $5}’)

Ou veja este script carregando todas as aplicações contidas no seu sistema (interessante):

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

Conclusão

Por fim, para você conhecer todas as opções oferecidas nas duas ferramentas, tanto Zenity quanto YAD, execute os comandos de ajuda:

FERRAMENTA YADyad –help-all

FERRAMENTA ZENITY

zenity –help-all

Para mais informações:

FERRAMENTA ZENITYSite Oficial

FERRAMENTA YAD

Site Oficial
Exemplos de Códigos

Tags: Linux para Administradores de RedeSaiba como

Gosta de Linux?! Receba materiais exclusivos!

Inscreva-se gratuitamente e receba, com exclusividade, postagens e materiais ocultos para o público em geral. Inclusive, promoções e novidades em primeira mão!

Entrar na lista de e-mails

Related Posts

Destaques

10 Ferramentas para monitorar a largura de banda no Linux

5 de dezembro de 2014
Saiba como recuperar a senha de um usuário do Ubuntu Linux
Saiba Como

Saiba como recuperar a senha de um usuário do Ubuntu Linux

20 de julho de 2019
Distribuições

Saiba como acessar uma máquina Ubuntu em conexão remota

6 de novembro de 2014
Dicas

Saiba como criar e ler código QR (QRcode) usando o terminal Linux

17 de outubro de 2014
Saiba Como

Saiba como exibir os arquivos/pastas que estão ocupando mais espaço em disco no seu computador

17 de outubro de 2014
Dicas

Saiba como usar o PlayOnLinux e o Wine para rodar jogos de Windows no Linux

14 de agosto de 2014

Últimas novidades

A Emoção dos Bônus de Sorteio Semanal no BC Games: Como Aumentar Suas Chances de Vitória

by Linux Descomplicado
7 de novembro de 2023
0

O mundo dos jogos online é vasto e repleto de oportunidades para diversão e, às vezes, recompensas financeiras. Entre esses...

Jogos no Metaverso: Explorando a próxima fronteira dos mundos virtuais

Jogos no Metaverso: Explorando a próxima fronteira dos mundos virtuais

by Linux Descomplicado
30 de agosto de 2023
0

Nos últimos anos, o mundo dos jogos vem passando por uma revolução que está redefinindo a forma como entendemos os...

Saiba como acompanhar os jogos da Copa do Mundo no Linux

Saiba como acompanhar os jogos da Copa do Mundo no Linux

by Linux Descomplicado
14 de outubro de 2022
0

Conheça algumas estratégias adotadas por quem deseja acompanhar os jogos da Copa do Mundo 2022 usando o Linux

Como aproveitar o uso de proxy móvel no seu negócio?

Como aproveitar o uso de proxy móvel no seu negócio?

by Linux Descomplicado
31 de agosto de 2022
0

Dados são a nova moeda do mercado, e quanto mais uma empresa conhece as necessidades e desejo dos usuários, mais...

Metaverso: o que precisamos entender sobre esse conceito

Metaverso: o que precisamos entender sobre esse conceito

by Linux Descomplicado
23 de maio de 2022
0

Se um dia alguém dissesse ser possível combinar realidade virtual imersiva, MMORPG e web, isso seria chamado insanidade. No entanto,...

Load More

Publicaçõesmais recentes

5 Razões pelas quais o Linux Mint é a Distribuição perfeita para usuários vindos do Windows
Distribuições

5 Razões pelas quais o Linux Mint é a Distribuição perfeita para usuários vindos do Windows

by Linux Descomplicado
4 de dezembro de 2023
0

Existem muitas versões do Linux que são boas para iniciantes, mas o Linux Mint é especialmente voltado para pessoas que...

Read more
Linux ou Windows: Guia completo para você fazer a escolha certa
Dicas

Linux ou Windows: Guia completo para você fazer a escolha certa

by Linux Descomplicado
3 de dezembro de 2023
0

Escolher entre Linux e Windows é uma decisão crucial que afeta diretamente a experiência do usuário no mundo da tecnologia....

Read more
Noticias

A Emoção dos Bônus de Sorteio Semanal no BC Games: Como Aumentar Suas Chances de Vitória

by Linux Descomplicado
7 de novembro de 2023
0

O mundo dos jogos online é vasto e repleto de oportunidades para diversão e, às vezes, recompensas financeiras. Entre esses...

Read more
Jogos no Metaverso: Explorando a próxima fronteira dos mundos virtuais
Noticias

Jogos no Metaverso: Explorando a próxima fronteira dos mundos virtuais

by Linux Descomplicado
30 de agosto de 2023
0

Nos últimos anos, o mundo dos jogos vem passando por uma revolução que está redefinindo a forma como entendemos os...

Read more
SaaS, IaaS, PaaS e FaaS: tipos de serviços em nuvem, suas vantagens e aplicações
Administradores de Rede

SaaS, IaaS, PaaS e FaaS: tipos de serviços em nuvem, suas vantagens e aplicações

by Linux Descomplicado
2 de agosto de 2023
0

Os serviços em nuvem trazem muitas vantagens para qualquer pessoa ou empresa que utilize arquivos digitais. Mas você sabe a...

Read more
Criação de Apps: do Desenvolvimento à Publicação
Tecnologia

Criação de Apps: do Desenvolvimento à Publicação

by Linux Descomplicado
31 de maio de 2023
0

Até 2022, a Google Play Store somava mais de 3,3 milhões de aplicativos móveis disponíveis para download. Já na Apple...

Read more
Load More

Mantenha-se conectado

  • Área Exclusiva 200 Membros
  • 23k Fãs
  • 8k Seguidores
  • 500 Leitores
  • 100 Seguidores
  • 1k Inscritos
  • 2k Leitores

Quer receber as novidades mais recentes no seu e-mail? Informe-o no campo de e-mail e clique em Assinar! Mais de 2000 já se inscreveram

*Sem spam, eu prometo :).

ATENÇÃO
Os comentários abaixo são de inteira responsabilidade de seus respectivos autores e não representam, necessariamente, a opinião do Linux Descomplicado.

Comments 5

  1. Flávio Oliveira says:
    8 anos ago

    Muito bom. Uma dúvida, utilizando o “Zenity” quando eu clicar para fechar uma janela o mesmo não fecha e continua o script. No Zenity, teria como fazer um tratamento nesse aspecto utilizando o mesmo. Exemplo: Ao clicar no X da janela, o mesmo retornaria 1 (cancelar) e parar todas as atividades do script.

    Responder
    • Dom says:
      8 anos ago

      Flávio Oliveira, o zenity retorna na variável $? o valor 0 ao clicar em um botão de OK/Sim e 1 ao clicar em Cancelar/Não ou em fechar, então pra terminar o script tu pode usar uma condição tipo essa:


      zenity --question --text="EXEMPLO"
      if [ $? -eq 1 ]; then
      echo "Terminando script..."
      exit 1
      fi

      Dá pra usar o else também para ter uma mensagem específica quando clicar em OK/Sim e outra pra quando clicar em Cancelar/Não 🙂

      Responder
      • Flávio Oliveira says:
        8 anos ago

        Opa, valeu ai cara.. vou aplicar aqui para ver!

        Obrigado por compartilhar

        Até

        Responder
        • Dom says:
          8 anos ago

          Disponha! =D

          Responder
  2. Ítalo says:
    8 anos ago

    Gênial!

    Responder

Deixe uma resposta Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Next Post

Chive: uma alternativa ao phpMyAdmin para gerenciar base de dados Mysql

O Linux Descomplicado nasceu, em 2011, com o intuito de trazer informações relevantes e promover fácil acesso a todos usuários interessados em aprender a usar o sistema Linux, independentemente se está iniciando ou tem certa experiência com Linux.

Participe

  • Publique seu artigo
  • Login como articulista
  • Pesquisa – sobre os leitores

Editorial

  • Contato
  • Anuncie aqui
  • Política de privacidade

Newsletter

Quer receber as novidades mais recentes no seu e-mail? Informe-o no campo de e-mail e clique em Assinar! Mais de 2000 já se inscreveram

*Sem spam, eu prometo :).

Promoções e materiais exclusivos!

Cadastre-se gratuitamente
  • #9720 (sem título)
  • Anuncie aqui
  • Contato
  • Excluir conta
  • Home
  • Login Customizer
  • Newsletter
  • Newsletter personalizada
  • Pesquisa – sobre os leitores
  • Política de privacidade
  • Promoções e novidades
  • Publicações especias
  • Publicações favoritas
  • Publique seu artigo
  • Saiba como você pode contribuir
  • Sobre
  • Termos de uso

© 2024 JNews - Premium WordPress news & magazine theme by Jegtheme.

No Result
View All Result
  • #9720 (sem título)
  • Anuncie aqui
  • Contato
  • Excluir conta
  • Home
  • Login Customizer
  • Newsletter
  • Newsletter personalizada
  • Pesquisa – sobre os leitores
  • Política de privacidade
  • Promoções e novidades
  • Publicações especias
  • Publicações favoritas
  • Publique seu artigo
  • Saiba como você pode contribuir
  • Sobre
  • Termos de uso

© 2024 JNews - Premium WordPress news & magazine theme by Jegtheme.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In