如何列出活动显示(在命令行上)?

如何列出活动显示(在命令行上)?

xrandr -q为我提供了已连接显示器的列表,但我如何才能(脚本友好)找出显示器当前是否处于活动状态?

上下文:我想编写一个脚本来切换显示。如果它处于活动状态,则应将其关闭,如果不是,则应将其打开。

注意:xrandr -q由于活动模式以 为标记,因此基本上提供了此信息*,但此信息很难在 bash 脚本中提取。

答案1

处于活动状态的显示器的分辨率和偏移量数字显示在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 显示器

在此处输入图片描述

VGA 显示器关闭

在此处输入图片描述

答案2

兰德在分辨率列表中,活动显示分辨率后面应该有一个星号,如果没有,则显示器不活动。

答案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

第一次执行此脚本将打开显示器,而不知道显示器是打开还是关闭;从第二次开始,如果显示器打开,它将关闭;如果显示器关闭,它将打开。

答案4

xrandr --listactivemonitors | awk '{print $NF}'

相关内容