Skip to main content

ferroui_freedesktop/
lib.rs

1//! ferroui-freedesktop
2//!
3//! The services of a FreeDesktop session that the Linux platforms of
4//! FerroUI share: the input methods that are reached over D-Bus (IBus,
5//! Fcitx), the platform settings of the settings portal, the mounted
6//! volumes, the file chooser portal, the menu exporter, the tray icon, and
7//! accessibility over AT-SPI (`at_spi`, `docs/porting/atspi.md`). `docs/porting/x11-platform.md` has the design (section 3 for
8//! D-Bus) and the stages.
9//!
10//! D-Bus is spoken through `zbus`. A connection reads its socket on a
11//! thread of its own; every call and every signal is awaited as a task of
12//! the dispatcher of the UI thread, so the code of this crate runs on the
13//! UI thread like the continuations of the reference.
14//!
15//! The crate builds on every Unix system and has only its event type
16//! elsewhere.
17
18pub mod event;
19
20#[cfg(unix)]
21pub mod at_spi;
22#[cfg(unix)]
23pub mod dbus_call_queue;
24#[cfg(unix)]
25pub mod dbus_helper;
26#[cfg(unix)]
27pub mod dbus_ime;
28#[cfg(unix)]
29pub mod dbus_menu_exporter;
30#[cfg(unix)]
31pub mod dbus_platform_settings;
32#[cfg(unix)]
33pub mod dbus_system_dialog;
34#[cfg(unix)]
35pub mod dbus_tray_icon_impl;
36#[cfg(unix)]
37pub mod i_portal_parent_lease;
38#[cfg(unix)]
39pub mod ix11_input_method;
40#[cfg(unix)]
41pub mod linux_mounted_volume_info_listener;
42#[cfg(unix)]
43pub mod linux_mounted_volume_info_provider;
44#[cfg(unix)]
45pub mod native_methods;
46#[cfg(unix)]
47pub mod signal_watch;
48#[cfg(unix)]
49pub mod ui_thread_object;
50
51#[cfg(unix)]
52pub use dbus_call_queue::{DBusCallError, DBusCallQueue, DBusResult};
53#[cfg(unix)]
54pub use dbus_helper::DBusHelper;
55#[cfg(unix)]
56pub use dbus_menu_exporter::{DBusMenuExporter, DBusMenuExporterImpl};
57#[cfg(unix)]
58pub use dbus_platform_settings::DBusPlatformSettings;
59#[cfg(unix)]
60pub use dbus_tray_icon_impl::DBusTrayIconImpl;
61#[cfg(unix)]
62pub use dbus_system_dialog::DBusSystemDialog;
63#[cfg(unix)]
64pub use i_portal_parent_lease::{IPortalParentLease, TrivialPortalParentLease};
65#[cfg(unix)]
66pub use linux_mounted_volume_info_provider::LinuxMountedVolumeInfoProvider;
67pub use event::Event;
68#[cfg(unix)]
69pub use ix11_input_method::{IX11InputMethodControl, IX11InputMethodFactory, X11InputMethodForwardedKey};
70
71#[cfg(all(test, unix))]
72mod test_support;