Как вывести список активных дисплеев (в командной строке)?

xrandr -q дает мне список подключенных дисплеев, но как я могу узнать (с учетом сценариев), активен ли дисплей в настоящее время?

Контекст: я хотел бы написать скрипт для переключения дисплея. Если он активен, его следует отключить, если нет - включить.

Примечание: xrandr -q в основном предоставляет эту информацию, поскольку активные режимы помечены *, но эту информацию трудно извлечь в скрипте bash.

3
задан 07.05.2020, 22:39

3 ответа

Подключите весь дисплей, используя

 xrandr -q

. Затем вы можете создать переменную для всех подключенных дисплеев, например

Display1=VGA1

и т. Д.

, затем использовать скрипт

 #!/bin/bash

 if (xrandr | grep "$DISPLAY1 connected"); then
    if (ls | grep status_flag); then  
        xrandr --output $DISPLAY1 --off
        rm status_flag
    else
        xrandr --output $DISPLAY1 --auto
        touch status_flag
    fi
 fi

При первом выполнении этого сценария монитор включается, не зная, включен или выключен монитор, и со второго раза он выключится, если монитор включен, и включится, если монитор выключен.

0
ответ дан 07.05.2020, 22:40
  • 1
    Существует команда, названная ddccontrol, но я не использовал этого, можно попытаться найти, дает ли прочь или на состоянии Дисплея. Другая опция, не зная от/на состояния Дисплея состоит в том, чтобы использовать сценарий, который я отредактировал сейчас – Arunabh Das 07.05.2020, 22:40
  • 2
    Если Вы запишете if (command | pipe); then ..., то команда будет выполняться в подоболочке. Необходимо просто отбросить скобки. if command | pipe ;then ... – user462990 07.05.2020, 22:40
  • 3
    С этим я мог узнать, какие дисплеи подключены. Но я хочу знать, в настоящее время активен ли определенный дисплей. – Dragos 07.05.2020, 22:41

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

0
ответ дан 07.05.2020, 22:40
  • 1
    хм хитрый, я предполагаю, что Вы подразумеваете, что хотите знать, какой дисплей фокусируется в один момент? Это должно быть возможно, поскольку совместные действия делают это, даже через несколько машин, I' ll должны думать... – AbbasAngouti 07.05.2020, 22:41
  • 2
    Doesn' t работа, и я думаю соединенный, неправильный подход, дисплей всегда подключается, но сценарий должен узнать если это ' s активный (если it' s используемый системой, если там показан что-то на нем), – Juan Boero 07.05.2020, 22:41
  • 3
    попробуйте xrandr-q | grep ' connected' | главный-n 1 | сократил-d ' '-f1 – Lukasz 'Severiaan' Grela 07.05.2020, 22:41
  • 4
    хотя я can' t тестируют его с несколькими экранами, но это должно давать значение в зависимости от того, какой дисплей на этом работают – Phil Hudson 07.05.2020, 22:42
  • 5
    Поскольку я уже упомянул в своем описании. Проблема, это it' s не удобный для извлечения этой информации в рамках сценария (так как разрешение может измениться и звездочка был бы в другом положении существуют некоторые другие звездочки от других дисплеев...), – redent84 07.05.2020, 22:42

Активные дисплеи имеют разрешение и номер смещения, показанные в идентификационной строке на выходе xrandr. Вот что я имею в виду:

$ xrandr | grep connected                                    
eDP1 connected primary 1366x768+1280+256 (normal left inverted right x axis y axis) 345mm x 194mm
DP1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
VGA1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 340mm x 270mm
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

В выходных данных вы видите, что встроенный монитор моего ноутбука и VGA1 оба подключены и имеют разрешение (в случае встроенного дисплея eDP1 это 1366x768). Таким образом, задача просто превращается в обработку текста. Для этой цели я написал небольшую функцию, которую вы можете использовать в своих скриптах или ~/.bashrc:

get_active_monitors()
{
    xrandr | awk '/\ connected/ && /[[:digit:]]x[[:digit:]].*+/{print $1}'
}

Вот тестовые прогоны:

С VGA-монитором на

enter image description here

С выключенным монитором VGA

enter image description here

1
ответ дан 07.05.2020, 22:41

Теги

Похожие вопросы