Linux 检索监视器名称

2024-03-24

情况:我正在使用多个监视器,并且我想在 bash 中获取它们的名称。目前我使用的是 Ubuntu 10.04。

我知道xrandr。从中我只能得到统计数据。我想要的是读取数组中的所有监视器名称以使用它们。

有没有一种明确的方法可以做到这一点,而无需从某种字符串中删除名称?一个明确的方法是从文件中读取它们。一种不明确的方法是将 xrandr 输出通过管道传递给某种函数以从中删除名称。


受到贝尼的回答的启发,这将阅读EDID http://en.wikipedia.org/wiki/EDID数据使用xrandr并根据以下内容提取监视器名称EDID规范 http://read.pudn.com/downloads110/ebook/456020/E-EDID%20Standard.pdf,不需要任何外部工具,例如parse-edid:

#!/bin/bash
while read -r output hex conn; do
    [[ -z "$conn" ]] && conn=${output%%-*}
    echo "# $output $conn   $(xxd -r -p <<< "$hex")"
done < <(xrandr --prop | awk '
    !/^[ \t]/ {
        if (output && hex) print output, hex, conn
        output=$1
        hex=""
    }
    /ConnectorType:/ {conn=$2}
    /[:.]/ && h {
        sub(/.*000000fc00/, "", hex)
        hex = substr(hex, 0, 26) "0a"
        sub(/0a.*/, "", hex)
        h=0
    }
    h {sub(/[ \t]+/, ""); hex = hex $0}
    /EDID.*:/ {h=1}
    END {if (output && hex) print output, hex, conn}
    ' | sort
)

Uses awk精确提取监视器名称only,并且 EDID 中没有额外的垃圾,因此“幻数”如000000fc00, 26 and 0a。最后使用xxd从十六进制转换为 ASCII,每行打印一个监视器名称。

基于这个解决方案我做了一个切换显示器的便捷脚本 https://github.com/MestreLion/scripts/blob/master/monitor-switch,也可以用来简单地列出监视器信息:

$ monitor-switch --list
Connected monitors:
# DFP5  HDMI    HT-R391
# DFP7  DVI-I   DELL U2412M

$ monitor-switch --list
Connected monitors:
# DisplayPort-1 DisplayPort DELL U2412M
# DisplayPort-3 DisplayPort DELL U2415
# HDMI-A-2      HDMI        LG TV
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 检索监视器名称 的相关文章

随机推荐

  • 如何在 mac osx 上安装 Python docx 模块

    我正在尝试生成 docx使用 Python 的文件 我搜索了网络和帖子 发现了一个模块 https github com mikemaccana python docx blob master README markdown https g
  • 当 Android 的 PreferenceActivity 的 isValidFragment() 被调用时?

    对于我正在开发的某些应用程序 对于 API 级别 19 的设备 我遇到了异常 Caused by java lang RuntimeException Subclasses of PreferenceActivity must overri
  • 当属性是对象时命名查询?

    我想在 JPA 中进行此查询 SELECT FROM happyDB users U WHERE U party as user 1 AND U party party id 2 这工作正常 但我的问题是我有Party只能作为一个对象 而不
  • 由 Android 应用程序和网站共享的关系数据库 - 最简单的方法

    我有一个项目 我将开发一个 Android 应用程序和一个网站 他们都应该共享相同的数据库 我正在尝试探索所有选项 但我真的很困惑 这是我的要求 1 我需要一个非常简单且EASY方式 我并不是想学习 我只是想学习 我只是想把事情做好 2 数
  • microk8s 连接到端口 16443 被拒绝

    我收到以下错误消息 root master 1 microk8s kubectl get no The connection to the server 127 0 0 1 16443 was refused did you specify
  • 使用 Storyboard 与编程方式进行 iOS 开发的速度?

    作为初级 iOS 开发人员 哪种方法可以实现更快 更高效的开发 这个问题没有正确的答案 对于使用 Xcode 进行开发 2 3 年的人来说 旧的编程方式更高效 而且故事板感觉很陌生 这就是我个人的处境 对于今天刚刚开始使用 Xcode 或
  • 如何向 NSDate 添加 1 天?

    基本上就如标题所说 我想知道如何添加 1 天NSDate 所以如果是 21st February 2011 它将变成 22nd February 2011 或者如果是 31st December 2011 它将变成 1st January
  • Powershell:作为本地系统运行时向登录用户发送 toast 通知

    我有一个作为本地系统运行的脚本 它执行一些操作 包括检查用户是否已登录 如果是 它会运行 PowerShell 代码片段来显示 toast 通知 如下所示 如果 PS 以当前用户身份运行 则可以正常工作 如果它作为 LocalSystem
  • Python对一个列表从另一个列表进行排序[重复]

    这个问题在这里已经有答案了 我已经在这个程序上工作了一段时间 但不知道如何从第二个列表中的内容对我的一个列表进行排序 对于这个程序 我有一个单词列表 还有一个单词在我打开的文件中出现的次数的列表 我需要根据单词出现的频率降序对单词列表进行排
  • NSFontAttributeName 与 NSAttributedStringKey.font

    我在使用我已经使用了一段时间的库中的 Swift 代码时遇到了一些问题 这似乎与某种版本冲突有关 但我不确定 这是代码 let attribMsg NSAttributedString string msg attributes NSAtt
  • ggplot 中的欧洲/法国千位分隔符

    我正在尝试格式化 ggplot 图中的 y 轴 并使用空格 而不是逗号 作为千位分隔符 大约是 10 000 而不是 10 000 我在 中找不到它scale y continuous help 感谢您的任何提示 正如 David 和 jo
  • Xcode 4 调试

    自从迁移到 Xcode 4 以来 我对调试视图完全感到困惑 因为我无法看到数组 字典等的值 在 Xcode 3 下我可以查看调试控制台并查看存储的实际值 调试信息现在出现在调试导航器 http developer apple com lib
  • 在 Visual Studio 中删除折叠区域和摘要周围的框

    我正在使用 VS2010 我想在压缩区域和 或摘要时更改它们的字体样式 主要是为了删除这些部分周围的边框 因为在滚动代码时它会变得分散注意力 我浏览了 字体和颜色 和其他选项 但找不到任何明显可以让我更改它的内容 这个字体可以自定义吗 如果
  • 如何在不使用 strlen() 的情况下查找 php 中的字符串长度?

    如何在不使用 php 的情况下找到字符串的长度strlen 我知道这是一个很老的问题 但这段代码对我有用 s string i 0 while s i i print i
  • 将 void 函数模板专门化为 const char[N]

    我有一个我想要专门化的模板化函数foo to const char N 硬编码字符串 template
  • 购物车和各种折扣。将折扣存储在数据库中并将其应用于订单计算

    目前 我正在寻找对购物车 订单 应用折扣 的最佳实践 因此 我计划实施此类折扣 固定用户折扣 例如 我想给我最喜欢的客户 10 的折扣 商品数量折扣 例如 您购买 10 支不同颜色的钢笔 您将获得 1 5 的折扣 优惠券折扣 例如 在促销活
  • CanCan :read 和 [:index, :show] 之间的区别吗?

    根据所有文件 read动作是两者的别名 index and show alias action index show to gt read 但是 请考虑以下使用嵌套资源的场景 resources posts resources commen
  • 类型错误:无法解压不可迭代的 int 对象

    运行我的代码后 如何解决此错误 如下所示 我正在使用下面的函数并在其上实现运行窗口 for 循环 但最终出现以下错误 for 循环工作并在某个时刻挂起 def get grps s thresh 1 Nmin 3 Nmin int gt 0
  • 使用 jQuery 删除仅包含空格的元素

    有没有办法删除这个 p p 使用 jQuery Try p filter function return trim this text this children length 0 remove 它的作用是找到所有 p 其中没有任何内容 并
  • Linux 检索监视器名称

    情况 我正在使用多个监视器 并且我想在 bash 中获取它们的名称 目前我使用的是 Ubuntu 10 04 我知道xrandr 从中我只能得到统计数据 我想要的是读取数组中的所有监视器名称以使用它们 有没有一种明确的方法可以做到这一点 而