Créer un service systemd

Mon service est-il bien écrit?

Le problème exposé dans ce sujet a été résolu.

Bonjour,

J’essaye de créer mon propre service systemd sous Fedora 25 mais je n’arrive pas à le faire démarrer. Pouvez-vous m’indiquer ce qui ne va pas?

Le service a pour but d’autoriser les connexions vers xhost depuis ma session pour pouvoir lancer gparted ou encore gedit qui à cause d’un bug ne peuvent pas se lancer si on ne le fait pas et ce de le faire à chaque démarrage.

Le service : enable.xhost.service

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[Unit]
Description=Enable xhost

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/startup/enable-xhost.sh

[Install]
WantedBy=graphical.target

Le script /startup/enable-xhost.sh :

1
2
#!/bin/bash
xhost +local:user

Merci d’avance

+0 -0

Voilà ce que me dit journalctl :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
● enable-xhost.service - Enable xhost
   Loaded: loaded (/etc/systemd/system/enable-xhost.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since dim. 2017-03-12 11:56:56 CET; 5min ago
  Process: 995 ExecStart=/startup/enable-xhost.sh (code=exited, status=203/EXEC)
 Main PID: 995 (code=exited, status=203/EXEC)

mars 12 11:56:56 asus-n750jv-fedora systemd[1]: Starting Enable xhost...
mars 12 11:56:56 asus-n750jv-fedora systemd[1]: enable-xhost.service: Main process exited, code=exited, status=203/EXEC
mars 12 11:56:56 asus-n750jv-fedora systemd[1]: Failed to start Enable xhost.
mars 12 11:56:56 asus-n750jv-fedora systemd[1]: enable-xhost.service: Unit entered failed state.
mars 12 11:56:56 asus-n750jv-fedora systemd[1]: enable-xhost.service: Failed with result 'exit-code'.
+0 -0

Je l’ai mise directement ^^ (bin/bash -c "xhost +local:user" c’est bien ça?)

Typhlos

ExecStart=/bin/xhost +local:user , avec le slash devant bin :)

Du coup j’ai testé de mon côté, j’ai un "fail to open display" puisque évidemment il ne connait pas la session X (ce qui sera encore plus le cas au démarrage du système). Tu es sûr d’avoir besoin de lancer ça comme un service systemd ?

Oui je sais, d’où le graphical.target ^^

J’en ai besoin car il y a un bug dans Fedora 25 qui fait que des applications se basant sur gtk (et encore pas forcément toutes j’ai l’impression mais c’est le cas pour gparted ou encore grub-customizer) ne se lancent pas et renvoie une erreur Gtk-WARNING **: cannot open display: :0 et qui se règle à l’aide de cette commande mais qui doit être lancée à chaque redémarrage. D’où ma volonté de le faire via systemd.

Edit : En remplaçant la ligne ExecStart par ce que tu as indiqué ça marche, merci. Cependant j’ai la même erreur que toi.

+0 -0

C’est normal que le service n’arrive pas à ouvrir le display, puisqu’il ne sera jamais démarré dans un contexte où la session X est connue. Le target graphical n’est pas ce que tu recherches ici (typiquement il est atteint lorsque le DM est prêt, pas lorsque la session X de l’utilisateur est démarrée).

Peut-être que tu peux t’en sortir en rajoutant simplement Environment=DISPLAY=:0 dans la section Service de ton service, mais ce n’est pas la vraie bonne manière de procéder. Si tu veux le faire proprement, il faudrait lancer xhost lorsque ta session X est démarrée. On préfère utiliser le DM pour ça plutôt que systemd. Voir ici pour les détails de comment y arriver.

Je sais mais cependant tous les programmes n’ont pas encore été portés pour Wayland. D’où la présence de XWayland qui permet de faire la transition entre X.org et Wayland. Cependant, j’ai besoin de lancer cette commande car sinon des programmes comme gparted ou grub-customizer ne se lancent pas et pour l’instant, c’est le seul fix qui ait été trouvé j’ai l’impression.

Je sais mais cependant tous les programmes n’ont pas encore été portés pour Wayland. D’où la présence de XWayland qui permet de faire la transition entre X.org et Wayland. Cependant, j’ai besoin de lancer cette commande car sinon des programmes comme gparted ou grub-customizer ne se lancent pas et pour l’instant, c’est le seul fix qui ait été trouvé j’ai l’impression.

J’arrive à les lancer naturellement sous GNOME Wayland via leur icône dans le menu, tu es sûr que cela ne fonctionne pas ainsi ? Il faudrait voir pour rapporter le bogue dans ce cas.

+1 -0

J’en suis certain, sans passer la commande xhost +local:user ou même plus généralement xhost +, je ne peux pas les lancer et lorsque je les lance via un terminal, j’obtiens l’erreur : (gpartedbin:16638): Gtk-WARNING **: cannot open display: :0 (obtenue ici avec gparted mais est valable aussi avec grub-customizer)

De mémoire, il avait déjà été remonté, mais je vais le rapporter.

Edit : ce n’est pas un bug, mais c’est voulu. Et la solution pour contourner ceci est en réalité de passer la commande +si:localuser:root.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte