Aktuelle Bildschirmabmessungen über Xlib mit C abrufen

Aktuelle Bildschirmabmessungen über Xlib mit C abrufen

Gibt es eine Möglichkeit, die Bildschirmabmessungen eines Displays über Xlib mit C zu ermitteln? Ich habe versucht, in den X.org-Dokumenten nachzuschlagen (https://tronche.com/gui/x/xlib/display/screen-information.html), und es gibt mir nur Makros, die keine Ganzzahlen akzeptieren, also bin ich ratlos.

Ich habe diese Funktionen konkret folgendermaßen eingesetzt:

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

...

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

Ich bin ein Neuling in der C-Programmierung und arbeite an meinem ersten Projekt.

Antwort1

Dies ist ein einfaches Beispiel, das die Anzeigegröße druckt und das Fenster des Terminalemulators, in dem es ausgeführt wird (bei korrekter Einstellung in der WINDOWIDUmgebungsvariablen), auf Breite / 4, Höhe / 4 verschiebt:

#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;
}

Mein Rat wäre eine Kopie vonDas X11-Programmierhandbuch, eine einseitige HTML-Seite, die Sie durchsuchen können und die alles zur X11-Programmierung enthält.

Beachten Sie, dass es möglicherweise benutzerfreundlichere oder portablere Bibliotheken gibt, wie z. B. gtk, qt, sdl usw. Möglicherweise möchten Sie eine dieser Bibliotheken direkt anstelle von libX11 verwenden.

verwandte Informationen