首页 > 解决方案 > 如何在 C++ 中获得所有连接到 Linux 机器的显示器的组合分辨率?

问题描述

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

如何在 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;
        }

谢谢你。

标签: c++linuxx11screen-resolution

解决方案


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

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

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

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


推荐阅读