2009-12-01 33 views

Trả lời

4

Nếu Xinerama đang được sử dụng, hãy thử XineramaQueryScreens. Nếu không, bạn có thể giả định một màn hình duy nhất và sử dụng (X)WidthOfScreen/(X)HeightOfScreen.

(Cũng xem câu trả lời khác. Đó là điều khiển từ xa có thể ai đó đang sử dụng mô hình X màn hình cũ, nơi màn hình của bạn là :x.0, :x.1, vv)

+0

+1 cho Xinerama – asveikau

5

Đối với các máy chủ X hiện đại, cũng có phần mở rộng XRandR, cung cấp mô hình cập nhật thông tin bố cục đa màn hình mới nhất, bao gồm cả màn hình chồng chéo và thay đổi màn hình động.

Tài liệu về nó có sẵn trong XRandR 1.3.1 Protocol speclibXrandr man page.

10

Điều này có thể hữu ích cho cli và kịch bản

xwininfo -root 

Nhưng xrandr có thể chính xác hơn, đặc biệt là khi có nhiều môi trường màn hình:

xrandr 
+0

Nó dường như 'xrandr' so với 'xwininfo -root' không làm cho bạn biết về màn hình hiện đang hoạt động. Tuy nhiên nó cho bạn biết về màn hình bằng proxy của cửa sổ gốc đang hoạt động. – CMCDragonkai

1

sạch xrandr đầu ra để sử dụng ImageMagick

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

Nó không liên quan đến X11? –

1

Thư viện X11 chỉ hoạt động với unix giống như hệ điều hành, do đó, nó không phải là một giải pháp đa nền tảng.

Một mã đầy đủ

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

Một biên soạn

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

Một kết quả (thực tế cho máy tính của tôi)

Total count screens: 1 
    Screen 1: 1366X768 

Dựa trên:

  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

Cảm ơn bạn đã cung cấp mã. Bạn có biết câu trả lời cho câu hỏi của tôi không: http://stackoverflow.com/questions/42987932/is-a-monitor-in-gtk3-the-same-as-a-screen-in-x11. Tôi hỏi nếu các màn hình bạn đang tìm thấy trong mã này là giống như những gì Gtk3 3.22 gọi màn hình. –

Các vấn đề liên quan