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):
Nenhum comentário foi encontrado.