Я пытаюсь создать приложение 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 с тем же файлом!)