Bonjour, J’ai créer 3 icônes sur écran tactile LCD35 qui lancent par simple clic les programmes . py . tout ceci fonctionne correctement.
Mon problème se pose pour garder les icônes au même endroit, car si je garde le doigt sur un icône je peux tout à fait le déplacer. Après avoir cherché dans toutes les directions je me tourne vers vous en espérant que quelqu’un à déjà rencontrer ce problème. Merci par avance
hello,
ça dépend du bureau que tu utilises.
une solution plus simple serait de créer tes icônes dans la barre des tâches ( au miilieu en haut de l’écran)
modifier la barre de lancement d application :
Si ton idée est de seulement lancer c’est trois script, tu peux refaire une image en version « Lite », n’inclure que l’interface de base (comme une préparation pour un mode Kiosk) et exécuter un script de démarrage pour lancer un script py, avec trois boutons qui va appeler tes autres scripts. Tu peux alors mieux ajuster à ton écran 3.5" et limiter une usage du bureau complet si il n’est pas requis.
Tout ce configure par ligne de commande ou via raspi-config
, au besoin (SSH).
Je me base du mon installation de mon projet pi Deskboard, je n’ai pas mis a jours depuis un bout alors peut-être qui faudra utiliser une version Legacy.
Testé avec Buster, fonctionnerais avec Bullseye, en 32/64. Version « Lite » seulement.
sudo apt -qq install -y --no-install-recommends xserver-xorg x11-xserver-utils xinit openbox
Install aussi tes pré-requis pour tes scripts en python.
Après il faut éditer le fichier « /home/pi/.profile », ajoute (et édite) à la fin du fichier;
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx -- -nocursor -quiet
Va éditer le fichier suivant « /etc/xdg/openbox/autostart » avec la ligne de lancement de ton script menu;
xset s off
xset s noblank
xset -dpms
setxkbmap -option terminate:ctrl_alt_bksp
DISPLAY=:0 nohup /home/pi/script_de_lancement_du_menu.sh >/dev/null 2>&1 &
Les commandes « xset » sont pour désactiver la mise en veille de l’écran en simple. Après ont ajoute la commande clavier « CTRL+ALT+BACKSPACE » pour fermer l’interface graphique et revenir au prompt de commande.
Le « DISPLAY » force l’affichage sur l’écran principal, vu qu’il est lancé par un script, il peut avoir un affichage secondaire accordé. La mise en forme de la ligne de lancement permet le lancement en arrière plan (silencieux).
Après, procède à l’installation de ton écran 3.5", tu devras le calibrer surement.
Un problème avec le pilote FB Turbo fait que le serveur X plante, il faut corriger le fichier concerné;
sudo sed -i 's|fbturbo|fbdev|g' /usr/share/X11/xorg.conf.d/99-fbturbo.conf
sudo mv /usr/share/X11/xorg.conf.d/99-fbturbo.conf /usr/share/X11/xorg.conf.d/99-fbdev.conf
C’est tout.
Tu n’auras qu’a créer une interface qui va te permettre de lancer les autres scripts Python. Selon le support, tu peux ajouter des graphiques, mettre des boutons plus gros pour faciliter le toucher et ajuster/optimiser le rendu pour ce type d’écran.
J’utilise cette base avec mon piDeskBoard et piNASBox que j’ai fais, ainsi que d’autre projets, Je n’utilise jamais le bureau de Raspbian.
Bonjour et merci pour votre réponse. En effet j’ai essayé cette option qui me parait être la mieux adapté pour mon projet. Je dois précisé que utilisateur final doit avoir accès seulement au 3 programmes. Alors je cache la barre principale et pour mon accès personnel j’utilise VNC. Donc j’ai créer une seconde barre avec mes trois ICÔNES que je peux grossir à volonté pour être visible sur l 'écran tactile. La solution serait peut-être de créer un second utilisateur mais j’avoue que cela me parait assez compliqué. Je galère encore un peu pour glisser mes programmes dans la barre car ils ne sont pas dans les applications. En tout cas merci encore.
Bonjour, Oui j’ai essayé cette option c’est à dire démarrer le Raspi sur une interface avec trois boutons jusque la c’est bon seulement mes programmes sont différents et utilise de grosses ressources à savoir lecture de sonde en 200hz via le Bluetooth, activation de buzzer en temps réel, enregistrement des datas. chaque programme ouvre une interface TK différente avec des commandes boutons et graphe Matplotlib si bien que cela nécessite de quitter complétement le programme avec retour à l’accueil pour lancer un autre programme. Si je démarre sur une interface elle doit rester en fond et je ne peux pas quitter totalemrnt mes programmes. Maintenant peut-être que j’ai pas bien compris ton explication.
En tout cas c’est vraiment sympa de prendre du temps pour m 'apporter ces possibilités.
Tu peux créer ton propre « Shell » si tu le désire, sache que le bureau (qui est fond noir) reste actif, avec une touche, il serais possible de basculer entre les application (comme ALT+TAB, qu’ont peut associer à un bouton ou une icone). Si les applications sont gourmandes, cette solution permettrais justement de donner plus de ressources aux application, vu que le « Bureau » ce charge au minimum.
Si tu as la capacité de programmation, et que c’est possible sans trop d’effort, de mettre les trois script en un et de naviguer par onglet dans une application principal.
Pour ta prise de contrôle, sauf si l’interface GUI est vraiment essentiel, je te conseil fortement de passer en ligne de commande, faut dire que mes solutions ce base la dessus car mes RPI (0,1,2,3) me donne de meilleur résultat sans un GUI. Mes projet ce font de base par ligne de commande, pour un accès rapide et direct aux codes et configurations. Si j’ai un interface graphique, c’est pour l’usage « client » uniquement et est souvent sans possibilité de config via ce moyen.
Le SSH est facile a être pris en main, sans installation, il est possible de ce connecter en SSH depuis Chrome de n’importe quel poste. Tandis que VNC doit avoir un programme client installé pour le faire.
Reste que le serveur X as des capacités de configuration, consulte la documentation pour en savoir plus, et que j’expose ici une idée pouvant servir de base pour un projet sans nécessairement si limiter. Mais laisser la barre des tâches visible, c’est garder un accès pour l’utilisateur de tenter de « pirater » le terminal. Tandis que le serveur X, sans être plus sécuritaire techniquement, empêche ce genre de tentative vu l’absence de barre des tâches (et la commande ALT+BACKSPACE n’est pas commun, et requière un clavier).
Si un clavier virtuel est installé sur le poste, théoriquement (car je n’ai jamais fait) il serait possible de le lancer par le client et ce, avec quelques manipulation depuis la barre des tâches, même dénudé de toutes options. Tandis que le retour au prompt (ALT+BACKSPACE) avec le serveur X n’offre pas cette capacité. Ce genre de manipulation ce fait sur des terminaux de commande en restaurant comme McDonald, et des vidéos montre ce genre d’« exploit ». Ok, eux il sont sous Windows, mais la base est la. « On the side », j’ai un projet d’arcade Windows XP (vu l’usage de HL2 Survivor 2) et je remplace la barre des tâches par justement le jeu, pour éviter ce genre de hack.
Sous Linux, il existe plusieurs « Bureau » différents, alors peut être que tu peux magasiner un peu les modèles et trouver un aussi qui peut remplacer celui par défaut. Ou en créer un depuis Python (et rendre exécutable) pour faire ton propre bureau, avec tes propres besoin.
La création d’un utilisateur différente st relativement facile. Même que je te conseil fortement d’isoler les accès, et ne pas donner l’accès root au « client ». Si des commandes le requière pour leur usage, de limiter alors leur action avec le « sudoer » et des accès fichiers bien définis.
Le démarrage du serveur X est justement fait par l’utilisateur, il pourrais être possible d’avoir 2 « Bureau » sur le système.
J’ai dont demandé à ChatGPT de me donner le guide pour le faire, c’est possible selon lui (non testé). J’ai demandé à ChatGPT ceci;
- Depuis la version Desktop ou Full de Raspbian Buster, Bulleyes et Bookworm
- Avec l’utilisateur root « pi » et l’utilisateur « client » en sudoer
- Isolation de « pi » avec le GUI original et le « client » avec le Serveur X
- Installation des paquets requis depuis une installation « clean » de X11 avec gestion des fenêtres
- Accès BT, Wifi, GPIO a l’utilisateur « client »
ChatGPT répond :
1. Créer l’utilisateur client
:
sudo adduser client
2. Ajouter l’utilisateur client
au groupe sudo
:
sudo usermod -aG sudo client
3. Installer les paquets nécessaires :
sudo apt update
sudo apt install xorg openbox python3 python3-pip bluetooth bluez-utils lightdm
4. Configurer l’auto-login pour pi
sur le bureau Raspbian :
Modifier le fichier /etc/lightdm/lightdm.conf
:
sudo nano /etc/lightdm/lightdm.conf
Dans la section [Seat:*]
, assurez-vous que les lignes suivantes sont présentes pour l’utilisateur pi
:
[Seat:*]
autologin-user=pi
autologin-user-timeout=0
user-session=RaspberryPi
5. Créer un fichier de configuration pour lightdm
pour désactiver l’auto-login pour client
et utiliser startx
:
Créer ou modifier le fichier /etc/lightdm/lightdm.conf.d/10-xserver-autologin-client.conf
:
sudo mkdir -p /etc/lightdm/lightdm.conf.d
sudo nano /etc/lightdm/lightdm.conf.d/10-xserver-autologin-client.conf
Ajouter les lignes suivantes pour s’assurer que client
utilise startx
et non l’environnement de bureau complet :
[Seat:*]
autologin-user=pi
autologin-user-timeout=0
session-wrapper=/etc/X11/Xsession
6. Créer le fichier .xinitrc
pour l’utilisateur client
:
Cela assure que lorsque client
lance startx
, il utilise Openbox :
sudo -u client bash -c 'echo "exec openbox-session" > /home/client/.xinitrc'
7. Configurer le démarrage automatique de startx
pour client
:
Ajouter une condition à .bash_profile
de client
pour lancer startx
automatiquement lorsqu’il se connecte via la console :
sudo -u client bash -c 'echo "if [ $(tty) = "/dev/tty1" ]; then startx; fi" >> /home/client/.bash_profile'
8. Donner les permissions pour le Bluetooth, Wi-Fi, et GPIO à client
:
sudo usermod -aG bluetooth,gpio,netdev client
9. Redémarrer le système :
sudo reboot
Avec ces étapes, l’utilisateur pi
aura toujours accès au bureau complet de Raspbian par défaut (avec auto-login si configuré), tandis que l’utilisateur client
utilisera le serveur X via startx
avec une session Openbox personnalisée, séparant ainsi les environnements de bureau pour chaque utilisateur.
Désolé des pavés que je laisse, j’aime bien m’exprimer et développer mes idées.