pub fn is_supported() -> bool {
if std::env::var_os("WAYLAND_DISPLAY").is_none() && std::env::var_os("DISPLAY").is_none() {
return false;
}
if let Ok(conn) = dbus::blocking::Connection::new_session() {
let proxy = conn.with_proxy(
"org.freedesktop.portal.Desktop",
"/org/freedesktop/portal/desktop",
std::time::Duration::from_millis(500),
);
let available: Result<u32, _> = <dbus::blocking::Proxy<_> as dbus::blocking::stdintf::org_freedesktop_dbus::Properties>::get(
&proxy,
"org.freedesktop.portal.ScreenCast",
"AvailableSourceTypes",
);
if let Ok(mask) = available { return mask != 0; }
return false;
}
false
}
pub fn has_permission() -> bool {
true
}