From 84660083f92ff91d6029c14869576b47f0f573e4 Mon Sep 17 00:00:00 2001
From: DashieTM <fabio.lenherr@gmail.com>
Date: Mon, 6 May 2024 20:47:26 +0200
Subject: [PATCH] chore: bump versions of dependencies, small refactor on
 errors -> use macros

---
 Cargo.lock                                    |   10 +-
 Cargo.toml                                    |    8 +-
 src/components/audio/audio_box_utils.rs       |   26 +-
 src/components/base/error.rs                  |    1 -
 src/components/bluetooth/bluetooth_box.rs     |   25 +-
 src/components/wifi/wifi_box.rs               |   37 +-
 src/components/window/reset_window.rs         |   23 +-
 src/components/window/reset_window_impl.rs    |   10 +
 src/resources/resetMainWindow.ui              |   30 +-
 src/resources/resetUI.cmb                     |   30 +-
 src/resources/style/style.css                 |    6 +-
 test_plugin/Cargo.lock                        | 1090 +++++++++++++++++
 .../Cargo.toml                                |    2 +-
 .../src/lib.rs                                |    0
 14 files changed, 1241 insertions(+), 57 deletions(-)
 create mode 100644 test_plugin/Cargo.lock
 rename {better_test_plugin => test_plugin}/Cargo.toml (78%)
 rename {better_test_plugin => test_plugin}/src/lib.rs (100%)

diff --git a/Cargo.lock b/Cargo.lock
index 4f7c19d..be5a877 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -968,9 +968,9 @@ dependencies = [
 
 [[package]]
 name = "re_set-lib"
-version = "3.3.0"
+version = "3.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e610c5187314da0f61fe746ca0102e6d4ca2914f7f8f99ce3723af49c9673dc"
+checksum = "d25cf78a85f7e39ca17fd755a370044d828b1d99998f41a6778d4d707e278c74"
 dependencies = [
  "dbus",
  "dbus-crossroads",
@@ -1005,7 +1005,7 @@ dependencies = [
 
 [[package]]
 name = "reset"
-version = "1.1.1"
+version = "1.2.0"
 dependencies = [
  "dbus",
  "fork",
@@ -1021,9 +1021,9 @@ dependencies = [
 
 [[package]]
 name = "reset_daemon"
-version = "1.2.1"
+version = "1.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff3634f15c02c4a1394d4e26c10b12df4e1e6d5eff3a3cd5afe9b574e98f322a"
+checksum = "130fefb02b41748af697f67ff201fffe5e73864331a177442e7cd9910b538fb1"
 dependencies = [
  "crossbeam",
  "dbus",
diff --git a/Cargo.toml b/Cargo.toml
index b4b4dc2..2a47db9 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,16 +1,14 @@
 [package]
 name = "reset"
-version = "1.1.1"
+version = "1.2.0"
 edition = "2021"
 description = "A wip universal Linux settings application."
 repository = "https://github.com/Xetibo/ReSet"
 license = "GPL-3.0-or-later"
 
 [dependencies]
-#reset_daemon = { git = "https://github.com/Xetibo/ReSet-Daemon", branch = "dashie" }
-reset_daemon = "1.2.1"
-#re_set-lib = { git = "https://github.com/Xetibo/ReSet-Lib" , branch = "audioobject"}
-re_set-lib = "3.3.0"
+reset_daemon = "1.3.1"
+re_set-lib = "3.4.1"
 adw = { version = "0.6.0", package = "libadwaita", features = ["v1_4"] }
 dbus = "0.9.7"
 gtk = { version = "0.8.1", package = "gtk4", features = ["v4_12"] }
diff --git a/src/components/audio/audio_box_utils.rs b/src/components/audio/audio_box_utils.rs
index 9d18eea..a1ef8bc 100644
--- a/src/components/audio/audio_box_utils.rs
+++ b/src/components/audio/audio_box_utils.rs
@@ -15,8 +15,12 @@ use gtk::{
 use re_set_lib::{
     audio::audio_structures::{Card, TAudioObject, TAudioStreamObject},
     signals::{TAudioEventRemoved, TAudioObjectEvent, TAudioStreamEvent},
+    ERROR,
 };
 
+#[cfg(debug_assertions)]
+use re_set_lib::{utils::macros::ErrorLevel, write_log_to_file};
+
 use crate::components::{
     base::{card_entry::CardEntry, error_impl::ReSetErrorImpl, list_entry::ListEntry},
     utils::{create_dropdown_label_factory, set_combo_row_ellipsis, BASE, DBUS_PATH},
@@ -365,8 +369,7 @@ pub fn start_audio_box_listener<
         >(object_added_box.clone(), ir, dummy_name)
     });
     if res.is_err() {
-        // TODO: handle this with the log/error macro
-        println!("fail on source add event");
+        ERROR!("fail on source add event", ErrorLevel::PartialBreakage);
         return conn;
     }
 
@@ -384,7 +387,7 @@ pub fn start_audio_box_listener<
         >(object_changed_box.clone(), ir, get_default_name_function)
     });
     if res.is_err() {
-        println!("fail on source change event");
+        ERROR!("fail on source change event", ErrorLevel::PartialBreakage);
         return conn;
     }
 
@@ -402,7 +405,7 @@ pub fn start_audio_box_listener<
         >(object_removed_box.clone(), ir, dummy_name)
     });
     if res.is_err() {
-        println!("fail on source remove event");
+        ERROR!("fail on source remove event", ErrorLevel::PartialBreakage);
         return conn;
     }
 
@@ -420,7 +423,10 @@ pub fn start_audio_box_listener<
         >(stream_added_box.clone(), ir)
     });
     if res.is_err() {
-        println!("fail on output stream add event");
+        ERROR!(
+            "fail on output stream add event",
+            ErrorLevel::PartialBreakage
+        );
         return conn;
     }
 
@@ -438,7 +444,10 @@ pub fn start_audio_box_listener<
         >(stream_changed_box.clone(), ir)
     });
     if res.is_err() {
-        println!("fail on output stream change event");
+        ERROR!(
+            "fail on output stream change event",
+            ErrorLevel::PartialBreakage
+        );
         return conn;
     }
 
@@ -456,7 +465,10 @@ pub fn start_audio_box_listener<
         >(stream_removed_box.clone(), ir)
     });
     if res.is_err() {
-        println!("fail on output stream remove event");
+        ERROR!(
+            "fail on output stream remove event",
+            ErrorLevel::PartialBreakage
+        );
         return conn;
     }
 
diff --git a/src/components/base/error.rs b/src/components/base/error.rs
index d7c2dc4..84afc07 100644
--- a/src/components/base/error.rs
+++ b/src/components/base/error.rs
@@ -24,7 +24,6 @@ impl ReSetError {
             .imp()
             .reset_error_button
             .connect_clicked(clone!(@strong error => move |_| {
-                println!("pingpangpung");
                error.popdown();
             }));
         error
diff --git a/src/components/bluetooth/bluetooth_box.rs b/src/components/bluetooth/bluetooth_box.rs
index 0765268..4f41cf9 100644
--- a/src/components/bluetooth/bluetooth_box.rs
+++ b/src/components/bluetooth/bluetooth_box.rs
@@ -14,8 +14,14 @@ use glib::{clone, ControlFlow};
 use gtk::glib::Variant;
 use gtk::prelude::{ActionableExt, ButtonExt, ListBoxRowExt, WidgetExt};
 use gtk::{gio, StringObject};
-use re_set_lib::bluetooth::bluetooth_structures::{BluetoothAdapter, BluetoothDevice};
-use re_set_lib::signals::{BluetoothDeviceAdded, BluetoothDeviceChanged, BluetoothDeviceRemoved};
+use re_set_lib::{
+    bluetooth::bluetooth_structures::{BluetoothAdapter, BluetoothDevice},
+    signals::{BluetoothDeviceAdded, BluetoothDeviceChanged, BluetoothDeviceRemoved},
+    ERROR
+};
+
+#[cfg(debug_assertions)]
+use re_set_lib::{utils::macros::ErrorLevel, write_log_to_file};
 
 use crate::components::base::error_impl::{show_error, ReSetErrorImpl};
 use crate::components::base::utils::Listeners;
@@ -318,7 +324,10 @@ pub fn start_bluetooth_listener(listeners: Arc<Listeners>, bluetooth_box: Arc<Bl
             device_added_handler(device_added_box.clone(), ir)
         });
         if res.is_err() {
-            println!("fail on bluetooth device add event");
+            ERROR!(
+                "fail on bluetooth device add event",
+                ErrorLevel::PartialBreakage
+            );
             return;
         }
 
@@ -326,7 +335,10 @@ pub fn start_bluetooth_listener(listeners: Arc<Listeners>, bluetooth_box: Arc<Bl
             device_removed_handler(device_removed_box.clone(), ir)
         });
         if res.is_err() {
-            println!("fail on bluetooth device remove event");
+            ERROR!(
+                "fail on bluetooth device remove event",
+                ErrorLevel::PartialBreakage
+            );
             return;
         }
 
@@ -334,7 +346,10 @@ pub fn start_bluetooth_listener(listeners: Arc<Listeners>, bluetooth_box: Arc<Bl
             device_changed_handler(device_changed_box.clone(), ir)
         });
         if res.is_err() {
-            println!("fail on bluetooth device remove event");
+            ERROR!(
+                "fail on bluetooth device remove event",
+                ErrorLevel::PartialBreakage
+            );
             return;
         }
 
diff --git a/src/components/wifi/wifi_box.rs b/src/components/wifi/wifi_box.rs
index 4ee197d..ff06ca6 100644
--- a/src/components/wifi/wifi_box.rs
+++ b/src/components/wifi/wifi_box.rs
@@ -20,9 +20,15 @@ use glib::{clone, ControlFlow};
 use gtk::glib::Variant;
 use gtk::prelude::ActionableExt;
 use gtk::{gio, StringList, StringObject};
-use re_set_lib::network::network_structures::{AccessPoint, WifiDevice};
-use re_set_lib::signals::{AccessPointAdded, WifiDeviceChanged, WifiDeviceReset};
-use re_set_lib::signals::{AccessPointChanged, AccessPointRemoved};
+use re_set_lib::{
+    network::network_structures::{AccessPoint, WifiDevice},
+    signals::{AccessPointAdded, WifiDeviceChanged, WifiDeviceReset},
+    signals::{AccessPointChanged, AccessPointRemoved},
+    ERROR,
+};
+
+#[cfg(debug_assertions)]
+use re_set_lib::{utils::macros::ErrorLevel, write_log_to_file};
 
 use crate::components::wifi::wifi_box_impl;
 use crate::components::wifi::wifi_entry::WifiEntry;
@@ -324,35 +330,50 @@ pub fn start_event_listener(listeners: Arc<Listeners>, wifi_box: Arc<WifiBox>) {
             access_point_added_handler(added_ref.clone(), ir)
         });
         if res.is_err() {
-            println!("fail on access point add event");
+            ERROR!(
+                "fail on access point add event",
+                ErrorLevel::PartialBreakage
+            );
             return;
         }
         let res = conn.add_match(access_point_removed, move |ir: AccessPointRemoved, _, _| {
             access_point_removed_handler(removed_ref.clone(), ir)
         });
         if res.is_err() {
-            println!("fail on access point remove event");
+            ERROR!(
+                "fail on access point remove event",
+                ErrorLevel::PartialBreakage
+            );
             return;
         }
         let res = conn.add_match(access_point_changed, move |ir: AccessPointChanged, _, _| {
             access_point_changed_handler(changed_ref.clone(), ir)
         });
         if res.is_err() {
-            println!("fail on access point change event");
+            ERROR!(
+                "fail on access point change event",
+                ErrorLevel::PartialBreakage
+            );
             return;
         }
         let res = conn.add_match(device_changed, move |ir: WifiDeviceChanged, _, _| {
             wifi_device_changed_handler(wifi_changed_ref.clone(), ir)
         });
         if res.is_err() {
-            println!("fail on wifi device change event");
+            ERROR!(
+                "fail on wifi device change event",
+                ErrorLevel::PartialBreakage
+            );
             return;
         }
         let res = conn.add_match(devices_reset, move |ir: WifiDeviceReset, _, _| {
             wifi_device_reset_handler(wifi_reset_ref.clone(), ir)
         });
         if res.is_err() {
-            println!("fail on wifi device change event");
+            ERROR!(
+                "fail on wifi device change event",
+                ErrorLevel::PartialBreakage
+            );
             return;
         }
 
diff --git a/src/components/window/reset_window.rs b/src/components/window/reset_window.rs
index 8c4c0e0..fa39a91 100644
--- a/src/components/window/reset_window.rs
+++ b/src/components/window/reset_window.rs
@@ -144,11 +144,10 @@ impl ReSetWindow {
         let mut plugin_sidebar_list = vec![];
         unsafe {
             for plugin in FRONTEND_PLUGINS.iter() {
-
                 let plugin_capabilities = &plugin.capabilities;
-              
+
                 (plugin.frontend_startup)();
-              
+
                 let (sidebar_info, plugin_boxes) = (plugin.frontend_data)();
                 let listeners = self_imp.listeners.clone();
 
@@ -241,6 +240,17 @@ impl ReSetWindow {
             })
             .build();
 
+        let banner_action = ActionEntry::builder("banner")
+            .parameter_type(Some(&String::static_variant_type()))
+            .activate(move |window: &Self, _, text| {
+                let imp = window.imp();
+                if let Some(text) = text {
+                    imp.reset_banner.set_title(&text.to_string());
+                }
+                imp.reset_banner.set_revealed(true);
+            })
+            .build();
+
         let close_action = ActionEntry::builder("close")
             .activate(move |window: &Self, _, _| {
                 window.close();
@@ -320,6 +330,7 @@ impl ReSetWindow {
 
         self.add_action_entries([
             search_action,
+            banner_action,
             close_action,
             about_action,
             vim_up,
@@ -385,6 +396,12 @@ fn setup_callback(window: Rc<ReSetWindow>) -> Rc<ReSetWindow> {
     self_imp.reset_close.connect_clicked(move |_| {
         close_ref.close();
     });
+
+    self_imp.reset_banner.connect_button_clicked(|banner| {
+        banner.set_revealed(false);
+        banner.set_title("Info");
+    });
+
     window
 }
 
diff --git a/src/components/window/reset_window_impl.rs b/src/components/window/reset_window_impl.rs
index 6dfac0d..730c6a7 100644
--- a/src/components/window/reset_window_impl.rs
+++ b/src/components/window/reset_window_impl.rs
@@ -25,6 +25,8 @@ pub struct ReSetWindow {
     #[template_child]
     pub reset_main: TemplateChild<FlowBox>,
     #[template_child]
+    pub reset_banner: TemplateChild<adw::Banner>,
+    #[template_child]
     pub reset_sidebar_breakpoint: TemplateChild<Breakpoint>,
     #[template_child]
     pub reset_overlay_split_view: TemplateChild<OverlaySplitView>,
@@ -36,6 +38,8 @@ pub struct ReSetWindow {
     pub reset_sidebar_toggle: TemplateChild<Button>,
     #[template_child]
     pub reset_close: TemplateChild<Button>,
+    // #[template_child]
+    // pub reset_banner: TemplateChild<adw::Banner>,
     pub sidebar_entries: SidebarEntries,
     pub default_entry: RefCell<Option<Rc<SidebarEntry>>>,
     pub listeners: Arc<Listeners>,
@@ -81,14 +85,20 @@ impl WidgetImpl for ReSetWindow {
         if width > 658 {
             self.reset_main.set_margin_start(60);
             self.reset_main.set_margin_end(60);
+                self.reset_banner.set_margin_start(60);
+                self.reset_banner.set_margin_end(60);
         } else {
             let div = (width - 540) / 2;
             if div > 1 {
                 self.reset_main.set_margin_start(div);
                 self.reset_main.set_margin_end(div);
+                self.reset_banner.set_margin_start(div);
+                self.reset_banner.set_margin_end(div);
             } else {
                 self.reset_main.set_margin_start(0);
                 self.reset_main.set_margin_end(0);
+                self.reset_banner.set_margin_start(0);
+                self.reset_banner.set_margin_end(0);
             }
         }
     }
diff --git a/src/resources/resetMainWindow.ui b/src/resources/resetMainWindow.ui
index 561dfed..2325aaf 100644
--- a/src/resources/resetMainWindow.ui
+++ b/src/resources/resetMainWindow.ui
@@ -39,7 +39,6 @@
                         <property name="hexpand">True</property>
                         <property name="hexpand-set">True</property>
                         <property name="icon-name">open-menu-symbolic</property>
-                        <property name="menu-model">main_menu</property>
                         <property name="valign">end</property>
                         <property name="vexpand">True</property>
                       </object>
@@ -63,14 +62,27 @@
                 <child>
                   <object class="GtkViewport">
                     <child>
-                      <object class="GtkFlowBox" id="reset_main">
-                        <property name="column-spacing">25</property>
-                        <property name="hexpand">True</property>
-                        <property name="hexpand-set">True</property>
-                        <property name="margin-top">5</property>
-                        <property name="row-spacing">25</property>
-                        <property name="selection-mode">none</property>
-                        <property name="valign">start</property>
+                      <object class="GtkBox">
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <object class="AdwBanner" id="reset_banner">
+                            <property name="button-label">Acknowledge</property>
+                            <property name="css-classes">banner</property>
+                            <property name="margin-bottom">5</property>
+                            <property name="margin-top">5</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkFlowBox" id="reset_main">
+                            <property name="column-spacing">25</property>
+                            <property name="hexpand">True</property>
+                            <property name="hexpand-set">True</property>
+                            <property name="margin-top">5</property>
+                            <property name="row-spacing">25</property>
+                            <property name="selection-mode">none</property>
+                            <property name="valign">start</property>
+                          </object>
+                        </child>
                       </object>
                     </child>
                   </object>
diff --git a/src/resources/resetUI.cmb b/src/resources/resetUI.cmb
index 35133d3..7b89980 100644
--- a/src/resources/resetUI.cmb
+++ b/src/resources/resetUI.cmb
@@ -45,12 +45,10 @@
 	(3,40,"GtkScrolledWindow",None,18,None,None,None,1,None,None),
 	(3,41,"GtkViewport",None,40,None,None,None,None,None,None),
 	(3,42,"GtkListBox","reset_sidebar_list",41,None,None,None,None,None,None),
-	(3,43,"GtkScrolledWindow",None,3,None,None,None,1,None,None),
-	(3,44,"GtkViewport",None,43,None,None,None,None,None,None),
-	(3,45,"GtkFlowBox","reset_main",44,None,None,None,None,None,None),
+	(3,43,"GtkScrolledWindow",None,3,None,None,None,2,None,None),
+	(3,44,"GtkViewport",None,43,None,None,None,1,None,None),
 	(3,54,"(menu)","main_menu",None,None,None,None,None,None,None),
 	(3,59,"(external)","54",None,None,None,None,None,None,None),
-	(3,61,"(external)","59",None,None,None,None,None,None,None),
 	(3,63,"(external)","61",None,None,None,None,None,None,None),
 	(3,65,"(external)","63",None,None,None,None,None,None,None),
 	(3,69,"(external)","67",None,None,None,None,None,None,None),
@@ -59,6 +57,9 @@
 	(3,74,"(external)","72",None,None,None,None,None,None,None),
 	(3,75,"(item)",None,54,None,None,None,2,None,None),
 	(3,76,"(external)","74",None,None,None,None,None,None,None),
+	(3,78,"GtkBox",None,44,None,None,None,-1,None,None),
+	(3,79,"AdwBanner","reset_banner",78,None,None,None,None,None,None),
+	(3,80,"GtkFlowBox","reset_main",78,None,None,None,1,None,None),
 	(4,7,"GtkBox","resetWifi",None,None,None,None,None,None,None),
 	(4,152,"AdwNavigationView","reset_wifi_navigation",7,None,None,None,1,None,None),
 	(4,153,"AdwNavigationPage",None,152,None,None,None,None,None,None),
@@ -346,7 +347,7 @@
 	(3,33,"GtkMenuButton","can-shrink","True",None,None,None,None,None,None,None,None,None),
 	(3,33,"GtkMenuButton","has-frame","False",None,None,None,None,None,None,None,None,None),
 	(3,33,"GtkMenuButton","icon-name","open-menu-symbolic",None,None,None,None,None,None,None,None,None),
-	(3,33,"GtkMenuButton","menu-model","54",None,None,None,None,None,None,None,None,None),
+	(3,33,"GtkMenuButton","menu-model",None,None,None,None,None,None,None,None,None,None),
 	(3,33,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None),
 	(3,33,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
 	(3,33,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
@@ -357,17 +358,22 @@
 	(3,42,"GtkWidget","css-name","resetList",None,None,None,None,None,None,None,None,None),
 	(3,42,"GtkWidget","width-request","150",None,None,None,None,None,None,None,None,None),
 	(3,43,"GtkScrolledWindow","propagate-natural-height","True",None,None,None,None,None,None,None,None,None),
-	(3,45,"GtkFlowBox","column-spacing","25",None,None,None,None,None,None,None,None,None),
-	(3,45,"GtkFlowBox","row-spacing","25",None,None,None,None,None,None,None,None,None),
-	(3,45,"GtkFlowBox","selection-mode","none",None,None,None,None,None,None,None,None,None),
-	(3,45,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
-	(3,45,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
-	(3,45,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
-	(3,45,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
 	(3,73,"(item)","action","win.about",None,None,None,None,None,None,None,None,None),
 	(3,73,"(item)","label","About",None,None,None,None,None,None,None,None,None),
 	(3,75,"(item)","action","win.show-help-overlay",None,None,None,None,None,None,None,None,None),
 	(3,75,"(item)","label","Shortcuts",None,None,None,None,None,None,None,None,None),
+	(3,78,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
+	(3,79,"AdwBanner","button-label","Acknowledge",None,None,None,None,None,None,None,None,None),
+	(3,79,"GtkWidget","css-classes","banner",None,None,None,None,None,None,None,None,None),
+	(3,79,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
+	(3,79,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
+	(3,80,"GtkFlowBox","column-spacing","25",None,None,None,None,None,None,None,None,None),
+	(3,80,"GtkFlowBox","row-spacing","25",None,None,None,None,None,None,None,None,None),
+	(3,80,"GtkFlowBox","selection-mode","none",None,None,None,None,None,None,None,None,None),
+	(3,80,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
+	(3,80,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
+	(3,80,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
+	(3,80,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
 	(4,7,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
 	(4,7,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
 	(4,7,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
diff --git a/src/resources/style/style.css b/src/resources/style/style.css
index c7df5b7..93e980a 100644
--- a/src/resources/style/style.css
+++ b/src/resources/style/style.css
@@ -27,4 +27,8 @@ row.audioRow  {
 
 notebook > stack > box, notebook > stack {
     background-color: @window_bg_color;
-}
\ No newline at end of file
+}
+
+banner {
+  border-radius: 5px;
+}
diff --git a/test_plugin/Cargo.lock b/test_plugin/Cargo.lock
new file mode 100644
index 0000000..ba08aa2
--- /dev/null
+++ b/test_plugin/Cargo.lock
@@ -0,0 +1,1090 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "autocfg"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
+
+[[package]]
+name = "better_test_plugin"
+version = "0.1.0"
+dependencies = [
+ "dbus",
+ "glib",
+ "gtk4",
+ "re_set-lib",
+]
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+
+[[package]]
+name = "cairo-rs"
+version = "0.19.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2ac2a4d0e69036cf0062976f6efcba1aaee3e448594e6514bb2ddf87acce562"
+dependencies = [
+ "bitflags 2.5.0",
+ "cairo-sys-rs",
+ "glib",
+ "libc",
+ "thiserror",
+]
+
+[[package]]
+name = "cairo-sys-rs"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd3bb3119664efbd78b5e6c93957447944f16bdbced84c17a9f41c7829b81e64"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "cfg-expr"
+version = "0.15.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02"
+dependencies = [
+ "smallvec",
+ "target-lexicon",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "dbus"
+version = "0.9.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b"
+dependencies = [
+ "libc",
+ "libdbus-sys",
+ "winapi",
+]
+
+[[package]]
+name = "dbus-crossroads"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a4c83437187544ba5142427746835061b330446ca8902eabd70e4afb8f76de0"
+dependencies = [
+ "dbus",
+]
+
+[[package]]
+name = "directories-next"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc"
+dependencies = [
+ "cfg-if",
+ "dirs-sys-next",
+]
+
+[[package]]
+name = "dirs-sys-next"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "field-offset"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f"
+dependencies = [
+ "memoffset",
+ "rustc_version",
+]
+
+[[package]]
+name = "futures"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.60",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+
+[[package]]
+name = "futures-task"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+
+[[package]]
+name = "futures-util"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "gdk-pixbuf"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6a23f8a0b5090494fd04924662d463f8386cc678dd3915015a838c1a3679b92"
+dependencies = [
+ "gdk-pixbuf-sys",
+ "gio",
+ "glib",
+ "libc",
+]
+
+[[package]]
+name = "gdk-pixbuf-sys"
+version = "0.19.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fdbf021f8b9d19e30fb9ea6d6e5f2b6a712fe4645417c69f86f6ff1e1444a8f"
+dependencies = [
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gdk4"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db265c9dd42d6a371e09e52deab3a84808427198b86ac792d75fd35c07990a07"
+dependencies = [
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk4-sys",
+ "gio",
+ "glib",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gdk4-sys"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9418fb4e8a67074919fe7604429c45aa74eb9df82e7ca529767c6d4e9dc66dd"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pango-sys",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "gio"
+version = "0.19.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be548be810e45dd31d3bbb89c6210980bb7af9bca3ea1292b5f16b75f8e394a7"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-util",
+ "gio-sys",
+ "glib",
+ "libc",
+ "pin-project-lite",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gio-sys"
+version = "0.19.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4bdbef451b0f0361e7f762987cc6bebd5facab1d535e85a3cf1115dfb08db40"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+ "windows-sys",
+]
+
+[[package]]
+name = "glib"
+version = "0.19.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be682de2914107f591efdbe2debf05d9ad70726310ee2b6a3802a697649fcc55"
+dependencies = [
+ "bitflags 2.5.0",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-task",
+ "futures-util",
+ "gio-sys",
+ "glib-macros",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "memchr",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "glib-macros"
+version = "0.19.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ed782fa3e949c31146671da6e7a227a5e7d354660df1db6d0aac4974dc82a3c"
+dependencies = [
+ "heck",
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.60",
+]
+
+[[package]]
+name = "glib-sys"
+version = "0.19.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "767d23ead9bbdfcbb1c2242c155c8128a7d13dde7bf69c176f809546135e2282"
+dependencies = [
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gobject-sys"
+version = "0.19.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3787b0bfacca12bb25f8f822b0dbee9f7e4a86e6469a29976d332d2c14c945b"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "graphene-rs"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99e4d388e96c5f29e2b2f67045d229ddf826d0a8d6d282f94ed3b34452222c91"
+dependencies = [
+ "glib",
+ "graphene-sys",
+ "libc",
+]
+
+[[package]]
+name = "graphene-sys"
+version = "0.19.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a60e7381afdd7be43bd10a89d3b6741d162aabbca3a8db73505afb6a3aea59d"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "gsk4"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7563884bf6939f4468e5d94654945bdd9afcaf8c3ba4c5dd17b5342b747221be"
+dependencies = [
+ "cairo-rs",
+ "gdk4",
+ "glib",
+ "graphene-rs",
+ "gsk4-sys",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gsk4-sys"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23024bf2636c38bbd1f822f58acc9d1c25b28da896ff0f291a1a232d4272b3dc"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk4-sys",
+ "glib-sys",
+ "gobject-sys",
+ "graphene-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "gtk4"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b04e11319b08af11358ab543105a9e49b0c491faca35e2b8e7e36bfba8b671ab"
+dependencies = [
+ "cairo-rs",
+ "field-offset",
+ "futures-channel",
+ "gdk-pixbuf",
+ "gdk4",
+ "gio",
+ "glib",
+ "graphene-rs",
+ "gsk4",
+ "gtk4-macros",
+ "gtk4-sys",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gtk4-macros"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec655a7ef88d8ce9592899deb8b2d0fa50bab1e6dd69182deb764e643c522408"
+dependencies = [
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.60",
+]
+
+[[package]]
+name = "gtk4-sys"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c8aa86b7f85ea71d66ea88c1d4bae1cfacf51ca4856274565133838d77e57b5"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk4-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "graphene-sys",
+ "gsk4-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.14.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "indexmap"
+version = "2.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.154"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346"
+
+[[package]]
+name = "libdbus-sys"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72"
+dependencies = [
+ "pkg-config",
+]
+
+[[package]]
+name = "libloading"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19"
+dependencies = [
+ "cfg-if",
+ "windows-targets",
+]
+
+[[package]]
+name = "libpulse-binding"
+version = "2.28.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed3557a2dfc380c8f061189a01c6ae7348354e0c9886038dc6c171219c08eaff"
+dependencies = [
+ "bitflags 1.3.2",
+ "libc",
+ "libpulse-sys",
+ "num-derive",
+ "num-traits",
+ "winapi",
+]
+
+[[package]]
+name = "libpulse-sys"
+version = "1.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc19e110fbf42c17260d30f6d3dc545f58491c7830d38ecb9aaca96e26067a9b"
+dependencies = [
+ "libc",
+ "num-derive",
+ "num-traits",
+ "pkg-config",
+ "winapi",
+]
+
+[[package]]
+name = "libredox"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+dependencies = [
+ "bitflags 2.5.0",
+ "libc",
+]
+
+[[package]]
+name = "lock_api"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+
+[[package]]
+name = "memchr"
+version = "2.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num-derive"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "pango"
+version = "0.19.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "504ce6e805439ea2c6791168fe7ef8e3da0c1b2ef82c44bc450dbc330592920d"
+dependencies = [
+ "gio",
+ "glib",
+ "libc",
+ "pango-sys",
+]
+
+[[package]]
+name = "pango-sys"
+version = "0.19.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4829555bdbb83692ddeaf5a6927fb2d025c8131e5ecaa4f7619fff6985d3505"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "parking_lot"
+version = "0.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-targets",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+
+[[package]]
+name = "proc-macro-crate"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284"
+dependencies = [
+ "toml_edit 0.21.1",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.81"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "re_set-lib"
+version = "3.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a951df9af4cd6d006c99bfc58de3d0a472afdb765f5ec443d6a398fe7d2b8a18"
+dependencies = [
+ "dbus",
+ "dbus-crossroads",
+ "directories-next",
+ "gtk4",
+ "libloading",
+ "libpulse-binding",
+ "once_cell",
+ "serial_test",
+ "toml",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e"
+dependencies = [
+ "bitflags 2.5.0",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891"
+dependencies = [
+ "getrandom",
+ "libredox",
+ "thiserror",
+]
+
+[[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "scc"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec96560eea317a9cc4e0bb1f6a2c93c09a19b8c4fc5cb3fcc0ec1c094cd783e2"
+dependencies = [
+ "sdd",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "sdd"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b84345e4c9bd703274a082fb80caaa99b7612be48dfaa1dd9266577ec412309d"
+
+[[package]]
+name = "semver"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
+
+[[package]]
+name = "serde"
+version = "1.0.200"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ddc6f9cc94d67c0e21aaf7eda3a010fd3af78ebf6e096aa6e2e13c79749cce4f"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.200"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "856f046b9400cee3c8c94ed572ecdb752444c24528c035cd35882aad6f492bcb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.60",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serial_test"
+version = "3.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b4b487fe2acf240a021cf57c6b2b4903b1e78ca0ecd862a71b71d2a51fed77d"
+dependencies = [
+ "futures",
+ "log",
+ "once_cell",
+ "parking_lot",
+ "scc",
+ "serial_test_derive",
+]
+
+[[package]]
+name = "serial_test_derive"
+version = "3.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.60",
+]
+
+[[package]]
+name = "slab"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "system-deps"
+version = "6.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"
+dependencies = [
+ "cfg-expr",
+ "heck",
+ "pkg-config",
+ "toml",
+ "version-compare",
+]
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
+
+[[package]]
+name = "thiserror"
+version = "1.0.59"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.59"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.60",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit 0.22.12",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
+dependencies = [
+ "indexmap",
+ "toml_datetime",
+ "winnow 0.5.40",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow 0.6.7",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "version-compare"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
+
+[[package]]
+name = "winnow"
+version = "0.5.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winnow"
+version = "0.6.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14b9415ee827af173ebb3f15f9083df5a122eb93572ec28741fb153356ea2578"
+dependencies = [
+ "memchr",
+]
diff --git a/better_test_plugin/Cargo.toml b/test_plugin/Cargo.toml
similarity index 78%
rename from better_test_plugin/Cargo.toml
rename to test_plugin/Cargo.toml
index cb1a105..a948a2a 100644
--- a/better_test_plugin/Cargo.toml
+++ b/test_plugin/Cargo.toml
@@ -7,7 +7,7 @@ edition = "2021"
 crate-type = ["dylib"]
 
 [dependencies]
-re_set-lib = { git = "https://github.com/Xetibo/ReSet-Lib" }
+re_set-lib = "3.4.0" 
 gtk = { version = "0.8.1", package = "gtk4", features = ["v4_12"] }
 dbus = "0.9.7"
 glib = "0.19.3"
diff --git a/better_test_plugin/src/lib.rs b/test_plugin/src/lib.rs
similarity index 100%
rename from better_test_plugin/src/lib.rs
rename to test_plugin/src/lib.rs