Linux: Jak uruchomić skrypt, gdy podłączony jest monitor zewnętrzny?


10

Jak mogę wykryć, kiedy monitor zewnętrzny jest podłączony w systemie Linux?

Muszę uruchomić różne skrypty, aby skonfigurować mój obszar roboczy.

Czy istnieje jakiś sprytny sposób na rozpoczęcie skryptu, gdy zmieni się stan monitora?

Używam sterownika ekranu Nvidia.


Hacking sposób polegałby na napisaniu skryptu, który będzie sprawdzał zmiany danych wyjściowych xrandrco kilka sekund, i uruchamia skrypt (y), jeśli zauważy różnicę.
new123456

Idealnie możesz powiedzieć udev, aby uruchomił skrypt. Nie oczekuję, że będzie działać ze sterownikami NVIDIA, dopóki KMS nie będzie obsługiwany, chociaż nie próbowałem. stackoverflow.com/questions/5469828/…
Andy

Odpowiedzi:


3

Istnieje zestaw narzędzi o nazwie read-edid, które mogą analizować rozszerzone dane identyfikacyjne wyświetlacza (EDID). Jeśli Twój zewnętrzny monitor zostanie faktycznie wykryty przez te narzędzia, możesz okresowo sprawdzać wykrycie i używać danych wyjściowych do uruchamiania skryptów itp.

Nie wspomniałeś jednak, czy musisz to zrobić niezależnie od tego, czy X był uruchomiony.


Tak, potrzebuję go tylko w X. Mam też inne narzędzia, które wykryją wyświetlacze (np. Disper), ale miałem nadzieję uniknąć napisania demona :)
Joernsn

1

Szukałem tej samej odpowiedzi: /
Używam dispera ( http://willem.engen.nl/projects/disper ) i gconftool, aby włączyć / wyłączyć mój drugi monitor wraz z drugim panelem gnome.
disper -l wyświetla listę wszystkich podłączonych monitorów, więc możesz sondować to w ostateczności.

# only primary display
disper -s
gconftool-2 --type int --set  /apps/panel/toplevels/panel_1/screen -- -1


# dual display (nvidia twinview)
disper -e
gconftool-2 --type int --set  /apps/panel/toplevels/panel_1/screen 0
killall gnome-panel


0

Biorąc pod uwagę, że od 270.18, sterowniki binarne nVidia nadal nie wydają się implementować nowoczesnego XRandR, być może będziesz musiał skorzystać z sugestii new123456, aby sondować narzędzie takie jak xrandrzmiany wielkości ekranu.

W moim systemie nie udało mi się jeszcze znaleźć sposobu, aby nVidia prawidłowo ogłosiła, xrandrże mam dwa monitory 1280x1024, a nie jeden 2560x1024 ... co, jak można się domyślić, sprawia, że ​​gry pełnoekranowe są wyświetlane na obu monitorach, gdy zabraniam im od zmiany rozdzielczości. (To psuje moje lepkie pulpity)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.