diff --git a/.gitignore b/.gitignore
index ea8c4bf..46f6b44 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/target
+/data/gschemas.compiled
\ No newline at end of file
diff --git a/Cargo.lock b/Cargo.lock
index b09438c..5341f44 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -298,9 +298,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.11.1"
+version = "2.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
+checksum = "84d7ced0ae9557296835c32bf1b1e02b44c746701f898460fb000d7eaa84f00a"
dependencies = [
"serde_core",
]
@@ -378,7 +378,7 @@ version = "0.18.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.12.1",
"cairo-sys-rs",
"glib",
"libc",
@@ -399,9 +399,9 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.2.62"
+version = "1.2.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98"
+checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f"
dependencies = [
"find-msvc-tools",
"jobserver",
@@ -1042,7 +1042,7 @@ version = "0.18.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.12.1",
"futures-channel",
"futures-core",
"futures-executor",
@@ -1308,7 +1308,7 @@ version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a"
dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.12.1",
"serde",
"unicode-segmentation",
]
@@ -1363,9 +1363,9 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
[[package]]
name = "libfuzzer-sys"
-version = "0.4.12"
+version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f12a681b7dd8ce12bff52488013ba614b869148d54dd79836ab85aafdd53f08d"
+checksum = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2"
dependencies = [
"arbitrary",
"cc",
@@ -1426,9 +1426,9 @@ dependencies = [
[[package]]
name = "log"
-version = "0.4.30"
+version = "0.4.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "616ec5685824bcc94416c6d4a7a446eea774a31efd7062c8480ba6fd06d7a6e5"
+checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a"
[[package]]
name = "loop9"
@@ -1485,9 +1485,9 @@ dependencies = [
[[package]]
name = "mio"
-version = "1.2.0"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1"
+checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
dependencies = [
"libc",
"wasi",
@@ -1535,7 +1535,7 @@ version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.12.1",
"cfg-if",
"cfg_aliases",
"libc",
@@ -1764,7 +1764,7 @@ version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.12.1",
"crc32fast",
"fdeflate",
"flate2",
@@ -2062,7 +2062,7 @@ version = "0.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.12.1",
]
[[package]]
@@ -2097,7 +2097,7 @@ version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.12.1",
"errno",
"libc",
"linux-raw-sys",
@@ -2207,9 +2207,9 @@ dependencies = [
[[package]]
name = "shlex"
-version = "1.3.0"
+version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
[[package]]
name = "signal-hook-registry"
@@ -2250,9 +2250,9 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
[[package]]
name = "socket2"
-version = "0.6.3"
+version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
+checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
dependencies = [
"libc",
"windows-sys 0.61.2",
@@ -2567,9 +2567,9 @@ dependencies = [
[[package]]
name = "typenum"
-version = "1.20.0"
+version = "1.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de"
+checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
[[package]]
name = "uds_windows"
@@ -2590,9 +2590,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
[[package]]
name = "unicode-segmentation"
-version = "1.13.2"
+version = "1.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c"
+checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8"
[[package]]
name = "unicode-xid"
@@ -2602,9 +2602,9 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
[[package]]
name = "uuid"
-version = "1.23.1"
+version = "1.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76"
+checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7"
dependencies = [
"getrandom 0.4.2",
"js-sys",
@@ -2737,7 +2737,7 @@ version = "0.244.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.12.1",
"hashbrown 0.15.5",
"indexmap",
"semver",
@@ -3032,7 +3032,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
dependencies = [
"anyhow",
- "bitflags 2.11.1",
+ "bitflags 2.12.1",
"indexmap",
"log",
"serde",
@@ -3152,18 +3152,18 @@ dependencies = [
[[package]]
name = "zerocopy"
-version = "0.8.49"
+version = "0.8.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bce33a6288fa3f072a8c2c7d0f2fdbb90e28298f0135c1f99b96c3db2efcc60b"
+checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.8.49"
+version = "0.8.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fd425244944f4ab65ccff928e7323354c5a018c75838362fdce749dfad2ee1e"
+checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639"
dependencies = [
"proc-macro2",
"quote",
diff --git a/data/io.github.AghastyGD.Wiretray.gschema.xml b/data/io.github.AghastyGD.Wiretray.gschema.xml
new file mode 100644
index 0000000..f863828
--- /dev/null
+++ b/data/io.github.AghastyGD.Wiretray.gschema.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ ''
+ Hotspot SSID
+
+
+
+ ''
+ Hotspot password
+
+
+
\ No newline at end of file
diff --git a/src/lib.rs b/src/lib.rs
new file mode 100644
index 0000000..ebb4ec6
--- /dev/null
+++ b/src/lib.rs
@@ -0,0 +1,5 @@
+pub mod dbus;
+pub mod models;
+pub mod services;
+pub mod settings;
+pub mod tray;
diff --git a/src/main.rs b/src/main.rs
index defe3b3..8b2e33f 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,10 +1,7 @@
-mod dbus;
-mod models;
-mod services;
-mod tray;
-
use anyhow::Result;
+use wiretray::tray;
+
fn main() -> Result<()> {
setup_logging();
diff --git a/src/settings/hotspot_settings.rs b/src/settings/hotspot_settings.rs
new file mode 100644
index 0000000..4f0a9d5
--- /dev/null
+++ b/src/settings/hotspot_settings.rs
@@ -0,0 +1,5 @@
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub struct HotspotSettings {
+ pub ssid: String,
+ pub password: String,
+}
diff --git a/src/settings/mod.rs b/src/settings/mod.rs
new file mode 100644
index 0000000..b50a3fe
--- /dev/null
+++ b/src/settings/mod.rs
@@ -0,0 +1,2 @@
+pub mod hotspot_settings;
+pub mod service;
diff --git a/src/settings/service.rs b/src/settings/service.rs
new file mode 100644
index 0000000..9fae276
--- /dev/null
+++ b/src/settings/service.rs
@@ -0,0 +1,42 @@
+use anyhow::Result;
+use gtk::gio::Settings;
+use gtk::prelude::SettingsExt;
+
+use super::hotspot_settings::HotspotSettings;
+
+const SCHEMA_ID: &str = "io.github.AghastyGD.Wiretray";
+
+const KEY_SSID: &str = "ssid";
+const KEY_PASSWORD: &str = "password";
+
+pub struct SettingsService {
+ settings: Settings,
+}
+
+impl Default for SettingsService {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl SettingsService {
+ pub fn new() -> Self {
+ Self {
+ settings: Settings::new(SCHEMA_ID),
+ }
+ }
+
+ pub fn load(&self) -> Result {
+ Ok(HotspotSettings {
+ ssid: self.settings.string(KEY_SSID).to_string(),
+ password: self.settings.string(KEY_PASSWORD).to_string(),
+ })
+ }
+ pub fn save(&self, settings: &HotspotSettings) -> Result<()> {
+ self.settings.set_string(KEY_SSID, &settings.ssid)?;
+
+ self.settings.set_string(KEY_PASSWORD, &settings.password)?;
+
+ Ok(())
+ }
+}