• Lunes 23 de Diciembre de 2024, 09:48

Autor Tema:  ¿cómo Están Hechos Los Escritorios?  (Leído 2179 veces)

x.cyclop

  • Miembro de PLATA
  • *****
  • Mensajes: 1039
  • Nacionalidad: mx
    • Ver Perfil
¿cómo Están Hechos Los Escritorios?
« en: Miércoles 9 de Agosto de 2006, 23:59 »
0
¿Cómo están hechos los escritorios? :blink:

Cuando yo quiero hacer una aplicación con GUI en GNU/Linux (o talvez también válido para todo *nix) me baso en las APIs (o no se como se llamen :unsure: ) Qt o Gtk+, ahora, ¿en qué se basa uno para hacer un escritorio tipo KDE, GNOME, Xfce...?

Y ya de paso... ¿es lo mismo en Windows (obviamente usando Win32 en vez de Qt/Gtk+)?

- Great works aren't produced on the first try. [Ernest Hemingway]
- Be ambitious, yet realistic in your dreams. Do something that makes a positive impact. Don’t let the nay-sayers get you down. [Bjarne Stroustrup]

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: ¿cómo Están Hechos Los Escritorios?
« Respuesta #1 en: Jueves 10 de Agosto de 2006, 00:18 »
0
Para Gnu/Linux y UNIX en general pode s usar cualquier API, pero deves saber si el mismo soporta  iccc y atom
El Desktop/WM esta viforcado de esta manera:
Desktop
|
 ---------------------
|                            \
WM Panel              Windows Manager
|                              |
Apps              ICCC - WM Spec
EL EM Panel es tan solo un programa donde contiene un "ejecutador", el titlebar y el iconbar.
El "Windows Manager" viene siendo el que cotrola las ventanas, por ICCC (Inter-Client Communication Convertions) que lo vrinda el API de Xlib, no se si lo tenga Gtk/Qt/Tk
Mira este tutorial:
X Consortium & ICCC
En gnome-developers.org hay un poco de esto, es mas, cro que hay un libro gratis, buscalos.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

x.cyclop

  • Miembro de PLATA
  • *****
  • Mensajes: 1039
  • Nacionalidad: mx
    • Ver Perfil
Re: ¿cómo Están Hechos Los Escritorios?
« Respuesta #2 en: Jueves 10 de Agosto de 2006, 01:21 »
0
Ok. Gracias. :P

- Great works aren't produced on the first try. [Ernest Hemingway]
- Be ambitious, yet realistic in your dreams. Do something that makes a positive impact. Don’t let the nay-sayers get you down. [Bjarne Stroustrup]

Last Dragon

  • Miembro MUY activo
  • ***
  • Mensajes: 109
    • Ver Perfil
    • http://www.lastdragon.net
Re: ¿cómo Están Hechos Los Escritorios?
« Respuesta #3 en: Lunes 4 de Septiembre de 2006, 08:49 »
0
Cita de: "X.Cyclop"
¿Cómo están hechos los escritorios? :blink:

Cuando yo quiero hacer una aplicación con GUI en GNU/Linux (o talvez también válido para todo *nix) me baso en las APIs (o no se como se llamen :unsure: ) Qt o Gtk+, ahora, ¿en qué se basa uno para hacer un escritorio tipo KDE, GNOME, Xfce...?

Y ya de paso... ¿es lo mismo en Windows (obviamente usando Win32 en vez de Qt/Gtk+)?
Bueno, hay 3 niveles básicos

Nivel mas bajo El escritorio real es el servidor X
Nivel medio sobre el escritorio van las Apis, como QT o Gtk
Nivel Alto sobre las apis o librerías se construyen los manejadores de ventana y los escritorios o framework y estos 2 son diferentes entre si y ambos se pueden omitir, uno al otro pero entonces uno o el otro estaría incompleto


Las ventanas las provee el servidor X, pero las ventanas se ven muy simples así nomás, son solo cuadros reservados para mostrar una aplicación grafica..

Para solucionar el aspecto visual vienen los manejadores de ventana que básicamente es ponerle piel al X (skin) y con esto ya tienen una apariencia más agradable, pero no esta integrado.

Por ejemplo un framework o integración común que conocemos es Windows, todos los programas son integrados por subprocesos que omitimos por que los damos por hecho. El más común es el clipboard o portapapeles. Ese simple copiar y pegar nos integra nuestros programas por que podemos pasar información entre programas que podrían ser escrito por gente que no se conoce y que nunca pensaron que sus programas interactuaran, pero al estar ambos programas en la misma pc interactúan al menos en el portapapeles


Entonces en los manejadores de ventanas esta función la viene a dar el framework que elegimos como KDE o Gnomo, que se encargan de lanzar procesos que permiten integrar los programas y a esto es lo que ya nosotros llamamos escritorio, en forma sinónima al escritorio de Windows.

Los escritorios framework y los manejadores de ventana están hechos con las mismas librerías que los programas que desarrollamos, así que si sabes moverte en GTK o QT fácilmente podrás escribir un nuevo manejador de ventanas y luego su framework de integración.

Por ejemplo Gnomo y XFCE estan escritos en GTK y son framework diferentes, pero comparten las apis básicas, por que usan las librerías GTK, KDE usa QT y cualquier otro framework y manejadores de ventanas podrían ser escritos partir de QT, así como de Gtk

En resumen los escritorios están hechos casi igual que los programas que corren sobre ellos o entre ellos y son básicamente framework para integrar programas


Ahora la muestra grafica.


En la siguiente pantalla se ve solo el X que es el escritorio real, capas de mostrar programas sin importar si son QT o GTK, pero muestra los programas silvestres, por que no hay ningún manejador de ventanas que como indica su nombre maneja las ventanas, permitiendo moverlas, minimizarlas o hacer algo. Simplemente son cuadros sin posibilidad de administrarse con el Mouse, pero totalmente funcional en su capacidad grafica y es por eso que corre una Terminal y el Gedit parte de la suite de Gnome, pero sin Gnomo solo el programa




La siguiente imagen, muestra las mismas aplicaciones ya con un manejador de ventanas el twm, pero este es un simple manejador de ventanas, le da al X la capacidad de manejar los cuadros antes estáticos, pero no permite una integración, por lo que el alt + tab para cambiar de aplicación no esta disponible y no hay nada que me permita pegar y copiar ni nada de los procesos que damos por hecho que sirven para integrarlo todo.



La ultima imagen es de nuevo los 2 programas pero ahora con una manejador de ventanas y además el framework o escritorio gnome y ahora si tenemos integrado los programas, ya podemos hacer uso del alt + tab , copiar y pegar , y todo lo que damos por hecho funciona entre programas



Espero que te sirva la explicación, por ultimo te dejo con un articulo que hice sobre portar aplicaciones visuales entre sistemas operativos, como una forma de escribir programas que sean idénticos para el usuario que final sin importar el OS que los ejecuta ni las librerías que dependen de el.

Programas visuales con C# en Windows y Linux
Servidor Personal de Last Dragon



www.lastdragon.net

x.cyclop

  • Miembro de PLATA
  • *****
  • Mensajes: 1039
  • Nacionalidad: mx
    • Ver Perfil
Re: ¿cómo Están Hechos Los Escritorios?
« Respuesta #4 en: Lunes 4 de Septiembre de 2006, 20:00 »
0
Citar
Por ejemplo Gnomo y XFCE estan escritos en GTK y son framework diferentes, pero comparten las apis básicas, por que usan las librerías GTK, KDE usa QT y cualquier otro framework y manejadores de ventanas podrían ser escritos partir de QT, así como de Gtk
Allí tengo una duda.

Windows tiene un archivo llamado Win32k.sys (supongo que es un driver) y con eso creo que todo lo que escribas con la API de Windows se "traduce" a Asm o a algo que la pc entiende para que cree ventanas y todo el escritorio.

Entonces, ¿los escritorios de *nix (KDE, Gnome, Fluxbox, Blackbox, Xfce...) son como en Windows? O sea, ¿hay también un archivo que "traduce" lo que escribas en Qt/Gtk al X server? :blink:

- Great works aren't produced on the first try. [Ernest Hemingway]
- Be ambitious, yet realistic in your dreams. Do something that makes a positive impact. Don’t let the nay-sayers get you down. [Bjarne Stroustrup]

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: ¿cómo Están Hechos Los Escritorios?
« Respuesta #5 en: Lunes 4 de Septiembre de 2006, 22:03 »
0
No, para nada, Qt, Gtk, wx... solo son APIs de Xlib, Xau...
Todo lo que  dice Last Dragon es muy cierto, yo creo que en los links que te puse bien dice un par de cosas de eso.
El ICCC y el WM Spect, son las palabras que resumen todo lo dicho.
En cuanto a lo de Xlib, en publicaciones de e-books puse unos links  ;)
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.