GNOME には GTK+ だけでなく Adw というものもあります。
Adw ? 1
モダンな GNOME アプリを作る GTK4 ベースな部品だそうです。
Fedora 36 にはデモアプリが最初から入っています、以下のコマンドで。
$ adwaita-1-demo

この demo のソースは以下にあります。
demo ? main ? GNOME / libadwaita ? GitLab
他にサンプルコードが以下にありました。
examples ? 2bf94101 ? GNOME / libadwaita ? GitLab
かなーり解り辛いです、Linux はこんなもんです。
細かいことはリンク先のソースや英語を読んでもらうとして。
#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '4.0')
gi.require_version('Adw', '1')
from gi.repository import Gtk, Adw
class Win(Adw.ApplicationWindow):
'''
Adw: Sample Code
'''
def __init__(self, a):
# Set Adwaita Style
manager = Adw.StyleManager.get_default()
manager.set_color_scheme(Adw.ColorScheme.DEFAULT)
# init
Gtk.ApplicationWindow.__init__(self, application=a)
# TitleBar
titlebar = Adw.HeaderBar()
# Tab
view = Adw.TabView()
tabbar = Adw.TabBar(view=view, autohide=False)
# First Page
label = Gtk.Label(label='First Page\nPress Alt+2')
page1 = view.append(label)
page1.set_title('tab1')
# Second Page
button = Gtk.Button(label='This is Button\nShow Toast', vexpand=True, halign=Gtk.Align.START)
button.connect('clicked', self.on_button_clicked)
page2 = view.append(button)
page2.set_title('tab2')
# Toast
self.toast = Adw.ToastOverlay(child=view)
# pack
box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
box.append(titlebar)
box.append(tabbar)
box.append(self.toast)
self.set_content(box)
self.set_default_size(400, 300)
def on_button_clicked(self, button):
toast = Adw.Toast(title='This is a Toast Message')#, priority=Adw.ToastPriority.HIGH, timeout=0)
self.toast.add_toast(toast)
def app_activate(a):
w = Win(a)
w.present()
app = Gtk.Application()
app.connect('activate', app_activate)
app.run()
色々試してみました。

まず Adw.StyleManager で DEFAULT を指定します。
無くても動きますがコレをやらないとこの見た目にはなりません。
AdwWindow という GtkWindow のサブクラスがあります。
なんとタイトルバーがありません、set_titlebar 関数すら省かれている。
GtkBox と AdwHeaderBar を使えばタイトルバーは再現できるようです。
GtkHeaderBar を入れても普通に動きます。
部品設置には set_child ではなく set_content を使います。
普通に GtkWidget が配置できます、何故関数名を変えたのか解りません。
正直、存在意義がよく解らないけど理由があるんだろうなって。
Adw.TabView
AdwTabView は設置しただけでリンク先のショートカットが有効になる。
便利だけれど AdwTabBar を配置すると Ctrl+PageDown は動作しなかった。
いや普通 Alt+数値キーですよね、Google Chrome や Gedit もそうですし。
Adw.Toast
GtkOverLay を駆使するより簡単にアプリ内 Notify が可能です。
Adw.StyleManager を指定しないと背景が無い残念な Notify になる。
これは便利ですね、ただ Nautilus のように上から出せないのかな?
これ以外は demo をご覧ください。
サンプルコードはこの demo くらいしかありませんでした。