From d68df354097b2ad2f1be9a9ac9ac3dcbf6fa10b0 Mon Sep 17 00:00:00 2001 From: Ferdinand Schober Date: Sun, 14 Jun 2026 19:07:05 +0200 Subject: [PATCH] use proper css styling for the font colors --- lan-mouse-gtk/resources/resources.gresource.xml | 1 + lan-mouse-gtk/resources/style.css | 12 ++++++++++++ lan-mouse-gtk/src/client_row.rs | 16 +++++++++++----- lan-mouse-gtk/src/lib.rs | 12 ++++++++++++ 4 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 lan-mouse-gtk/resources/style.css diff --git a/lan-mouse-gtk/resources/resources.gresource.xml b/lan-mouse-gtk/resources/resources.gresource.xml index d382074..3092906 100644 --- a/lan-mouse-gtk/resources/resources.gresource.xml +++ b/lan-mouse-gtk/resources/resources.gresource.xml @@ -6,6 +6,7 @@ fingerprint_window.ui client_row.ui key_row.ui + style.css de.feschber.LanMouse.svg diff --git a/lan-mouse-gtk/resources/style.css b/lan-mouse-gtk/resources/style.css new file mode 100644 index 0000000..020f7ba --- /dev/null +++ b/lan-mouse-gtk/resources/style.css @@ -0,0 +1,12 @@ +.peer-match > box > list .subtitle { + color: @success_color; +} + +.peer-mismatch > box > list .subtitle { + font-weight: bold; + color: @warning_color; +} + +.peer-unknown > box > list .subtitle { + color: @warning_color; +} diff --git a/lan-mouse-gtk/src/client_row.rs b/lan-mouse-gtk/src/client_row.rs index 51a3788..f4d3acd 100644 --- a/lan-mouse-gtk/src/client_row.rs +++ b/lan-mouse-gtk/src/client_row.rs @@ -174,16 +174,22 @@ impl ClientRow { .and_then(|co| co.property::>("peer-commit")); let local = crate::local_commit_str(); let markup = match peer.as_deref() { - None => format!( - r##"Peer version: unknown · Ours: {local}"## - ), + None => format!("Peer version: unknown · Ours: {local}"), Some(p) if p == local.as_str() => { - format!(r##"Peer version: {p} · matched"##) + format!("Peer version: {p} · matched") } Some(p) => { - format!(r##"Peer version: {p} · Ours: {local}"##) + format!("Peer version: {p} · Ours: {local}") } }; + self.remove_css_class("peer-mismatch"); + self.remove_css_class("peer-match"); + self.remove_css_class("peer-unknown"); + match peer.as_deref() { + Some(p) if p == local.as_str() => self.add_css_class("peer-match"), + Some(_) => self.add_css_class("peer-mismatch"), + None => self.add_css_class("peer-unknown"), + }; self.set_subtitle(&markup); } } diff --git a/lan-mouse-gtk/src/lib.rs b/lan-mouse-gtk/src/lib.rs index ba06b22..719347b 100644 --- a/lan-mouse-gtk/src/lib.rs +++ b/lan-mouse-gtk/src/lib.rs @@ -12,6 +12,7 @@ mod window; use std::{env, process, str, sync::OnceLock}; +use gtk::CssProvider; use window::Window; /// Local build's commit hash, set once by [`run`] before the GTK @@ -85,6 +86,7 @@ fn gtk_main() -> glib::ExitCode { .build(); app.connect_startup(|app| { + load_css(); load_icons(); setup_actions(app); setup_menu(app); @@ -153,6 +155,16 @@ fn configure_macos_bundle_environment() { ); } +fn load_css() { + let provider = CssProvider::default(); + provider.load_from_resource("de/feschber/LanMouse/style.css"); + gtk::style_context_add_provider_for_display( + &Display::default().expect("Could not connect to a display"), + &provider, + gtk::STYLE_PROVIDER_PRIORITY_APPLICATION, + ); +} + fn load_icons() { let display = &Display::default().expect("Could not connect to a display."); let icon_theme = IconTheme::for_display(display);