• Uncategorized

About c : is-it-possible-run-an-app-inside-another-app-in-GTK

Question Detail

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.

Question Answer

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.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.