Hi,
I’m not sure using a custom snapshot
will work, as gtk will anyway automatically draw the background based on CSS theme before calling snapshot().
Why not embedding a small CSS style to unset the window’s background?
Here a working example in Python:
#!/usr/bin/env python3
import sys
import gi
gi.require_version('Gdk', '4.0')
gi.require_version('Gtk', '4.0')
from gi.repository import Gdk, Gtk
THEME = """
window.background {
background: unset;
}
"""
class MyAppWindow(Gtk.ApplicationWindow):
__gtype_name__ = __qualname__
def __init__(self, **kwargs):
super().__init__(default_width=200, default_height=200, show_menubar=False, **kwargs)
button = Gtk.Button.new_with_label("Hello World!")
button.set_halign(Gtk.Align.CENTER)
button.set_valign(Gtk.Align.CENTER)
self.set_child(button)
self.present()
class MyApp(Gtk.Application):
__gtype_name__ = __qualname__
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.connect('activate', self.on_activate)
def on_activate(self, app):
cssp = Gtk.CssProvider()
cssp.load_from_string(THEME)
d = Gdk.Display.get_default()
Gtk.StyleContext.add_provider_for_display(d, cssp, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
self.add_window(MyAppWindow())
if __name__ == '__main__':
sys.exit(MyApp().run(sys.argv))