web-dev-qa-db-fra.com

Depuis Steam, comment puis-je désactiver automatiquement le raccourci clavier HUD au lancement d'un jeu et le réactiver à la fermeture de ce jeu?

J'ai regardé cette question mais il n'y a rien d'automatique, je n'essaye pas d'ouvrir une interface graphique et de jouer avec les paramètres chaque fois que je démarre et arrête de jouer à un jeu.

Dans Steam, il est possible de modifier les options de lancement d'un jeu. Par exemple, j'utilise bumblebee pour activer la carte nvidia de mon ordinateur portable en ajoutant primusrun %command% aux options de lancement. Ici, nous devrions pouvoir appeler les scripts de début et de fin (ou simplement enchaîner certaines commandes) pour désactiver les boutons de raccourcis HUD pendant le jeu et les réactiver par la suite. Quelque chose dans le sens de launchscript ; %command% ; endscript peut-être.

Cela signifie que nous avons besoin d'un moyen en ligne de commande pour activer et désactiver le raccourci clavier HUD. Cette réponse montre une méthode CLI. J'ai essayé cela et cela fonctionne depuis le terminal mais pas quand j'essaie de l'appeler via les options de lancement dans Steam. Lorsque vous l'essayez avec bash -c Je rencontre des problèmes avec les délimiteurs mais cela est résolu en utilisant gsettings à la place.

J'ai essayé toutes les solutions suivantes mais sans succès:

dconf write /org/compiz/integrated/show-hud '[""]' ; primusrun %command%

bash -c 'dconf write /org/compiz/integrated/show-hud '[""]'' ; primusrun %command%

bash -c 'dconf write /org/compiz/integrated/show-hud '[""]' ; primusrun %command%'

bash -c "dconf write /org/compiz/integrated/show-hud '[""]' ; primusrun %command%"

J'ai également essayé d'utiliser gsettings plutôt que dconf. par exemple. bash -c 'gsettings set org.compiz.integrated show-hud '[""]'' ; primusrun %command% mais encore une fois cela fonctionne dans le terminal mais pas à partir des options de lancement.

Je suis presque sûr de rencontrer des problèmes de syntaxe, comment puis-je faire en sorte que cela fonctionne correctement?

2
Insperatus

Faites un script nohudrun comme le primusrun est fait:

#!/bin/sh

old_key="$(LD_LIBRARY_PATH=/usr/lib dconf read /org/compiz/integrated/show-hud)"
LD_LIBRARY_PATH=/usr/lib dconf write /org/compiz/integrated/show-hud "['']" 
"$@"
LD_LIBRARY_PATH=/usr/lib dconf write /org/compiz/integrated/show-hud "$old_key"

Et invoquez-le comme ça:

nohudrun primusrun %command%

LD_LIBRARY_PATH =/usr/lib sert à rompre avec l'environnement x32 de Steam, car dconf ne peut pas trouver les bibliothèques x64 (peut-être y a-t-il une meilleure façon). C'est la raison pour laquelle il échoue à partir des "options de lancement", je pense.

Vous pouvez également ajouter un verrouillage pour pouvoir restaurer correctement la liaison de touches lorsque plusieurs jeux sont exécutés via ce script.

P. S. Comment savoir ce qui ne va pas? Imprimez simplement stderr dans un fichier:

dconf write /org/compiz/integrated/show-hud "['']" 2>>/home/velkan/errr
1
Velkan