¿Hay alguna forma de obtener las dimensiones de una pantalla a través de Xlib usando C? Intenté consultar los documentos de X.org (https://tronche.com/gui/x/xlib/display/screen-information.html), y sólo me da macros que no aceptan números enteros, así que estoy perdido.
Utilicé específicamente estas funciones de esta manera:
int sx;
int sy;
XWidthOfScreen(sx);
XWidthOfScreen(sy);
...
move_window(sx / 4)
move_window(sy / 4)
Soy un novato en la programación en C y estoy trabajando en mi primer proyecto.
Respuesta1
Este es un ejemplo simple, que imprimirá el tamaño de visualización y moverá la ventana del emulador de terminal en el que se ejecuta (si está configurado correctamente en la WINDOWID
variable de entorno) a ancho/4, alto/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;
}
Mi consejo sería una copia deEl manual de programación del X11, que es un HTML de una sola página en el que puedes buscar y que contiene todo lo relacionado con la programación de X11.
Tenga en cuenta que puede haber bibliotecas más amigables o portátiles, como gtk, qt, sdl, etc. Es posible que desee utilizar una de ellas en lugar de libX11 directamente.