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

Вы можете выяснить, какие файлы являются источником, отследив, какие файлы открывает bash:

strace -e open bash -l

Это должно распечатать все файлы, которые bash пытается открыть (многие из которых являются библиотеками C, которые вы можете использовать ). Это должно дать вам подсказки о том, где искать. (Параметр « -l» для bash запрашивает его запуск в качестве оболочки «входа», что обычно заставляет bash анализировать еще несколько файлов запуска.)

1
16.03.2020, 01:30
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.

3
28.04.2021, 23:20

Теги

Похожие вопросы