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

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

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

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

激活的显示器的分辨率和偏移号显示在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为1366×768)。 因此,任务简单地变成输出的文本处理。 为此,我编写了一个可以在脚本或~/.bashrc使用的小函数:

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

这是测试运行:

使用VGA显示器

在此处输入图像描述

关闭VGA显示器

在此处输入图像描述

在分辨率列表中使用xrandr时,活动显示分辨率应该在其后面有一个星号,如果它不存在则显示不活动。

使用连接所有显示器

  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 

首次执行此脚本将打开显示器而不知道显示器是打开还是关闭,如果显示器打开则第二次关闭,如果显示器关闭则打开。