J'essaie d'exécuter un script situé dans usr/local/bin/
lorsque je connecte un moniteur externe à mon ordinateur portable. J'ai essayé d'ajouter une nouvelle udev
règle mais cela n'a pas fonctionné. J'ai créé un nouveau fichier /etc/udev/rules.d
appelé vga-monitor-connect.rules
. Le contenu du dossier a été
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/panel-fix"
J'ai pris la ligne de cette réponse
Après avoir cherché en ligne, j'ai également essayé la règle suivante
KERNEL=="card0", SUBSYSTEM=="drm", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/rumesh/.Xauthority", RUN+="/usr/local/bin/panel-fix"
Mais cela n'a pas fonctionné non plus.
J'ai exécuté le script manuellement et je peux confirmer qu'il fonctionne donc ce n'est pas un problème avec mon script.
Je tiens également à préciser que je ne sais pas grand-chose, udev
donc la règle que j'ai utilisée peut être erronée. Si quelqu'un connaît la règle appropriée pour mon problème, veuillez laisser une réponse.
Ma carte graphique est un chipset intégré Intel GM965
Réponses:
Une autre façon d'exécuter une commande si un écran est connecté ou déconnecté
Une solution alternative serait d'exécuter un minuscule script d'arrière-plan. En exécutant le script ci-dessous en arrière-plan, je n'ai pu mesurer aucune augmentation de la charge du processeur.
C'est un moyen facile et pratique d'exécuter un script ou toute autre commande, lorsqu'un deuxième écran est connecté ou déconnecté.
L'exemple de script
xrandr
(attention à l'espace après "connecté" pour éviter les fausses correspondances avec "déconnecté"). Chaque occurrence représente un écran connecté.Le script
Comment utiliser
connect_screen.py
Dans la section head, définissez la commande à exécuter sur connect (je mets "gedit" à titre d'exemple, faites attention aux guillemets). Il est également possible de définir une commande de déconnexion également. Sinon, laissez
disconnect_command = ""
tel quel.Si vous utilisez une commande de déconnexion, décommentez également la ligne:
et commentez la ligne:
Comme indiqué dans le script
Si tout fonctionne bien, ajoutez-le à vos applications de démarrage: Dash> Startup Applications> Add the command:
Il
sleep 15
s'agit de faire démarrer le bureau complètement avant que le script ne démarre. Juste pour en être certain.ÉDITER
Comment exécuter le script au démarrage de manière "intelligente".
La pause de
sleep 15
devrait fonctionner en général, mais comme le temps de démarrage diffère selon le système, il peut falloir quelques essais pour trouver le bon temps de pause. Avec un petit ajout, le script devient «intelligent» et attend que laxrandr
commande réussisse avant de démarrer le script réel. Si vous utilisez la version ci-dessous, il vous suffit d'ajouter la commande:à vos applications de démarrage. L'utilisation ultérieure est exactement la même que la version ci-dessus.
Le script
la source
$PATH
avec l' extension de fichier et avec la langue précédente est une solution pas si élégante. La question est de savoir si vous souhaitez l'exécuter pour un utilisateur ou pour tous les utilisateurs. Dans le dernier cas, une autre configuration que celle suggérée est nécessaire, mais de préférence pas celle que vous proposez :). Celasleep 15
peut ne pas être suffisant, mais une solution plus élégante pourrait être de rendre la coupure "intelligente", laissez le script essayer / sauf de démarrer jusqu'à ce que la procédure de démarrage soit "prête" pour l'exécution du script. Ce serait un ajout mineur. Faites le moi savoir.$PATH
ne doivent pas avoir d'extension de langage et être exécutables, donc exécutez-les sanspython3
voir lintian.debian.org/tags/script-with-language-extension.htmlconnect_screen
Ceci peut également être réalisé à partir du script bash suivant.
la source