Como criar uma interface gráfica para comandos do terminal?

Eu estou utilizando o Nativefier para criar somente dois web-apps, e pensei qual seria o motivo para um programa tão bom e conhecido funcionar somente via CLI.

E mesmo não sabendo programar gostaria de saber qual o processo de criação de uma front-end para qualquer comando do terminal.

PS: isso pensando a outras áreas como um “full upgrade” do sistema, ou qualquer coisa.

1 Curtida

Basicamente você cria a interface gráfica com as seleções (botões, textos, checkboxes etc…) e um botão de ação que, uma vez clicado, vai executar o comando com os parâmetros selecionados em um shell que pode estar oculto ou aparente.

2 Curtidas

Pronto, essa lógica eu compreedo. Porém quais programas/linguagem eu usaria? Qual conhecimento técnico eu precisaria ter?

Basicamente vc vai precisar da biblioteca de desenvolvimento gráfico (no linux o mais comum é GTK ou Qt) e, na linguagem de programação que você escolher, incluir essa biblioteca e realizar as chamadas. Cada linguagem de programação vai ter seu jeito específico de fazer essa inclusão da bibliotea e criar os “ganchos” para pescar os eventos disparados pela biblioteca da interface gráfica.

3 Curtidas

Tem várias opções para construir essa interface, como o Gambas, Lazarus e Glade.

Antecipando a pergunta: Mas o Gambas não trabalha “apenas” com VB e Lazarus com Pascal? Não! É possível usá-los para criar uma interface que executa um script ou comando.

3 Curtidas

Ou você pode usar solução simples, que é usar KDialog ou Yad

4 Curtidas

Agradeço a todos que responderam o tópico.

Fui pesquisar as alternativas dadas e apesar de minha leiguice, acredito que o Glade se mostra uma ferramenta bastaante interessante e fácil de se usar para a ideia que eu coloquei.

Até me empolguei e tô vendo aqui se eu consigo fazer alguma coisa.

Acho que tem muita ferramentazinha simples que as vezes ficam em falta no Linux. Nisso eu gosto da galera do Mint, ferramentas como o USB Stick por exemplo são uma mão na roda.

1 Curtida

Não se esqueça de relatar aqui sua experiência e progresso no trabalho.

Uma saída que eu já utilizei foi
python programa.py | bash

Basicamente você usaria o print() do Python para gerar um shellscript em tempo real. Para printar erros pode-se usar um print alterado. A principal desvantagem é a dificuldade em comunicar com o shell.

Para criar interface via Cli só com dialog existe outras mais elas não são em Cli elas são em interface gráficas.
https://aurelio.net/shell/dialog/

Você pode ter uma demonstração executando este comando:

while :; do fazer=$( dialog --stdout --title "AppManager" --menu "O que deseja que o AppManager faça?" 0 0 0 "1. Atualizar" "Atualiza programas, versão ou sistema." "2. Instalar" "Instalar programas" "3. Remover" "Remove programas" "4. Buscar" "Faz uma busca dos pacotes" "5. Corrigir" "Corrige pacotes quebrados" "6. Repositorio" "Adiciona e remove repositorios" "7. Limpezas" "Faz limpeza do sistema." ); if [ "$fazer" = "7. Limpezas" ]; then limpezas=$( dialog --stdout --title "Limpezas" --menu "Qual limpeza fazer ?" 0 0 0 "1. Apt" "Faz limpezas do Apt" ); fi; done

Se você selecionar o 7. Limpezas vai te levar para um sub menu.

Pesquisa por YAD é mais simples de usar (recomendo usar o --form e --borders=32 para uma melhor aparência) e é feito exatamente pro seu use case segue um exemplo:

Note que o código só é extenso porque ele tem 3 idiomas

2 Curtidas

Eu irei dar uma olhada depois.

Mas é como disse, eu não sou programador (e nem pretendo ser), só estou com algumas ideias de aplicações que gostaria de tentar fazer. E apesar de eu entender um pouco de lógica de programação é muita coisa pra assimilar de primeira.

Sim, eu sei que estou pulando etapas.

Eu mesmo tenho que arrumar 1 tempo pra criar uma interface, estilo o Mint Welcome, pra usar em minha remaster.

1 Curtida

Uma das mais simples que já encontrei, e pra quem não tem conhecimento em programação é o Gtkdialog (não GtkDialog que é a raiz do GTK, mas Gtkdialog que por ser uma linguagem simples baseada no XML, ou seja Tags, fica muito mai simples de se entender), por isso muitas distos minimalistas preferem usar para criar suas interfaces para seus scripts.


Uma explicaçãozinha rápida e simples nesse post, inclusive tem o exemplo que não consegui colocar aqui nesse post:

O Gtkdialog era usado no Ubuntu até a versão 14.04 LTS, mas por ter alguns bugs, eles deixaram de usar ao invéz de quem sabe ajudar ivestindo na correção dos bugs. Mas ainda é bem utilizável. Tanto, que como já disse, ainda é usado em distibuições cujo foco é ser minimalista mesmo, como o Puppylinux e o Slitaz.

Esse é o pacote que baixei diretamente do repositório do Ubuntu 14.04 na época, mas é tão simples que é compatível até com as mais recentes versões do Ubuntu isso inclui o Mint:
https://drive.google.com/file/d/1rvpZTxIP1PCQaelBJnRT5bYvqv1uCvn3/view?usp=drivesdk

Ou vc pode instalar pelo código fonte do projeto:
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/gtkdialog/gtkdialog-0.8.3.tar.gz

Como disse, pode ter uns bugzinhos, mas nada que interfira na eficiencia do app, e a eficiencia e simplicidade pra se construir um app a partir de um bloco de notas, olhar o código e entender aonde estão as coisas por causa da estrura xml é incomparável.

Querendo conhecer mais sobre as tags, exemplos e as suas propriedades:
http://xpt.sourceforge.net/techdocs/language/gtkdialog/gtkde02-GtkdialogExamples/single/

Bom, eu resolvi largar de tentar fazer trabalho porco. E resolvi fazer algum curso de programação, como não sabia qual escolher eu fui de Python pois eu acredito que possa me servir muito bem.

É a melhor? Não sei. Só ela serve? Não sei. Mas foi a que escolhi :sweat_smile:.