feat(input): show touchpad page only if touchpad exists on system
This commit is contained in:
parent
b75df3c35e
commit
44a333d070
3 changed files with 29 additions and 3 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
|
@ -1329,6 +1329,7 @@ dependencies = [
|
|||
"tokio",
|
||||
"tracing",
|
||||
"tracing-subscriber",
|
||||
"udev",
|
||||
"url",
|
||||
"xkb-data",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ clap = { version = "4.4.18", features = ["derive"] }
|
|||
itoa = "1.0.10"
|
||||
futures = { package = "futures-lite", version = "2.2.0" }
|
||||
xkb-data = "0.1.0"
|
||||
udev = "0.8.0"
|
||||
|
||||
[dependencies.i18n-embed]
|
||||
version = "0.14.1"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
use crate::app;
|
||||
use clap::builder::OsStr;
|
||||
use cosmic::{
|
||||
cosmic_config::{self, ConfigGet, ConfigSet},
|
||||
iced::{self, wayland::actions::window::SctkWindowSettings, window},
|
||||
|
|
@ -205,8 +206,31 @@ impl page::Page<crate::pages::Message> for Page {
|
|||
|
||||
impl page::AutoBind<crate::pages::Message> for Page {
|
||||
fn sub_pages(page: page::Insert<crate::pages::Message>) -> page::Insert<crate::pages::Message> {
|
||||
page.sub_page::<keyboard::Page>()
|
||||
.sub_page::<mouse::Page>()
|
||||
.sub_page::<touchpad::Page>()
|
||||
let insert = page.sub_page::<keyboard::Page>().sub_page::<mouse::Page>();
|
||||
|
||||
if system_has_touchpad() {
|
||||
insert.sub_page::<touchpad::Page>()
|
||||
} else {
|
||||
insert
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Uses `udev` to check if a touchpad device exists on the system.
|
||||
fn system_has_touchpad() -> bool {
|
||||
let Ok(mut enumerator) = udev::Enumerator::new() else {
|
||||
return false;
|
||||
};
|
||||
|
||||
let _res = enumerator.match_subsystem("input");
|
||||
|
||||
let Ok(mut devices) = enumerator.scan_devices() else {
|
||||
return false;
|
||||
};
|
||||
|
||||
devices.any(|device| {
|
||||
device
|
||||
.property_value("ID_INPUT_TOUCHPAD")
|
||||
.map_or(false, |value| value == "1")
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue