Sto provando a creare un'applicazione Linux - uno screensaver, in questo caso - e si sta dimostrando straordinariamente difficile trovare informazioni sul semplice compito di rendere una finestra a schermo intero. Anche il codice degli screensaver esistenti non fa menzione di come lo gestiscono, e non ho ancora visto nessuna funzione ovvia come XRemoveDecoration()
.X11/GLX - Modalità schermo intero?
Dopo molte armeggiare intorno, sono riuscito a creare una finestra che è la stessa dimensione del desktop, con questo:
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);
Ma che non fa nulla per sbarazzarsi della barra del titolo e le frontiere. So che c'è un modo, ovviamente - ma devo ancora trovare qualcosa che indichi anche in quella direzione che non si basa su altre enormi librerie che vengono gettate in cima (che gli screensaver esistenti non usano sicuramente).
MODIFICA: Si prega di non rimuovere le informazioni dai miei messaggi. C'è una buona ragione per cui ho sottolineato esplicitamente che gli screensaver esistenti non utilizzano librerie opzionali, e questo perché ho analizzato il codice sorgente per gran parte del giorno passato.
Ho scelto la risposta che risponde più direttamente alla domanda e si applica alle applicazioni in generale.
Se hai trovato questa domanda alla ricerca di xscreensavers ... lo stesso vale ancora. Sì, xscreensaver ha la sua API - che è complicata, e in realtà comporta la scrittura di più righe di codice (sì, sul serio). Se vuoi OpenGL nel tuo salvaschermo, devi passare attraverso un altro API (xlockmore, un sistema concorrente) e un livello di compatibilità che lo traduce in xscreensaver.
Tuttavia, xscreensaver è in grado di eseguire qualsiasi programma che può utilizzare finestre di root virtuale (guarda in vroot.h) come screensaver. Quindi il mio consiglio è di farlo - avrai più controllo, nessuna API limitante e una maggiore portabilità. (Un esempio ho guardato può anche compilare per Linux o Windows, con lo stesso file!)
+1 per aver ovviamente svolto alcune ricerche. – Flexo