Xorg

使用 C 通過 Xlib 獲取目前螢幕尺寸

  • April 6, 2020

有沒有辦法通過 Xlib 使用 C 來獲取顯示器的螢幕尺寸?我試過參考 X.org 文件(https://tronche.com/gui/x/xlib/display/screen-information.html),它只給了我不接受整數的宏,所以我米不知所措。

我專門以這種方式使用了這些功能:

int sx;
int sy;
XWidthOfScreen(sx);
XWidthOfScreen(sy);

...

move_window(sx / 4)
move_window(sy / 4)

我是 C 程式的菜鳥,正在做我的第一個項目。

這是一個簡單的範例,它將列印顯示尺寸並將其執行的終端模擬器的視窗(如果在WINDOWID環境變數中正確設置)移動到寬度/4,高度/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;
}

我的建議是X11 程式手冊的副本,它是一個單頁 html,您可以搜尋並包含有關 X11 程式的所有內容。

請注意,可能有更友好或可移植的庫,如 gtk、qt、sdl 等。您可能希望直接使用其中之一而不是 libX11。

引用自:https://unix.stackexchange.com/questions/573121