Ich versuche, ein Skript auszuführen, in usr/local/bin/
dem ich einen externen Monitor an meinen Laptop anschließe. Ich habe versucht, eine neue udev
Regel hinzuzufügen, aber das hat nicht funktioniert. Ich habe eine neue Datei in /etc/udev/rules.d
aufgerufen vga-monitor-connect.rules
. Der Inhalt der Datei war
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/panel-fix"
Ich habe die Zeile aus dieser Antwort genommen
Nach der Online-Suche habe ich auch die folgende Regel ausprobiert
KERNEL=="card0", SUBSYSTEM=="drm", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/rumesh/.Xauthority", RUN+="/usr/local/bin/panel-fix"
Das hat aber auch nicht geklappt.
Ich habe das Skript manuell ausgeführt und kann bestätigen, dass es funktioniert, sodass es mit meinem Skript kein Problem darstellt.
Ich möchte auch klarstellen, dass ich nicht viel darüber weiß, udev
sodass die Regel, die ich verwendet habe, möglicherweise falsch ist. Wenn jemand die richtige Regel für mein Problem kennt, hinterlassen Sie bitte eine Antwort.
Meine Grafikkarte ist ein Intel GM965 integrierter Chipsatz
Antworten:
Eine alternative Möglichkeit, einen Befehl auszuführen, wenn ein Bildschirm verbunden oder getrennt ist
Eine alternative Lösung wäre, ein winziges Hintergrundskript auszuführen. Wenn ich das folgende Skript im Hintergrund laufen lasse, konnte ich keinen Anstieg der Prozessorauslastung messen.
Es ist eine einfache und bequeme Möglichkeit, ein Skript oder einen anderen Befehl auszuführen, wenn ein zweiter Bildschirm verbunden oder getrennt wird.
Das Beispielskript
xrandr
(beachtet das Leerzeichen nach "connected", um falsche Übereinstimmungen mit "disconnected" zu vermeiden). Jedes Vorkommen repräsentiert einen verbundenen Bildschirm.Das Drehbuch
Wie benutzt man
connect_screen.py
Stellen Sie im head-Bereich den Befehl so ein, dass er bei connect ausgeführt wird (ich setze als Beispiel "gedit", beachte die Anführungszeichen). Ebenso ist es möglich, einen Befehl beim Trennen zu setzen. Sonst lass
disconnect_command = ""
wie es ist.Wenn Sie einen Disconnect-Befehl verwenden, kommentieren Sie auch die Zeile aus:
und die Zeile auskommentieren:
Wie im Skript angegeben
Wenn alles in Ordnung ist, fügen Sie es Ihren Startanwendungen hinzu: Dash> Startanwendungen> Fügen Sie den Befehl hinzu:
Das
sleep 15
ist auf den Desktop machen startet vollständig , bevor das Skript zu laufen beginnt. Nur um sicher zugehen.BEARBEITEN
So führen Sie das Skript beim Start "intelligent" aus.
Die Unterbrechung von
sleep 15
sollte im Allgemeinen funktionieren, aber da die Startzeit je nach System unterschiedlich ist, kann es einige Experimente erfordern, um die richtige Unterbrechungszeit zu finden. Mit einem kleinen Zusatz wird das Skript "intelligent" und wartet, bis derxrandr
Befehl erfolgreich ist, bevor das eigentliche Skript gestartet wird. Wenn Sie die folgende Version verwenden, müssen Sie nur den Befehl hinzufügen:zu Ihren Startup-Anwendungen. Die weitere Verwendung entspricht genau der obigen Version.
Das Drehbuch
quelle
$PATH
mit Dateierweiterung und mit Sprache vorhergehenden ist eine nicht-so-elegante Lösung. Die Frage ist, ob Sie es für einen Benutzer oder für alle Benutzer ausführen möchten. Im letzten Fall wird ein anderes Setup als das vorgeschlagene benötigt, aber vorzugsweise nicht das, das Sie vorschlagen :). Dassleep 15
könnte nicht ausreichen, aber eine elegantere Lösung könnte sein, die Unterbrechung "schlau" zu machen, das Skript versuchen zu lassen / es sei denn, es wird gestartet, bis die Startprozedur "bereit" ist, damit das Skript ausgeführt werden kann. Wäre eine kleine Ergänzung. Gib mir Bescheid.$PATH
nicht Spracherweiterung haben sollte und ausführbar sein, also ohne laufenpython3
siehe lintian.debian.org/tags/script-with-language-extension.htmlconnect_screen
Dies kann auch mit dem folgenden Bash-Skript erreicht werden.
quelle