Home > Software engineering >  is it possible run an app inside another app in GTK?
is it possible run an app inside another app in GTK?

Time:12-31

My question was about weather it would be possible to embed the contents of a window (such as a terminal emulator, browser, game, or any other X org app) inside of a GTK3 application. This means that the user can still interact with the app and see contents of it. I am running Debian 11 64-bit and I want to make the app using C.

CodePudding user response:

The closest I have seen is using a GtkPlug and a GtkSocket:

Together with GtkSocket, GtkPlug provides the ability to embed widgets from one process into another process in a fashion that is transparent to the user. One process creates a GtkSocket widget and passes the ID of that widget’s window to the other process, which then creates a GtkPlug with that window ID. Any widgets contained in the GtkPlug then will appear inside the first application’s window.

The communication between a GtkSocket and a GtkPlug follows the XEmbed Protocol. This protocol has also been implemented in other toolkits, e.g. Qt, allowing the same level of integration when embedding a Qt widget in GTK or vice versa.

An example of this is the xfce-settings-manager, which you can study here (search for "socket-id" in the repo).

Note: GtkPlugs/GtkSockets are X11 specific. If you are looking for something cross plateform, this might not be it.

  • Related