2009-12-01 14 views

Respuesta

4

Si Xinerama está en uso, intente XineramaQueryScreens. De lo contrario, es posible que pueda suponer una sola pantalla y utilizar (X)WidthOfScreen/(X)HeightOfScreen.

(Véase también la otra respuesta. Es remotamente posible que alguien está usando el viejo modelo de pantalla X donde sus pantallas son :x.0, :x.1, etc.)

+0

+1 para xinerama – asveikau

5

Para los servidores X modernos, también está la extensión XRandR, que proporciona el modelo más actualizado de información de diseño de pantallas múltiples, incluyendo pantallas superpuestas y cambios de pantalla dinámicos.

La documentación está disponible en XRandR 1.3.1 Protocol spec y libXrandr man page.

10

Esto podría ser atento para cli y secuencias de comandos

xwininfo -root 

Pero XRandR podría ser más preciso, sobre todo, cuando hay múltiples entorno de monitor:

xrandr 
+0

Se parece '' xrandr' comparación con xwininfo -root' no lo hace Sin embargo, le informamos sobre el monitor que está actualmente activo. Sin embargo, le informa sobre el monitor por proxy de la ventana raíz activa. – CMCDragonkai

1

Limpio xrandr producción para uso ImageMagick

xrandr |grep \* |awk '{print $1}' 
+0

No está relacionado con el X11? –

1

La biblioteca X11 funciona solo con sistema operativo tipo Unix, por lo que no es una solución multiplataforma.

Un código completo

#include <stdio.h> 

#include <X11/Xlib.h> 

int 
main(const int argc, const char *argv[]) 
{ 

    Display *display; 
    Screen *screen; 

    // open a display 
    display = XOpenDisplay(NULL); 

    // return the number of available screens 
    int count_screens = ScreenCount(display); 

    printf("Total count screens: %d\n", count_screens); 


    for (int i = 0; i < count_screens; ++i) { 
     screen = ScreenOfDisplay(display, i); 
     printf("\tScreen %d: %dX%d\n", i + 1, screen->width, screen->height); 
    } 

    // close the display 
    XCloseDisplay(display); 

    return 0; 
} 

Una recopilación

gcc -o setup setup.c -std=c11 `pkg-config --cflags --libs x11` 

Un resultado (real para mi ordenador)

Total count screens: 1 
    Screen 1: 1366X768 

Basado en:

  1. https://tronche.com/gui/x/xlib/display/opening.html
  2. https://tronche.com/gui/x/xlib/display/display-macros.html
  3. https://tronche.com/gui/x/xlib/display/screen-information.html
  4. https://stackoverflow.com/a/1829747/6003870
+0

Gracias por proporcionar el código. ¿Conoce la respuesta a mi pregunta? Http://stackoverflow.com/questions/42987932/is-a-monitor-in-gtk3-the-same-as-a-screen-in-x11. Pregunto si las pantallas que está encontrando en este código son las mismas que Gtk3 3.22 llama monitores. –

Cuestiones relacionadas