Skip to content

GTK plugin the cairo way

This implements a "GTK lookalike" plugin by rendering GTK widgets into cairo surfaces and showing them in the same way as the cairo plugin does:

gtk_plugin_cairo

I hijacked the cairo plugin because both plugins share a lot of common logic and I originally intended to build two shared object files from a single source file, using ifdefs.

While the gtk-cairo approach provides a good way to keep the original GTK style and proportions, it has the drawback that it cannot react to events. I.e. I found no way to inject GTK events into the window widget to adapt the visuals of button widgets, e.g. on mouse-over.

The usual stuff (move, resize, min/max/close) works, but all the event-driven visual feedback is lost. E.g. there are no mouse-over effects ("prelight") and the maximise icon does not adapt to the window state.

Otherwise, I think this is the only approach that brings us closer to decorations that integrate visually into GNOME without having to change GTK.

The main question I am interested in is if this approach is "good enough" and if there is a solution to inject GTK events into the widget such that the button widgets update automatically.

An overview of some selected themes:

themes

Some of the themes have to small "default-decoration" and are missing the close button.

Fixes #6 (closed) .

Edited by Christian Rauch

Merge request reports