Question

Hé les gars, J'ai écrit un programme pour agir en tant que contrôleur de rétro-éclairage du clavier pour mon MacBook Pro qui fonctionne en arc, comme il est en mode natif sous Mac OS X. Le programme fonctionne lui-même grande, mais le script rc.d je fournir le package de programme Arche, doesn « t semblent ouvrir correctement le programme ... ou je le pense.

La source à l'ensemble Arche se trouve (rc.d script et le fichier PKGBUILD). J'ai ajouté « mbpkbdbacklightctl » à la ligne avec daemons dans mon /etc/rc.conf.

Qu'est-ce qui se passe est que lors du démarrage, je vois que le script rc.d démarre le programme est démarré sans erreurs, et le rétro-éclairage du clavier est allumé sur ce qui signifie que le programme est également exécuté correctement, mais quand GDM commence à se connecter à gnome, le programme semble avoir déjà pris fin. Je nai pas été en mesure de trouver des erreurs enregistrées, mais le programme éteindre le rétro-éclairage si aucun événement de clavier ou souris sont enregistrés dans plus de 20 secondes et le rallumer quand on l'a enregistré, et cela ne se produit pas au GDM ni dans gnome. Aussi, quand je tends gnome et fais pidof -o %PPID /usr/bin/mbpkbdbacklightctl, il ne retourne rien qui indique que le programme a été mis fin. Lorsque gnome est démarré, je dois redémarrer le rc.d pour faire les choses fonctionnent correctement.

Je ne peux pas semble avoir une emprise sur ce qui se passe au programme car il est mis fin. La source du programme se trouve , cependant, je crois que l'erreur est le script rc.d et qu'il pourrait ne pas démarrer le programme correctement pour qu'il « survivre » à travers le démarrage GDM.

Toutes les idées à ce qui peut se passer?

Cordialement, Chris Buchholz

Était-ce utile?

La solution

Si vous lisez le code source mbpkbdbacklightctl.cpp vous voulez voir ces lignes:

95  std::string the_display = ":0.0";
96  Display *x11_display = XOpenDisplay(the_display.c_str());
97  if(x11_display != NULL) {

Il échouera s'il n'y a pas de serveur actif X, cela signifie que vous devez commencer ce script après session X démarre. Donc, vous devez mettre votre script sous /etc/X11/xinit/xinitrc.d

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top