2009-12-01 3 views

ответ

4

Если Xinerama используется, попробуйте XineramaQueryScreens. В противном случае, вы можете быть в состоянии взять на себя один экран и использовать (X)WidthOfScreen/(X)HeightOfScreen.

(Также смотрите другой ответ. Это отдаленно возможно кто-то использует старую модель X экрана, где ваши экраны :x.0, :x.1 и т.д.)

+0

+1 для Xinerama – asveikau

5

Для современных серверов X имеется также расширение XRandR, которое предоставляет самую современную модель информации о многоэкранном макете, включая перекрывающиеся экраны и динамические изменения экрана.

Документация по нему доступна в XRandR 1.3.1 Protocol spec и libXrandr man page.

10

Это может быть полезно для кли и сценариев

xwininfo -root 

Но XRandR может быть более точным, особенно, когда есть множественная среда монитора:

xrandr 
+0

Казалось 'xrandr' по сравнению с' xwininfo -root' не расскажите о мониторе, который в настоящее время активен. Однако это говорит вам о мониторе по доверенности активного корневого окна. – CMCDragonkai

1

Чистый xrandr выход для использования ImageMagick

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

Это не связано с X11? –

1

Библиотека X11 работает только с unix-подобная ОС, поэтому это не межплатформенное решение.

Полный код

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

Компиляция

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

Результат (актуально для моего компьютера)

Total count screens: 1 
    Screen 1: 1366X768 

основе:

  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

Благодарим за предоставленный код. Вы знаете ответ на мой вопрос: http://stackoverflow.com/questions/42987932/is-a-monitor-in-gtk3-the-same-as-a-screen-in-x11. Я спрашиваю, являются ли экраны, которые вы находите в этом коде, так же, как то, что Gtk3 3.22 вызывает мониторы. –

Смежные вопросы