layer_shika_composition/
lib.rs

1#![allow(clippy::pub_use)]
2
3mod event_loop;
4mod layer_surface;
5mod lock_selection;
6mod popup;
7mod popup_builder;
8mod selection;
9mod selector;
10mod session_lock;
11mod shell;
12mod shell_config;
13mod shell_runtime;
14mod surface_registry;
15mod system;
16pub mod value_conversion;
17
18use layer_shika_adapters::errors::LayerShikaError;
19use layer_shika_domain::errors::DomainError;
20use std::result::Result as StdResult;
21
22pub use event_loop::{EventLoopHandle, ShellEventLoop};
23pub use layer_shika_adapters::PopupWindow;
24pub use layer_shika_adapters::platform::{slint, slint_interpreter};
25pub use layer_shika_domain::entities::output_registry::OutputRegistry;
26pub use layer_shika_domain::prelude::AnchorStrategy;
27pub use layer_shika_domain::value_objects::anchor::AnchorEdges;
28pub use layer_shika_domain::value_objects::handle::{Handle, PopupHandle, SurfaceHandle};
29pub use layer_shika_domain::value_objects::keyboard_interactivity::KeyboardInteractivity;
30pub use layer_shika_domain::value_objects::layer::Layer;
31pub use layer_shika_domain::value_objects::output_handle::OutputHandle;
32pub use layer_shika_domain::value_objects::output_info::{OutputGeometry, OutputInfo};
33pub use layer_shika_domain::value_objects::output_policy::OutputPolicy;
34pub use layer_shika_domain::value_objects::surface_instance_id::SurfaceInstanceId;
35pub use layer_shika_domain::value_objects::{
36    output_target::OutputTarget,
37    popup_behavior::{ConstraintAdjustment, OutputMigrationPolicy, PopupBehavior},
38    popup_config::PopupConfig,
39    popup_position::{Alignment, AnchorPoint, Offset, PopupPosition},
40    popup_size::PopupSize,
41};
42pub use layer_surface::{LayerSurfaceHandle, ShellSurfaceConfigHandler};
43pub use lock_selection::LockSelection;
44pub use popup::PopupShell;
45pub use popup_builder::{Bound, PopupBuilder, Unbound};
46pub use selection::{PropertyError, Selection, SelectionResult};
47pub use selector::{Output, Selector, Surface, SurfaceInfo};
48pub use session_lock::{SessionLock, SessionLockBuilder};
49pub use shell_runtime::{DEFAULT_SURFACE_NAME, ShellRuntime};
50pub use system::{
51    CallbackContext, EventDispatchContext, RuntimeSurfaceConfigBuilder, ShellControl,
52    SurfaceControlHandle, SurfaceTarget,
53};
54pub use value_conversion::IntoValue;
55
56pub use shell::{
57    DEFAULT_COMPONENT_NAME, Shell, ShellBuilder, ShellEventContext, SurfaceConfigBuilder,
58};
59
60pub use surface_registry::{SurfaceDefinition, SurfaceEntry, SurfaceMetadata, SurfaceRegistry};
61
62pub use shell_config::{CompiledUiSource, ShellConfig, SurfaceComponentConfig};
63
64pub mod calloop {
65    pub use layer_shika_adapters::platform::calloop::*;
66}
67
68/// Result type alias using layer-shika's Error
69pub type Result<T> = StdResult<T, Error>;
70
71/// Error types for layer-shika operations
72#[derive(Debug, thiserror::Error)]
73pub enum Error {
74    #[error("Adapter error: {0}")]
75    Adapter(#[from] LayerShikaError),
76
77    #[error("Domain error: {0}")]
78    Domain(#[from] DomainError),
79
80    #[error("App has been dropped")]
81    SystemDropped,
82
83    #[error("Invalid lock state '{current}' for operation '{operation}'")]
84    InvalidState { current: String, operation: String },
85
86    #[error("Protocol '{protocol}' not available on this compositor")]
87    ProtocolNotAvailable { protocol: String },
88}
89
90pub mod prelude {
91    pub use crate::{
92        AnchorEdges, AnchorStrategy, CompiledUiSource, DEFAULT_COMPONENT_NAME,
93        DEFAULT_SURFACE_NAME, EventDispatchContext, EventLoopHandle, Handle, IntoValue,
94        KeyboardInteractivity, Layer, LayerSurfaceHandle, LockSelection, Output, OutputGeometry,
95        OutputHandle, OutputInfo, OutputPolicy, OutputRegistry, PopupBuilder, PopupConfig,
96        PopupHandle, PopupPosition, PopupShell, PopupSize, PopupWindow, PropertyError, Result,
97        Selection, SelectionResult, Selector, SessionLock, SessionLockBuilder, Shell, ShellBuilder,
98        ShellConfig, ShellControl, ShellEventContext, ShellEventLoop, ShellRuntime,
99        ShellSurfaceConfigHandler, Surface, SurfaceComponentConfig, SurfaceConfigBuilder,
100        SurfaceControlHandle, SurfaceDefinition, SurfaceEntry, SurfaceHandle, SurfaceInfo,
101        SurfaceMetadata, SurfaceRegistry,
102    };
103
104    pub use crate::calloop::{Generic, Interest, Mode, PostAction, RegistrationToken, Timer};
105
106    pub use crate::{slint, slint_interpreter};
107
108    pub use layer_shika_domain::prelude::{
109        LogicalPosition, LogicalRect, LogicalSize, Margins, PhysicalSize, ScaleFactor,
110        SurfaceConfig, SurfaceDimension, UiSource,
111    };
112
113    pub use layer_shika_adapters::platform::wayland::Anchor;
114}