Próbuję uruchomić skrypt znajdujący się usr/local/bin/
po podłączeniu monitora zewnętrznego do laptopa. Próbowałem dodać nową udev
regułę, ale to nie zadziałało. Utworzyłem nowy plik o /etc/udev/rules.d
nazwie vga-monitor-connect.rules
. Zawartość pliku to
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/panel-fix"
Wyjąłem linię z tej odpowiedzi
Po przeszukaniu Internetu wypróbowałem również następującą zasadę
KERNEL=="card0", SUBSYSTEM=="drm", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/rumesh/.Xauthority", RUN+="/usr/local/bin/panel-fix"
Jednak to też nie działało.
Uruchomiłem skrypt ręcznie i mogę potwierdzić, że działa, więc nie ma problemu z moim skryptem.
Chcę również wyjaśnić, że niewiele wiem, udev
więc zastosowana przeze mnie zasada może być błędna. Jeśli ktoś zna właściwą zasadę dla mojego problemu, proszę zostawić odpowiedź.
Moja karta graficzna to zintegrowany mikroukład Intel GM965
Odpowiedzi:
Alternatywny sposób uruchomienia polecenia, jeśli ekran jest podłączony lub odłączony
Alternatywnym rozwiązaniem byłoby uruchomienie małego skryptu w tle. Uruchamiając poniższy skrypt w tle, nie mogłem zmierzyć żadnego wzrostu obciążenia procesora.
Jest to łatwy i wygodny sposób na uruchomienie skryptu lub dowolnego innego polecenia, ilekroć drugi ekran jest podłączony lub odłączony.
Przykładowy skrypt
xrandr
(pamiętaj o spacji po „podłączonym”, aby zapobiec fałszywym dopasowaniom z „odłączony”). Każde wystąpienie reprezentuje podłączony ekran.Scenariusz
Jak używać
connect_screen.py
W sekcji nagłówka ustaw polecenie, aby było uruchamiane przy połączeniu (ustawiłem „gedit” jako przykład, pamiętaj o cudzysłowach). Możliwe jest również ustawienie polecenia rozłączenia, podobnie. W przeciwnym razie odejdź
disconnect_command = ""
.Jeśli użyjesz polecenia rozłączenia, odkomentuj również wiersz:
i skomentuj linię:
Jak wskazano w skrypcie
Jeśli wszystko działa poprawnie, dodaj go do aplikacji startowych: Dash> Aplikacje startowe> Dodaj polecenie:
Ma
sleep 15
to na celu całkowite uruchomienie pulpitu przed uruchomieniem skryptu. Dla pewności.EDYTOWAĆ
Jak uruchomić skrypt podczas uruchamiania w „inteligentny” sposób.
Przerwa
sleep 15
powinna działać ogólnie, ale ponieważ czas uruchamiania różni się w zależności od systemu, znalezienie odpowiedniego czasu przerwy może wymagać eksperymentów. Z niewielkim dodatkiem skrypt staje się „inteligentny” i czeka naxrandr
pomyślne wykonanie polecenia, zanim rozpocznie właściwy skrypt. Jeśli używasz poniższej wersji, wystarczy dodać polecenie:do aplikacji startowych. Dalsze użycie jest dokładnie takie samo jak w powyższej wersji.
Scenariusz
źródło
$PATH
z rozszerzeniem pliku oraz z poprzednim językiem jest niezbyt eleganckim rozwiązaniem. Pytanie brzmi, czy chcesz uruchomić go dla jednego użytkownika lub dla wszystkich użytkowników. W ostatnim przypadku potrzebna jest inna konfiguracja niż sugerowana, ale najlepiej nie ta, którą sugerujesz :).sleep 15
Może nie być wystarczające, ale bardziej eleganckim rozwiązaniem byłoby, aby przerwa „smart”, niech spróbować skryptu / z wyjątkiem rozruchu, dopóki procedura rozruchu jest „gotowy” za scenariusz do uruchomienia. Mógłby być niewielkim dodatkiem. Daj mi znać.$PATH
nie powinny mieć rozszerzenia językowego i powinny być wykonywalne, więc uruchom je bezpython3
zobaczenia lintian.debian.org/tags/script-with-language-extension.htmlconnect_screen
Można to osiągnąć również po wykonaniu skryptu bash.
źródło