Usando GTK sin DISPLAY

¿Es posible usar GTK sin una pantalla X válida?

Quiero usar GTK con Webkit, pero por ahora solo estoy interesado en usar las funciones DOM para experimentar, así que no necesito mostrar nada. Es muy conveniente para mí hacer esto a través de una conexión SSH en un servidor que no tiene pantalla.

Pero, sin un DISPLAY Variable ambiental, gtk_init() simplemente falla con el mensaje:

Gtk-WARNING **: cannot open display:

¿Hay alguna forma de usar GTK sin una pantalla?

preguntado el 27 de julio de 12 a las 20:07

4 Respuestas

Hay un servidor X llamado Xvfb que proporciona un DISPLAY y envía la salida a un archivo en lugar de a un hardware de gráficos. Puede ejecutar eso en la misma máquina que está ejecutando su cliente gtk, y gtk podrá hacer lo que quiera sin usar nada del ancho de banda de su red. Como beneficio adicional, puede leer el búfer de salida de Xvfb del archivo, lo que le permite obtener una captura de pantalla de lo que estaría en la pantalla.

Respondido 27 Jul 12, 22:07

Xvnc se puede utilizar con un efecto similar. La diferencia es que Xvnc permite que vncviewer interactúe completamente con la pantalla. - El Amigo

Si bien no es una respuesta directa a su pregunta, creo que lo que está buscando es un navegador web "sin cabeza". Hay uno basado en WebKit, llamado PhantomJS. No requiere ninguna pila de GUI, y puedes experimentar libremente con DOM allí.

Respondido 27 Jul 12, 23:07

Gtk+ 3 (bueno, GDK) tiene soporte para múltiples backends ahora, pero todavía requiere X11, Wayland o Broadway (backend HTML5 experimental) para funcionar.

DISPLAY no necesariamente necesita hardware real; puede ejecutar un servidor X falso como xvfb o Xvnc.

Respondido 28 Jul 12, 01:07

Me alegro de haber leído los documentos más a fondo y no solo creer esta respuesta.

gtk_init_check()

Esta función hace el mismo trabajo que gtk_init() con un solo cambio: no finaliza el programa si el sistema de ventanas no se puede inicializar. En su lugar, devuelve FALSO en caso de falla.

contestado el 04 de mayo de 17 a las 23:05

Si lees aún más profundamente, encontrarás Note that calling any GTK function or instantiating any GTK type after this function returns FALSE results in undefined behavior.... por lo que su millaje puede variar. - Cheshirekow

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.