web-dev-qa-db-fra.com

Pourquoi ma commande xprop échoue-t-elle à la connexion, si je l'exécute à partir de ~ / .profile?

J'utilise Lubuntu 16.04. Il utilise openbox comme gestionnaire de fenêtres. Je voulais configurer les bureaux virtuels pour qu'ils soient dans une disposition en grille plutôt qu'en ligne, ce que je peux faire en exécutant cette commande:

xprop -root -f _NET_DESKTOP_LAYOUT 32cccc -set _NET_DESKTOP_LAYOUT 0,3,2,0

Cela fonctionne bien lorsqu'il est exécuté manuellement. J'ai donc mis cette commande dans mon ~/.profile, en espérant qu'il sera exécuté à chaque connexion.

Mais ce n'est pas. :( Lubuntu démarre, je me connecte et le pager est toujours configuré en ligne. Je dois exécuter manuellement cette commande pour récupérer la disposition du bureau.

.profile est en cours d'exécution lorsque je me connecte. Je peux le dire car les ajustements de CHEMINS qui y sont effectués ont un effet.

  1. Comment cela fonctionne-t-il lorsqu'il est exécuté dans un terminal mais pas à partir de .profile? (J'ai même fait source ~/.profile plutôt que de taper/copier la commande pour s'assurer qu'elle est correcte dans le fichier)
  2. Où est le fichier approprié pour placer une telle commande pour qu'elle soit correctement exécutée?

Je cherchais toutes les commandes 'xprop' suivantes qui pourraient le remplacer, j'ai couru

grep -r xprop  .

et a trouvé une référence à un échec xprop dans le fichier run.log. Le journal semble être généré dans chaque connexion:

pod@lubuntu-vm:~$ grep -C3 xprop  ~/.cache/lxsession/Lubuntu/run.log 
** Message: utils.vala:79: Config system location : /etc/xdg/lxsession/Lubuntu
** Message: utils.vala:85: System system path location : /etc/xdg/lxsession/Lubuntu/conffiles.conf
** Message: utils.vala:89: Final file used : /etc/xdg/lxsession/Lubuntu/conffiles.conf
xprop:  no such property "_NET_NUMBER_OF_DESKTOPS"
xprop:  no such property "_NET_DESKTOP_NAMES"
** Message: options.vala:164: Activate xsettings_manager build-in
** Message: utils.vala:68: User config used : /home/pod/.config/lxsession/Lubuntu/desktop.conf
** Message: utils.vala:89: Final file used : /home/pod/.config/lxsession/Lubuntu/desktop.conf

Mais c'est la seule référence, et ce n'est pas la même propriété que j'essaie d'ajuster.

1
Pod

Le problème

Comme je l'ai déjà mentionné dans les commentaires, le problème est timing. (commandes vers) La configuration des bureaux est généralement quelque chose qui se cassera si le bureau n'est pas prêt pour cela, et votre commande manque simplement la cible. Cela se produit souvent lors de l'exécution de commandes sur la configuration de moniteurs, claviers et souris par exemple.

Résoudre

Pour résoudre le problème, vous devez ajouter une petite pause avant l'exécution de la commande. Je n'exécute pas Lubuntu , mais selon cet article , vous devriez pouvoir ajouter une commande au démarrage (connexion en fait) ici: Menu Démarrer → Préférences → Applications par défaut pour LXSession → Démarrage automatique. La commande pour ajouter une petite pause est alors:

/bin/bash -c "sleep 5 && xprop -root -f _NET_DESKTOP_LAYOUT 32cccc -set _NET_DESKTOP_LAYOUT 0,3,2,0"

Alternativement, (testé par vous :)), vous pouvez l'ajouter à ~/.profile, et ajoutez un & pour vous assurer qu'il fonctionnera en arrière-plan et ne bloquera pas le processus de connexion.

3
Jacob Vlijm