Полноэкранное окно X11 (OpenGL) - PullRequest
6 голосов
/ 31 января 2012

Я пишу и OpenGL приложение на Linux (Ubuntu 11.10) с использованием Xlib (X11). Как проще всего реализовать переключение между оконным и полноэкранным режимами?

Ответы [ 2 ]

8 голосов
/ 10 июля 2013

Вот реализация , которую предложил Havoc P , чтобы сэкономить следующему человеку усилия:

void fullscreen(Display* dpy, Window win) {
  Atom atoms[2] = { XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False), None };
  XChangeProperty(
      dpy, 
      win, 
      XInternAtom(dpy, "_NET_WM_STATE", False),
      XA_ATOM, 32, PropModeReplace, atoms, 1
  );
}
4 голосов
/ 31 января 2012

на уровне протокола, см. Свойство _NET_WM_STATE с сопровождающим клиентским сообщением и полноэкранным флагом состояния. это указано в спецификации EWMH. для получения бонусных баллов вы можете захотеть реализовать полноэкранный режим вручную, если WM не сообщает о поддержке официальной подсказки, EWMH определяет способ проверки того, что поддерживается. Вы также можете захватить указатель мыши и / или клавиатура, если вы не хотите, чтобы люди случайно покинули полноэкранный режим.

или, чтобы избежать изучения низкоуровневого X gunge, просто используйте SDL или GTK или Qt или что-то еще, и у них всех должен быть простой вызов метода для переключения в полноэкранный режим.

...