Alright, so...
according to your first test and as expected a notification daemon does
not seem to be available. According to your report, you do have
notification-daemon installed, so running
/usr/lib/notification-daemon/notification-daemon in your desktop session
should solve that. Desktop environments often include a specific daemon.
notification-daemon is Gnome's. Plasma, Xfce, LxQt, MATE, Cinnamon etc.
have their own and the respective packages all provide
notification-daemon, see
https://packages.debian.org/bookworm/notification-daemon. A common
choice by folks on i3 and similar is dunst.
As no notification daemon seems to be running, blueman uses its fallback
and shows a GTK MessageDialog. Just like any GTK window, they should get
decorated by the window manager by default. A simple test in Python (run
with python3 -c as before or just in the interactive interpreter),
independent of blueman:
from gi.repository import Gtk
Gtk.MessageDialog().show()
Gtk.main()
Boiled down to a GTK Window (MessageDialog is a special case of a Window):
from gi.repository import Gtk
Gtk.Window().show()
Gtk.main()
Both should show decorations, as that's the default
(https://docs.gtk.org/gtk3/method.Window.set_decorated.html). I can
force missing decoration with:
from gi.repository import Gtk
Gtk.Window(decorated=False).show()
Gtk.main()
Maybe you can make it work with the opposite:
from gi.repository import Gtk
Gtk.Window(decorated=True).show()
Gtk.main()
That's totally unexpected, though, and you seem to have a more generic
issue between GTK and your window manager, unrelated to blueman.