Como posso criar facilmente uma caixa de diálogo da GUI com um script bash?

5

Eu preciso apresentar algum texto junto com os itens (cerca de 15 valores) para cada um dos dois registros de lista de Bash (arquivo). Na mesma tela eu preciso apresentar uma seleção de três direções, (botões, janela de seleção rolada, etc.).

Sou um noob de scripts do Ubuntu (11.04) que está começando a usar o Zenity em scripts. Meus amigos sugeriram YAD.

Posso fazer tudo isso no YAD ou usar outra ferramenta de GUI fácil e desconhecida para nós?

.

    
por Harry 18.01.2013 / 17:12

3 respostas

2

Aqui está uma implementação mínima em Yad.

Um arquivo de texto chamado 'mylist' no mesmo diretório que o script contém "1 2 3 4 5 6 7 8 9 10". Um caractere de espaço é o delimitador padrão para entrada nas listas.

O script de exemplo é:

#/bin/bash
thelist=$(<mylist)
thechoice=$(yad --title="Choose a value" --width=200 --height=200 --list --column="Values" --separator="" $thelist)
exit $(yad --title="You chose..." --text=$thechoice)

É isso. Rolando a lista é tratado automaticamente. O --separator="" é para suprimir o padrão de Yad de anexar um caractere de pipe ("|") à saída.

Quando você ler a página do manual, verá que tem uma grande variedade de possibilidades. Você pode adicionar botões, ícones, botões de opção, etc. Você pode criar caixas de diálogo com guias usando o recurso Notebook do Yad para incorporar diálogos em outros diálogos como plug-ins.

Há um longo exemplo na revista PCLinusOS e alguns exemplos interessantes mais curtos no Yad site .

    
por chaskes 19.01.2013 / 07:03
2

para diálogos simples, o Yad ou o kdialog são de fato os mais completos. Uma GUI completa para o bash, no entanto, só pode ser feita por dois programas que conheço:

O gtkdialog ( link ) oferece uma interface completa para programas individuais e é provavelmente o que você está procurando o primeiro lugar se o yad não for suficiente para as suas necessidades.

O outro é o gtkserver ( link ) que é um servidor GUI em execução separado. Seu aplicativo bash pode se comunicar com ele por meio de pipes, mensagens ou soquetes TCP, o que é bastante conveniente se você estiver planejando uma configuração complexa de scripts / aplicativos com uma única interface central. Eu acho que será um pouco exagerado para o seu projeto atual :-)

    
por thom 29.03.2013 / 23:09
1

Alguns exemplos do Zenity, apenas no caso de alguém querer ficar com ele.

Isso criará uma caixa de mensagem "Olá mundo":

zenity --info --text "Saluton mondo"

Isso criará uma lista preenchida com a saída de ls:

ls /var/log | zenity --list --column="Files and directories"
    
por Noe Nieto 29.11.2013 / 20:24

Tags