【问题标题】:How to get combined resolution of all connected displays to Linux machine in C++?如何在 C++ 中获得所有连接到 Linux 机器的显示器的组合分辨率?
【发布时间】:2021-10-22 13:18:26
【问题描述】:

我发现this question相关,但没有直接回答我的问题,即:

如何在 C++ 中获得所有连接到 Linux 机器的显示器的组合分辨率? (所有显示器周围的矩形,以放置者为准)

我对 C++ 知之甚少,但我已经编写了这段代码,不确定它是否正确地完成了这项工作,因为我没有多个显示器布局,我只是在编写一些必须考虑的东西所有连接的显示器。

我的代码摘录如下:

#include <X11/Xlib.h>
#include <iostream>


        Display * my_display = XOpenDisplay(NULL);
        Screen * my_screen = XDefaultScreenOfDisplay(my_display);

        const int screen_width = my_screen->width;
        const int screen_height = my_screen->height;

        if (x_coord >= screen_width)
        {
            std::cerr
                << "X coord bigger than the screen width\n";

            return 1;
        }

        if (y_coord >= screen_height)
        {
            std::cerr
                << "Y coord bigger than the screen height\n";

            return 1;
        }

谢谢。

【问题讨论】:

  • 假设我有一台高清显示器和一台 4K 显示器,您如何定义它们的组合分辨率?
  • @n.1.8e9-where's-my-sharem。所有显示器周围的矩形,无论放置哪个(我引用我的问题)
  • 这并没有提供明确的定义。
  • 顺便说一下,“显示”、“屏幕”和“监视器”是 X11 世界中三个不同的实体。您获得的屏幕分辨率是由 xrandr 管理的所有显示器的组合分辨率。

标签: c++ linux x11 screen-resolution


【解决方案1】:

一种可能的方法似乎是(调用答案中未包含的 shell 命令,但应该非常简单):

xdpyinfo | awk '/dimensions:/ { print $2 }'

评论:在多显示器设置中,这将显示包含所有显示器的边界框的尺寸。

信用:https://unix.stackexchange.com/a/2682/126755

【讨论】:

    猜你喜欢
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多