Xlib

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 17. august 2018; checks kræver 2 redigeringer .

Xlib ( X-bibliotek , russisk bibliotek "iks" ) er et bibliotek med funktioner til klienten af ​​X Window-systemet , skrevet på C-sproget .

Indeholder funktioner til at interagere med den såkaldte. X server. Biblioteket giver dig mulighed for at bruge et højere abstraktionsniveau uden at kende detaljerne om, hvordan den underliggende X Window System-protokol fungerer .

Nogle brugerapplikationer bruger Xlib direkte (såsom Opera ), andre bruger specielle " widget "-værktøjssæt - "add-ons" oven på Xlib-kernebiblioteket.

Xlib-biblioteket dukkede op omkring 1985 og bruges i øjeblikket som basis og som den primære grafiske brugergrænseflade i mange Unix - lignende operativsystemer .

XCB -biblioteket er et forsøg på at udvikle en erstatning for Xlib.

XLib-funktioner

XLib-funktioner kan grupperes i flere kategorier:

  1. X-serverforbindelsesstyringsoperationer såsom XOpenDisplay,XCloseDisplay
  2. Forespørgsler til X-serveren såsom XCreateWindow, XCreateSimpleWindow, XCreateGC,XCreateColomap
  3. Front-end operationer såsom hændelsesstyring: XNextEventeller operationer på lokale data XCreateImage.

Programeksempel

Følgende programeksempel etablerer en forbindelse til X-serveren og viser et velkomstvindue:

/* Kompiler næste. linje: cc test.c -o test -lX11 */ #include <X11/Xlib.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> ekstern int errno ; int main ( void ) { Display * d ; Vindue w ; XEvent e ; const char * msg = "Hej verden!" ; int s ; /* Opret forbindelse til X-serveren, hvis X-serveren er på en ekstern maskine * bør tillades på den maskine, der kører X-serveren * fjernforbindelser med kommandoen xhost+ (se man xhost) */ if (( d = XOpenDisplay ( getenv ( "DISPLAY" ))) == NULL ) { printf ( "Kan ikke oprette forbindelse til X-server:%s \n " , strerror ( errno )); udgang ( 1 ); } s = XDefaultScreen ( d ); /* Opret vindue */ w = XCreateSimpleWindow ( d , RootWindow ( d , s ), 10 , 10 , 200 , 200 , 1 , XBlackPixel ( d , s ), XWhitePixel ( d , s )); /* Hvilke begivenheder vil vi reagere på */ XSelectInput ( d , w , ExposureMask | KeyPressMask ); /* Vis vinduet */ XMapWindow ( d , w ); /* Uendelig hændelsesløkke */ mens ( 1 ) { XNextEvent ( d , & e ); /* Tegn vinduet igen */ if ( e . type == Expose ) { XFillRektangel ( d , w , DefaultGC ( d , s ), 20 , 20 , 10 , 10 ); XDrawString ( d , w , DefaultGC ( d , s ), 50 , 50 , msg , strlen ( msg )); } /* På knappen klik-afslut */ if ( e . type == Tastetryk ) bryde ; } /* Luk forbindelse til X-server */ XCloseDisplay ( d ); returnere 0 ; }

Klienten (programmet) opretter en forbindelse til X-serveren med funktionen XOpenDisplay, som sendes en pointer til DISPLAY, defineret gennem en runtime-miljøvariabel. På UNIX kan dette gøres med kommandoen eksport DISPLAY=":0.0". DISPLAY-variablen kan også indstilles til en ekstern maskine, der kører X-serveren. Funktionen (makro) DefaultScreenvælger den aktuelle skærm (et X-vindue kan have flere skærme), XCreateSimpleWindowopretter et vindue og XSelectInput specificerer de hændelser, vinduet skal reagere på. XMapWindowviser vinduet på skærmen og XNextEventvælger den hændelse, der blev defineret ovenfor, fra køen. Når begivenheden Exposeindtræffer, tegnes et rektangel i vinduet, og strengen "Hello World!" vises. Når du trykker på en tast på tastaturet, afsluttes programmet.

Links