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.

Joernsn
źródło
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.

Rolf
źródło
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
Vindolin
źródło
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)

ssokolow
źródło