« Lancement automatique de logiciels au démarrage sur EeePC » : différence entre les versions
m (→Installation) |
(balises code) |
||
(4 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Catégorie:Eee PC]] | |||
<u> Note</u> : Si vous souhaitez démarrer un service (ou démon ou encore daemon) lisez plutôt [[La distribution Linux Xandros de l'EeePC#fastservices ou comment démarrer des services (démons ou daemons) au démarrage|cet article]]. L'article ci-dessous consiste plutôt à lancer un logiciel graphique automatiquement. | |||
=Installation= | =Installation= | ||
Cette étape ne doit être faite qu'une seule fois. Elle consiste à ajouter dans le programme exécuté à chaque démarrage (un script [[Shell]]) quelques lignes qui lanceront automatiquement tous les programmes présents dans un répertoire donné. Pour ma part j'ai choisi de créer un répertoire < | Cette étape ne doit être faite qu'une seule fois. Elle consiste à ajouter dans le programme exécuté à chaque démarrage (un script [[Shell]]) quelques lignes qui lanceront automatiquement tous les programmes présents dans un répertoire donné. Pour ma part j'ai choisi de créer un répertoire <b>Autostart</b> dans mon dossier utilisateur. | ||
Il faut donc éditer le script < | <u>Note</u> : cette méthode est similaire et compatible à celle employée par KDE. Si vous utilisez les 2 modes de l'EeePC (avancé et easy), vous trouverez sans doute intéressant de faire un lien symbolique (voir ci-dessous) de <b>~/Autostart</b> vers <b>~/.kde/Autostart</b> au lieu de créer un nouveau répertoire (ou de modifier les scripts ci-dessous pour prendre en compte directement le répertoire Autostart de KDE). | ||
<code>for soft in /home/user/Autostart/* ; do | |||
if [ -x $soft ]; then | Il faut donc éditer le script <b>/usr/bin/startsimple.sh</b> avec [[Software-soft edit-vi|vi]], kate, ou votre éditeur de texte préféré, et y ajouter les lignes suivantes au bon endroit : | ||
( exec $soft ) & | <div class="code"> | ||
for soft in /home/user/Autostart/* ; do | |||
if [ -x $soft -a ! -d $soft ]; then | |||
( exec $soft ) & | |||
fi | fi | ||
done</ | done | ||
</div> | |||
<u>Explication</u> : pour chaque fichier trouvé dans < | <u>Explication</u> : pour chaque fichier trouvé dans <b>/home/user/Autostart</b>, s'il est exécutable (et n'est pas un répertoire), alors le lancer. Simple non ? | ||
Ce qui chez moi donne : | Ce qui chez moi donne : | ||
<code>#!/bin/sh | <div class="code"> | ||
#!/bin/sh | |||
sudo /usr/bin/sessreg -d -l :0.0 -u /var/run/utmp user | sudo /usr/bin/sessreg -d -l :0.0 -u /var/run/utmp user | ||
xhost + si:localuser:root # Allow local user root only to access the diplay | xhost + si:localuser:root # Allow local user root only to access the diplay | ||
if ! [ -f /home/user/.firstrundone ]; then | if ! [ -f /home/user/.firstrundone ]; then | ||
sudo /usr/bin/sessreg -a -l :0.0 -u /var/run/utmp user | sudo /usr/bin/sessreg -a -l :0.0 -u /var/run/utmp user | ||
sudo /usr/bin/firstrunwizard | sudo /usr/bin/firstrunwizard | ||
Ligne 25 : | Ligne 34 : | ||
sudo /bin/kill -USR2 1 | sudo /bin/kill -USR2 1 | ||
fi | fi | ||
elif [ -f /tmp/kdesession -a ! -f /home/user/.easysession ]; then | elif [ -f /tmp/kdesession -a ! -f /home/user/.easysession ]; then | ||
sudo /usr/bin/sessreg -a -l :0.0 -u /var/run/utmp user | sudo /usr/bin/sessreg -a -l :0.0 -u /var/run/utmp user | ||
if [ ! -d /home/user/Desktop ]; then | if [ ! -d /home/user/Desktop ]; then | ||
Ligne 38 : | Ligne 47 : | ||
sudo rm -f /tmp/kdesession /tmp/nologin | sudo rm -f /tmp/kdesession /tmp/nologin | ||
exec startkde | exec startkde | ||
else | else | ||
sudo /usr/bin/sessreg -a -l :0.0 -u /var/run/utmp user | sudo /usr/bin/sessreg -a -l :0.0 -u /var/run/utmp user | ||
if [ -d /home/user/Desktop ]; then | if [ -d /home/user/Desktop ]; then | ||
Ligne 67 : | Ligne 76 : | ||
(sleep 16; exec /usr/local/bin/asusosd) & | (sleep 16; exec /usr/local/bin/asusosd) & | ||
for soft in /home/user/Autostart/* ; do | for soft in /home/user/Autostart/* ; do | ||
if [ -x $soft ]; then | if [ -x $soft -a ! -d $soft ]; then | ||
( exec $soft ) & | |||
fi | fi | ||
done | done | ||
Ligne 74 : | Ligne 83 : | ||
[ -f /usr/bin/dispwatch ] && /usr/bin/dispwatch & | [ -f /usr/bin/dispwatch ] && /usr/bin/dispwatch & | ||
exec icewm | exec icewm | ||
fi | fi | ||
</ | </div> | ||
(voir vers la fin du fichier). | (voir vers la fin du fichier). | ||
Ligne 82 : | Ligne 91 : | ||
<u>Note 2</u> : toujours faire un copie de sauvegarde de ce fichier avant de le modifier. En cas de problème, cela permettra de revenir en arrière facilement, par exemple en utilisant le [[Rescue mode EeePC|mode sans échec]]. | <u>Note 2</u> : toujours faire un copie de sauvegarde de ce fichier avant de le modifier. En cas de problème, cela permettra de revenir en arrière facilement, par exemple en utilisant le [[Rescue mode EeePC|mode sans échec]]. | ||
<u>Note 3</u> : notez les 3 mot-clefs < | <u>Note 3</u> : notez les 3 mot-clefs <b>exec</b> que j'ai ajoutés, par exemple sur la ligne :<div class="code">(sleep 3; exec /usr/bin/keyboardstatus) &</div> Cela permet d'économiser de la mémoire (environ 1Mo en tout). En effet, les commandes entre parenthèses démarrent un sous-shell (subshell). Ici le but est d'attendre quelques secondes avant de lancer un logiciel. Le subshell ne se terminera (et donc ne libérera sa mémoire) que lorsque le logiciel sera fermé (ce qui ici n'arrivera qu'à l'extinction de l'EeePC). Utiliser <b>exec</b> permet au logiciel lancé de remplacer en mémoire le subshell, ce qui libère mécaniquement la mémoire qu'il utilisait. | ||
=Ajout d'un logiciel à démarrer automatiquement= | =Ajout d'un logiciel à démarrer automatiquement= | ||
Ligne 109 : | Ligne 118 : | ||
===En ligne de commande=== | ===En ligne de commande=== | ||
Vous devez d'abord trouver l'exécutable à lancer. En général, les exécutables sont dans /bin ou /usr/bin, mais il y en a aussi dans /opt. Nous allons utiliser la commande <code>which</ | Vous devez d'abord trouver l'exécutable à lancer. En général, les exécutables sont dans /bin ou /usr/bin, mais il y en a aussi dans /opt. Nous allons utiliser la commande <div class="code">which</div> afin de localiser les exécutables : | ||
<div class="code"><pre>/home/user/.tweakeee/initial.backup> which firefox | <div class="code"><pre>/home/user/.tweakeee/initial.backup> which firefox | ||
/usr/bin/firefox | /usr/bin/firefox | ||
Ligne 115 : | Ligne 124 : | ||
/usr/bin/pidgin</pre></div> | /usr/bin/pidgin</pre></div> | ||
Ensuite, rendez vous dans le répertoire Autostart, et utilisez la commande < | Ensuite, rendez vous dans le répertoire Autostart, et utilisez la commande <b>ln</b> afin de créer le lien : | ||
<div class="code"> | <div class="code"> | ||
/home/user/Autostart> ln -s /usr/bin/pidgin . | /home/user> cd Autostart | ||
/home/user/Autostart> ln -s /usr/bin/skype . | /home/user/Autostart> ln -s /usr/bin/pidgin . | ||
/home/user/Autostart> ls -l | /home/user/Autostart> ln -s /usr/bin/skype . | ||
total 0 | /home/user/Autostart> ls -l | ||
lrwxrwxrwx 1 user user 15 2008-06-14 16:10 pidgin -> /usr/bin/pidgin | total 0 | ||
lrwxrwxrwx 1 user user 14 2008-06-14 08:06 skype -> /usr/bin/skype | lrwxrwxrwx 1 user user 15 2008-06-14 16:10 pidgin -> /usr/bin/pidgin | ||
lrwxrwxrwx 1 user user 14 2008-06-14 08:06 skype -> /usr/bin/skype | |||
/div> | |||
C'est tout ! Au prochain démarrage, Pidgin et Skype se lanceront automatiquement. | C'est tout ! Au prochain démarrage, Pidgin et Skype se lanceront automatiquement. | ||
Ligne 133 : | Ligne 143 : | ||
Si vous désirez créer un script plus compliqué, je vous renvoie aux articles [[Shell]], [[dev-perl|Perl]] ou [[dev-python|Python]], et je vous propose de lire les nombreux exemples que vous pouvez trouver sur le disque dur de l'EeePC. | Si vous désirez créer un script plus compliqué, je vous renvoie aux articles [[Shell]], [[dev-perl|Perl]] ou [[dev-python|Python]], et je vous propose de lire les nombreux exemples que vous pouvez trouver sur le disque dur de l'EeePC. | ||
Nous allons créer un fichier texte dans Autostart, et le nommer < | Nous allons créer un fichier texte dans Autostart, et le nommer <b>pidgin.sh</b>. Voici son contenu, je pense qu'il parle de lui même : | ||
<div class="code"><pre>#!/bin/sh | <div class="code"><pre>#!/bin/sh | ||
Ligne 139 : | Ligne 149 : | ||
/usr/bin/pidgin</pre></div> | /usr/bin/pidgin</pre></div> | ||
Ensuite, rendez ce fichier exécutable par la commande < | Ensuite, rendez ce fichier exécutable par la commande <b>chmod +x pidgin.sh</b>, ou dans le gestionnaire de fichiers : clic droit / propriétés / onglet "droits d'accès" puis activez les checkboxes "exécution" ; cliquez sur [OK]. | ||
<br/> | |||
<br/> | |||
'''<b>[[EeePC|@ Retour à la rubrique Eee PC]]</b>''' | |||
= Copyright = | = Copyright = | ||
Copyright © 6/2008, [[Utilisateur:LeaJice|Jean-Christophe Cardot]] | Copyright © 6/2008, [[Utilisateur:LeaJice|Jean-Christophe Cardot]] | ||
{{CC-BY-SA}} | {{CC-BY-SA}} | ||
Dernière version du 28 avril 2012 à 17:11
Note : Si vous souhaitez démarrer un service (ou démon ou encore daemon) lisez plutôt cet article. L'article ci-dessous consiste plutôt à lancer un logiciel graphique automatiquement.
Installation
Cette étape ne doit être faite qu'une seule fois. Elle consiste à ajouter dans le programme exécuté à chaque démarrage (un script Shell) quelques lignes qui lanceront automatiquement tous les programmes présents dans un répertoire donné. Pour ma part j'ai choisi de créer un répertoire Autostart dans mon dossier utilisateur.
Note : cette méthode est similaire et compatible à celle employée par KDE. Si vous utilisez les 2 modes de l'EeePC (avancé et easy), vous trouverez sans doute intéressant de faire un lien symbolique (voir ci-dessous) de ~/Autostart vers ~/.kde/Autostart au lieu de créer un nouveau répertoire (ou de modifier les scripts ci-dessous pour prendre en compte directement le répertoire Autostart de KDE).
Il faut donc éditer le script /usr/bin/startsimple.sh avec vi, kate, ou votre éditeur de texte préféré, et y ajouter les lignes suivantes au bon endroit :
for soft in /home/user/Autostart/* ; do if [ -x $soft -a ! -d $soft ]; then ( exec $soft ) & fi done
Explication : pour chaque fichier trouvé dans /home/user/Autostart, s'il est exécutable (et n'est pas un répertoire), alors le lancer. Simple non ?
Ce qui chez moi donne :
#!/bin/sh
sudo /usr/bin/sessreg -d -l :0.0 -u /var/run/utmp user xhost + si:localuser:root # Allow local user root only to access the diplay
if ! [ -f /home/user/.firstrundone ]; then
sudo /usr/bin/sessreg -a -l :0.0 -u /var/run/utmp user sudo /usr/bin/firstrunwizard if [ $? -eq 0 ]; then touch /home/user/.firstrundone else sudo /bin/kill -USR2 1 fi
elif [ -f /tmp/kdesession -a ! -f /home/user/.easysession ]; then
sudo /usr/bin/sessreg -a -l :0.0 -u /var/run/utmp user if [ ! -d /home/user/Desktop ]; then if [ -d /home/.Desktop ]; then mv /home/user/.Desktop /home/user/Desktop fi fi [ -f /usr/bin/dispwatch ] && /usr/bin/dispwatch & for i in /sys/block/s[dr]?/uevent ; do sudo /bin/sh -c "echo add > $i" done sudo rm -f /tmp/kdesession /tmp/nologin exec startkde
else
sudo /usr/bin/sessreg -a -l :0.0 -u /var/run/utmp user if [ -d /home/user/Desktop ]; then if [ -d /home/user/.Desktop.bak ]; then rm -rf /home/user/.Desktop.bak fi if [ -d /home/user/.Desktop ]; then mv /home/user/.Desktop /home/user/.Desktop.bak fi mv /home/user/Desktop /home/user/.Desktop fi if [ -f /home/user/.easysession ]; then # we are switching from full to easy mode for i in /sys/block/s[dr]?/uevent ; do sudo /bin/sh -c "echo add > $i" done fi /opt/xandros/bin/AsusLauncher & icewmtray & [ -n "$XIM_PROGRAM" ] && $XIM_PROGRAM & powermonitor & minimixer & #eeeweather -g -f SAEZ & networkmonitor ath0 eth0 & wapmonitor & (sleep 3; exec /usr/bin/keyboardstatus) & (sleep 8; exec /opt/xandros/bin/start_netserv) & (sleep 16; exec /usr/local/bin/asusosd) & for soft in /home/user/Autostart/* ; do if [ -x $soft -a ! -d $soft ]; then ( exec $soft ) & fi done sudo rm /tmp/nologin [ -f /usr/bin/dispwatch ] && /usr/bin/dispwatch & exec icewm
fi
(voir vers la fin du fichier).
Note 1 : votre fichier peut différer de l'exemple ci-dessus ; le mien a été pas mal modifié par TweakEEE notamment.
Note 2 : toujours faire un copie de sauvegarde de ce fichier avant de le modifier. En cas de problème, cela permettra de revenir en arrière facilement, par exemple en utilisant le mode sans échec.
Note 3 : notez les 3 mot-clefs exec que j'ai ajoutés, par exemple sur la ligne :
Cela permet d'économiser de la mémoire (environ 1Mo en tout). En effet, les commandes entre parenthèses démarrent un sous-shell (subshell). Ici le but est d'attendre quelques secondes avant de lancer un logiciel. Le subshell ne se terminera (et donc ne libérera sa mémoire) que lorsque le logiciel sera fermé (ce qui ici n'arrivera qu'à l'extinction de l'EeePC). Utiliser exec permet au logiciel lancé de remplacer en mémoire le subshell, ce qui libère mécaniquement la mémoire qu'il utilisait.
Ajout d'un logiciel à démarrer automatiquement
Pour démarrer un logiciel automatiquement lors du démarrage de votre EeePC, il va maintenant suffire de créer un lien depuis le répertoire Autostart vers l'exécutable du logiciel. Vous pouvez également copier un exécutable dans ce répertoire, ou y créer un script (Shell, Perl ou autre) et le rendre exécutable.
Création d'un lien
En mode graphique
Lancez le gestionnaire de fichiers (onglet travailler). Sélectionnez le répertoire Autostart, puis cliquez sur Fichier / Créer un lien symbolique...
Cliquez sur [Parcourir...], puis sélectionnez "Mon EeePC" et "Tous les systèmes de fichiers" (double cliquez sur ce dernier) :
Déplacez-vous dans les répertoires ("/" puis "usr" puis "bin" dans notre exemple) et localisez l'exécutable voulu (truc : cliquez sur un fichier quelconque du répertoire, puis tapez les premières lettres du nom du fichier recherché, afin de le trouver plus vite) :
Après avoir localisé le fichier, cliquez dessus puis sur [OK].
Note : les fichiers exécutables ont en général pour icone un engrenage bleu.
Enfin cliquez sur [OK] et c'est fini !
En ligne de commande
Vous devez d'abord trouver l'exécutable à lancer. En général, les exécutables sont dans /bin ou /usr/bin, mais il y en a aussi dans /opt. Nous allons utiliser la commande
afin de localiser les exécutables :
/home/user/.tweakeee/initial.backup> which firefox /usr/bin/firefox /home/user/.tweakeee/initial.backup> which pidgin /usr/bin/pidgin
Ensuite, rendez vous dans le répertoire Autostart, et utilisez la commande ln afin de créer le lien :
/home/user> cd Autostart /home/user/Autostart> ln -s /usr/bin/pidgin . /home/user/Autostart> ln -s /usr/bin/skype . /home/user/Autostart> ls -l total 0 lrwxrwxrwx 1 user user 15 2008-06-14 16:10 pidgin -> /usr/bin/pidgin lrwxrwxrwx 1 user user 14 2008-06-14 08:06 skype -> /usr/bin/skype
/div> C'est tout ! Au prochain démarrage, Pidgin et Skype se lanceront automatiquement.
Vous pourrez par la suite ajouter dans Autostart autant de liens ou de scripts que vous le voulez.
Création d'un script
Le but de cet article n'étant pas d'expliquer la création de scripts Shell, Perl ou autres, je vais simplement donner un exemple de script que vous pouvez utiliser si vous désirez lancer un logiciel (ici Pidgin) après une certaine attente (afin par exemple d'attendre que la connection internet s'établisse).
Si vous désirez créer un script plus compliqué, je vous renvoie aux articles Shell, Perl ou Python, et je vous propose de lire les nombreux exemples que vous pouvez trouver sur le disque dur de l'EeePC.
Nous allons créer un fichier texte dans Autostart, et le nommer pidgin.sh. Voici son contenu, je pense qu'il parle de lui même :
#!/bin/sh sleep 12 /usr/bin/pidgin
Ensuite, rendez ce fichier exécutable par la commande chmod +x pidgin.sh, ou dans le gestionnaire de fichiers : clic droit / propriétés / onglet "droits d'accès" puis activez les checkboxes "exécution" ; cliquez sur [OK].
Copyright
Copyright © 6/2008, Jean-Christophe Cardot
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique 4.0 : https://creativecommons.org/licenses/by-sa/4.0/ |