Получить текущие размеры экрана через Xlib, используя C

Получить текущие размеры экрана через Xlib, используя C

Есть ли способ получить размеры экрана дисплея через Xlib с использованием C? Я пробовал ссылаться на документацию 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.

Связанный контент