Переключение мониторов из командной строки

21

Так как я нашел другой метод для достижения своей цели, и поскольку на мой предыдущий вопрос не было отправлено ответа, я изменил вопрос, чтобы он соответствовал найденному ответу.

Есть ли способ отключить монитор моего ноутбука и полностью включить внешний монитор (и наоборот) из командной строки?

Malabarba
источник
Я просто гуглил ту же самую вещь, и я наткнулся на этот вопрос, который вы задали только 7 минут назад. Это чертовски удивительно. Я надеюсь, что вы получите ответ.
JD Long
Я знаю, что вы можете поместить базовый файл xorg.confв каталог root ( /root/yorg.conf.new), если загрузитесь в режиме восстановления и выполните X --configure(или подобное).
Бобби
проблема (по крайней мере для меня) в том, что я не хочу писать xorg.conf вручную. Я хочу вывести свои текущие настройки в формат xorg.conf, затем изменить настройки с помощью графического интерфейса и затем сбросить их в файл. Тогда я могу написать скрипт, чтобы легко переключаться между двумя настройками. Прямо сейчас я должен зайти в GUI и нажать полдюжины раз, чтобы изменить мои настройки.
JD Long
@JD Long: Это именно то, что я тоже пытаюсь сделать. Не забудьте написать здесь, если вы когда-нибудь найдете способ. В моем скрипте отсутствуют только две вещи: файлы xorg.conf и команда для обновления текущих отображений (без необходимости перезапуска gdm).
Малабарба
Сегодня я экспериментировал с Диспером ( willem.engen.nl/projects/disper ). В файле справки указана опция -p, которую предполагается экспортировать. Только этот переключатель не реализован. грустный тромбон
JD Long

Ответы:

28

С помощью команд

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

Экран автоматически переходит на внешний дисплей. Ему даже не нужны силы Судо. Чтобы узнать название дисплеев, просто сделайте:

xrandr -q

Который должен дать что-то вроде:

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)
...

Расширение дисплеев, вероятно, может быть достигнуто аналогичным образом.

Malabarba
источник
Я получаю сообщение «Не удается открыть дисплей» при запуске xrandr (с любыми флагами). В чем может быть причина?
brandizzi
4
Если xrandr -qдает LVDS1и VGA1: Внешний только: xrandr --output VGA1 --auto --output LVDS1 --off. Расширенный левый, внутренний первичный: xrandr --output VGA1 --auto --left-of LVDS1 --output LVDS1 --auto --primary. Расширенный левый, внешний первичный: xrandr --output VGA1 --auto --left-of LVDS1 --primary --output LVDS1 --auto. Только для внутреннего использования xrandr --output VGA1 --off --output LVDS1 --auto.
хороший ответ! Может быть, стоит объяснить новичкам, какой из них обычно будет внутренним и внешним между VGA и LVDS?
Матифу
4

Это, безусловно, НЕ прямой ответ на ваш вопрос. Но я нашел это полезным в моем случае использования. Это не экспорт файла конфигурации, но он показывает, как автоматизировать disper в сценарии оболочки. Я настраиваю его на запуск каждый раз, когда подключаюсь к док-станции, и кажется, что это устраняет проблемы с дисплеем при стыковке и расстыковке моего ноутбука:

Вы должны иметь установленный Disper и 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
источник
Диспер кажется полезным инструментом. Я посмотрю на это и посмотрю, смогу ли я подстроить его под мой случай. Разница лишь в том, что я хочу отключить монитор ноутбука, а не расширять его. Это немного более гладко на моем недорогом ноутбуке, и он автоматически работает с панелями.
Малабарба
Если подумать, моя видеокарта ati может не поддерживаться, поскольку они утверждают, что поддерживают только nvidia.
Малабарба
Хорошо, страница «Diper» привела меня на эту страницу: thinkwiki.org/wiki/Sample_Fn-F7_script Оказывается, переключать мониторы довольно легко с помощью команды xrandr.
Малабарба
спасибо за размещение ссылки на xrandr. Я исследую это. Я возлюсь с тем же. FWIW, мой ноутбук имеет карту Intel, и я использую диспертер без проблем.
JD Long