Как программно получить разрешение окна и разрешение системы в Linux? - PullRequest
10 голосов
/ 20 июля 2009

Я пытаюсь получить разрешение экрана, а также разрешение определенного окна (в котором запущена программа) в системе Linux. Мне не нужно изменять разрешение, мне нужны только текущие значения. Насколько я знаю, мы можем вызывать некоторые системные функции для этого в Windows, как мы можем сделать это в Linux, предпочтительно используя язык C / C ++? Заранее спасибо.

обновление: на самом деле, мне не нужно делать GUI, хотя я знаю, что Qt и GTK + могут это сделать, я не хочу включать внешнюю библиотеку для получения разрешения.

Ответы [ 4 ]

9 голосов
/ 20 июля 2009

Чтобы получить разрешение экрана, вы можете использовать расширение XRandR, как в xrandr sources:

  SizeID        current_size;
  XRRScreenSize *sizes;
  dpy = XOpenDisplay (display_name);
  // ...
  root = RootWindow (dpy, screen);
  sc = XRRGetScreenInfo (dpy, root);
  current_size = XRRConfigCurrentConfiguration (sc, &current_rotation);
  sizes = XRRConfigSizes(sc, &nsize);
  for (i = 0; i < nsize; i++) {
    printf ("%c%-2d %5d x %-5d  (%4dmm x%4dmm )",
         i == current_size ? '*' : ' ',
         i, sizes[i].width, sizes[i].height,
         sizes[i].mwidth, sizes[i].mheight);
     // ...
  }

Вы можете увидеть вывод команды «xrandr» в вашем xterm.

Или, лучше, используйте метод xdpyinfo :

Display *dpy;
// dpy = ...
int scr = /* ... */
printf ("  dimensions:    %dx%d pixels (%dx%d millimeters)\n",
        DisplayWidth (dpy, scr), DisplayHeight (dpy, scr),
        DisplayWidthMM(dpy, scr), DisplayHeightMM (dpy, scr));
6 голосов
/ 20 июля 2009

Зависит от:

6 голосов
/ 20 июля 2009

В X11 вам необходимо вызвать XGetWindowAttributes Xlib, чтобы получить различную информацию о окне, включая размер и положение относительно родителя. Для примера того, как он используется, вы можете зайти на сайт Google для «xwininfo.c».

Тем не менее, возможно, вы собираетесь использовать более высокоуровневый фреймворк для программирования окон - и велика вероятность, что у него уже есть некоторые другие примитивы для этого, см. Пример для Qt - так Возможно, вы захотите дать немного больше информации об этом вопросе.

0 голосов
/ 20 июля 2009

Инструмент командной строки xdpyinfo предоставляет эту информацию для вас; чтобы сделать это программно, вам нужно использовать Xlib, как объясняет Эндрю Y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...