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
68pub type Result<T> = StdResult<T, Error>;
70
71#[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}