$ cat 2.cpp #include #include #include #include #include #define X 0 #define Y 0 #define WIDTH 1024 #define HEIGHT 768 #define WIDTH_MIN 1024 #define HEIGHT_MIN 768 #define BORDER_WIDTH 0 int main(int argc, char *argv[]) { Display * display; /* Указатель на структуру Display */ int ScreenNumber; /* Номер экрана */ GC gc; /* Графический контекст */ XEvent report; Window window; /* Устанавливаем связь с сервером */ if ( ( display = XOpenDisplay ( NULL ) ) == NULL ) { puts ("Can not connect to the X server!\n"); return 1; } /* Получаем номер основного экрана */ ScreenNumber = DefaultScreen ( display ); /* Создаем окно */ window = XCreateSimpleWindow ( display, RootWindow ( display, ScreenNumber ), X, Y, WIDTH, HEIGHT, BORDER_WIDTH, BlackPixel ( display, ScreenNumber ), WhitePixel ( display, ScreenNumber ) ); /* Выбираем события, которые будет обрабатывать программа */ XSelectInput ( display, window, KeyPressMask ); /* Покажем окно */ XMapWindow ( display, window ); // развернем его на весь экран Atom wmState = XInternAtom(display, "_NET_WM_STATE", false); Atom atfullScreen = XInternAtom(display,"_NET_WM_STATE_FULLSCREEN", false); XEvent xev; xev.xclient.type=ClientMessage; xev.xclient.serial = 0; xev.xclient.send_event=True; xev.xclient.window=window; xev.xclient.message_type=wmState; xev.xclient.format=32; xev.xclient.data.l[0] = 1;//add xev.xclient.data.l[1] = atfullScreen; xev.xclient.data.l[2] = 0; XSendEvent(display, DefaultRootWindow(display), false, SubstructureRedirectMask | SubstructureNotifyMask, &xev); XMoveResizeWindow(display, window, 0,0,WIDTH,HEIGHT); //Спрячем курсор мыши Pixmap bm_no; Colormap cmap; Cursor no_ptr; XColor black, dummy; static char bm_no_data[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; cmap = DefaultColormap(display, DefaultScreen(display)); XAllocNamedColor(display, cmap, "black", &black, &dummy); bm_no = XCreateBitmapFromData(display, window, bm_no_data, 8, 8); no_ptr = XCreatePixmapCursor(display, bm_no, bm_no, &black, &black, 0, 0); XDefineCursor(display, window, no_ptr); XFreeCursor(display, no_ptr); if (bm_no != None) XFreePixmap(display, bm_no); XFreeColors(display, cmap, &black.pixel, 1, 0); /* Создадим цикл получения и обработки ошибок */ while ( 1 ) { XNextEvent ( display, &report ); switch ( report.type ) { case KeyPress : /* Выход нажатием клавиши клавиатуры */ XCloseDisplay ( display ); return 0; } } } Компиляем: g++ 2.cpp -lX11 -lXrender -lXau -lXdmcp -ldl -lpthread -static в результате после выхода по нажатию клавиши: $ ./a.out *** glibc detected *** double free or corruption (out): 0xb7c4a1c0 *** Aborted компиляем: $ g++ 2.cpp -lX11 -lXrender -lXau -lXdmcp -ldl -lpthread $ ./a.out $