Xlib

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 17. elokuuta 2018 tarkistetusta versiosta . tarkastukset vaativat 2 muokkausta .

Xlib ( X-kirjasto , venäjän kirjasto "iks" ) on C-kielellä kirjoitettu funktiokirjasto X Window -järjestelmän asiakkaalle .

Sisältää toimintoja vuorovaikutukseen ns. X palvelin. Kirjaston avulla voit käyttää korkeampaa abstraktiotasoa tietämättä yksityiskohtia siitä, miten taustalla oleva X Window System -protokolla toimii .

Jotkut käyttäjäsovellukset käyttävät Xlibiä suoraan (kuten Opera ), toiset käyttävät erityisiä " widget "-työkalusarjoja - "lisäosia" Xlib-ytimen kirjaston päällä.

Xlib - kirjasto ilmestyi noin vuonna 1985 , ja sitä käytetään tällä hetkellä perustana ja pääasiallisena graafisena käyttöliittymänä monissa Unix - kaltaisissa käyttöjärjestelmissä .

XCB -kirjasto on yritys kehittää Xlibille korvaava.

XLib-funktiot

XLib-funktiot voidaan ryhmitellä useisiin luokkiin:

  1. X-palvelinyhteydenhallintatoiminnot, kuten XOpenDisplay,XCloseDisplay
  2. Pyynnöt X-palvelimelle, kuten XCreateWindow, XCreateSimpleWindow, XCreateGC,XCreateColomap
  3. Käyttöliittymätoiminnot, kuten tapahtumien hallinta: XNextEventtai paikallisten tietojen toiminnot XCreateImage.

Ohjelmaesimerkki

Seuraava ohjelmaesimerkki muodostaa yhteyden X-palvelimeen ja näyttää tervetuloikkunan:

/* Kääntä seuraavaksi. rivi: cc test.c -o test -lX11 */ #include <X11/Xlib.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> extern int errno ; int main ( void ) { Näyttö * d ; Ikkuna w ; XEvent e ; const char * msg = "Hei maailma!" ; int s ; /* Yhdistä X-palvelimeen, jos X-palvelin on etäkoneessa * pitäisi sallia X-palvelinta käyttävässä koneessa * etäyhteydet xhost+-komennolla (katso man xhost) */ if (( d = XOpenDisplay ( getenv ( "DISPLAY" ))) == NULL ) { printf ( "Ei voi muodostaa yhteyttä X-palvelimeen:%s \n " , strerror ( errno )); uloskäynti ( 1 ); } s = XDefaultScreen ( d ); /* Luo ikkuna */ w = XCreateSimpleWindow ( d , RootWindow ( d , s ), 10 , 10 , 200 , 200 , 1 , XBlackPixel ( d , s ), XWhitePixel ( d , s )); /* Mihin tapahtumiin reagoimme */ XSelectInput ( d , w , ExposureMask | KeyPressMask ); /* Näytä ikkuna */ XMapWindow ( d , w ); /* ääretön tapahtumasilmukka */ kun ( 1 ) { XNextEvent ( d , & e ); /* Piirrä ikkuna uudelleen */ if ( e . type == Expose ) { XFillRectangle ( d , w , OletusGC ( d , s ), 20 , 20 , 10 , 10 ); XDrawString ( d , w , DefaultGC ( d , s ), 50 , 50 , msg , strlen ( msg )); } /* Painike klikkaa-poistu */ jos ( esim . tyyppi == Näppäinpainallus ) tauko ; } /* Sulje yhteys X-palvelimeen */ XCloseDisplay ( d ); paluu 0 ; }

Asiakas (ohjelma) luo yhteyden X-palvelimeen funktiolla XOpenDisplay, jolle välitetään osoitin ajonaikaisen ympäristömuuttujan kautta määritettyyn DISPLAY-kohtaan. UNIXissa tämä voidaan tehdä export DISPLAY=":0.0" -komennolla . DISPLAY-muuttuja voidaan asettaa myös etäkoneeseen, jossa on X-palvelin. Funktio (makro) DefaultScreenvalitsee nykyisen näytön (X-ikkunassa voi olla useita näyttöjä), XCreateSimpleWindowluo ikkunan ja XSelectInput määrittää tapahtumat, joihin ikkunan tulee vastata. XMapWindownäyttää ikkunan näytöllä ja XNextEventvalitsee jonosta yllä määritellyn tapahtuman. Kun tapahtuma Exposetapahtuu, ikkunaan piirretään suorakulmio ja merkkijono "Hello World!" tulee näkyviin. Kun painat näppäimistön näppäintä, ohjelma poistuu.

Linkit