Como usar widgets gráficos em scripts de bash com zenidade
- 2054
- 105
- Leroy Lebsack
Zenidade é um utilitário muito útil que vamos criar interfaces gráficas de usuário para nossos scripts de shell. Vários widgets existem e podem ser usados invocando o programa com as respectivas opções. Os widgets são baseados no Gtk
Kit de ferramentas e retorne o resultado da interação do usuário na saída padrão ou como um código de retorno.
Neste tutorial, você aprenderá:
- Quais são as opções gerais de zenidade
- Quais são alguns dos widgets disponíveis mais úteis e como usá -los
Requisitos de software e convenções usadas
Categoria | Requisitos, convenções ou versão de software usada |
---|---|
Sistema | Independente da distribuição |
Programas | O utilitário de zenidade |
Outro | Familiaridade com o shell (Bash neste caso) e conceitos como Sub -Shell e Códigos de Saída |
Convenções | # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular |
Instalação
O Zenidade
O pacote está incluído nos repositórios de todas as principais distribuições Linux, e já pode ser instalado se você estiver usando o GNOMO
Ambiente da área de trabalho. Para instalá -lo, podemos usar nosso gerenciador de pacote de distribuição favorito, em Fedora
, Por exemplo, podemos usar DNF
:
$ sudo dnf install zenity
Ao usar distribuições baseadas em Debian e Debian como o Ubuntu, podemos usar o comando apt-get:
$ sudo apt-get install zenity
A zenidade já está incluída no Archlinux extra
repositório, portanto, podemos instalá -lo via Pacman
:
$ sudo pacman -s zenidade
Opções genéricas
Antes de começarmos a ver alguns dos widgets mais úteis fornecidos por Zenidade
, Devemos mencionar algumas das opções genéricas disponíveis que podemos usar para alterar o comportamento do programa.
Nós os chamamos de genérico porque eles podem ser aplicados independentemente do widget escolhido: --título
, --Viúva-icon
, --largura
, --altura
e --tempo esgotado
.
Primeiro de tudo, temos o --título
Opção: Podemos usá -lo para especificar um título para a janela de diálogo. Da mesma forma, o --Window-icon
Opção Vamos especificar um ícone que será usado como ícone para a janela e será visível, por exemplo, na barra de tarefas. Para exibir um ícone no widget, em vez disso, podemos usar o --Ícone-nome
opção e forneça um dos nomes de ícones permitidos (aqui está a lista completa) como argumento. Para usar os ícones de estoque fornecidos no erro, informações, perguntas ou diálogos de aviso, por exemplo, podemos especificar respectivamente: Error de diálogo
, diálogo-info
, Perição de diálogo
ou Dialog-Warning
.
O --largura
e --altura
As opções são bastante auto-explicativas: eles nos permitem definir a geometria de nossa janela de diálogo.
Finalmente, usando o --tempo esgotado
opção, podemos definir um tempo limite em segundos para o diálogo: após a quantidade especificada de tempo, ele será fechado automaticamente.
Os widgets disponíveis
Existem vários widgets que podemos usar graças à zenidade: cada um deles tem um propósito específico. Vamos ver alguns deles.
O widget do calendário
O widget do calendário exibirá um calendário e deixará o usuário escolher uma data, selecionando o mês, dia e ano. Os valores selecionados serão retornados no saída padrão
. Para lançar o calendário do widget, tudo o que precisamos ser invocar a zenidade, com o --calendário
opção:
$ zenity -Calendário
Podemos usar uma série de opções para ajustar o comportamento do widget, por exemplo, usando --dia
, --mês
, --ano
e fornecendo um Int
Como valor, podemos definir, respectivamente, o dia, mês e ano padrão que serão exibidos no widget. Para especificar um formato específico no qual a data selecionada deve ser retornada, podemos usar o --data
opção e especifique o padrão no strftime
estilo.
O widget do calendário
O widget de entrada
O widget de entrada é realmente útil quando precisamos pedir algum texto ao usuário. Digamos, por exemplo, precisamos pedir ao usuário que insira seu nome; Podemos executar o seguinte comando:
$ Zenity --Entry -Título "Solicitação de nome" -Text "Por favor, digite seu nome:"
Aqui usamos o --título
e --texto de entrada
Opções para personalizar, respectivamente, o título e o rótulo que para o widget. Depois de executar o comando acima, o widget aparecerá:
O widget de entrada
O texto inserido pelo usuário retornará na saída padrão.
Widget de seleção de arquivos
O widget de seleção de arquivos Vamos exibir uma boa interface gráfica para permitir que o usuário selecione um ou mais arquivos. Assim como fizemos nos exemplos anteriores, podemos usar uma série de opções para modificar o comportamento e a aparência do diálogo. Um dos mais importantes é --nome do arquivo
que pode ser usado para definir o arquivo/diretório que será selecionado por padrão. Aqui está uma rápida visão geral das opções e das funcionalidades que eles fornecem:
Opção | Função |
---|---|
-nome do arquivo | Defina o diretório/arquivo padrão que será selecionado no widget |
-múltiplo | Ative a capacidade de selecionar vários arquivos de uma só vez |
-filtro de arquivo | Especifique um filtro para nomes de arquivos |
-diretório | Restringir a seleção aos diretórios |
-salvar | Execute o widget no modo "salvar". |
-Confirmar-overwrite | Peça ao usuário confirmar ao substituir um arquivo existente |
-separador | Especifique um separador que será usado para separar caminhos quando vários arquivos são selecionados |
Vamos ver um exemplo do uso do widget. Digamos que queremos deixar o usuário selecionar vários arquivos e queremos o conteúdo do usuário $ Home
diretório a ser exibido no widget quando ele é aberto. Tudo o que precisamos fazer é executar o seguinte comando:
$ Zenity-File-Selection-Multiple-Filenome "$ home/"
Você pode notar que fornecemos uma trilha /
Para o caminho: dessa forma, o conteúdo do diretório é exibido, em vez do próprio diretório. Aqui está o nosso widget:
O widget de seleção de arquivos
Depois de clicar no botão "OK", o caminho absoluto dos arquivos selecionados será retornado na saída padrão, separada por um caractere, que é padrão |
:
/home/egdoc/downloads/a.txt |/home/egdoc/downloads/b.TXT
Podemos mudar facilmente o separador, fornecendo o personagem que queremos usar como argumento da opção -separator.
Se abrirmos o diálogo em Salvar modo
, O usuário será solicitado a fornecer o nome do arquivo que ele deseja salvar. Se o arquivo existir e nós fornecemos o --Confirmar-overwrite
Opção, ele será solicitado a confirmar que deseja substituí -lo:
$ Zenity-File-Selection-Save-Confirm-overwrite-Filenome "$ home/"
O caminho escolhido será devolvido à saída padrão e estaremos livres para usá -lo em nosso script.
O widget de progresso
Outro widget interessante é o progresso: podemos lançá -lo usando a zenidade com o --progresso
opção. Podemos usá -lo, por exemplo, para mostrar o progresso das operações de longa execução. Aqui estão algumas das opções mais úteis que podemos usar com o widget:
Opção | Função |
---|---|
-percentagem | Define o valor percentual inicial da barra de progresso |
-Close automático | Feche automaticamente o diálogo quando o progresso for concluído |
-Auto-matar | Mate o processo pai se o diálogo for fechado com o cancelamento botão |
-sem cancelamento | Não exiba o botão de cancelamento |
Aqui está um exemplo de como podemos usar o widget dentro de um script bash:
#!/BIN/BASH # # Script fictício para demonstrar o widget de progresso da Zenidade! (eco 25 echo "# configurando…" Sleep 2 echo 30 echo "# Lendo arquivos…" Sleep 2 echo 70 echo "# Criando conteúdo ..." Sono 1 echo 100 echo "# feito!") | Zenidade-Título" Barra de Progresso Exemplo "--progress --auto-Kill
cópia de O script acima não executa nenhuma operação, mas é útil entender como o widget funciona. Há duas coisas principais que devem ser notadas no código: antes de tudo, os comandos a serem executados são envolvidos entre parênteses, portanto são executados em um subshell
: Isso é necessário para o widget funcionar corretamente; Segundo, quando ecoarmos uma linha começando com um número, isso será interpretado como a porcentagem da barra de progresso.
Da mesma maneira, quando ecoamos uma linha que começa com o #
personagem, ele será usado como o texto a ser exibido no widget. Aqui está um pequeno vídeo do script em ação:
Informações, widgets de aviso e erro
Para exibir informações, aviso ou mensagens de erro, podemos usar a zenidade com o --informações
, --aviso
e --erro
opções, respectivamente. Nesse caso, usamos o --texto
opção para especificar a mensagem. Aqui está um exemplo de notificação:
$ zenity - -info - -width = 400 - -Hight = 200 --text "Esta é uma notificação!"
O widget de notificação
Usar o widget de aviso, é igualmente fácil:
$ Zenity -Warning -Width = 400 -Hight = 200 -Text "Este é um aviso!"
O widget de aviso
Esta é, em vez disso, é um exemplo de mensagem de erro:
$ zenity --error -lar!"
O widget de erro
O widget de pergunta
Para fazer uma pergunta ao usuário e obter sua resposta, podemos usar o pergunta
widget, invocando a zenidade com o --pergunta
opção. Especificamos a pergunta usando o --texto
opção e definir os rótulos dos botões 'ok' e 'cancelar', usando respectivamente o --OK-Label
e --Cancelar label
opções. Aqui está um exemplo:
$ zenity --question -text "Você tem certeza de que deseja sair?"-Não-Wrap --k-Label" Sim "-Cadel-Label" Não "
O widget de pergunta
Nesse caso, também usamos o --sem embrulhar
opção, para evitar embrulho de texto no widget. O resultado da escolha do usuário não será exibido na saída padrão; Em vez disso, o comando definirá seu Código de saída
Consequentemente, então ele retornará 0
Se o usuário clicar no botão 'OK' e 1
Se ele clicar no 'cancelar' ou fechar a janela (isso pode parecer contra-intuitivo, mas lembre-se do que um código de saída de 0 significa que um comando foi executado com sucesso no shell).
O widget de senha
Este é o widget que devemos usar quando queremos que o usuário insira uma senha ou qualquer informação confidencial: o texto que ele entra é mascarado por balas:
O widget de senha
Enquanto o texto inserido no usuário é mascarado, o valor retornado pelo widget será claramente visível na saída padrão.
O widget de seleção de cores
Este é outro widget agradável. Ao usá -lo, podemos fazer o usuário escolher uma cor de uma paleta. Para executá -lo, usamos a zenidade com o --Seleção de cores
opção. Podemos especificar a cor inicialmente selecionada usando --cor
e forneça a cor como argumento. Aqui está um exemplo:
O widget de seleção de cores
Opcionalmente, podemos exibir a paleta de cores, com o --Paleta de show
opção:
$ zenity-cor-seleção-cor de cor-show-palette
A paleta de widgets de seleção de cores
A cor selecionada pelo usuário será devolvida em rgb
notação na saída padrão. Por exemplo, ao selecionar a cor vermelha, o seguinte será devolvido:
RGB (255,0,0)
O widget da lista
O próximo widget que vamos dar uma olhada, é o widget da lista. Com ele, é possível criar um diálogo de várias colunas e, opcionalmente. Para fazer a zenidade exibir esse tipo de diálogo, usamos o --lista
opção e definir as colunas e seu conteúdo; Se omitirmos, o comando falhará:
$ zenity -Lista sem títulos de coluna especificados para diálogo de lista.
cópia de Para definir um cabeçalho de coluna, usamos o --coluna
opção e forneça uma string como argumento. Repitamos o comando para cada coluna que queremos criar:
$ Zenity -List -Seleção da coluna -Distribuição da coluna
Com o comando acima, criamos duas colunas, com os cabeçalhos "seleção" e "distribuição". Agora vamos fornecer ao usuário uma série de fileiras, cada uma delas representando uma distribuição Linux. Na primeira coluna de cada linha, colocaremos uma caixa de seleção para permitir que o usuário selecione a entrada correspondente:
$ Zenity -List -Seleção da coluna -Distribuição da coluna Falsa Debian True Fedora -Radiolista
Cada string que fornecemos após a definição de colunas estão associados às colunas, dependendo de sua ordem de aparência. Como você pode ver, criamos duas linhas. Na primeira coluna de cada linha, fornecemos um valor: usamos FALSO
para que a caixa de seleção ou botão de rádio correspondente não seja selecionado quando o widget é exibido e verdadeiro
Para definir a entrada como sinalizada por padrão. Aqui está o widget gerado:
O widget da lista
Quando clicamos no botão "OK" e executamos nossa seleção, o valor associado à linha será relatado na saída padrão. Se quisermos deixar o usuário selecionar várias linhas, podemos usar o --lista de controle
Opção: o | O caractere será usado para separar os valores selecionados.
Conclusões
Neste tutorial, aprendemos a saber Zenidade
, Um utilitário que nos permite usar diálogos gráficos em nossos scripts de shell. Vimos quais são as opções genéricas que podemos usar com todos os widgets, como --largura
e --altura
, e aprendemos a usar alguns dos widgets mais úteis que podemos gerar com o programa. Para aprender mais sobre Zenidade
você pode consultar sua manpra!
Tutoriais do Linux relacionados:
- Uma introdução à automação, ferramentas e técnicas do Linux
- Mastering Bash Script Loops
- Coisas para instalar no Ubuntu 20.04
- Loops aninhados em scripts de basquete
- Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
- Manipulando a entrada do usuário em scripts bash
- Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
- Tutorial de depuração do GDB para iniciantes
- Arquivos de configuração do Linux: os 30 primeiros mais importantes
- Sistema Linux Hung? Como escapar para a linha de comando e…
- « Como estender o Gnome Nautilus File Manager com scripts personalizados
- Introdução às visualizações SQL de banco de dados MySQL/MariaDB »