Mi pregunta era sobre si sería posible incrustar el contenido de una ventana (como un emulador de terminal, un navegador, un juego o cualquier otra aplicación de la organización X) dentro de una aplicación GTK3. Esto significa que el usuario aún puede interactuar con la aplicación y ver su contenido. Estoy ejecutando Debian 11 de 64 bits y quiero hacer que la aplicación use C.
Lo más cercano que he visto es usar un GtkPlug y un GtkSocket :
Junto con GtkSocket, GtkPlug brinda la capacidad de incorporar widgets de un proceso a otro proceso de manera transparente para el usuario. Un proceso crea un widget GtkSocket y pasa la ID de la ventana de ese widget al otro proceso, que luego crea un GtkPlug con esa ID de ventana. Cualquier widget contenido en el GtkPlug aparecerá dentro de la ventana de la primera aplicación.
La comunicación entre un GtkSocket y un GtkPlug sigue el Protocolo XEmbed . Este protocolo también se ha implementado en otros conjuntos de herramientas, por ejemplo, Qt, lo que permite el mismo nivel de integración al incorporar un widget de Qt en GTK+ o viceversa.
Un ejemplo de esto es xfce-settings-manager , que puede estudiar aquí (busque "socket-id" en el repositorio).
Notas:
GtkPlug s y GtkSocket s son específicos de X11. Si está buscando algo multiplataforma, esto podría no serlo.