fabim escreveu:não, não é isso !!
Mais de certa forma você ja respondeu minha duvida, com outra pergunta !! hehe
Meu, eu estou muito confuso sobre
X e gnome/kde/outro_qualquer.
O UI seria um user interface igual o kernel linux, com o android por exemplo.
Eu estou tentando, juro que estou, procurar o conceito de servidor gráfico que é o ubuntu propriamente dito, com o x.
Ta muito confuso isso pra mim, eu ja li e não consegui compreender !!!
vc tem que ver as camadas do negocio:
- display
- placa de video
- frame buffer em kernelspace
- frame buffer em userspace (mmap)
- X server
- X library (Xlib)
- X toolkit (qt, gtk, motif, etc)
- aplicacao
com um certo esforco vc consegue moldar isso num layout ISO de 7 camadas hehehe bom, indo direto ao ponto: vc pode criar uma aplicacao que acessa diretamente o frame buffer via mmap, mas fazendo isso vc abre mao de todos os recursos legais que o X ter fornece: janelamento automatico, fontes em qq tamanho, eventos diversos, facilidades de desenho (pontos, linhas, quadrados, circulos, etc), bitmaps, etc. estes recursos vc encontra na API de qq sistema operacional, como windows e OSX, porem o X vai adiante: ele fornece uma camada cliente-servidor, que permite a aplicacao (X cliente) estar em uma maquina diferente do display (X server).
se vc quiser, vc faz sua aplicacao no nivel da X library e tem acesso a todos estes recursos, porem os recursos ainda nesse nivel, apesar de serem legais, sao bem baixo nivel. para vc ter uma nocao da coisa, vc pode dar uma olhada nesse artigo que eu escrevi para o tiranossauro rex:
http://xstep.sourceforge.net/xstep-3.5. ... index.html
a ideia da X library eh meio que enviar ordens remotas p/ o display. um XDrawLine, por exemplo, consiste em coordenadas para dizer onde desenhar a linha, mas alem disso requer a indicacao de um display, um screen e um contexto grafico:
int XDrawLine(Display *display, Drawable d, GC gc, int x1, int y1,int x2, int y2);
o display mapeia uma conexao remota, o screen eh uma tela nessa conexao remota e o contexto grafico contem informacoes como cores, mascaras, etc. a funcao na pratica apenas empacota as informacoes e envia pela rede p/ o display processar. normalmente as pessoas acham meio complicado fazer as coisas no braco diretamente na X library, entao eh mais comum vc usar um toolkit, que fornece widget e gadgets, q sao abstracoes graficas de alto nivel, como botoes, menus, etc. eu tb escrevi um artigo ilustrando a ideia e vc pode comparar o acesso ao nivel de X library e ao nivel de toolkit:
http://xstep.sourceforge.net/xstep-3.5. ... index.html
o toolkit simplifica a vida, mas obviamente ele proprio usa a X library p/ empacotar ordens e enviar p/ o X server. bom, mas pq nao ir direto ao assunto e fazer as apps acessarem diretamente o frame buffer? pq do ponto de vista pratico nao eh legal. como vimos, tem uma serie de recursos legais que a X library e os toolkits fornecem. o X server tambem pode ter mais recursos legais, como aceleracao 3D (OpenGL via extensao GLX), aceleracao de video (via extensao Xvideo) e por aih afora.
mas alem disso, tem a questao de organizacao: se todas as apps acessarem o display diretamente, vc soh pode ter uma app rodando de cada vez e ocupando o display inteiro. fazer isso via X tem a vantagem de permitir janelamento, ou seja, uma infinidade de apps em janelas, que podem estar espalhadas em diferentes screens (q sao os desktops virtuais) e diferentes displays.