Xdotool não minimiza a janela do terminal ao usar o aplicativo de inicialização quando o PC é inicializado?

2

Com base no feedback nos comentários, tentei este comando: Em uma janela de terminal, isso funciona:

gnome-terminal -x bash -c "sudo ./serial"; xdotool getactivewindow windowminimize 

No entanto, ao executar o comando no Startup Program, o xdotool parece ser ignorado. O PC inicializa com janelas de terminal na tela, não minimizado.

Histórico de histórico:

Estou tentando determinar uma maneira de minimizar a janela do terminal com o comando gnome-terminal . Eu preciso do meu pc remoto Ubuntu 14.04LTS para executar vários scripts e um programa C na inicialização. Este PC remoto é para visualização do cliente, portanto, o monitor precisa estar limpo. Eu não vi uma opção disponível para minimizar: link . O melhor que pude fazer foi tornar as janelas dos terminais pequenas, o que é aceitável se eu não encontrar uma maneira melhor. Este é o meu comando inserido no programa "Startup Applications" do Ubuntu:

gnome-terminal --geometry=60x2 --command "sudo ./My_C_Program"

Minhas habilidades em programação / Linux são medíocres, mas estão crescendo. Estou procurando uma maneira melhor de fazer isso.

Com base em um comentário / feedback, tentei fazer isso:

gnome-terminal -x bash -c  "sudo ./serial_ver2_machine3_free_air_3_95"; wmctrl -r :ACTIVE: -b add,shaded

Isso funciona da maneira que eu quero ao executar em uma janela do Terminal !! A janela do Terminal está sombreada, mas o programa ainda está em execução e reaparece quando clico duas vezes no ícone do Terminal do Ubuntu.

No entanto, ao executar dentro de "Aplicativos de Inicialização", a janela do Terminal não é "sombreada". Usando 'add, hidden' não funciona. Usar 'add, below' funciona, exceto que estou usando minha imagem de plano de fundo da área de trabalho como parte da visualização do cliente.

    
por Quickseal 04.10.2017 / 18:10

2 respostas

1

Outra solução é criar tmux session na inicialização do sistema e executar alguns comandos dentro dele. Em seguida, você poderá se conectar a essa sessão, independentemente de estar em ssh ou gnome-terminal . tmux tem uso mais avançado, aqui vou tentar cobrir o nível mais básico.

1. Instale tmux : sudo apt update && sudo apt install tmux

2. Crie um arquivo de script executável auxiliar. Vamos supor que ele seja colocado no diretório $HOME do usuário e seja chamado de run-my-tmux-session :

touch "$HOME/run-my-tmux-session"
chmod +x "$HOME/run-my-tmux-session"

O script deve ficar assim:

#!/bin/bash

SESS="my-tmux-session"                               # Set the session name

if (tmux has-session -t "$SESS" 2> /dev/null); then  # If session with name $SESS doesn't 
        echo "Session '$SESS' exists."               # exists
else                                                 # create it and send few commands
        tmux new-session -d -s $SESS
        tmux send-keys -t $SESS "echo 'Now:'; while true; do printf '%(%c)T\r'; done" ENTER
fi

exit 0

3. Agora, se você executar ~/run-my-tmux-session , o script criará tmux session, chamado my-tmux-session e executará alguns comandos dentro dele. Aqui estão algumas dicas:

  • Para listar todas as sessões: tmux ls

  • Para matar uma sessão ou matar todas as sessões:

    tmux kill-session -t <session-name>
    tmux kill-session #
    
  • Para anexar a uma sessão existente:

    tmux a -t <session-name>
    tmux attach -t <session-name>
    
  • Para sair da sessão (desanexar), execute o comando a seguir de dentro da sessão: tmux detach

  • Para enviar um comando para uma sessão sem anexar:

    tmux send -t <sess-name> "<commands>" ENTER
    tmux send-keys -t <sess-name> "<commands>" ENTER  
    

4.A. Inicie a sessão tmux de Aplicativos de inicialização . Abra Aplicativos de inicialização e crie uma nova entrada. Seu comando deve ser (substitua <user> pelo nome de usuário atual) :

/home/<user>/run-my-tmux-session

4.B. Inicie a sessão tmux de crontab na reinicialização. Edite o arquivo crontab do usuário e adicione as seguintes linhas ao final (digite crontab -e para acessar o usuário crontab ) :

SHELL=/bin/bash
@reboot "$HOME/run-my-tmux-session"

4.C. Inicie a sessão tmux de /etc/rc.local . Esta é provavelmente a melhor solução! Edite o arquivo /etc/rc.local e adicione uma das seguintes linhas antes da última linha no arquivo, que é exit 0 (substitua <user> pelo nome de usuário atual) :

su -l <user> -c "/home/<user>/run-my-tmux-session"
sudo -iu <user> "/home/<user>/run-my-tmux-session"

Referências:

Leitura adicional:

por pa4080 07.10.2017 / 16:27
1

Aqui está uma solução alternativa que usa xdotool : crie um script de inicialização auxiliar, que será executado dentro de um gnome-terminal , que é aberto por Startup Applications . O script executará alguns comandos e minimizará a janela ativa. Por favor, leia atentamente os comentários dentro do corpo do roteiro abaixo.

1. Instale xdotool : sudo apt update && sudo apt install xdotool

2. Crie um arquivo de script executável auxiliar. Vamos supor que ele seja colocado no diretório $HOME do usuário e seja chamado de run-and-minimize :

touch "$HOME/run-and-minimize"
chmod +x "$HOME/run-and-minimize"

O script deve ficar assim:

#!/bin/bash

# Put your commands here, for example:
echo 'The current time is:'

sleep 2                                            # Adjust this value. The mouse should not be moved while this period otherwise some other window could become active!
xdotool windowminimize $(xdotool getactivewindow)  # Minimize the window

# Or put your commands here, for example:
while true; do printf '%(%c)T\r'; done &           # Some commands must be pushed into the background ('&') to be successfully interrupted with keep open the terminal window.

exec bash                                          # Keep the window open after the above commands are finished or interrupted

3. Abra Aplicativos de inicialização e crie uma nova entrada. Seu comando deve ser:

gnome-terminal -x sh -c 'exec $HOME/run-and-minimize'

Eu também testei com sucesso:

gnome-terminal -x bash -c 'exec $HOME/run-and-minimize'

Referências:

por pa4080 04.10.2017 / 23:16