Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/04/2017, à 06:21

Zac974

Shell au démarrage de l'interface graphique

Bonjour / bonsoir,

Je suis actuellement en terminale SSI, et j'aurais besoin de votre aide pour mon projet de fin d'année. J'ai créé un script python et j'ai besoin de l'exécuter au démarrage de la session à l'aide d'un script Shell sur Raspberry PI 2 (Model B).

J'ai regardé sur de nombreux sites sans rien trouver, j'ai essayé quelques choses mais ça ne lançait le script qu'au démarrage, avant même que l'interface graphique soit initialisée, ça posait donc de nombreux problèmes étant donné qu'il s'agit d'une fenêtre à ouvrir (que j'ai fait grâce à pygame).
J'aimerais donc savoir comment je peux faire en sorte que mon script se déclenche à l'arrivée sur la session et non pas avant. En sachant que mon script marche parfaitement.

Voilà le script :

#!/bin/bash

cd Desktop/Hexarush
python hexarush.py

Le script python s'appelle hexarush.
Merci d'avance pour votre aide !

Cordialement,

Hors ligne

#2 Le 18/04/2017, à 06:34

koshieIsYourDaddy

Re : Shell au démarrage de l'interface graphique

Salut,

Selon l'environnement de bureau tu peux définir des applications (et des scripts) à lancer au démarrage.

As-tu essayé cette solution? D'ailleurs, tu peux envisager de déplacer ton script dans /usr/local/bin ou de le mettre dans une variable d'environnement ($PATH ?) afin qu'il soit reconnu comme commandes. Ça t'évite d'appeler le script avec tout son chemin.

koshicalement

Dernière modification par koshieIsYourDaddy (Le 18/04/2017, à 06:35)

Hors ligne

#3 Le 18/04/2017, à 07:09

MicP

Re : Shell au démarrage de l'interface graphique

Bonjour

…En sachant que mon script marche parfaitement. …

Il reste aussi à voir ce que le script demande comme environnement et variables d'environnement pour fonctionner…
et bien sûr, tout dépends de ce qu'il y a dans le script.

On oublie souvent qu'un script lancé dans l'émulateur de terminal d'une interface graphique depuis un compte utilisateur
a déjà pas mal de variables d'environnement pré-définies par le fait de s'être authentifié, le PATH, le répertoire courant, la variable DISPLAY, et plus encore…
alors que lancé automatiquement, il ne sera pas exécuté dans le même contexte

Dernière modification par MicP (Le 18/04/2017, à 07:14)

Hors ligne

#4 Le 18/04/2017, à 08:01

Hizoka

Re : Shell au démarrage de l'interface graphique

sous kubuntu, il suffit de le mettre dans ~/.config/autostart-scripts
sinon avec crontab :

DISPLAY=:0
@reboot sleep 10 && tonscript

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#5 Le 18/04/2017, à 14:11

Zac974

Re : Shell au démarrage de l'interface graphique

@koshiels
Le problème c'est que sur Raspberry, je ne peux pas, je n'ai même pas le bouton pour mettre des programmes par défaut, pourtant j'ai cherché partout dans les configurations... Je crois (mais je ne suis pas sûr et je ne pourrai vérifier que vendredi, vu qu'on ne peut pas ramener le matériel chez nous) qu'il tourne sous Gnome. Alors je dis peut-être quelque chose de totalement faux et si c'est le cas, excusez-moi, je ne connais vraiment pas bien les raspberry.

@MicP
Eh bien j'ai donné tout le contenu du script juste au dessus, il n'y a rien d'autre... Et il fonctionne parfaitement par commande, même lorsque je le met dans un répertoire du PATH ou que je l'exécute en tant que service... Ce que j'aimerais, c'est vraiment qu'il s'exécute après l'authentification (donc au moment où est censé apparaître le bureau)

@Hizoka
J'essayerai vendredi, je te dirai si ça marche d'ici là

Dans tous les cas, un grand merci pour vos réponses, j'espère que ça marchera

Hors ligne

#6 Le 18/04/2017, à 14:35

Watael

Re : Shell au démarrage de l'interface graphique

ça devrait pas le faire avec crontab, car cron démarre bien avant l'interface graphique.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 18/04/2017, à 18:36

Hizoka

Re : Shell au démarrage de l'interface graphique

d'où le sleep smile, ça fonctionne chez moi pour lancer des interfaces graphiques.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#8 Le 18/04/2017, à 18:44

Watael

Re : Shell au démarrage de l'interface graphique

bof, bof.
il faut prévoir que d'autres opérations peuvent prendre du temps, alors il faudra s'en souvenir et rallonger ce temps...

la connexion au WM se fait automatiquement, ou l'utilisateur doit-il s'identifier ?

il est préférable de configurer la session utilisateur du WM, le script sera lancer au bon monent.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 18/04/2017, à 20:35

lynn

Re : Shell au démarrage de l'interface graphique

Il y a cette commande

systemctl --user status graphical-session.target

qui renvoie le status ( active/inactive ) de la session graphique.

En intégrant dans le script une vérification qui attend tant que le résultat de cette commande ne renvoie pas "active", ça pourrait fonctionner, non?

Dernière modification par lynn (Le 18/04/2017, à 20:47)


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#10 Le 18/04/2017, à 20:37

MicP

Re : Shell au démarrage de l'interface graphique

…Eh bien j'ai donné tout le contenu du script juste au dessus, il n'y a rien d'autre..…

Bein si : le contenu du script hexarush.py

=======
À mon humble avis, il faudrait plutôt créer un service systemd.
https://wiki.archlinux.org/index.php/Systemd/User

EDIT : Je m'étais mélangé les pinceaux avec un autre fil de discussion => je viens de rectifier mon message

Dernière modification par MicP (Le 18/04/2017, à 20:42)

Hors ligne

#11 Le 18/04/2017, à 20:45

Watael

Re : Shell au démarrage de l'interface graphique

start [the systemd user instance] right after boot, and keep [it] running after the last session closes

ce n'est, il me semble, pas ce que demande Zac974.

Zac974 a écrit :

faire en sorte que mon script se déclenche à l'arrivée sur la session

il n'est pas question qu'il perdure après la déconnexion (ça n'aurait d'ailleurs pas de sens, puisque c'est une application graphique).

tout cela à l'air très négatif, mais j'ai déjà dit que le mieux àmha était de configurer le WM.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#12 Le 18/04/2017, à 22:07

MicP

Re : Shell au démarrage de l'interface graphique

Watael a écrit :

…start [the systemd user instance] right after boot, and keep [it] running after the last session closes …

Effectivement, et j'ai d'ailleurs modifié le lien, (sans doute pendant que tu rédigeais ton message) après avoir lu dans la page l'extrait ci-dessus.
Mais c'était plutôt cet extrait que j'avais trouvé intéressant :

…The systemd user instance is started after the first login of a user and killed after the last session of the user is closed. …

Et dans cette autre page accessible par ce lien : https://wiki.archlinux.fr/Systemd/utilisateur on trouve :

…Après le démarrage de la session d'un utilisateur, systemd démarre automatiquement une instance systemd --user …

=======
Mais il reste quand même à préciser :
Est-ce que l'interface graphique est nécessaire à l'exécution du script hexarush.py
Est-ce que le système utilisé par le Raspberry PI 2 (Model B) utilise un WM,
Est-ce que le système utilisé par le Raspberry PI 2 (Model B) utilise systemd
Est-ce que le script hexarush.py doit être stoppé à la fermeture de la session utilisateur (graphique ou non).

=======

Zac974 a écrit :

…au démarrage de la session…

Dans son premier message, il ne précise pas s'il s'agit d'une session graphique ou texte (d'autant que sur ce genre de machine…)
et c'est pour cela que je lui demandais dans mon premier message de ce fil plus de précision concernant le contenu du script hexarush.py qui devait être lancé

Dernière modification par MicP (Le 18/04/2017, à 22:31)

Hors ligne

#13 Le 18/04/2017, à 22:17

Watael

Re : Shell au démarrage de l'interface graphique

Dans son premier message, il ne précise pas s'il s'agit d'une session graphique ou texte

si, si :

il s'agit d'une fenêtre à ouvrir


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#14 Le 18/04/2017, à 22:30

MicP

Re : Shell au démarrage de l'interface graphique

Zut! j'avais mal lu, d'autant que :

Zac974 a écrit :

… mais ça ne lançait le script qu'au démarrage, avant même que l'interface graphique soit initialisée, ça posait donc de nombreux problèmes …

Désolé, je suis décidément trop mal en point ces jours-ci => je manque de concentration.

Je vais faire beaucoup plus attention.

Dernière modification par MicP (Le 18/04/2017, à 22:32)

Hors ligne

#15 Le 21/04/2017, à 10:32

Zac974

Re : Shell au démarrage de l'interface graphique

@Hizoka
Je vais essayer ta solution, je te dirai si ça marche ou non.

@Watael
La connexion à la session se fait automatiquement, pas besoin de mettre de mot de passe, le Raspberry se lance directement dessus.
Et comme tu dis, oui, il s'agit d'une fenêtre qui s'ouvre en plein écran qu'il faut lancer dès le démarrage de l'interface graphique et qui doit se fermer à la fermeture du Raspberry.

@lynn
Je vais aussi essayer ta solution, elle me semble pas mal du tout.

@MicP
Le script hexarush.py se compose de plusieurs fichiers et fait en tout plus de mille lignes de codes, un peu long donc, pour l'écrire ici.
Et je vais aller me renseigner sur ta solution.

Alors je suis désolé mais je ne sais pas ce qu'est un WM... Par contre, il me semble qu'il utilise systemd.

Et oui, le script doit se fermer à la fin de la session mais c'est déjà géré par le programme python.

Hors ligne

#16 Le 21/04/2017, à 11:09

Zac974

Re : Shell au démarrage de l'interface graphique

Vos solutions n'ont malheureusement pas marché...
Impossible d'utiliser systemd, ou je n'ai pas compris comment faire.

Hors ligne

#17 Le 21/04/2017, à 11:27

MicP

Re : Shell au démarrage de l'interface graphique

Bonjour

WM <=> Window Manager (Gestionnaire de fenêtres) sur lequel s'appuie parfois (ou qui est intégré dans) un Environnement de Bureau

Il existe des solutions applicables ou pas en fonction de l'Environnement de Bureau et ou du gestionnaire de fenêtre (WM) et ou du serveur graphique et/ou du système de gestion sonore, et ou du gestionnaire de connexion réseau et ou du type d'écran et ou du type de clavier (virtuel ou pas)
et bien sûr des ressources nécessaires au fonctionnement du script à exécuter, ce qui fait que dans tout ce que j'ai cité comme ressource, j'en aurai peut-être oublié une indispensable.

Dernière modification par MicP (Le 21/04/2017, à 11:31)

Hors ligne

#18 Le 21/04/2017, à 12:28

Zac974

Re : Shell au démarrage de l'interface graphique

D'accord, mais comment est-ce que je peux vérifier lequel (si j'en ai un) le raspberry utilise ?

Hors ligne

#19 Le 21/04/2017, à 14:40

MicP

Re : Shell au démarrage de l'interface graphique

…comment est-ce que je peux vérifier lequel (si j'en ai un) le raspberry utilise ?

En ce qui concerne l'Environnement de Bureau, tu pourrais le reconnaître en comparant ce que tu vois sur l'écran connecté à ton Raspberry PI 2 (Model B)
avec une des images de la page web accessible en cliquant sur le lien donné dans ce message (ou ceux donnés dans mon message précédent)
ou/et peut-être avec le retour d'une de ces deux lignes de commande :

echo $XDG_CURRENT_DESKTOP
echo $XDG_DESKTOP

=======
Pour vérifier quel système d'initialisation est utilisé sur ton Raspberry PI 2 (Model B),
donne aussi le retour de cette ligne de commande

file /sbin/init

=======
Si tu peux, transmets nous un lien web vers le fichier image ISO
qui a été utilisé pour installer le système (sans doute sur une carte SD) utilisé par ton Raspberry PI 2 (Model B)

Merci.

Dernière modification par MicP (Le 21/04/2017, à 15:01)

Hors ligne

#20 Le 21/04/2017, à 15:00

Zac974

Re : Shell au démarrage de l'interface graphique

Je ne pourrai malheureusement plus essayer quoi que ce soit avant mardi.
Ni vous transmettre l'image du système étant donné que je n'ai pas les références (c'est mon prof qui les a).

Par contre, l'Environnement de Bureau ressemble à Xfce. Enfin, c'est Xfce, il y a exactement les mêmes options et le bureau ressemble à la même chose.

Hors ligne

#21 Le 21/04/2017, à 15:07

MicP

Re : Shell au démarrage de l'interface graphique

Merci pour le retour

(j'utilise le même Environnement de Bureau Xfce sur mes machines PC avec un système debian)

Hors ligne