// Liest größe der angeschlossenen Monitore aus // Quelle: http://stackoverflow.com/questions/836086/programmatically-determining-individual-screen-widths-heights-in-linux-w-xineram #include #define bool int #define true 1 #define false 0 int main(int argc, char *argv[]) { GdkScreen *gdkscreen; int i; bool screen = true; bool monitor = true; bool human = true; bool help = false; for(i=1; i < argc; i++) { if (argv[i][0] == '-' ) { switch (argv[i][1]) { case 's': monitor = false; break; case 'm': screen = false; break; case 'n': human = false; break; default: help = true; } } else { help = true; } } if (help) { fprintf (stderr, "Usage: %s [-s|-m] [-H]\n", argv[0]); fprintf (stderr, "\t-s get only screen size\n"); fprintf (stderr, "\t-m get only monitor sizes\n"); fprintf (stderr, "\t-n no human readable output\n"); return 1; } g_type_init(); gtk_init(NULL, NULL); gdkscreen = gdk_screen_get_default (); if (screen) { if (human) { printf ("screen size (%d, %d)\n", gdk_screen_get_width(gdkscreen), gdk_screen_get_height(gdkscreen)); } else { printf ("%d %d\n", gdk_screen_get_width(gdkscreen), gdk_screen_get_height(gdkscreen)); } } if (monitor) { for (i = 0; i < gdk_screen_get_n_monitors (gdkscreen); i++) { GdkRectangle rect; gdk_screen_get_monitor_geometry (gdkscreen, i, &rect); if (human) { printf ("monitor %d: offsets (%d, %d), size (%d, %d)\n", i, rect.x, rect.y, rect.width, rect.height); } else { printf ("%d %d %d %d\n", rect.x, rect.y, rect.width, rect.height); } } } return 0; }