Jak zresetować ustawienia monitora do domyślnych przez terminal?

32

Mam trudny problem dotyczący wielu monitorów w KDE (Kubuntu). Mam laptopa, który w domu jest podłączony do dwóch monitorów - VGA i HDMI. Działa to tylko wtedy, gdy wbudowany wyświetlacz laptopa jest wyłączony (przynajmniej tak mi powiedziano).

Problem polega na tym, że teraz zabrałem laptopa i uruchomiłem go bez podłączonych zewnętrznych monitorów. System pamięta, że ​​wbudowany wyświetlacz został wyłączony, więc wyłącza go, mimo że jest to jedyny podłączony monitor. Oczywiście to sprawia, że ​​laptop jest praktycznie bezużyteczny. Przechodząc do terminala za pomocą Ctrl+ Alt+ F#działa, mogę się zalogować; nawet Gość działa normalnie.

Pytanie brzmi: w jaki sposób (ponownie) ustawić ustawienia monitora konta poprzez terminale, skoro nie mogę korzystać z GUI?

Dzięki

Martin Melka
źródło
3
Powiązane pytanie z ostatnią odpowiedzią, xrandrktóre może być przydatne.
2
Pomogło to, gdy mogłem korzystać z konsoli na drugim monitorze, xrandr był w stanie ustawić moje ustawienia. Jednak gdy mogę korzystać tylko z terminala nie-GUI, xrandr mówi, że nie można otworzyć wyświetlacza, więc jest to całkiem bezużyteczne.
Martin Melka
Jak wyłączyłeś wbudowany wyświetlacz laptopa?
orzechowy o natty
Nie wiem, czy jest jakaś różnica w stosunku do KDE, ale w standardowym Ubuntu działa dla mnie dobrze (z wewnętrznym monitorem wyłączonym przez GUI, z zamkniętą pokrywą laptopa i laptopem wygodnie siedzącym w stacji dokującej).
orzechowy o natty
1
masz na myśli to, że muszę zmieniać ustawienia za każdym razem, gdy korzystam z laptopa z zewnętrznymi monitorami i bez nich? Jeśli tak, to do bani. W każdym razie muszę wiedzieć, jak to zrobić przez tty
Martin Melka

Odpowiedzi:

9

Dobre pytanie. Trochę trudna odpowiedź, ale oto próba.

Podstawowa odpowiedź

W X11 jest naprawdę mała możliwość resetu . Możesz to znaleźć na stronie /etc/X11/Xreset. Możesz użyć katalogu Xreset ( Xreset.d), aby wkleić skrypt uruchamiany automatycznie po wylogowaniu użytkownika. Plik README:

# Scripts in this directory are executed as root when a user log out from
# a display manager using /etc/X11/Xreset.
# The username of the user logging out is provided in the $USER environment
# variable.

W ten sposób możesz a) dodać skrypt resetujący /etc/X11/Xreset.dib) utworzyć skrypt dołączony do programu uruchamiającego, który ustawia podwójne wyświetlacze zewnętrzne. W związku z tym wylogujesz się i wszystko wróci do normy, zalogujesz się do laptopa, włączysz program uruchamiający wyświetlacze i będziesz cieszyć się życiem.

Więcej informacji

  1. Możesz sudo dpkg-reconfigure -phigh xserver-xorgspróbować zresetować xserver lub (prawdopodobnie lepiej spójrz na odpowiedź Mik zasugerowaną w komentarzach).

  2. Facet z SuSE napisał fajny artykuł o X.

  3. W rozwiązanym zgłoszeniu błędu ktoś mówi:

    administratorzy mogą upuszczać skrypty w /etc/X11/Xreset.d/, aby działały po wylogowaniu użytkownika.

  4. To jest zawartość pliku:

Możesz go znaleźć we własnym systemie.

#!/bin/sh
#
# /etc/X11/Xreset
#
# global Xreset file -- for use by display managers

# $Id: Xsession 967 2005-12-27 07:20:55Z dnusinow $

set -e

PROGNAME=Xreset
SYSSESSIONDIR=/etc/X11/Xreset.d

if [ ! -d "$SYSSESSIONDIR" ]; then
  # Nothing to do, exiting
  exit 0
fi

# use run-parts to source every file in the session directory; we source
# instead of executing so that the variables and functions defined above
# are available to the scripts, and so that they can pass variables to each
# other
SESSIONFILES=$(run-parts --list $SYSSESSIONDIR)
if [ -n "$SESSIONFILES" ]; then
  set +e
  for SESSIONFILE in $SESSIONFILES; do
    . $SESSIONFILE
  done
  set -e
fi 

exit 0

# vim:set ai et sts=2 sw=2 tw=80:
don.joey
źródło
Ciekawy. Skrypt resetowania nic nie robi. Uruchomiłem go przez tty, zrestartowałem komputer, ale wszystko było takie samo. To samo z umieszczeniem go w folderze: | Próbowałem też umieścić w środku polecenia xrandr, ale bezskutecznie
Martin Melka
Skrypt resetowania uruchamia wszystko, co znajduje się w katalogu Xreset.d.
don.joey
1
Dobrze. Na początku nie zadziałało, ponieważ zapomniałem dodać uprawnienia do skryptu. Teraz działa jak urok. Dziękuję Ci. Jedna mała uwaga. Jeśli uśpię laptopa i odłączysz monitory w tym czasie, nie wylogowałem się, więc ekran nie zostanie zresetowany. Czy istnieje sposób na wylogowanie się przez tty? Próbowałem zalogować się jako ten sam użytkownik, który używa X, ale logoffwylogował mnie tylko z tty, a nie z X.
Martin Melka
Cześć Martin. Cieszę się, że masz to do pracy! Próbowałeś czegoś takiego gnome-session-quit? Źródło: askubuntu.com/questions/15795/…
don.joey
17

Za każdym razem, gdy uśpiam laptopa Lubuntu, gdy wyświetla się wyłącznie na ekranie telewizora, i budzę go po odłączeniu od zasilania, kończę na czarnym ekranie, ponieważ przypisano niewłaściwą rozdzielczość. Tak samo jak ty, muszę ustawić rozdzielczość z wirtualnego terminala TTY1, do którego mogę dotrzeć za pomocą Ctrl-alt-F1, ale xrandr nie działa. Przed znalezieniem rozwiązania przeszukałem strony wyników wyszukiwania Google, więc pomyślałem, że się podzielę.

Najważniejsze jest to, że xrandr najwyraźniej działa tylko na aktualnie zogniskowanym ekranie. Musisz więc połączyć polecenie uśpienia przed poleceniem xrandr, aby dać ci czas na powrót do serwera X za pomocą Ctlr-alt-F7, aby polecenie zostało wykonane. W przeciwnym razie pojawi się błąd taki jak xrandr: Configure crtc 0 failed.

  1. Otwórz wirtualny terminal za pomocą Ctrl-alt-F1 i zaloguj się

Aby uzyskać nazwy połączonych ekranów (i zakładając, że Twój serwer X działa :0):

  1. $xrandr -d :0

Aby zmodyfikować ustawienia wyświetlania:

  1. $sleep 5; xrandr --output LVDS1 --auto -d :0

Zastąp LVDS1 wyjściem, który chcesz zmodyfikować, i --auto dowolnymi parametrami xrandr, których chcesz użyć.

  1. Przełącz się na serwer X za pomocą Ctrl-alt-F7, zanim upłynie czas uśpienia ustawiony w powyższym poleceniu.

Jest na to lepszy sposób. Ale to działa.

Oryginalne źródło rozwiązania: http://www.lgqyc.com/server-14-04-3-lts-display-orientation/

Zapoznaj się z tym komentarzem, aby uzyskać informacje na temat możliwego ulepszenia mojego rozwiązania (nie testowałem go).

Gabriel Morin
źródło
To była jedyna odpowiedź, która zadziałała dla mnie. Szalony przypadek, 3-letni temat miał jedyną działającą odpowiedź przesłaną 11 godzin temu :). EDYCJA: oh snap, DOKŁADNIE 3 lata temu. Dziwne ...
Adam Plocher
Łał. To doprowadza mnie do szału od wieków. Twoja odpowiedź wydaje się śmieszna (spać? Naprawdę?), Ale działa, więc dziękuję!
Tyler,
6
Okazuje się, że jest nieco lepszy sposób to zrobić: chvt 7; xrandr --output LVDS1 --auto -d :0. chvt 7 przełącza się na VT7, więc nie musisz spać / Ctrl-Alt-F7. Może potrzebować przerwania sleep 5między połączeniami chvti xrandr, ale nawet wtedy zapisuje ręczne naciśnięcia klawiszy.
Tyler
Jedną z opcji byłoby utworzenie .xsessionrcpliku wykonywalnego w katalogu domowym i włączenie polecenia xrandr --autowymuszającego automatyczną ponowną konfigurację wszystkich wyświetlaczy za każdym razem, gdy się logujesz.
Mikko Rantalainen
16

Komenda xrandr -s 0 powinno zresetować wyświetlacze w terminalu. Więcej można znaleźć na następującej stronie lub man xrandrw terminalu.

https://linuxacademy.com/blog/linux/solution-resetting-your-screen-resolution-with-xrandr/

Miguel
źródło
Witamy w Ask Ubuntu! Chociaż to odpowiada na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
guntbert,
4
Tak, to działa. Inne odpowiedzi są zbyt rozdęte, skomplikowane lub nieskuteczne. Warto również zauważyć, że jeśli widzisz czarny ekran (i nic nie widzisz), możesz otworzyć terminal za pomocą klawiszy skrótu i ​​ślepo wpisać „xrandr -s 0”. Tak właśnie zrobiłem :)
Kodeart,
Należy pamiętać, że w konfiguracjach z dwoma monitorami to polecenie może dezaktywować drugi monitor, zamiast ustawiać domyślną rozdzielczość obu monitorów.
Darien
W moim systemie polecenie wyłącza oba monitory zewnętrzne, ale także resetuje ich konfigurację do domyślnych - co naprawia wykrywanie VGA DCC, które od czasu do czasu ulega awarii. Następnie muszę ponownie włączyć ekrany i zmienić ich położenie za pomocą narzędzia Wyświetlacze. Nie jest idealny, ale jest bardzo praktyczny i lepszy niż moje poprzednie rozwiązanie, które polegało na kilkukrotnym zawieszeniu i wybudzeniu komputera, aż zresetuje port VGA.
Guss
4

próbowałeś?

DISPLAY=:0 xrandr --output LVDS1 --auto

z innego tty (np. tty1),

do którego można uzyskać dostęp Ctrl Alt F1i wrócić do (standardowego graficznego) tty7 za pomocą Ctrl Alt F7?

orzechowy o natty
źródło
1
To daje mi xrandr: Configure crtc 1 failedprzy próbie --output HDMI1 --off. --auto nic nie mówi, dopóki ręcznie go nie wyłączę. Następnie --auto zgłasza ten sam błąd
Martin Melka
musiałby dokładniej zbadać; jestem pewien, że to zadziała, w końcu ...
szalone o natty
2

Jednej rzeczy, o której jeszcze nie wspomniałem, ale co może być krytyczne: jeśli korzystasz z laptopa Thinkpad , rozwiązanie byłoby proste: Fn+ F7. Jeśli używasz laptopa innego producenta, najprawdopodobniej będzie jakiś inny klawisz typu Fn, który będzie przełączał wyjścia wyświetlacza / ekranu (np. Rzutnik, monitor zewnętrzny, wyświetlacz wewnętrzny; lustro, włączanie / wyłączanie, i tym podobne) na poziomie BIOS-u (zakładam - Edycja : zobacz, jak działają klawisze Fn ?, aby uzyskać więcej informacji na ten temat ).

Tak więc nie ma potrzeby resetowania niczego w systemie Linux, że tak powiem.

orzechowy o natty
źródło
1
Mam IdeaPad, ale klawisze Fn + nie działają (jedynym, który działa, jest tryb uśpienia)
Martin Melka
Moje przeczucie brzmi: kontynuuj z tym! Nie mam czasu, aby dokładnie zbadać sobie obecnie, choć istnieje duża szansa mogłem zrobić kilka optymalizacji w tym zakresie na moim IBM Thinkpad X41, ale co to -dla wartą większość klawiszy Fn zrobić pracę w moim systemie (zarówno na moim laptop, a także na mojej zewnętrznej klawiaturze „thinkvantage” sk-8855): w centrum oprogramowania ubuntu (lub synaptic) na pierwszy rzut oka na pierwszy rzut oka przynajmniej ta rzecz jest zainstalowana tp-smapi-dkms 0.41-1 . Możesz więc spróbować zainstalować, zajrzeć do niego i / lub podobnych alternatyw, które sprawią, że twoje klawisze Fn w końcu ożyją!
orzechowy o natty
sprawdź także tpctl.sourceforge.net
o natty
Trudno w to uwierzyć, ale to było to. Przełącz wyświetlacze - Fn+ F8w Dell Latitude. Po wyjęciu ze stacji dokującej czasami nie włączał wbudowanego wyświetlacza. (Używam tylko zewnętrznego wyświetlacza VGA ze stacją dokującą.) Próba przełączenia wyświetlacza wydawała się nonsensem, ale włączyła wbudowany wyświetlacz.
Ferdinand Prantl