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

Publicado por Esli Silva em 04/07/2014

[ Hits: 9.600 ]

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

Aulas Shell Script do zero - Parte 6

Imprima textos inteiros com o comando "echo"

Backup no runlevel 0 (Slackware 11)

Reexecutando comandos do console

Diferenciar usuários no Squid

  

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