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 检索监视器名称 的相关文章

  • Linux 消息队列 - 多个接收者

    我最近一直在研究和研究 Linux 消息队列 并遇到了一些我不太明白为什么会发生的事情 如果我们运行两个程序 它们都在无限 for 循环中使用 msgrcv 来检查消息 然后发送两条消息 那么第一个运行的程序将收到第一条消息 第二个程序将收
  • 在 Perl 中如何接受多个 TCP 连接?

    我对 Linux 的 Perl 脚本有疑问 它的主要目的是成为 3 个应用程序之间的中间人 它应该做什么 它应该能够等待 UDP 文本 不带空格 udp port 当它收到 UDP 文本时 它应该将其转发到连接的 TCP 客户端 问题是我的
  • 在 linux shell 中执行程序时得到“dquote>”

    当我在 Linux shell 中执行脚本时 我得到以下输出 dquote gt 这是什么意思 这意味着您执行了一行仅包含一个双引号字符的代码 如下所示 echo Hello shell 正在等待其他报价
  • 使用 Google Breakpad 的小型转储无法显示应用程序崩溃的行号

    我在崩溃时获得了应用程序的小型转储文件 但它没有给我诸如函数名称和行号之类的详细信息 输出如下 Operating system Linux 0 0 0 Linux 3 3 8 2 2 1 SMP Thu May 12 13 30 26 U
  • pctl(PR_SET_PDEATHSIG) 竞争条件

    据我了解 当父进程死亡时终止子进程的最佳方法是通过prctl PR SET PDEATHSIG 至少在 Linux 上 父进程退出后如何让子进程终止 https stackoverflow com questions 284325 how
  • 访问附加到 ELF 二进制文件的数据

    我有一个静态 ELF 二进制文件 它从 zip 文件中读取数据 为了简化分发 我想将 zip 文件附加到二进制文件中 如下所示 cat mydata zip gt gt mybinary 我知道这样做不会损坏 mybinary 但我不知道如
  • 如何将回车符作为字符添加到文件中?

    我想要一个像这样的字符串 blablbabla
  • 使用 Shell 脚本自动安装 R-Studio

    有没有办法在 Linux 系统上自动安装 R Studio 它应该自动检测操作系统并安装具有所需依赖项的 R 和 R Studio 谢谢 我准备了以下 shell 脚本来使安装完全自动化 bin bash Program R Studio
  • Windows 操作系统中无法访问的 IP 套接字关闭时间

    这些代码通过用户数据报协议提供发送数据 下面有两个代码 当我使用第一个代码来处理无法访问的 IP 地址时 我得到了三秒的延迟 请查看新结果标题 只需打开新的 C 控制台应用程序并将这些代码粘贴到其中 第一个代码 using System u
  • 反馈两个进程的stdin和stdout

    我有两个进程通过标准输入和标准输出相互连接 假设我有进程 A 和进程 B B 的标准输出需要输入到 A 的标准输入中 A 的标准输出需要输入到进程 B 的标准输出中 是否有一种简单的方法可以用简单的命令来表达这种关系 或者是否有一个基本的
  • 为什么我的 git 自动更新 Expect 脚本不起作用?

    我想制作一个脚本来更新我所有的 GitHub 存储库 我只需要输入我的用户名和密码 脚本将遍历存储库列表 调用git push并通过补充 Expect 脚本提供必要的信息 这是我的 bash 脚本 bin bash echo Updatin
  • 执行 grails/groovy 时,Linux 上没有可用的控制台输出

    当执行 groovy 脚本或 grails 应用程序时 没有可用的输出 输入 gt 只有一个清晰的控制台屏幕 即使不启动 X Window System 输出也是不可见的 我也尝试过 grailscompile plain output 也
  • `/dev/urandom` 适合模拟目的吗?

    似乎在类 Unix 系统中使用纯 C fread from dev urandom是提取高质量随机字节的最简单方法 我需要运行一个每秒需要大约 10k 32 位随机数的模拟 并且可能会运行几天 是 dev urandom可以用于此目的吗 当
  • Ruby 脚本即服务

    嗯 标题说明了一切 我有一个 ruby 脚本 我想在我的 Linux 机器上作为一项服务 我可以启动和停止 运行 我找到了如何在 Windows 上执行此操作here https stackoverflow com questions 16
  • Eclipse CDT 内置包含目录

    Under Eclipse CDT gt Project Settings gt C C General gt Paths and Symbols gt Includes gt GNU C 有一个包含路径的列表 有些是粗体的并且是特定于项目
  • 使用 M1 在 dockerized Linux 上安装节点画布

    我有以下Dockerfile我在 MacBook Air M1 上运行 所以在 docker 中我有带有 M1 的 linux FROM node 16 7 0 WORKDIR work CMD while true do sleep 10
  • elf .rel.text 部分中 R_386_32/R_386_PC32 的含义

    为了理解重定位的概念 我编写了一个简单的 chk c 程序 如下所示 1 include
  • 从redis中检索大数据集

    一台服务器上的应用程序查询另一台服务器上运行的 Redis 查询的结果数据集约为 250kzrangebyscore objects locations inf inf这在应用程序服务器上似乎需要 40 秒 当使用命令执行时redis cl
  • find 命令的“exec”功能可以在后台启动程序吗?

    我想做这样的事情 find iname Advanced Linux Program exec kpdf 可能的 还有其他类似的方法吗 首先 它不会像你输入的那样工作 因为 shell 会将其解释为 find iname Advanced
  • 在 R 4.0.2 中安装 rsvg 库 (conda-forge)

    我在下载 r 包时遇到困难rsvg 我首先使用 conda 为最新的 R 版本 4 0 2 创建了一个环境 如下所示指示 https anaconda org conda forge r base 我能够毫无问题地下载许多其他 R 包和生物

随机推荐

  • 如何在 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 从中我只能得到统计数据 我想要的是读取数组中的所有监视器名称以使用它们 有没有一种明确的方法可以做到这一点 而