Estoy tratando de ejecutar un script ubicado usr/local/bin/
cuando conecto un monitor externo a mi computadora portátil. Intenté agregar una nueva udev
regla, pero no funcionó. Creé un nuevo archivo en /etc/udev/rules.d
llamado vga-monitor-connect.rules
. El contenido del archivo fue
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/panel-fix"
Tomé la línea de esta respuesta
Después de buscar en línea también probé la siguiente regla
KERNEL=="card0", SUBSYSTEM=="drm", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/rumesh/.Xauthority", RUN+="/usr/local/bin/panel-fix"
Sin embargo, esto tampoco funcionó.
He ejecutado el script manualmente y puedo confirmar que funciona para que no sea un problema con mi script.
También quiero dejar en claro que no sé mucho, por udev
lo que la regla que he usado puede estar equivocada. Si alguien conoce la regla adecuada para mi problema, deje una respuesta.
Mi tarjeta gráfica es un chipset integrado Intel GM965
Respuestas:
Una forma alternativa de ejecutar un comando si una pantalla está conectada o desconectada
Una solución alternativa sería ejecutar un pequeño script de fondo. Al ejecutar el siguiente script en segundo plano, no pude medir ningún aumento en la carga del procesador.
Es una manera fácil y conveniente de ejecutar un script, o cualquier otro comando, siempre que una segunda pantalla esté conectada o desconectada.
El guion de ejemplo
xrandr
(tenga en cuenta el espacio después de "conectado" para evitar coincidencias falsas con "desconectado"). Cada aparición representa una pantalla conectada.La secuencia de comandos
Cómo utilizar
connect_screen.py
En la sección de cabecera, configure el comando para que se ejecute en connect (configuro "gedit" como ejemplo, tenga en cuenta las comillas). También es posible establecer un comando de desconexión, de la misma manera. De lo contrario deja
disconnect_command = ""
como está.Si utiliza un comando de desconexión, también elimine el comentario de la línea:
y comentar la línea:
Como se indica en el guión
Si todo funciona bien, agréguelo a sus aplicaciones de inicio: Tablero> Aplicaciones de inicio> Agregue el comando:
El
sleep 15
objetivo es hacer que el escritorio se inicie completamente antes de que el script comience a ejecutarse. Solo por asegurar.EDITAR
Cómo ejecutar el script al inicio de una manera "inteligente".
El descanso de
sleep 15
debería funcionar en general, pero dado que el tiempo de inicio difiere según el sistema, puede llevar un poco de experimentación encontrar el tiempo de descanso correcto. Con una pequeña adición, el script se vuelve "inteligente" y espera a que elxrandr
comando sea exitoso antes de iniciar el script real. Si usa la versión a continuación, solo necesita agregar el comando:a sus aplicaciones de inicio. El uso adicional es exactamente el mismo que la versión anterior.
La secuencia de comandos
fuente
$PATH
con extensión de archivo y con el lenguaje anterior es una solución no tan elegante. La pregunta es si desea ejecutarlo para un usuario o para todos los usuarios. En el último caso, se necesita una configuración diferente a la sugerida, pero preferiblemente no la que está sugiriendo :). Essleep 15
posible que esto no sea suficiente, pero una solución más elegante podría ser hacer el descanso "inteligente", dejar que el script intente / excepto que se inicie hasta que el procedimiento de inicio esté "listo" para que se ejecute el script. Sería una adición menor. Házmelo saber.$PATH
no deberían tener extensión de idioma y ser ejecutables, por lo que debe ejecutarse sinpython3
ver lintian.debian.org/tags/script-with-language-extension.htmlconnect_screen
Esto también se puede lograr siguiendo el script bash.
fuente