web-dev-qa-db-fra.com

exécuter le script après le chargement du bureau?

Je veux exécuter le script bash au démarrage qui ouvre plusieurs terminaux dans différents espaces de travail. Le script fonctionne très bien si je l'appelle depuis un terminal, mais ne fonctionne pas s'il est exécuté depuis crontab en utilisant @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

Je pense que c'est parce que le travail crontab se déclenche avant le chargement de l'environnement de bureau ... peut-être ...? Comment puis-je exécuter ce script après le chargement de l'environnement de bureau? Merci:)

Mise à jour 1:

j'ai commencé par crontab initialement comme ceci:

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

et obtenait ces erreurs:

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

Mise à jour 2

J'ai essayé de lancer le script depuis Système> Préférences> Applications de démarrage.

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

mais le script n'ouvre que le premier gnome-terminal dans l'espace de travail 6 ... et ne continue pas à exécuter le reste du script tant que je ne ferme pas ce gnome-terminal et ainsi de suite ...

Mise à jour 3 - succès

Regardez ma réponse ci-dessous pour voir le script qui a fonctionné à la fin.

3
Stann

Essaye ça:

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

Cela devrait fonctionner. J'ai rencontré ce même problème et exécuter mon script avec sh corrigé.

Vous pouvez également vouloir le retarder de 5 à 10 secondes pour que tout le reste puisse se charger. Pour ce faire, accédez à ~/.config/autostart, recherchez votre nouvelle entrée, ouvrez-la avec un éditeur de texte et ajoutez la ligne suivante:

X-GNOME-Autostart-Delay=5

Le nombre est en secondes. La même chose peut être obtenue avec la cmd "sleep", mais elle est plus propre (elle ne génère aucun nouveau processus).

J'ai également rencontré des problèmes en essayant d'exécuter des scripts Shell au démarrage en exécutant plusieurs commandes qui génèrent plusieurs instances de programmes comme le vôtre. La seule solution que je pouvais trouver était d'ajouter un "&" à la fin de chaque commande. Si "sh -c" ne fonctionne pas, essayez-le.

Il y a aussi d'autres possibilités, si vous ne l'avez toujours pas fait, on peut essayer quelque chose d'autre :)

4
Deadite81

Essayez Système> Préférences> Applications de démarrage. Vous devriez pouvoir ajouter une entrée pour votre script bash. Ces applications sont lancées dans le cadre du processus de chargement du bureau après la connexion.

3
ayan4m1

Créez 6 lanceurs .desktop pour lancer ces commandes, puis enregistrez simplement la session.

1
Erik Johansson

C'est le script qui fonctionne:

#!/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

Je le lance depuis Système> Préférences> Applications de démarrage, comme suggéré par ayan4m1, comme ceci:

/home/andrei/scripts/startup.sh >> /home/andrei/scripts/out.txt 2>&1
0
Stann