Przełącz monitory z wiersza poleceń

21

Ponieważ znalazłem inną metodę osiągnięcia mojego celu i ponieważ nie otrzymałem odpowiedzi na moje poprzednie pytanie, zmieniłem pytanie, aby pasowało do odpowiedzi, którą znalazłem.

Czy istnieje sposób, aby wyłączyć monitor mojego laptopa i całkowicie włączyć monitor zewnętrzny (i odwrotnie) całkowicie z wiersza poleceń?

Malabarba
źródło
Właśnie szukałem dokładnie tego samego i natknąłem się na to pytanie, które zadałeś zaledwie 7 minut temu. To jest cholernie niesamowite. Mam nadzieję, że dostaniesz odpowiedź.
JD Long
Wiem, że możesz upuścić podstawowy xorg.confdo katalogu root ( /root/yorg.conf.new), jeśli uruchomisz tryb odzyskiwania i wykonasz X --configure(lub podobnie).
Bobby
problem (przynajmniej dla mnie) polega na tym, że nie chcę ręcznie pisać pliku xorg.conf. Chcę zrzucić moje bieżące ustawienia do formatu xorg.conf, następnie zmienić ustawienia za pomocą GUI, a następnie zrzucić je do pliku. Następnie mogę napisać skrypt, aby bardzo łatwo przełączać się między tymi dwoma ustawieniami. W tej chwili muszę przejść do GUI i kliknąć kilkadziesiąt razy, aby zmienić ustawienia.
JD Long
@JD Long: Właśnie to staram się zrobić. Jeśli kiedykolwiek znajdziesz sposób, napisz tutaj. Jedyne dwie rzeczy, których brakuje w moim skrypcie, to pliki xorg.conf i polecenie odświeżenia bieżących ekranów (bez konieczności ponownego uruchamiania gdm).
Malabarba
Dzisiaj eksperymentowałem z disper ( willem.engen.nl/projects/disper ). Plik pomocy pokazuje opcję -p, którą należy wyeksportować. Tylko ten przełącznik nie jest zaimplementowany. smutny puzon
JD Long

Odpowiedzi:

28

Za pomocą poleceń

xrandr --output VGA-0 --auto
xrandr --output LVDS --off 

Ekran automatycznie przechodzi na wyświetlacz zewnętrzny. Nie potrzebuje nawet mocy sudo. Aby znaleźć nazwę wyświetlaczy, po prostu wykonaj:

xrandr -q

Co powinno dać coś takiego:

VGA-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
...
LVDS connected (normal left inverted right x axis y axis)
...

Wydłużenie wyświetlaczy można prawdopodobnie osiągnąć w podobny sposób.

Malabarba
źródło
Otrzymuję komunikat „Nie można otworzyć wyświetlacza” podczas uruchamiania xrandr (z dowolnymi flagami). Co może być przyczyną?
brandizzi 30.04.2013
4
Jeśli xrandr -qdaje LVDS1& VGA1: tylko zewnętrzna: xrandr --output VGA1 --auto --output LVDS1 --off. Rozszerzony lewy, wewnętrzny podstawowy: xrandr --output VGA1 --auto --left-of LVDS1 --output LVDS1 --auto --primary. Rozszerzony lewy, zewnętrzny podstawowy: xrandr --output VGA1 --auto --left-of LVDS1 --primary --output LVDS1 --auto. Tylko wewnętrzny: xrandr --output VGA1 --off --output LVDS1 --auto.
niezła odpowiedź! Być może warto wyjaśnić początkującym, który zwykle będzie wewnętrzny i zewnętrzny pomiędzy VGA i LVDS?
Matifou,
4

Z pewnością NIE jest to bezpośrednia odpowiedź na twoje pytanie. Ale uznałem to za pomocne w moim przypadku użycia. To nie jest eksport pliku konfiguracyjnego, ale pokazuje, jak zautomatyzować disper w skrypcie powłoki. Konfiguruję tę opcję, aby była uruchamiana za każdym razem, gdy zadokuję / oddokuję, i wydaje się, że naprawia to problemy z wyświetlaniem podczas dokowania i oddokowywania laptopa:

Musisz mieć zainstalowany disper i Python.

#!/bin/sh
#
# Detect displays and move panels to the primary display
#

PYTHON=python2.6
DISPER=/usr/bin/disper

# disper command will detect and configure monitors
$PYTHON $DISPER --displays=auto -e -t left

# parse output from disper tool how many displays we have attached
# disper prints 2 lines per displer
lines=`$PYTHON $DISPER -l|wc -l`

display_count=$((lines / 2))

echo $display_count

echo "Detected display count:" $display_count

# Make sure that we move panels to the correct display based
# on the display count
if [ $display_count = 1 ] ; then
    echo "Moving panels to the internal LCD display"
    gconftool-2 \
    --set "/apps/panel/toplevels/bottom_panel_screen0/monitor" \
    --type integer "0"
    gconftool-2 \
    --set "/apps/panel/toplevels/top_panel_screen0/monitor" \
    --type integer "0"
    sleep 5
    pkill gnome-panel
else
    echo "Moving panels to the external display"
    gconftool-2 \
    --set "/apps/panel/toplevels/top_panel_screen0/monitor" \
    --type integer "1"
    gconftool-2 \
    --set "/apps/panel/toplevels/bottom_panel_screen0/monitor" \
    --type integer "1"
    sleep 5
    pkill gnome-panel
fi
JD Long
źródło
Disper wydaje się przydatnym narzędziem. Zajrzę do tego i zobaczę, czy uda mi się dopasować do mojego przypadku. Jedyną różnicą jest to, że chcę wyłączyć monitor laptopa, zamiast go rozszerzać. Na moim słabszym laptopie jest trochę płynniej i automatycznie radzi sobie z panelami.
Malabarba
Po zastanowieniu moja karta graficzna ATI może nie być obsługiwana, ponieważ twierdzą, że obsługują tylko NVIDIA.
Malabarba
Ok, strona Dipera zaprowadziła mnie do tej strony: thinkwiki.org/wiki/Sample_Fn-F7_script Okazuje się, że przełączanie monitorów za pomocą polecenia xrandr jest dość łatwe.
Malabarba
dzięki za opublikowanie linku xrandr. Zbadam to. Mamrotam z tymi samymi rzeczami. FWIW, mój laptop ma kartę Intel i używam dispera bez problemów.
JD Long