[systemd] script de démarrage (résolu)

Questions et astuces concernant l'installation et la configuration d'archlinux
ouroboros
Hankyu
Messages : 36
Inscription : mar. 21 avr. 2015, 10:50

[systemd] script de démarrage (résolu)

Message par ouroboros »

Bonjour. Je me suis acheté une souris Razer Naga avec 12 boutons sur le coté de la souris .
Les douzes boutons correspondent aux chiffres au dessus du clavier. Je les reconfigure manuellement sans aucun soucis a l'aide de ce script :

Code : Tout sélectionner

#! /bin/bash

#Configuration des raccourcis clavier de la souris Razer naga

remote_id=$(
 xinput list |
 sed -n 's/.*Naga.*id=\([0-9]*\).*keyboard.*/\1/p'
)
[ "$remote_id" ] || exit

mkdir -p /tmp/xkb/symbols
cat >/tmp/xkb/symbols/custom <<\EOF
xkb_symbols "remote" {
 key <AE01> { [0xffb1] }; # 1 numpad
 key <AE02> { [0xffb2] }; # 2
 key <AE03> { [0xffb3] }; # 3
 key <AE04> { [0xffb4] }; # 4
 key <AE05> { [0xffb5] }; # 5
 key <AE06> { [0xffb6] }; # 6
 key <AE07> { [0xffb7] }; # 7
 key <AE08> { [0xffb8] }; # 8
 key <AE09> { [0xffb9] }; # 9
 key <AE10> { [0xe0] }; # à
 key <AE11> { [0x29] }; # )
 key <AE12> { [0x3d] }; # =
};
EOF

setxkbmap -device $remote_id -print | sed 's/\(xkb_symbols.*\)"/\1+custom(remote)"/' | xkbcomp -I/tmp/xkb -i $remote_id -synch - $DISPLAY 2>/dev/nul
J'ai donc ensuite crée un service pour que la souris se configure au boot du PC:

Code : Tout sélectionner

[Unit]
Description=Razer naga configuration

[Service]
Type=oneshot
ExecStart=/home/madmoxxis/bin/mapnaga

[Install]
WantedBy=multi-user.target
mais lancer ainsi le script ne fonctionne pas .

Code : Tout sélectionner

sudo journalctl -b |grep naga
Mot de passe [sudo] de root :
janv. 28 14:15:41 ouroboros systemd[1]: Starting Razer naga configuration...
janv. 28 14:15:41 ouroboros mapnaga[1992]: Unable to connect to X server
janv. 28 14:15:42 ouroboros systemd[1]: mapnaga.service: Main process exited, code=exited, status=1/FAILURE
janv. 28 14:15:42 ouroboros systemd[1]: Failed to start Razer naga configuration.
janv. 28 14:15:42 ouroboros systemd[1]: mapnaga.service: Unit entered failed state.
janv. 28 14:15:42 ouroboros systemd[1]: mapnaga.service: Failed with result 'exit-code'.
Je me demande si ce n'est pas une histoire avec un processus qui devrait etre lancer avant l'execution de mon script mais dans ce cas lequel .
Dernière modification par ouroboros le jeu. 28 janv. 2016, 18:05, modifié 1 fois.
oktoberfest
Maître du Kyudo
Messages : 1855
Inscription : mer. 06 janv. 2010, 13:51
Localisation : Ried - Alsace - France

Re: [systemd] script de démarrage (En cours)

Message par oktoberfest »

Salut,

le problème est tout simple. Ton script est fait pour être exécuté par un utilisateur avec un serveur X démarré, alors que ton service systemd va s'exécuter en root sans aucun serveur X.

Au minimum (sans garantie que ça suffise) il faut que ton serveur X soit démarré préalablement. Si tu passes par un gestionnaire de connexion (lightdm, sddm ou autre), peut-être qu'en ajoutant une dépendance (After=display-manager.service) plus deux trois correctifs (dans ton script tu fais référence à $DISPLAY, mais c'est sans doute non initialisé si c'est lancé via un service) tu arriveras à tes fins.
La majorité des bugs se situe entre la chaise et le clavier...
Arrêtez de vous prendre la tête avec les partitions... passez au LVM
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [systemd] script de démarrage (En cours)

Message par Moviuro »

Il manque une info pour dire à xinput de lire les infos du serveur Xorg.

Je ne sais pas comment faire. Au pif, je dirais d'ajouter

Code : Tout sélectionner

Environment=DISPLAY=:0
.

Sinon, utiliser l'autostart ou le .xinitrc pour faire le job.
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd] script de démarrage (En cours)

Message par benjarobin »

Systemd n'est clairement pas trop fait pour cela, on pourrait y arriver avec systemd lancé en tant qu'user et envoi des variables d'environnement à systemd.
Ceci est fait dans le xinitrc par défaut qui lance : /etc/X11/xinit/xinitrc.d/50-systemd-user.sh

Le plus simple est de le mettre dans le .xinitrc si ce dernier est utilisé, sinon de rajouter un fichier .desktop dans ~/.config/autostart, lançant ton script.
Cette dernière méthode devrait fonctionner avec la plupart des environnements de bureau s'il respecte les conventions.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
ouroboros
Hankyu
Messages : 36
Inscription : mar. 21 avr. 2015, 10:50

Re: [systemd] script de démarrage (En cours)

Message par ouroboros »

Merci pour vos réponses, Oktoberfest et Moviuro j'ai essayé vos solutions mais ça a était sans succès.
Benjarobin j'avais déjà essayé de le mettre dans l'autostart mais le problème est que mon script a besoin des privilèges administrateurs pour être exécuté.
J'ai aussi essayé de mettre a la fin de mon xinitrc (je n'ai pas de .xinitrc est ce grave? dois je le renommer? ) le lancement de mon scritp mais encore une fois sans succès .

Edit: Bon a la fin du script j'avais fait une redirection vers /dev/nul en le transformant en /dev/null ça ne demande plus de privilege et donc effectivement ça sera beaucoup plus simple.
oktoberfest
Maître du Kyudo
Messages : 1855
Inscription : mer. 06 janv. 2010, 13:51
Localisation : Ried - Alsace - France

Re: [systemd] script de démarrage (En cours)

Message par oktoberfest »

ouroboros a écrit :mon script a besoin des privilèges administrateurs pour être exécuté.
Cela signifie donc que tu exécutes ton script en root ? Quelle partie de ton script nécessite d'être root ?
EDIT : ok, c'est donc la faute de frappe qui nécessitait les droits root :humour:
La majorité des bugs se situe entre la chaise et le clavier...
Arrêtez de vous prendre la tête avec les partitions... passez au LVM
ouroboros
Hankyu
Messages : 36
Inscription : mar. 21 avr. 2015, 10:50

Re: [systemd] script de démarrage (En cours)

Message par ouroboros »

Oui :( c'est dingue comme a chaque fois que je poste sur ce forum je me rend compte que mes problemes sont ridicule au final .

Je n'ai toujours pas passé le sujet en résolu car je n'arrive pas a lancer le script au démarrage .
j'ai ajouté une ligne dans .config/openbox/autostart:

Code : Tout sélectionner

#Clavier en francais et activation du pav� num�rique
setxkbmap fr
numlockx on &

#Configuration de la Razer Naga
mapnaga

#Fond d'?cran
feh --bg-scale '/home/maxime/feh_000982_000001_arch.jpg'

#lance la barre des taches en arriere plan et le dock et la gestion graphique du volume
tint2 &
adeskbar &
volwheel &

#Moniteur en arriere plan
conky &

#probleme avec conky
#cairo-compmgr &

#Permet de tile les fenetres
#whaw &

#Ajoute La t�l�

xrandr --output LVDS-0 --left-of VGA-0 --mode 1366x768
Tout le reste du contenu du fichier s’exécute bien , que ce soit ce qui est placé avant ou après l'appel de "mapnaga"

j'ai aussi ajouté un :
"echo "Lancement de la configuration de la Razer Naga">> /home/madmoxxis/bin/log/mapnaga.log"

au tout début du script . Au boot du PC rien n'est affiché dedans.
oktoberfest
Maître du Kyudo
Messages : 1855
Inscription : mer. 06 janv. 2010, 13:51
Localisation : Ried - Alsace - France

Re: [systemd] script de démarrage (En cours)

Message par oktoberfest »

Ca ira sans doute mieux avec le chemin absolu du fichier ($HOME/mapnaga par exemple, si tu l'as mis dans mapnaga).
Et ton script est bien exécutable (chmod +x <chemin>/mapnaga)
La majorité des bugs se situe entre la chaise et le clavier...
Arrêtez de vous prendre la tête avec les partitions... passez au LVM
ouroboros
Hankyu
Messages : 36
Inscription : mar. 21 avr. 2015, 10:50

Re: [systemd] script de démarrage (Solved)

Message par ouroboros »

Je vais essayer avec le chemin absolue mais il me semble que ce ne doit pas etre nécessaire car le dossier qui contient mapnaga fait bien partie du PATH.
Oui le script est bien exécutable . Il me suffit de taper "mapnaga" pour que la souris se configure .

edit : Bon bah c'était finalement la solution de mettre le chemin absolue du fichier cependant je ne comprend pas pourquoi c'était requis pour l'exécution du programme . Merci a tous !

edit 2 : Je pense avoir la réponse a mon édit . Le problème est que j'ajoute le dossier qui contient le script au path dans le .bashrc
Répondre