17

У меня есть ноутбук с двумя видеовыходами, которые я использую дома (HDMI1, VGA1). Чтобы включить их, я делаю это:

xrandr --output HDMI1 --right-of LVDS1 --auto
xrandr --output LVDS1 --off
xrandr --output VGA1 --right-of HDMI1 --auto

Когда я хочу пойти на работу, я беру свой ноутбук, но сначала запускаю следующее:

xrandr --output VGA1 --off
xrandr --output LVDS1 --left-of HDMI1 --auto
xrandr --output HDMI1 --off

И тогда это делает мой ноутбук активным, как и должно быть.

Проблема, с которой я сталкиваюсь, заключается в том, что иногда я не помню, чтобы отключить два экрана, прежде чем мой компьютер работать. Когда я приезжаю, я пробую различные комбинации --output и --off но я не могу снова включить мой экран.

Это вывод, который я запускаю xrandr ничего не отображается:

Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 8192 x 8192
LVDS1 connected (normal left inverted right x axis y axis)
   1366x768       60.0 +
   1024x768       60.0··
   800x600        60.3     56.2··
   640x480        59.9··
VGA1 disconnected 1920x1080+1920+0 (normal left inverted right x axis y axis) 0mm x 0mm
HDMI1 disconnected 1920x1080+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
DP1 disconnected (normal left inverted right x axis y axis)
  1920x1080 (0x4c)  148.5MHz
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock   67.5KHz
        v: height 1080 start 1084 end 1089 total 1125           clock   60.0Hz

Почти каждая команда, которую я пробовал, возвращает:

xrandr: Configure crtc 2 failed
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  21 (RRSetCrtcConfig)
  Serial number of failed request:  40
  Current serial number in output stream:  40

Как будто два монитора не отказываются от своего CRTC, и поскольку мое оборудование поддерживает только 2, оно заблокировано, пока я не подключу эти мониторы и не отключу их.

2 ответа2

10

Вы можете поместить всю свою конфигурацию в одну команду, например:

xrandr --output VGA1 --off --output HDMI1 --off --output LVDS1 --left-of HDMI1 --auto

и это должно сделать работу, также, поскольку трудно написать команду (долго), вы можете создать сценарий, который тестирует подключенные в данный момент экраны и производит желаемую настройку. (Вы можете добавить к сочетанию клавиш)

if [ -z `xrandr --query | grep "HDMI1 connected"` ]
then
    xrandr --output DP2 --off --output DP1 --off --output HDMI2 --off \
        --output HDMI1 --off \
        --output LVDS1 --mode 1366x768 --pos 0x0 --rotate normal \
        --output VGA1 --off
else
    xrandr --output DP2 --off --output DP1 --off --output HDMI2 --off \
        --output HDMI1 --mode 1920x1080 --pos 0x0 --rotate normal --primary \
        --output LVDS1 --off --output VGA1 --off
fi

это не необычный сценарий, но может работать для вас.

1

Похоже, что при отключении экрана событие не создается. опрос с использованием сценария xrandr довольно сложен, но вы можете посмотреть в /sys /class /drm /* /status и опросить эти файлы, а затем выполнить требуемое действие xrandr, когда состояние меняется с «подключено» к чему-то другому (или полностью исчезает).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .