Я пытаюсь создать приложение для Linux - в данном случае экранную заставку, - и замечательно трудно найти информацию о простой задаче сделать окно полноэкранным. Даже в коде существующих заставок ничего не говорится о том, как они справляются с этим, и я еще не видел какой-либо очевидной функции, такой как XRemoveDecoration()
.
После долгих раздумий мне удалось создать окно того же размера, что и рабочий стол, с этим:
Window win = DefaultRootWindow(disp);
XWindowAttributes getWinAttr;
XGetWindowAttributes(disp, win, &getWinAttr);
win = XCreateWindow(disp, win, 0, 0, getWinAttr.width, getWinAttr.height, 0, vInfo->depth, InputOutput, vInfo->visual, CWBorderPixel|CWColormap|CWEventMask|CWOverrideRedirect, &winAttr );
Но это ничего не делает, чтобы избавиться от заголовка и границ. Очевидно, я знаю, что есть способ, но мне еще предстоит найти что-то, даже указывающее в этом направлении, которое бы не зависело от какой-то другой массивной библиотеки, которую бросают сверху (которую уже не используют существующие заставки).
РЕДАКТИРОВАТЬ: Пожалуйста, не удаляйте информацию из моих сообщений. Есть очень веская причина, по которой я недвусмысленно указал, что существующие заставки не используют дополнительные библиотеки, и это потому, что я анализировал исходный код большую часть прошедшего дня.
Я выбрал ответ, который наиболее непосредственно отвечает на вопрос и применим к приложениям в целом.
Если вы нашли этот вопрос, исследуя xscreensavers ... то же самое относится и к. Да, у xscreensaver есть собственный API - который сложен и на самом деле включает в себя написание большего количества строк кода (да, серьезно). Если вы хотите использовать OpenGL в своей заставке, вам нужно будет пройти через другой API (xlockmore, конкурирующая система) и уровень совместимости, который переводит его в xscreensaver.
Однако xscreensaver способен запускать любую программу, которая может использовать виртуальные корневые окна (смотрите vroot.h) в качестве заставки. Поэтому я советую просто сделать это - у вас будет больше контроля, нет ограничений API и улучшена переносимость. (Один из примеров, который я рассмотрел, может даже скомпилироваться для Linux или Windows с одним и тем же файлом!)