Wyłączanie rekonfiguracji monitora podczas zamykania pokrywy

8

Często muszę przenosić laptopa z jednego miejsca pracy do drugiego. Gdy to robię, występują dwa zdarzenia, na które Ubuntu reaguje, zmieniając konfigurację monitora:

  • Odłączanie / podłączanie kabla VGA
  • Zamykanie / otwieranie pokrywy laptopa

Podczas odłączania kabla VGA daje mi to, czego potrzebuję (pojedynczy ekran, najwyższa natywna rozdzielczość na ekranie zewnętrznym, jeśli jest podłączony; w przeciwnym razie najwyższa rozdzielczość na laptopie), odpowiedź zamknięcia / otwarcia pokrywy laptopa nie jest tak dobra.

Za każdym razem, gdy zamykam lub otwieram pokrywę, Ubuntu ponownie konfiguruje konfigurację monitora. Kiedy zamykam teraz pokrywę ... ekran na kilka sekund robi się czarny i przechodzi w klonowanie, a ekran laptopa jest wyłączony. Ponowne otwarcie powoduje ... krótko czarny ekran, a następnie monitor zewnętrzny jest używany jako rozszerzenie pulpitu.

Aktualizacja: Rzeczy nieco się zmieniły, zachowanie jest teraz bardziej przewidywalne. Zamknięcie pokrywy przełącza się na pojedynczy ekran, otwierając na podwójny ekran (nie klonuje). Moje pytanie jest nadal dokładne: patrz poniżej.

Ubuntu myśli za dużo. Moje pierwsze i najważniejsze pytanie: Czy jest jakiś sposób, aby Ubuntu ignorował zdarzenia zamykające lid?

Idealnie (lub gdy nie ma możliwości rozwiązania powyższego pytania) chciałbym zmienić sposób , w jaki radzi sobie z rekonfiguracją ekranu. Dlaczego Ubuntu przełącza konfigurację ekranu między wyświetlaczem zewnętrznym, klonowaniem i wyświetlaniem pojedynczym? Czy nie mogę go tak skonfigurować, aby zawsze korzystał z zewnętrznego monitora, gdy jest obecny, w trybie pojedynczego ekranu?

Zauważ, że podobne pytania zadawano już wcześniej (przede wszystkim to ), ale zostały one prawdopodobnie zamknięte nieprawidłowo.

Wszelkie pomysły są bardzo mile widziane, nie mam nic przeciwko zabawie, aby sprawdzić, czy coś działa.

Tomas
źródło
Dla tych, którzy są nadal zainteresowani, pojawiają się pytania od innych osób o podobnych problemach: askubuntu.com/questions/161649/...
Tomas
Zauważyłem, że to pytanie wciąż zyskuje kilka wyświetleń tygodniowo. Przeszedłem na Arch Linux jakiś czas temu i zauważyłem, że zdarzenia zamknięcia pokrywy są domyślnie całkowicie ignorowane, nawet nie widać migotania ekranu. Może się zdarzyć, że nowsze jądro Linux naprawi problemy opisane w tym pytaniu (oba środowiska graficzne, których używam, całkowicie ignorują pokrywę, jeśli im to każę). Jeśli tak, jest bardzo prawdopodobne, że nowsze wersje Ubuntu zawierają / będą zawierać tę poprawkę.
Tomas

Odpowiedzi:

7

Czy jest jakiś sposób, aby Ubuntu ignorował zdarzenia zamykania pokrywy?

Zdarzenia LID są wyzwalane przez lidbtnplik w /etc/acpi/events/, który zawiera dwie aktywne linie:

Zdarzenie = pokrywa przycisku [/]
action = / etc / acpi / lid.sh - skomentuj to znakiem # na początku

Możesz zignorować zdarzenia otwierania / zamykania pokrywy, komentując drugą linię za pomocą a, #a następnie uruchamiając ponownie.

Chciałbym zmienić sposób, w jaki zajmuje się rekonfiguracją ekranu.

Możesz spojrzeć i spróbować zmodyfikować plik /etc/acpi/lid.shoraz funkcje / polecenia, do których się odwołuje.

ALE (BIG CAVEAT): Jeśli BIOS laptopa używa pokrywy zamknij / otwórz, aby włączyć / wyłączyć wewnętrzne / zewnętrzne porty wyjścia wideo, to jest to poza możliwościami obsługi zdarzeń ACPI systemu operacyjnego.

ish
źródło
Wygląda interesująco, ale komentowanie drugiej linii nie rozwiązuje mojego problemu. Nurkowanie w lid.shpliku sugeruje obsługuje wyłączania ekranu (polecenia podoba xscreensaver-command -unthrottle, xscreensaver-command -deactivate, /usr/share/acpi-support/screenblanki xset dpms force on). Nic nie wspomniano o przełączaniu lub wykrywaniu ekranów (spodziewałem się xrandrczegoś takiego). Jeszcze jakieś wskazówki?
Tomas
Tymczasowo przenieść lidbtnz /etc/acpi/eventsdo innego miejsca, np ~/. To pomaga?
ish
Nic nie zmienia, o ile wiem, ma dokładnie taki sam efekt, jak pozostawienie tam pliku. Oczywiście próbowałem ponownie uruchomić komputer, aby upewnić się, że zmiana została zastosowana.
Tomas
@Tomas: patrz edycja u dołu odpowiedzi.
ish
1
Na moim Ubuntu 14.04 nie mam lid.shani ani lidbtnw moim systemie (wyszukiwane za pomocą locate) Czy mogę utworzyć jeden z nich, aby dodać funkcjonalność (chcę wyłączyć ekran dotykowy po zamknięciu pokrywy laptopa )?
rubo77
0

To zachowanie jest funkcją Gnome i jest kontrolowane przez ustawienie dconf. Możesz to zmienić za pomocą dconf-editorlub bezpośrednio za pomocą wiersza poleceń:

gsettings set org.gnome.settings-daemon.plugins.xrandr default-monitors-setup <value>

Opis mówi:

Podsumowanie: czy wyłączyć określone monitory po uruchomieniu

„klon” wyświetli to samo na wszystkich monitorach, „dok” wyłączy monitor wewnętrzny, „nic nie rób” użyje domyślnego zachowania Xorg (rozbuduj pulpit w najnowszych wersjach). Domyślnie „przykrywka” wybierze pomiędzy „nic nie rób” i „dok” w zależności od tego, czy pokrywa jest (odpowiednio) otwarta czy zamknięta.

Jeśli więc chcesz korzystać tylko z zewnętrznego monitora, gdy jest on podłączony, użyj dockjako <value>.

Jeśli chcesz, aby oba monitory zawsze działały, bez względu na to, czy pokrywa jest zamknięta, czy nie, użyj do-nothing. (Często zamknąłem tymczasowo pokrywkę, aby nie świeciła w moim ciemnym pokoju, nie chciałem, aby wszystkie okna migrowały na monitor zewnętrzny).

I wreszcie, jeśli chcesz korzystać z ekranu laptopa, ale tylko wtedy, gdy jest otwarty, użyj follow-lid. (Przypadek użycia: ilość wolnego miejsca na biurku jest różna, a czasami trzeba umieścić laptopa za monitorem zamiast obok niego.)

EvgEnZh
źródło
0

Czy nie mogę go tak skonfigurować, aby zawsze korzystał z zewnętrznego monitora, gdy jest obecny, w trybie pojedynczego ekranu?

Mogę odpowiedzieć na tę część. Na Uboczu prowadzę Ubuntu 17.10. W opcji gnome-control-center -> device -> displaymożesz wybrać single displaytylko $external_monitorwłączone, a następnie kliknąć „Zastosuj”. To generuje $HOME/.confg/monitors.xmlplik. Plik naprawia arragmentację wyświetlania, gdy $external_monitorjest ona podłączona, i przełącza się na monitorze wewnętrznym po odłączeniu. Co lepsze, można umieścić ten sam monitors.xmlin /var/lib/gdm3/.config/, w tym przypadku to samo odnosi się do GDM też.

funicorn
źródło