使用 C 通过 Xlib 获取当前屏幕尺寸

使用 C 通过 Xlib 获取当前屏幕尺寸

有没有办法使用 C 通过 Xlib 获取显示器的屏幕尺寸?我尝试参考 X.org 文档(https://tronche.com/gui/x/xlib/display/screen-information.html),它只给我不接受整数的宏,所以我不知所措。

我专门这样使用这些函数:

int sx;
int sy;
XWidthOfScreen(sx);
XWidthOfScreen(sy);

...

move_window(sx / 4)
move_window(sy / 4)

我是 C 编程新手,正在开发我的第一个项目。

答案1

这是一个简单的例子,它将打印显示尺寸并将其运行的终端仿真器的窗口(如果在WINDOWID环境变量中正确设置)移动到宽度/4、高度/4:

#include <X11/Xlib.h>
#include <err.h>
#include <stdio.h>
#include <stdlib.h>

int main(int ac, char **av){
        char *wid; Display *dpy; Window w;
        int width, height, snum;
        if(!(dpy = XOpenDisplay(0)))
                errx(1, "cannot open display '%s'", XDisplayName(0));
        snum = DefaultScreen(dpy);
        width = DisplayWidth(dpy, snum);
        height = DisplayHeight(dpy, snum);
        printf("display size is %d x %d\n", width, height);
        if((wid = getenv("WINDOWID")) && (w = strtoul(wid, 0, 0))){
                XMoveWindow(dpy, w, width / 4, height / 4);
                XSync(dpy, False);
        }
        return 0;
}

我的建议是复制X11 编程手册,这是一个单页 html,您可以搜索它并包含有关 X11 编程的所有内容。

请注意,可能有更友好或可移植的库,例如 gtk、qt、sdl 等。您可能想使用其中之一而不是直接使用 libX11。

相关内容