executa script após a área de trabalho ser carregada?

3

Eu quero executar o script bash na inicialização que abre vários terminais em diferentes áreas de trabalho. O script funciona bem se eu chamá-lo pelo terminal, mas não funciona se executado a partir do crontab usando o @reboot:

#!/usr/bin/env bash

#1 make sure we have enough workspaces
gconftool-2 --set -t int /apps/metacity/general/num_workspaces 7

#2. Launch programs in these terminals
wmctrl -s 6
gnome-terminal --full-screen --execute bash -c "tmux attach; bash"
wmctrl -s 5
gnome-terminal --full-screen --execute bash -c "weechat-curses; bash"
wmctrl -s 4
gnome-terminal --full-screen --execute bash -c "export TERM=xterm-256color; mutt; bash"
wmctrl -s 3 
gnome-terminal --full-screen
wmctrl -s 2
gnome-terminal --full-screen
wmctrl -s 1
gnome-terminal --full-screen
wmctrl -s 0
google-chrome --start-maximized

Eu acho que é porque o trabalho do crontab é acionado antes que o ambiente de desktop seja carregado ... talvez ...? Como posso executar este script depois que o ambiente de desktop é carregado? obrigado:)

Atualização 1:

Eu comecei do crontab inicialmente assim:

@reboot $HOME/andreiscripts/startup.sh >> $HOME/andreiscripts/testlog.txt 2>&1

e estava recebendo esses erros:

Cannot open display.
Failed to parse arguments: Cannot open display: 
Cannot open display.
Failed to parse arguments: Cannot open display: 
Cannot open display.
.....

Atualização 2

Eu tentei iniciar o script do System > Preferências > Aplicativos de inicialização

/home/andrei/andreiscripts/startup.sh >> /home/andrei/Desktop/out.txt 2>&1

mas o script só abriu o primeiro gnome-terminal no espaço de trabalho 6 ... e não continuaria a executar o resto do script até eu fechar o gnome-terminal e assim por diante ....

Atualização 3 - sucesso

Procure a minha resposta abaixo para ver o script que funcionou no final.

    
por Stann 10.02.2011 / 01:42

4 respostas

4

Tente isto:

sh -c /home/andrei/andreiscripts/startup.sh >> /home/andrei/Desktop/out.txt 2>&1

Isso deve funcionar. Eu me deparei com o mesmo problema e executando o meu script com o sh fixo.

Além disso, você pode querer atrasar por 5 ou 10 segundos para que todo o resto possa ser carregado. Para fazer isso, vá para ~ / .config / autostart, encontre sua nova entrada, abra-a com um editor de texto e adicione a linha:

X-GNOME-Autostart-Delay=5

O número está em segundos. A mesma coisa pode ser alcançada com o "sleep" cmd, mas isso é mais limpo (não gera novos processos).

Eu também tive problemas ao tentar executar scripts de shell na inicialização executando vários comandos que geram várias instâncias de programas como o seu. A única solução que consegui criar foi adicionar um "& amp;" ao final de cada comando. Se "sh -c" não funcionar, tente isso.

Existem outras possibilidades também, se você ainda não conseguiu trabalhar, talvez possamos tentar outra coisa:)

    
por Deadite81 11.02.2011 / 15:40
3

Experimente o sistema > Preferências > Aplicativos de inicialização. Você deve poder adicionar uma entrada para o seu script bash. Esses aplicativos são iniciados como parte do processo de carregamento da área de trabalho pós-login.

    
por ayan4m1 10.02.2011 / 01:47
1

Crie 6 lançadores .desktop para iniciar esses comandos e depois salve a sessão.

    
por Erik Johansson 11.02.2011 / 17:38
0

Este é o script que funciona:

#!/usr/bin/env bash

#1 make sure we have enough workspaces
wmctl -n 7

#2. Launch programs in these terminals
gnome-terminal --title=tmux --full-screen --execute bash -c "tmux attach; bash" &
sleep 0.3
wmctrl -r :ACTIVE: -N "tmux"
gnome-terminal --full-screen --execute bash -c "weechat-curses; bash" &
sleep 0.3
wmctrl -r :ACTIVE: -N "weechat"
gnome-terminal --full-screen --execute bash -c "export TERM=xterm-256color; mutt; bash" &
sleep 0.3
wmctrl -r :ACTIVE: -N "mutt"
gnome-terminal --full-screen &
sleep 0.3
wmctrl -r :ACTIVE: -N "bash1"
gnome-terminal --full-screen &
sleep 0.3
wmctrl -r :ACTIVE: -N "bash2"
gnome-terminal --full-screen --execute bash -c "export TERM=xterm-256color;vim;bash" &
sleep 0.3
wmctrl -r :ACTIVE: -N "vim"
google-chrome --start-maximized &

sleep 2

wmctrl -r tmux -t 6
wmctrl -r weechat -t 5
wmctrl -r mutt -t 4
wmctrl -r bash2 -t 3
wmctrl -r bash1 -t 2
wmctrl -r vim -t 1
wmctrl -r Chrome -t 0

Eu inicio a partir do System > Preferências > Aplicativos de inicialização, como sugerido por ayan4m1 assim:

/home/andrei/scripts/startup.sh >> /home/andrei/scripts/out.txt 2>&1
    
por Stann 12.02.2011 / 01:07