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