LINUX.ORG.RU

История изменений

Исправление Zubok, (текущая версия) :

Вот я быстро накидал. Это работает. Вместо window надо идентификатор окна поставить. Не знаю, как ты его захватываешь в своей программе.

#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

Display *display;
unsigned long window;

int main(int argc, char** argv)
{

    Atom filter, net_wm_state, type;
    int i, format, status;
    unsigned long nitems, bytes_after;
    Atom *atoms;
    unsigned char *prop;

    display = XOpenDisplay(NULL);

    filter = XInternAtom(display, "_NET_WM_STATE_FULLSCREEN", False);
    net_wm_state = XInternAtom(display, "_NET_WM_STATE", False);

    status = XGetWindowProperty(display, window, net_wm_state, 0, LONG_MAX, 
				False, XA_ATOM, &type, &format, &nitems, 
				&bytes_after, &prop);
    atoms = (Atom *)prop;

    for (i = 0; i < nitems; i++) {
	if (atoms[i] == filter) {
	    printf("Fullscreen!\n");
	} 
    }
    
    XFree(prop);
    XCloseDisplay(display);
    return 0;
}

Исправление Zubok, :

Вот я быстро накидал. Это работает. Вместо window надо идентификатор окна поставить. Не знаю, как ты его захватываешь в своей программе.

#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

Display *display;
unsigned long window;

int main(int argc, char** argv)
{

    Atom filter, net_wm_state, type;
    int i, format, status;
    unsigned long nitems, bytes_after;
    Atom *atoms;
    unsigned char *prop;

    display = XOpenDisplay(NULL);

    int screen = XDefaultScreen(display);

    filter = XInternAtom(display, "_NET_WM_STATE_FULLSCREEN", False);
    net_wm_state = XInternAtom(display, "_NET_WM_STATE", False);

    status = XGetWindowProperty(display, window, net_wm_state, 0, LONG_MAX, 
				False, XA_ATOM, &type, &format, &nitems, 
				&bytes_after, &prop);
    atoms = (Atom *)prop;

    for (i = 0; i < nitems; i++) {
	if (atoms[i] == filter) {
	    printf("Fullscreen!\n");
	} 
    }
    
    XFree(prop);
    XCloseDisplay(display);
    return 0;
}

Исходная версия Zubok, :

Вот я быстро накидал. Это работает. Вместо window надо идентификатор окна поставить. Не знаю, как ты его захватываешь в своей программе.

#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

Display *display;
unsigned long window;

int main(int argc, char** argv)
{

    Atom filter, net_wm_state, type;
    int i, format, status;
    unsigned long nitems, bytes_after;
    Atom *atoms;
    unsigned char *prop;

    display = XOpenDisplay(NULL);

    int screen = XDefaultScreen(display);
    window = RootWindow(display, screen);

    filter = XInternAtom(display, "_NET_WM_STATE_FULLSCREEN", False);
    net_wm_state = XInternAtom(display, "_NET_WM_STATE", False);

    status = XGetWindowProperty(display, window, net_wm_state, 0, LONG_MAX, 
				False, XA_ATOM, &type, &format, &nitems, 
				&bytes_after, &prop);
    atoms = (Atom *)prop;

    for (i = 0; i < nitems; i++) {
	if (atoms[i] == filter) {
	    printf("Fullscreen!\n");
	} 
    }
    
    XFree(prop);
    XCloseDisplay(display);
    return 0;
}