is it possible run an app inside another app in GTK?

Viewed 297

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.

1 Answers

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).

Notes:

  1. GtkPlugs and GtkSockets are X11 specific. If you are looking for something cross platform, this might not be it.
  2. It seems both of these no longer exist in Gtk4.
Related