Criando item no menu do GNU/Linux com terminal executando comandos/scripts/aplicações

Publicado por Esli Silva em 04/07/2014

[ Hits: 9.660 ]

Blog: https://esli.blog.br

 


Criando item no menu do GNU/Linux com terminal executando comandos/scripts/aplicações



Situação: Possuo alguns programas que criei (em Perl, Python e outros em bash), que precisam ser executados em terminal (obvio, não?), porém para organizá-los, eu prefiro criar entradas no menu principal e separá-los em submenus (por ordem lógica).

Porém, se você apenas inserir ele no menu (chamando o executável do script), ele vai abrir um terminal, executá-lo e depois fechar o terminal (normalmente, ele vai piscar o terminal na sua tela), ou vai fechar logo que você sair de sua aplicação.

Exemplo 1: se você criar uma entrada no menu (GNOME/MATE/Xfce...) para abrir um terminal e mostrar uma query de SQL (relatório, por exemplo), ele vai piscar o terminal, sem chances de ver o conteúdo (abre, executa e fecha).

Exemplo 2: criar uma entrada no menu para chamar um programa de monitoramento, como o htop, top ou o glances. Ao criar a entrada no menu e depois executar, ele abre o terminal e executa o programa, mas ao sair do glances/top/htop (com a letra Q) ele sai do programa e fecha o terminal.

Exemplo 3: criar uma entrada que execute uma aplicação gráfica, mas faça isto pelo terminal para abrir um debug.

Solução 1

Abaixo, como criar item no menu do GNU/Linux que abra um comando executando em terminal (e manter o terminal aberto).

O código completo:

Com o gnome-terminal:

gnome-terminal -x bash -c "comandoouarquivo.sh ; bash"

mate-terminal:

mate-terminal -x bash -c "comando_ou_arquivo.sh ; bash"

xterm:

xterm -e bash -c "comando_ou_arquivo.sh ; bash"
xfce4-terminal
xfce4-terminal -e ' bash -c "glances ; bash" '

lxterminal:

lxterminal -e " bash -c ' glances ; bash ' "

Nos terminais xfce4, lx e xterm:

"-e STRING" ou "--command=STRING" ou "--command STRING"

O -e serve para indicar um comando a ser executado (ou um script), pode-se usar --command (com = ou espaço depois) ao invés de -e.

Nos terminais GNOME e MATE, não há o -e, isto é feito pelo -x, eles aceitam o --command. Então, caso queira criar um script mais autônomo e automático, pode deixar tudo com o --command e buscar o terminal que o usuário possui em seu GNU/Linux através de variáveis.

O porém no gnome-terminal e no mate-terminal, é que neles você não deve colocar as aspas simples com as duplas (não vai funcionar igual aos outros terminais). Apenas use aspas após o -c do bash, para informar o que deve ser executado dentro do bash ao abrir o terminal.

gnome-terminal/mate-terminal: -x, --execute command

O -c é uma opção do bash informando que a string a seguir será executada como comando/parâmetro dentro do bash.

Exemplos:

gnome-terminal -x bash -c "glances; bash"

Outro exemplo:

mate-terminal -x bash -c "/opt/relthck.sh ; bash"

Solução 2

Pelo gerenciador de menu, você pode organizar os itens por submenus (ex.: em Network, eu tenho alguns submenus, como sniffers, scanners), além de poder colocar ícones para cada entrada e a descrição. Com a entrada criada, você pode colocar atalhos na área de trabalho e no painel (barra do sistema).

Com esta dica, é possível criar os menus semelhantes aos que tem em distribuições como BackTrack, Kali, BackBox, entre outras distros que possuem como base a disposição de aplicações que são somente executadas em modo terminal.

Criação de uma entrada no menu do GNOME ou MATE: Menu Sistema → Preferências → Menu Principal

Para chamar o editor de menu via terminal, os comandos são: alacarte no GNOME e mozo no MATE.

Obs.: no MATE, creio que é default na instalação, mas no GNOME, pode ser que o alacarte não esteja instalado em seu GNU/Linux, basta instalá-lo com um apt/aptitude.


Fonte (eu postei esta dica lá e aqui também, na íntegra):
Outras dicas deste autor

NFtables – O Sucessor do IPtables (já no kernel 3.13)

TtyLinux - Linux com ISO de 6 MB

Leitura recomendada

O jeito mais fácil de escrever e executar um Shell Script no Linux

Diversão no terminal com cowsay e fortunes

Limpando lixeira centralizada do Samba

Usando o cURL para enviar JSON POST DATA

Listando os 5 maiores subdiretórios no GNU/Linux

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts