aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKirill Chibisov <contact@kchibisov.com>2023-11-02 14:47:35 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2023-11-02 16:23:05 +0400
commit6a81d8f2a63a8b18aafbe1f6b12bcdcd39cbd83e (patch)
treec9aa186e9b7b4fb98b320e18d2c760ec8d954139
parent889d062df7d89bf8084414c6f8fd87075c3cf85a (diff)
downloadniri-6a81d8f2a63a8b18aafbe1f6b12bcdcd39cbd83e.tar.gz
niri-6a81d8f2a63a8b18aafbe1f6b12bcdcd39cbd83e.tar.bz2
niri-6a81d8f2a63a8b18aafbe1f6b12bcdcd39cbd83e.zip
Check alternative cursor names when loading cursor
Some themes don't have all the cursors specified as in w3c specification, thus try to check for alternative names as well.
-rw-r--r--Cargo.lock4
-rw-r--r--src/cursor.rs11
2 files changed, 13 insertions, 2 deletions
diff --git a/Cargo.lock b/Cargo.lock
index f6994b55..bccaf659 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -698,9 +698,9 @@ dependencies = [
[[package]]
name = "cursor-icon"
-version = "1.0.0"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "740bb192a8e2d1350119916954f4409ee7f62f149b536911eeb78ba5a20526bf"
+checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991"
[[package]]
name = "deranged"
diff --git a/src/cursor.rs b/src/cursor.rs
index bef62b51..6bf92cd1 100644
--- a/src/cursor.rs
+++ b/src/cursor.rs
@@ -111,6 +111,17 @@ impl CursorManager {
.or_insert_with_key(|(icon, scale)| {
let size = self.size as i32 * scale;
let mut cursor = Self::load_xcursor(&self.theme, icon.name(), size);
+
+ // Check alternative names to account for non-compliant themes.
+ if cursor.is_err() {
+ for name in icon.alt_names() {
+ cursor = Self::load_xcursor(&self.theme, name, size);
+ if cursor.is_ok() {
+ break;
+ }
+ }
+ }
+
if let Err(err) = &cursor {
warn!("error loading xcursor {}@{size}: {err:?}", icon.name());
}