diff --git a/lan-mouse-gtk/resources/authorization_window.ui b/lan-mouse-gtk/resources/authorization_window.ui
new file mode 100644
index 0000000..49f0c26
--- /dev/null
+++ b/lan-mouse-gtk/resources/authorization_window.ui
@@ -0,0 +1,102 @@
+
+
+
+
+
+ True
+ 180
+ 180
+ 180
+ 180
+ Unauthorized Device
+
+
+
+
+
diff --git a/lan-mouse-gtk/resources/resources.gresource.xml b/lan-mouse-gtk/resources/resources.gresource.xml
index 2a6812f..c94be6b 100644
--- a/lan-mouse-gtk/resources/resources.gresource.xml
+++ b/lan-mouse-gtk/resources/resources.gresource.xml
@@ -2,6 +2,7 @@
window.ui
+ authorization_window.ui
fingerprint_window.ui
client_row.ui
key_row.ui
diff --git a/lan-mouse-gtk/src/authorization_window.rs b/lan-mouse-gtk/src/authorization_window.rs
new file mode 100644
index 0000000..1e1a026
--- /dev/null
+++ b/lan-mouse-gtk/src/authorization_window.rs
@@ -0,0 +1,19 @@
+mod imp;
+
+use glib::Object;
+use gtk::{gio, glib, subclass::prelude::ObjectSubclassIsExt};
+
+glib::wrapper! {
+ pub struct AuthorizationWindow(ObjectSubclass)
+ @extends adw::Window, gtk::Window, gtk::Widget,
+ @implements gio::ActionGroup, gio::ActionMap, gtk::Accessible, gtk::Buildable,
+ gtk::ConstraintTarget, gtk::Native, gtk::Root, gtk::ShortcutManager;
+}
+
+impl AuthorizationWindow {
+ pub(crate) fn new(fingerprint: &str) -> Self {
+ let window: Self = Object::builder().build();
+ window.imp().set_fingerprint(fingerprint);
+ window
+ }
+}
diff --git a/lan-mouse-gtk/src/authorization_window/imp.rs b/lan-mouse-gtk/src/authorization_window/imp.rs
new file mode 100644
index 0000000..4792b2b
--- /dev/null
+++ b/lan-mouse-gtk/src/authorization_window/imp.rs
@@ -0,0 +1,75 @@
+use std::sync::OnceLock;
+
+use adw::prelude::*;
+use adw::subclass::prelude::*;
+use glib::subclass::InitializingObject;
+use gtk::{
+ glib::{self, subclass::Signal},
+ template_callbacks, Button, CompositeTemplate, Label,
+};
+
+#[derive(CompositeTemplate, Default)]
+#[template(resource = "/de/feschber/LanMouse/authorization_window.ui")]
+pub struct AuthorizationWindow {
+ #[template_child]
+ pub fingerprint: TemplateChild