style: consistent import format

This commit is contained in:
Horu 2026-01-24 11:31:21 +07:00 committed by GitHub
parent 3d68292b35
commit 5279b87a7a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
55 changed files with 352 additions and 336 deletions

View file

@ -51,7 +51,7 @@ jobs:
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- name: Check formatting - name: Check formatting
run: cargo fmt --all -- --check run: cargo +nightly fmt --all -- --check
- name: Run clippy - name: Run clippy
run: cargo clippy --workspace --all-targets -- -D warnings run: cargo clippy --workspace --all-targets -- -D warnings

2
.rustfmt.toml Normal file
View file

@ -0,0 +1,2 @@
imports_granularity = "Module"
group_imports = "StdExternalCrate"

View file

@ -1,14 +1,14 @@
use layer_shika_domain::errors::DomainError;
use slint::{PlatformError, platform::SetPlatformError};
use smithay_client_toolkit::reexports::calloop;
use std::error::Error; use std::error::Error;
use std::result::Result as StdResult; use std::result::Result as StdResult;
use layer_shika_domain::errors::DomainError;
use slint::PlatformError;
use slint::platform::SetPlatformError;
use smithay_client_toolkit::reexports::calloop;
use thiserror::Error; use thiserror::Error;
use wayland_client::backend::WaylandError; use wayland_client::backend::WaylandError;
use wayland_client::{ use wayland_client::globals::{BindError, GlobalError};
ConnectError, DispatchError, use wayland_client::{ConnectError, DispatchError};
globals::{BindError, GlobalError},
};
pub type Result<T> = StdResult<T, LayerShikaError>; pub type Result<T> = StdResult<T, LayerShikaError>;

View file

@ -5,7 +5,6 @@ pub(crate) mod rendering;
pub(crate) mod wayland; pub(crate) mod wayland;
pub use rendering::femtovg::popup_window::PopupWindow; pub use rendering::femtovg::popup_window::PopupWindow;
pub use wayland::config::{MultiSurfaceConfig, ShellSurfaceConfig, WaylandSurfaceConfig}; pub use wayland::config::{MultiSurfaceConfig, ShellSurfaceConfig, WaylandSurfaceConfig};
pub use wayland::ops::WaylandSystemOps; pub use wayland::ops::WaylandSystemOps;
pub use wayland::session_lock::{ pub use wayland::session_lock::{
@ -28,15 +27,13 @@ pub(crate) mod logger {
} }
pub mod platform { pub mod platform {
pub use slint; pub use {slint, slint_interpreter};
pub use slint_interpreter;
pub mod calloop { pub mod calloop {
pub use smithay_client_toolkit::reexports::calloop::channel;
pub use smithay_client_toolkit::reexports::calloop::generic::Generic; pub use smithay_client_toolkit::reexports::calloop::generic::Generic;
pub use smithay_client_toolkit::reexports::calloop::timer::{TimeoutAction, Timer}; pub use smithay_client_toolkit::reexports::calloop::timer::{TimeoutAction, Timer};
pub use smithay_client_toolkit::reexports::calloop::{ pub use smithay_client_toolkit::reexports::calloop::{
EventSource, InsertError, Interest, Mode, PostAction, RegistrationToken, EventSource, InsertError, Interest, Mode, PostAction, RegistrationToken, channel,
}; };
} }

View file

@ -1,33 +1,28 @@
use crate::{ use std::error::Error;
errors::{EGLError, LayerShikaError, Result}, use std::ffi::{self, CStr, c_void};
logger, use std::num::NonZeroU32;
}; use std::ptr::NonNull;
use glutin::{ use std::result::Result as StdResult;
api::egl::{
config::Config, use glutin::api::egl::config::Config;
context::{NotCurrentContext, PossiblyCurrentContext}, use glutin::api::egl::context::{NotCurrentContext, PossiblyCurrentContext};
display::Display, use glutin::api::egl::display::Display;
surface::Surface, use glutin::api::egl::surface::Surface;
}, use glutin::config::ConfigTemplateBuilder;
config::ConfigTemplateBuilder, use glutin::context::ContextAttributesBuilder;
context::ContextAttributesBuilder, use glutin::display::GetGlDisplay;
display::GetGlDisplay, use glutin::prelude::*;
prelude::*, use glutin::surface::{SurfaceAttributesBuilder, WindowSurface};
surface::{SurfaceAttributesBuilder, WindowSurface},
};
use raw_window_handle::{ use raw_window_handle::{
RawDisplayHandle, RawWindowHandle, WaylandDisplayHandle, WaylandWindowHandle, RawDisplayHandle, RawWindowHandle, WaylandDisplayHandle, WaylandWindowHandle,
}; };
use slint::{PhysicalSize, platform::femtovg_renderer::OpenGLInterface}; use slint::PhysicalSize;
use std::{ use slint::platform::femtovg_renderer::OpenGLInterface;
error::Error,
ffi::{self, CStr, c_void},
num::NonZeroU32,
ptr::NonNull,
result::Result as StdResult,
};
use wayland_client::backend::ObjectId; use wayland_client::backend::ObjectId;
use crate::errors::{EGLError, LayerShikaError, Result};
use crate::logger;
pub struct EGLContext { pub struct EGLContext {
surface: Surface<WindowSurface>, surface: Surface<WindowSurface>,
context: PossiblyCurrentContext, context: PossiblyCurrentContext,

View file

@ -1,20 +1,23 @@
use super::context::EGLContext; use std::ffi::c_void;
use super::render_context_manager::RenderContextManager; use std::num::NonZeroU32;
use crate::{ use std::ptr::NonNull;
errors::{EGLError, LayerShikaError, Result}, use std::rc::Rc;
logger,
}; use glutin::api::egl::config::Config;
use glutin::{ use glutin::api::egl::display::Display;
api::egl::{config::Config, display::Display, surface::Surface}, use glutin::api::egl::surface::Surface;
context::ContextAttributesBuilder, use glutin::context::ContextAttributesBuilder;
prelude::*, use glutin::prelude::*;
surface::{SurfaceAttributesBuilder, WindowSurface}, use glutin::surface::{SurfaceAttributesBuilder, WindowSurface};
};
use raw_window_handle::{RawWindowHandle, WaylandWindowHandle}; use raw_window_handle::{RawWindowHandle, WaylandWindowHandle};
use slint::PhysicalSize; use slint::PhysicalSize;
use std::{ffi::c_void, num::NonZeroU32, ptr::NonNull, rc::Rc};
use wayland_client::backend::ObjectId; use wayland_client::backend::ObjectId;
use super::context::EGLContext;
use super::render_context_manager::RenderContextManager;
use crate::errors::{EGLError, LayerShikaError, Result};
use crate::logger;
pub struct RenderContextFactory { pub struct RenderContextFactory {
manager: Rc<RenderContextManager>, manager: Rc<RenderContextManager>,
} }

View file

@ -1,17 +1,19 @@
use crate::{ use std::ffi::c_void;
errors::{EGLError, LayerShikaError, Result}, use std::ptr::NonNull;
logger, use std::rc::Rc;
};
use glutin::{ use glutin::api::egl::config::Config;
api::egl::{config::Config, context::PossiblyCurrentContext, display::Display}, use glutin::api::egl::context::PossiblyCurrentContext;
config::ConfigTemplateBuilder, use glutin::api::egl::display::Display;
context::ContextAttributesBuilder, use glutin::config::ConfigTemplateBuilder;
prelude::*, use glutin::context::ContextAttributesBuilder;
}; use glutin::prelude::*;
use raw_window_handle::{RawDisplayHandle, WaylandDisplayHandle}; use raw_window_handle::{RawDisplayHandle, WaylandDisplayHandle};
use std::{ffi::c_void, ptr::NonNull, rc::Rc};
use wayland_client::backend::ObjectId; use wayland_client::backend::ObjectId;
use crate::errors::{EGLError, LayerShikaError, Result};
use crate::logger;
pub struct RenderContextManager { pub struct RenderContextManager {
display: Display, display: Display,
config: Config, config: Config,

View file

@ -1,16 +1,15 @@
use super::renderable_window::{RenderState, RenderableWindow};
use crate::{
errors::{RenderingError, Result},
logger,
};
use core::ops::Deref; use core::ops::Deref;
use slint::{
PhysicalSize, Window, WindowSize,
platform::{Renderer, WindowAdapter, WindowEvent, femtovg_renderer::FemtoVGRenderer},
};
use std::cell::Cell; use std::cell::Cell;
use std::rc::{Rc, Weak}; use std::rc::{Rc, Weak};
use slint::platform::femtovg_renderer::FemtoVGRenderer;
use slint::platform::{Renderer, WindowAdapter, WindowEvent};
use slint::{PhysicalSize, Window, WindowSize};
use super::renderable_window::{RenderState, RenderableWindow};
use crate::errors::{RenderingError, Result};
use crate::logger;
pub struct FemtoVGWindow { pub struct FemtoVGWindow {
window: Window, window: Window,
renderer: FemtoVGRenderer, renderer: FemtoVGRenderer,

View file

@ -1,17 +1,18 @@
use core::ops::Deref;
use std::cell::{Cell, OnceCell, RefCell};
use std::rc::{Rc, Weak};
use layer_shika_domain::dimensions::LogicalSize;
use layer_shika_domain::value_objects::handle::PopupHandle;
use slint::platform::femtovg_renderer::FemtoVGRenderer;
use slint::platform::{Renderer, WindowAdapter, WindowEvent};
use slint::{PhysicalSize, Window, WindowSize};
use slint_interpreter::ComponentInstance;
use super::renderable_window::{RenderState, RenderableWindow}; use super::renderable_window::{RenderState, RenderableWindow};
use crate::errors::{RenderingError, Result}; use crate::errors::{RenderingError, Result};
use crate::logger; use crate::logger;
use crate::wayland::surfaces::popup_manager::OnCloseCallback; use crate::wayland::surfaces::popup_manager::OnCloseCallback;
use core::ops::Deref;
use layer_shika_domain::dimensions::LogicalSize;
use layer_shika_domain::value_objects::handle::PopupHandle;
use slint::{
PhysicalSize, Window, WindowSize,
platform::{Renderer, WindowAdapter, WindowEvent, femtovg_renderer::FemtoVGRenderer},
};
use slint_interpreter::ComponentInstance;
use std::cell::{Cell, OnceCell, RefCell};
use std::rc::{Rc, Weak};
/// Represents the rendering lifecycle state of a popup window /// Represents the rendering lifecycle state of a popup window
#[derive(Debug, Clone, Copy, PartialEq, Eq)] #[derive(Debug, Clone, Copy, PartialEq, Eq)]

View file

@ -1,10 +1,10 @@
use crate::errors::Result;
use slint::{
PhysicalSize, WindowSize,
platform::{WindowAdapter, WindowEvent},
};
use std::cell::Cell; use std::cell::Cell;
use slint::platform::{WindowAdapter, WindowEvent};
use slint::{PhysicalSize, WindowSize};
use crate::errors::Result;
pub enum RenderState { pub enum RenderState {
Clean, Clean,
Dirty, Dirty,

View file

@ -1,11 +1,11 @@
use slint::{
PlatformError,
platform::{Platform, WindowAdapter},
};
use std::cell::{OnceCell, RefCell}; use std::cell::{OnceCell, RefCell};
use std::rc::Rc; use std::rc::Rc;
use crate::{logger, rendering::femtovg::main_window::FemtoVGWindow}; use slint::PlatformError;
use slint::platform::{Platform, WindowAdapter};
use crate::logger;
use crate::rendering::femtovg::main_window::FemtoVGWindow;
type PopupCreator = dyn Fn() -> Result<Rc<dyn WindowAdapter>, PlatformError>; type PopupCreator = dyn Fn() -> Result<Rc<dyn WindowAdapter>, PlatformError>;

View file

@ -1,13 +1,13 @@
use crate::wayland::surfaces::keyboard_state::{KeyboardState, keysym_to_text}; use slint::SharedString;
use slint::{SharedString, platform::WindowEvent}; use slint::platform::WindowEvent;
use wayland_client::{ use wayland_client::Proxy;
Proxy, use wayland_client::backend::ObjectId;
backend::ObjectId, use wayland_client::protocol::wl_keyboard;
protocol::{wl_keyboard, wl_surface::WlSurface}, use wayland_client::protocol::wl_surface::WlSurface;
};
use xkbcommon::xkb; use xkbcommon::xkb;
use super::state::KeyboardInputState; use super::state::KeyboardInputState;
use crate::wayland::surfaces::keyboard_state::{KeyboardState, keysym_to_text};
pub trait KeyboardEventTarget { pub trait KeyboardEventTarget {
fn dispatch_event(&self, event: WindowEvent); fn dispatch_event(&self, event: WindowEvent);

View file

@ -1,12 +1,12 @@
use crate::wayland::surfaces::pointer_utils::wayland_button_to_slint; use slint::LogicalPosition;
use slint::{LogicalPosition, platform::WindowEvent}; use slint::platform::WindowEvent;
use wayland_client::{ use wayland_client::backend::ObjectId;
Proxy, WEnum, use wayland_client::protocol::wl_pointer;
backend::ObjectId, use wayland_client::protocol::wl_surface::WlSurface;
protocol::{wl_pointer, wl_surface::WlSurface}, use wayland_client::{Proxy, WEnum};
};
use super::state::PointerInputState; use super::state::PointerInputState;
use crate::wayland::surfaces::pointer_utils::wayland_button_to_slint;
pub trait PointerEventTarget { pub trait PointerEventTarget {
fn to_logical_position(&self, surface_x: f64, surface_y: f64) -> LogicalPosition; fn to_logical_position(&self, surface_x: f64, surface_y: f64) -> LogicalPosition;

View file

@ -1,14 +1,15 @@
use std::rc::Rc;
use layer_shika_domain::value_objects::lock_config::LockConfig;
use layer_shika_domain::value_objects::lock_state::LockState;
use layer_shika_domain::value_objects::output_handle::OutputHandle;
use slint_interpreter::{CompilationResult, ComponentInstance, Value};
use smithay_client_toolkit::reexports::calloop::LoopHandle;
use crate::errors::Result; use crate::errors::Result;
use crate::wayland::config::ShellSurfaceConfig; use crate::wayland::config::ShellSurfaceConfig;
use crate::wayland::session_lock::{LockPropertyOperation, OutputFilter}; use crate::wayland::session_lock::{LockPropertyOperation, OutputFilter};
use crate::wayland::surfaces::app_state::AppState; use crate::wayland::surfaces::app_state::AppState;
use layer_shika_domain::value_objects::lock_config::LockConfig;
use layer_shika_domain::value_objects::lock_state::LockState;
use layer_shika_domain::value_objects::output_handle::OutputHandle;
use slint_interpreter::Value;
use slint_interpreter::{CompilationResult, ComponentInstance};
use smithay_client_toolkit::reexports::calloop::LoopHandle;
use std::rc::Rc;
type SessionLockCallback = Rc<dyn Fn(&[Value]) -> Value>; type SessionLockCallback = Rc<dyn Fn(&[Value]) -> Value>;

View file

@ -1,8 +1,8 @@
use layer_shika_domain::value_objects::output_handle::OutputHandle;
use std::collections::HashMap; use std::collections::HashMap;
use wayland_client::backend::ObjectId;
use layer_shika_domain::value_objects::output_handle::OutputHandle;
pub(crate) use output_manager::{OutputManager, OutputManagerContext}; pub(crate) use output_manager::{OutputManager, OutputManagerContext};
use wayland_client::backend::ObjectId;
pub(crate) mod output_manager; pub(crate) mod output_manager;
pub(crate) struct OutputMapping { pub(crate) struct OutputMapping {

View file

@ -1,15 +1,17 @@
use crate::rendering::egl::context_factory::RenderContextFactory;
use crate::wayland::surfaces::app_state::AppState;
use std::rc::Rc; use std::rc::Rc;
use wayland_client::{
QueueHandle, use wayland_client::QueueHandle;
protocol::{wl_compositor::WlCompositor, wl_output::WlOutput, wl_seat::WlSeat}, use wayland_client::protocol::wl_compositor::WlCompositor;
}; use wayland_client::protocol::wl_output::WlOutput;
use wayland_client::protocol::wl_seat::WlSeat;
use wayland_protocols::ext::session_lock::v1::client::ext_session_lock_manager_v1::ExtSessionLockManagerV1; use wayland_protocols::ext::session_lock::v1::client::ext_session_lock_manager_v1::ExtSessionLockManagerV1;
use wayland_protocols::ext::session_lock::v1::client::ext_session_lock_v1::ExtSessionLockV1; use wayland_protocols::ext::session_lock::v1::client::ext_session_lock_v1::ExtSessionLockV1;
use wayland_protocols::wp::fractional_scale::v1::client::wp_fractional_scale_manager_v1::WpFractionalScaleManagerV1; use wayland_protocols::wp::fractional_scale::v1::client::wp_fractional_scale_manager_v1::WpFractionalScaleManagerV1;
use wayland_protocols::wp::viewporter::client::wp_viewporter::WpViewporter; use wayland_protocols::wp::viewporter::client::wp_viewporter::WpViewporter;
use crate::rendering::egl::context_factory::RenderContextFactory;
use crate::wayland::surfaces::app_state::AppState;
#[derive(Clone)] #[derive(Clone)]
pub struct SessionLockContext { pub struct SessionLockContext {
compositor: WlCompositor, compositor: WlCompositor,

View file

@ -1,10 +1,15 @@
use crate::{logger, wayland::session_lock::lock_context::LockSurfaceParams};
use std::rc::Rc; use std::rc::Rc;
use wayland_client::{Proxy, backend::ObjectId, protocol::wl_surface::WlSurface};
use wayland_client::Proxy;
use wayland_client::backend::ObjectId;
use wayland_client::protocol::wl_surface::WlSurface;
use wayland_protocols::ext::session_lock::v1::client::ext_session_lock_surface_v1::ExtSessionLockSurfaceV1; use wayland_protocols::ext::session_lock::v1::client::ext_session_lock_surface_v1::ExtSessionLockSurfaceV1;
use wayland_protocols::wp::fractional_scale::v1::client::wp_fractional_scale_v1::WpFractionalScaleV1; use wayland_protocols::wp::fractional_scale::v1::client::wp_fractional_scale_v1::WpFractionalScaleV1;
use wayland_protocols::wp::viewporter::client::wp_viewport::WpViewport; use wayland_protocols::wp::viewporter::client::wp_viewport::WpViewport;
use crate::logger;
use crate::wayland::session_lock::lock_context::LockSurfaceParams;
pub struct LockSurface { pub struct LockSurface {
surface: Rc<WlSurface>, surface: Rc<WlSurface>,
session_surface: Rc<ExtSessionLockSurfaceV1>, session_surface: Rc<ExtSessionLockSurfaceV1>,

View file

@ -1,8 +1,10 @@
use crate::errors::{LayerShikaError, Result}; use std::rc::Rc;
use layer_shika_domain::value_objects::output_handle::OutputHandle; use layer_shika_domain::value_objects::output_handle::OutputHandle;
use layer_shika_domain::value_objects::output_info::OutputInfo; use layer_shika_domain::value_objects::output_info::OutputInfo;
use slint_interpreter::{ComponentInstance, Value}; use slint_interpreter::{ComponentInstance, Value};
use std::rc::Rc;
use crate::errors::{LayerShikaError, Result};
pub(crate) trait FilterContext { pub(crate) trait FilterContext {
fn matches_filter(&self, filter: &dyn Fn(&Self) -> bool) -> bool { fn matches_filter(&self, filter: &dyn Fn(&Self) -> bool) -> bool {

View file

@ -1,3 +1,11 @@
use slint::LogicalPosition;
use slint::platform::WindowEvent;
use wayland_client::WEnum;
use wayland_client::backend::ObjectId;
use wayland_client::protocol::wl_surface::WlSurface;
use wayland_client::protocol::{wl_keyboard, wl_pointer};
use super::state::ActiveLockSurface;
use crate::wayland::input::keyboard::{ use crate::wayland::input::keyboard::{
handle_keyboard_enter as shared_keyboard_enter, handle_keyboard_key as shared_keyboard_key, handle_keyboard_enter as shared_keyboard_enter, handle_keyboard_key as shared_keyboard_key,
handle_keyboard_leave as shared_keyboard_leave, handle_keyboard_leave as shared_keyboard_leave,
@ -14,14 +22,6 @@ use crate::wayland::input::{
PointerInputState, PointerSurfaceResolver, PointerInputState, PointerSurfaceResolver,
}; };
use crate::wayland::surfaces::keyboard_state::KeyboardState; use crate::wayland::surfaces::keyboard_state::KeyboardState;
use slint::{LogicalPosition, platform::WindowEvent};
use wayland_client::{
WEnum,
backend::ObjectId,
protocol::{wl_keyboard, wl_pointer, wl_surface::WlSurface},
};
use super::state::ActiveLockSurface;
pub(super) struct InputState { pub(super) struct InputState {
pub pointer: PointerInputState, pub pointer: PointerInputState,

View file

@ -1,13 +1,14 @@
use std::rc::Rc;
use slint::platform::WindowAdapter;
use slint::platform::femtovg_renderer::FemtoVGRenderer;
use slint::{LogicalPosition, LogicalSize, WindowPosition, WindowSize};
use wayland_client::backend::ObjectId;
use crate::errors::{LayerShikaError, Result}; use crate::errors::{LayerShikaError, Result};
use crate::rendering::femtovg::main_window::FemtoVGWindow; use crate::rendering::femtovg::main_window::FemtoVGWindow;
use crate::rendering::femtovg::renderable_window::RenderableWindow; use crate::rendering::femtovg::renderable_window::RenderableWindow;
use crate::wayland::session_lock::lock_context::SessionLockContext; use crate::wayland::session_lock::lock_context::SessionLockContext;
use slint::{
LogicalPosition, LogicalSize, WindowPosition, WindowSize, platform::WindowAdapter,
platform::femtovg_renderer::FemtoVGRenderer,
};
use std::rc::Rc;
use wayland_client::backend::ObjectId;
pub(super) fn create_window( pub(super) fn create_window(
context: &SessionLockContext, context: &SessionLockContext,

View file

@ -4,36 +4,33 @@ pub mod lifecycle;
pub mod rendering; pub mod rendering;
pub mod state; pub mod state;
use crate::rendering::slint_integration::platform::CustomSlintPlatform;
use crate::wayland::rendering::RenderableSet;
use crate::wayland::session_lock::lock_context::SessionLockContext;
use crate::wayland::session_lock::lock_surface::LockSurface;
use crate::wayland::surfaces::app_state::AppState;
use crate::wayland::surfaces::keyboard_state::KeyboardState;
use crate::{
errors::{LayerShikaError, Result},
logger,
};
use layer_shika_domain::prelude::OutputInfo;
use layer_shika_domain::value_objects::lock_config::LockConfig;
use layer_shika_domain::value_objects::lock_state::LockState;
use slint_interpreter::{CompilationResult, ComponentDefinition, ComponentInstance};
use std::rc::Rc; use std::rc::Rc;
use wayland_client::{
Proxy, QueueHandle, WEnum,
backend::ObjectId,
protocol::{wl_keyboard, wl_output::WlOutput, wl_pointer, wl_surface::WlSurface},
};
use wayland_protocols::ext::session_lock::v1::client::ext_session_lock_v1::ExtSessionLockV1;
pub use callbacks::{ pub use callbacks::{
LockCallback, LockPropertyOperation, OutputFilter, LockCallback, LockPropertyOperation, OutputFilter,
create_lock_property_operation_with_output_filter, create_lock_property_operation_with_output_filter,
}; };
use layer_shika_domain::prelude::OutputInfo;
use layer_shika_domain::value_objects::lock_config::LockConfig;
use layer_shika_domain::value_objects::lock_state::LockState;
use slint_interpreter::{CompilationResult, ComponentDefinition, ComponentInstance};
pub use state::{ActiveLockSurface, LockConfigureContext, LockSurfaceOutputContext}; pub use state::{ActiveLockSurface, LockConfigureContext, LockSurfaceOutputContext};
use wayland_client::backend::ObjectId;
use wayland_client::protocol::wl_output::WlOutput;
use wayland_client::protocol::wl_surface::WlSurface;
use wayland_client::protocol::{wl_keyboard, wl_pointer};
use wayland_client::{Proxy, QueueHandle, WEnum};
use wayland_protocols::ext::session_lock::v1::client::ext_session_lock_v1::ExtSessionLockV1;
use self::input_handling::InputState; use self::input_handling::InputState;
use crate::wayland::session_lock::lock_context::LockSurfaceParams; use crate::errors::{LayerShikaError, Result};
use crate::logger;
use crate::rendering::slint_integration::platform::CustomSlintPlatform;
use crate::wayland::rendering::RenderableSet;
use crate::wayland::session_lock::lock_context::{LockSurfaceParams, SessionLockContext};
use crate::wayland::session_lock::lock_surface::LockSurface;
use crate::wayland::surfaces::app_state::AppState;
use crate::wayland::surfaces::keyboard_state::KeyboardState;
pub struct SessionLockManager { pub struct SessionLockManager {
context: Rc<SessionLockContext>, context: Rc<SessionLockContext>,

View file

@ -1,7 +1,7 @@
use crate::errors::Result;
use wayland_client::backend::ObjectId; use wayland_client::backend::ObjectId;
use super::state::ActiveLockSurface; use super::state::ActiveLockSurface;
use crate::errors::Result;
pub(super) fn render_frames(lock_surfaces: &[(ObjectId, ActiveLockSurface)]) -> Result<()> { pub(super) fn render_frames(lock_surfaces: &[(ObjectId, ActiveLockSurface)]) -> Result<()> {
for (_, surface) in lock_surfaces { for (_, surface) in lock_surfaces {

View file

@ -1,4 +1,15 @@
use super::callbacks::{LockCallbackContext, LockCallbackExt, LockPropertyOperationExt}; use std::rc::Rc;
use layer_shika_domain::surface_dimensions::SurfaceDimensions;
use layer_shika_domain::value_objects::output_handle::OutputHandle;
use layer_shika_domain::value_objects::output_info::OutputInfo;
use slint::platform::{WindowAdapter, WindowEvent};
use slint::{LogicalPosition, LogicalSize, WindowSize};
use slint_interpreter::{CompilationResult, ComponentDefinition};
use super::callbacks::{
LockCallback, LockCallbackContext, LockCallbackExt, LockPropertyOperationExt,
};
use crate::errors::Result; use crate::errors::Result;
use crate::logger; use crate::logger;
use crate::rendering::femtovg::main_window::FemtoVGWindow; use crate::rendering::femtovg::main_window::FemtoVGWindow;
@ -7,17 +18,6 @@ use crate::rendering::slint_integration::platform::CustomSlintPlatform;
use crate::wayland::session_lock::lock_surface::LockSurface; use crate::wayland::session_lock::lock_surface::LockSurface;
use crate::wayland::surfaces::component_state::ComponentState; use crate::wayland::surfaces::component_state::ComponentState;
use crate::wayland::surfaces::display_metrics::DisplayMetrics; use crate::wayland::surfaces::display_metrics::DisplayMetrics;
use layer_shika_domain::surface_dimensions::SurfaceDimensions;
use layer_shika_domain::value_objects::output_handle::OutputHandle;
use layer_shika_domain::value_objects::output_info::OutputInfo;
use slint::{
LogicalPosition, LogicalSize, WindowSize,
platform::{WindowAdapter, WindowEvent},
};
use slint_interpreter::{CompilationResult, ComponentDefinition};
use std::rc::Rc;
use super::callbacks::LockCallback;
#[derive(Clone, Copy, Debug, PartialEq, Eq)] #[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum LockScalingMode { pub enum LockScalingMode {

View file

@ -1,3 +1,22 @@
use std::cell::RefCell;
use std::collections::HashMap;
use std::os::fd::BorrowedFd;
use std::rc::Rc;
use layer_shika_domain::entities::output_registry::OutputRegistry;
use layer_shika_domain::value_objects::handle::SurfaceHandle;
use layer_shika_domain::value_objects::lock_config::LockConfig;
use layer_shika_domain::value_objects::lock_state::LockState;
use layer_shika_domain::value_objects::output_handle::OutputHandle;
use layer_shika_domain::value_objects::output_info::OutputInfo;
use slint_interpreter::{CompilationResult, ComponentDefinition, Value};
use wayland_client::Proxy;
use wayland_client::backend::ObjectId;
use wayland_client::protocol::wl_keyboard;
use wayland_client::protocol::wl_output::WlOutput;
use wayland_client::protocol::wl_surface::WlSurface;
use xkbcommon::xkb;
use super::event_context::SharedPointerSerial; use super::event_context::SharedPointerSerial;
use super::keyboard_state::KeyboardState; use super::keyboard_state::KeyboardState;
use super::surface_state::SurfaceState; use super::surface_state::SurfaceState;
@ -17,22 +36,6 @@ use crate::wayland::session_lock::manager::callbacks::{
use crate::wayland::session_lock::{ use crate::wayland::session_lock::{
LockCallback, LockPropertyOperation, OutputFilter, SessionLockManager, LockCallback, LockPropertyOperation, OutputFilter, SessionLockManager,
}; };
use layer_shika_domain::entities::output_registry::OutputRegistry;
use layer_shika_domain::value_objects::handle::SurfaceHandle;
use layer_shika_domain::value_objects::lock_config::LockConfig;
use layer_shika_domain::value_objects::lock_state::LockState;
use layer_shika_domain::value_objects::output_handle::OutputHandle;
use layer_shika_domain::value_objects::output_info::OutputInfo;
use slint_interpreter::{CompilationResult, ComponentDefinition, Value};
use std::cell::RefCell;
use std::collections::HashMap;
use std::os::fd::BorrowedFd;
use std::rc::Rc;
use wayland_client::Proxy;
use wayland_client::backend::ObjectId;
use wayland_client::protocol::wl_keyboard;
use wayland_client::protocol::{wl_output::WlOutput, wl_surface::WlSurface};
use xkbcommon::xkb;
pub type PerOutputSurface = SurfaceState; pub type PerOutputSurface = SurfaceState;
type SessionLockCallback = Rc<dyn Fn(&[Value]) -> Value>; type SessionLockCallback = Rc<dyn Fn(&[Value]) -> Value>;

View file

@ -1,8 +1,10 @@
use crate::errors::{LayerShikaError, Result}; use std::rc::Rc;
use crate::rendering::femtovg::main_window::FemtoVGWindow;
use slint::ComponentHandle; use slint::ComponentHandle;
use slint_interpreter::{CompilationResult, ComponentDefinition, ComponentInstance}; use slint_interpreter::{CompilationResult, ComponentDefinition, ComponentInstance};
use std::rc::Rc;
use crate::errors::{LayerShikaError, Result};
use crate::rendering::femtovg::main_window::FemtoVGWindow;
pub struct ComponentState { pub struct ComponentState {
component_instance: ComponentInstance, component_instance: ComponentInstance,

View file

@ -1,4 +1,6 @@
use crate::logger; use std::cell::RefCell;
use std::rc::Rc;
use layer_shika_domain::dimensions::{ use layer_shika_domain::dimensions::{
LogicalSize as DomainLogicalSize, PhysicalSize as DomainPhysicalSize, LogicalSize as DomainLogicalSize, PhysicalSize as DomainPhysicalSize,
ScaleFactor as DomainScaleFactor, ScaleFactor as DomainScaleFactor,
@ -6,8 +8,8 @@ use layer_shika_domain::dimensions::{
use layer_shika_domain::errors::Result as DomainResult; use layer_shika_domain::errors::Result as DomainResult;
use layer_shika_domain::surface_dimensions::SurfaceDimensions; use layer_shika_domain::surface_dimensions::SurfaceDimensions;
use slint::PhysicalSize; use slint::PhysicalSize;
use std::cell::RefCell;
use std::rc::Rc; use crate::logger;
pub struct DisplayMetrics { pub struct DisplayMetrics {
surface: SurfaceDimensions, surface: SurfaceDimensions,

View file

@ -1,17 +1,18 @@
use std::cell::Cell;
use std::rc::Rc;
use slint::platform::{WindowAdapter, WindowEvent};
use slint::{LogicalPosition, PhysicalSize};
use wayland_client::Proxy;
use wayland_client::backend::ObjectId;
use wayland_client::protocol::wl_pointer;
use wayland_client::protocol::wl_surface::WlSurface;
use wayland_protocols::wp::fractional_scale::v1::client::wp_fractional_scale_v1::WpFractionalScaleV1;
use crate::rendering::femtovg::main_window::FemtoVGWindow; use crate::rendering::femtovg::main_window::FemtoVGWindow;
use crate::wayland::input::PointerInputState; use crate::wayland::input::PointerInputState;
use crate::wayland::surfaces::display_metrics::SharedDisplayMetrics; use crate::wayland::surfaces::display_metrics::SharedDisplayMetrics;
use crate::wayland::surfaces::popup_manager::{ActiveWindow, PopupManager}; use crate::wayland::surfaces::popup_manager::{ActiveWindow, PopupManager};
use slint::platform::{WindowAdapter, WindowEvent};
use slint::{LogicalPosition, PhysicalSize};
use std::cell::Cell;
use std::rc::Rc;
use wayland_client::{
Proxy,
backend::ObjectId,
protocol::{wl_pointer, wl_surface::WlSurface},
};
use wayland_protocols::wp::fractional_scale::v1::client::wp_fractional_scale_v1::WpFractionalScaleV1;
pub struct SharedPointerSerial { pub struct SharedPointerSerial {
serial: Cell<u32>, serial: Cell<u32>,

View file

@ -1,4 +1,5 @@
use slint::{SharedString, platform::Key}; use slint::SharedString;
use slint::platform::Key;
use xkbcommon::xkb; use xkbcommon::xkb;
pub struct KeyboardState { pub struct KeyboardState {

View file

@ -1,14 +1,16 @@
use crate::{Error, Result}; use std::cell::RefCell;
use std::os::unix::io::AsFd;
use std::rc::{Rc, Weak};
use std::time::{Duration, Instant};
use layer_shika_adapters::errors::EventLoopError; use layer_shika_adapters::errors::EventLoopError;
use layer_shika_adapters::platform::calloop::{ use layer_shika_adapters::platform::calloop::{
EventSource, Generic, Interest, Mode, PostAction, RegistrationToken, TimeoutAction, Timer, EventSource, Generic, Interest, Mode, PostAction, RegistrationToken, TimeoutAction, Timer,
channel, channel,
}; };
use layer_shika_adapters::{AppState, WaylandSystemOps}; use layer_shika_adapters::{AppState, WaylandSystemOps};
use std::cell::RefCell;
use std::os::unix::io::AsFd; use crate::{Error, Result};
use std::rc::{Rc, Weak};
use std::time::{Duration, Instant};
pub trait FromAppState<'a> { pub trait FromAppState<'a> {
fn from_app_state(app_state: &'a mut AppState) -> Self; fn from_app_state(app_state: &'a mut AppState) -> Self;

View file

@ -15,14 +15,14 @@ mod surface_registry;
mod system; mod system;
pub mod value_conversion; pub mod value_conversion;
use layer_shika_adapters::errors::LayerShikaError;
use layer_shika_domain::errors::DomainError;
use std::result::Result as StdResult; use std::result::Result as StdResult;
pub use event_loop::{EventLoopHandle, ShellEventLoop}; pub use event_loop::{EventLoopHandle, ShellEventLoop};
pub use layer_shika_adapters::PopupWindow; pub use layer_shika_adapters::PopupWindow;
use layer_shika_adapters::errors::LayerShikaError;
pub use layer_shika_adapters::platform::{slint, slint_interpreter}; pub use layer_shika_adapters::platform::{slint, slint_interpreter};
pub use layer_shika_domain::entities::output_registry::OutputRegistry; pub use layer_shika_domain::entities::output_registry::OutputRegistry;
use layer_shika_domain::errors::DomainError;
pub use layer_shika_domain::prelude::AnchorStrategy; pub use layer_shika_domain::prelude::AnchorStrategy;
pub use layer_shika_domain::value_objects::anchor::AnchorEdges; pub use layer_shika_domain::value_objects::anchor::AnchorEdges;
pub use layer_shika_domain::value_objects::handle::{Handle, PopupHandle, SurfaceHandle}; pub use layer_shika_domain::value_objects::handle::{Handle, PopupHandle, SurfaceHandle};
@ -31,14 +31,16 @@ pub use layer_shika_domain::value_objects::layer::Layer;
pub use layer_shika_domain::value_objects::output_handle::OutputHandle; pub use layer_shika_domain::value_objects::output_handle::OutputHandle;
pub use layer_shika_domain::value_objects::output_info::{OutputGeometry, OutputInfo}; pub use layer_shika_domain::value_objects::output_info::{OutputGeometry, OutputInfo};
pub use layer_shika_domain::value_objects::output_policy::OutputPolicy; pub use layer_shika_domain::value_objects::output_policy::OutputPolicy;
pub use layer_shika_domain::value_objects::surface_instance_id::SurfaceInstanceId; pub use layer_shika_domain::value_objects::output_target::OutputTarget;
pub use layer_shika_domain::value_objects::{ pub use layer_shika_domain::value_objects::popup_behavior::{
output_target::OutputTarget, ConstraintAdjustment, OutputMigrationPolicy, PopupBehavior,
popup_behavior::{ConstraintAdjustment, OutputMigrationPolicy, PopupBehavior},
popup_config::PopupConfig,
popup_position::{Alignment, AnchorPoint, Offset, PopupPosition},
popup_size::PopupSize,
}; };
pub use layer_shika_domain::value_objects::popup_config::PopupConfig;
pub use layer_shika_domain::value_objects::popup_position::{
Alignment, AnchorPoint, Offset, PopupPosition,
};
pub use layer_shika_domain::value_objects::popup_size::PopupSize;
pub use layer_shika_domain::value_objects::surface_instance_id::SurfaceInstanceId;
pub use layer_surface::{LayerSurfaceHandle, ShellSurfaceConfigHandler}; pub use layer_surface::{LayerSurfaceHandle, ShellSurfaceConfigHandler};
pub use lock_selection::LockSelection; pub use lock_selection::LockSelection;
pub use popup::PopupShell; pub use popup::PopupShell;
@ -46,21 +48,18 @@ pub use popup_builder::{Bound, PopupBuilder, Unbound};
pub use selection::{PropertyError, Selection, SelectionResult}; pub use selection::{PropertyError, Selection, SelectionResult};
pub use selector::{Output, Selector, Surface, SurfaceInfo}; pub use selector::{Output, Selector, Surface, SurfaceInfo};
pub use session_lock::{SessionLock, SessionLockBuilder}; pub use session_lock::{SessionLock, SessionLockBuilder};
pub use shell::{
DEFAULT_COMPONENT_NAME, Shell, ShellBuilder, ShellEventContext, SurfaceConfigBuilder,
};
pub use shell_config::{CompiledUiSource, ShellConfig, SurfaceComponentConfig};
pub use shell_runtime::{DEFAULT_SURFACE_NAME, ShellRuntime}; pub use shell_runtime::{DEFAULT_SURFACE_NAME, ShellRuntime};
pub use surface_registry::{SurfaceDefinition, SurfaceEntry, SurfaceMetadata, SurfaceRegistry};
pub use system::{ pub use system::{
CallbackContext, EventDispatchContext, RuntimeSurfaceConfigBuilder, ShellControl, CallbackContext, EventDispatchContext, RuntimeSurfaceConfigBuilder, ShellControl,
SurfaceControlHandle, SurfaceTarget, SurfaceControlHandle, SurfaceTarget,
}; };
pub use value_conversion::IntoValue; pub use value_conversion::IntoValue;
pub use shell::{
DEFAULT_COMPONENT_NAME, Shell, ShellBuilder, ShellEventContext, SurfaceConfigBuilder,
};
pub use surface_registry::{SurfaceDefinition, SurfaceEntry, SurfaceMetadata, SurfaceRegistry};
pub use shell_config::{CompiledUiSource, ShellConfig, SurfaceComponentConfig};
pub(crate) mod logger { pub(crate) mod logger {
#[cfg(all(feature = "log", feature = "tracing"))] #[cfg(all(feature = "log", feature = "tracing"))]
compile_error!("Cannot use both logging backend at one time"); compile_error!("Cannot use both logging backend at one time");
@ -99,6 +98,13 @@ pub enum Error {
} }
pub mod prelude { pub mod prelude {
pub use layer_shika_adapters::platform::wayland::Anchor;
pub use layer_shika_domain::prelude::{
LogicalPosition, LogicalRect, LogicalSize, Margins, PhysicalSize, ScaleFactor,
SurfaceConfig, SurfaceDimension, UiSource,
};
pub use crate::calloop::{Generic, Interest, Mode, PostAction, RegistrationToken, Timer};
pub use crate::{ pub use crate::{
AnchorEdges, AnchorStrategy, CompiledUiSource, DEFAULT_COMPONENT_NAME, AnchorEdges, AnchorStrategy, CompiledUiSource, DEFAULT_COMPONENT_NAME,
DEFAULT_SURFACE_NAME, EventDispatchContext, EventLoopHandle, Handle, IntoValue, DEFAULT_SURFACE_NAME, EventDispatchContext, EventLoopHandle, Handle, IntoValue,
@ -109,17 +115,6 @@ pub mod prelude {
ShellConfig, ShellControl, ShellEventContext, ShellEventLoop, ShellRuntime, ShellConfig, ShellControl, ShellEventContext, ShellEventLoop, ShellRuntime,
ShellSurfaceConfigHandler, Surface, SurfaceComponentConfig, SurfaceConfigBuilder, ShellSurfaceConfigHandler, Surface, SurfaceComponentConfig, SurfaceConfigBuilder,
SurfaceControlHandle, SurfaceDefinition, SurfaceEntry, SurfaceHandle, SurfaceInfo, SurfaceControlHandle, SurfaceDefinition, SurfaceEntry, SurfaceHandle, SurfaceInfo,
SurfaceMetadata, SurfaceRegistry, SurfaceMetadata, SurfaceRegistry, slint, slint_interpreter,
}; };
pub use crate::calloop::{Generic, Interest, Mode, PostAction, RegistrationToken, Timer};
pub use crate::{slint, slint_interpreter};
pub use layer_shika_domain::prelude::{
LogicalPosition, LogicalRect, LogicalSize, Margins, PhysicalSize, ScaleFactor,
SurfaceConfig, SurfaceDimension, UiSource,
};
pub use layer_shika_adapters::platform::wayland::Anchor;
} }

View file

@ -1,12 +1,11 @@
// TODO: Maybe refactor to reuse the layer shell selector // TODO: Maybe refactor to reuse the layer shell selector
use crate::{
Error, logger,
selector::{Selector, SurfaceInfo},
slint_interpreter::{ComponentInstance, Value},
};
use layer_shika_domain::errors::DomainError; use layer_shika_domain::errors::DomainError;
use crate::selector::{Selector, SurfaceInfo};
use crate::slint_interpreter::{ComponentInstance, Value};
use crate::{Error, logger};
/// A selection of session lock surfaces matching a selector /// A selection of session lock surfaces matching a selector
/// ///
/// Provides methods to interact with all matching lock surfaces at once. /// Provides methods to interact with all matching lock surfaces at once.

View file

@ -1,11 +1,12 @@
use crate::popup_builder::{Bound, PopupBuilder};
use crate::system::{PopupCommand, ShellCommand, ShellControl};
use crate::{Error, Result};
use layer_shika_adapters::platform::calloop::channel; use layer_shika_adapters::platform::calloop::channel;
use layer_shika_domain::errors::DomainError; use layer_shika_domain::errors::DomainError;
use layer_shika_domain::value_objects::handle::PopupHandle; use layer_shika_domain::value_objects::handle::PopupHandle;
use layer_shika_domain::value_objects::popup_config::PopupConfig; use layer_shika_domain::value_objects::popup_config::PopupConfig;
use crate::popup_builder::{Bound, PopupBuilder};
use crate::system::{PopupCommand, ShellCommand, ShellControl};
use crate::{Error, Result};
#[derive(Clone)] #[derive(Clone)]
pub struct PopupShell { pub struct PopupShell {
sender: channel::Sender<ShellCommand>, sender: channel::Sender<ShellCommand>,

View file

@ -1,5 +1,3 @@
use crate::Result;
use crate::popup::PopupShell;
use layer_shika_domain::dimensions::LogicalRect; use layer_shika_domain::dimensions::LogicalRect;
use layer_shika_domain::value_objects::handle::PopupHandle; use layer_shika_domain::value_objects::handle::PopupHandle;
use layer_shika_domain::value_objects::output_target::OutputTarget; use layer_shika_domain::value_objects::output_target::OutputTarget;
@ -10,6 +8,9 @@ use layer_shika_domain::value_objects::popup_position::{
}; };
use layer_shika_domain::value_objects::popup_size::PopupSize; use layer_shika_domain::value_objects::popup_size::PopupSize;
use crate::Result;
use crate::popup::PopupShell;
/// Type state indicating the builder is not bound to a shell /// Type state indicating the builder is not bound to a shell
pub struct Unbound; pub struct Unbound;

View file

@ -1,11 +1,9 @@
use crate::{ use layer_shika_domain::errors::DomainError;
Error, LayerSurfaceHandle, Shell, logger, use layer_shika_domain::value_objects::surface_instance_id::SurfaceInstanceId;
selector::{Selector, SurfaceInfo},
slint_interpreter::{ComponentInstance, Value}, use crate::selector::{Selector, SurfaceInfo};
}; use crate::slint_interpreter::{ComponentInstance, Value};
use layer_shika_domain::{ use crate::{Error, LayerSurfaceHandle, Shell, logger};
errors::DomainError, value_objects::surface_instance_id::SurfaceInstanceId,
};
/// Result of a property operation on a single surface /// Result of a property operation on a single surface
#[derive(Debug)] #[derive(Debug)]

View file

@ -1,8 +1,10 @@
use crate::{OutputHandle, OutputInfo};
use layer_shika_domain::value_objects::surface_instance_id::SurfaceInstanceId;
use std::fmt::{Debug, Formatter, Result as FmtResult}; use std::fmt::{Debug, Formatter, Result as FmtResult};
use std::sync::Arc; use std::sync::Arc;
use layer_shika_domain::value_objects::surface_instance_id::SurfaceInstanceId;
use crate::{OutputHandle, OutputInfo};
/// Runtime information about a surface instance /// Runtime information about a surface instance
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct SurfaceInfo { pub struct SurfaceInfo {

View file

@ -1,9 +1,6 @@
use crate::IntoValue; use std::cell::RefCell;
use crate::calloop::channel; use std::rc::{Rc, Weak};
use crate::logger;
use crate::slint_interpreter::Value;
use crate::system::{SessionLockCommand, ShellCommand};
use crate::{Error, Result};
use layer_shika_adapters::WaylandSystemOps; use layer_shika_adapters::WaylandSystemOps;
use layer_shika_domain::dimensions::ScaleFactor; use layer_shika_domain::dimensions::ScaleFactor;
use layer_shika_domain::errors::DomainError; use layer_shika_domain::errors::DomainError;
@ -11,9 +8,11 @@ use layer_shika_domain::value_objects::lock_config::LockConfig;
use layer_shika_domain::value_objects::lock_state::LockState; use layer_shika_domain::value_objects::lock_state::LockState;
use layer_shika_domain::value_objects::margins::Margins; use layer_shika_domain::value_objects::margins::Margins;
use layer_shika_domain::value_objects::output_policy::OutputPolicy; use layer_shika_domain::value_objects::output_policy::OutputPolicy;
use std::cell::RefCell;
use std::rc::Rc; use crate::calloop::channel;
use std::rc::Weak; use crate::slint_interpreter::Value;
use crate::system::{SessionLockCommand, ShellCommand};
use crate::{Error, IntoValue, Result, logger};
pub struct SessionLock { pub struct SessionLock {
system: Weak<RefCell<dyn WaylandSystemOps>>, system: Weak<RefCell<dyn WaylandSystemOps>>,

View file

@ -1,15 +1,7 @@
use crate::event_loop::{EventLoopHandle, FromAppState}; use std::cell::RefCell;
use crate::layer_surface::LayerSurfaceHandle; use std::path::{Path, PathBuf};
use crate::session_lock::{SessionLock, SessionLockBuilder}; use std::rc::{Rc, Weak};
use crate::shell_config::{CompiledUiSource, ShellConfig};
use crate::shell_runtime::ShellRuntime;
use crate::surface_registry::{SurfaceDefinition, SurfaceEntry, SurfaceRegistry};
use crate::system::{
CallbackContext, EventDispatchContext, PopupCommand, SessionLockCommand, ShellCommand,
ShellControl, SurfaceCommand, SurfaceTarget,
};
use crate::value_conversion::IntoValue;
use crate::{Error, Result, logger};
use layer_shika_adapters::errors::EventLoopError; use layer_shika_adapters::errors::EventLoopError;
use layer_shika_adapters::platform::calloop::channel; use layer_shika_adapters::platform::calloop::channel;
use layer_shika_adapters::platform::slint_interpreter::{ use layer_shika_adapters::platform::slint_interpreter::{
@ -29,9 +21,19 @@ use layer_shika_domain::value_objects::output_handle::OutputHandle;
use layer_shika_domain::value_objects::output_info::OutputInfo; use layer_shika_domain::value_objects::output_info::OutputInfo;
use layer_shika_domain::value_objects::surface_instance_id::SurfaceInstanceId; use layer_shika_domain::value_objects::surface_instance_id::SurfaceInstanceId;
use spin_on::spin_on; use spin_on::spin_on;
use std::cell::RefCell;
use std::path::{Path, PathBuf}; use crate::event_loop::{EventLoopHandle, FromAppState};
use std::rc::{Rc, Weak}; use crate::layer_surface::LayerSurfaceHandle;
use crate::session_lock::{SessionLock, SessionLockBuilder};
use crate::shell_config::{CompiledUiSource, ShellConfig};
use crate::shell_runtime::ShellRuntime;
use crate::surface_registry::{SurfaceDefinition, SurfaceEntry, SurfaceRegistry};
use crate::system::{
CallbackContext, EventDispatchContext, PopupCommand, SessionLockCommand, ShellCommand,
ShellControl, SurfaceCommand, SurfaceTarget,
};
use crate::value_conversion::IntoValue;
use crate::{Error, Result, logger};
/// Default Slint component name used when none is specified /// Default Slint component name used when none is specified
pub const DEFAULT_COMPONENT_NAME: &str = "Main"; pub const DEFAULT_COMPONENT_NAME: &str = "Main";

View file

@ -1,8 +1,9 @@
use layer_shika_adapters::platform::slint_interpreter::CompilationResult;
use layer_shika_domain::prelude::{SurfaceConfig, UiSource};
use std::path::PathBuf; use std::path::PathBuf;
use std::rc::Rc; use std::rc::Rc;
use layer_shika_adapters::platform::slint_interpreter::CompilationResult;
use layer_shika_domain::prelude::{SurfaceConfig, UiSource};
/// Source for Slint UI definition /// Source for Slint UI definition
/// ///
/// Specifies where to load the UI from: a `.slint` file, inline source code, or pre-compiled result. /// Specifies where to load the UI from: a `.slint` file, inline source code, or pre-compiled result.

View file

@ -1,10 +1,12 @@
use crate::Result; use std::collections::HashMap;
use std::rc::Rc;
use layer_shika_adapters::platform::slint_interpreter::ComponentInstance; use layer_shika_adapters::platform::slint_interpreter::ComponentInstance;
use layer_shika_domain::config::SurfaceConfig; use layer_shika_domain::config::SurfaceConfig;
use layer_shika_domain::value_objects::handle::SurfaceHandle; use layer_shika_domain::value_objects::handle::SurfaceHandle;
use layer_shika_domain::value_objects::output_handle::OutputHandle; use layer_shika_domain::value_objects::output_handle::OutputHandle;
use std::collections::HashMap;
use std::rc::Rc; use crate::Result;
/// Definition of a surface including component name and configuration /// Definition of a surface including component name and configuration
/// ///

View file

@ -1,6 +1,6 @@
use crate::event_loop::FromAppState; use std::cell::Cell;
use crate::layer_surface::LayerSurfaceHandle; use std::rc::Rc;
use crate::{Error, Result, logger};
use layer_shika_adapters::platform::calloop::channel; use layer_shika_adapters::platform::calloop::channel;
use layer_shika_adapters::platform::slint::ComponentHandle; use layer_shika_adapters::platform::slint::ComponentHandle;
use layer_shika_adapters::platform::slint_interpreter::{ use layer_shika_adapters::platform::slint_interpreter::{
@ -14,8 +14,7 @@ use layer_shika_domain::prelude::{
AnchorEdges, KeyboardInteractivity, Layer, Margins, OutputPolicy, ScaleFactor, AnchorEdges, KeyboardInteractivity, Layer, Margins, OutputPolicy, ScaleFactor,
}; };
use layer_shika_domain::value_objects::dimensions::{PopupDimensions, SurfaceDimension}; use layer_shika_domain::value_objects::dimensions::{PopupDimensions, SurfaceDimension};
use layer_shika_domain::value_objects::handle::PopupHandle; use layer_shika_domain::value_objects::handle::{PopupHandle, SurfaceHandle};
use layer_shika_domain::value_objects::handle::SurfaceHandle;
use layer_shika_domain::value_objects::lock_config::LockConfig; use layer_shika_domain::value_objects::lock_config::LockConfig;
use layer_shika_domain::value_objects::output_handle::OutputHandle; use layer_shika_domain::value_objects::output_handle::OutputHandle;
use layer_shika_domain::value_objects::output_info::OutputInfo; use layer_shika_domain::value_objects::output_info::OutputInfo;
@ -23,8 +22,10 @@ use layer_shika_domain::value_objects::popup_config::PopupConfig;
use layer_shika_domain::value_objects::popup_position::PopupPosition; use layer_shika_domain::value_objects::popup_position::PopupPosition;
use layer_shika_domain::value_objects::popup_size::PopupSize; use layer_shika_domain::value_objects::popup_size::PopupSize;
use layer_shika_domain::value_objects::surface_instance_id::SurfaceInstanceId; use layer_shika_domain::value_objects::surface_instance_id::SurfaceInstanceId;
use std::cell::Cell;
use std::rc::Rc; use crate::event_loop::FromAppState;
use crate::layer_surface::LayerSurfaceHandle;
use crate::{Error, Result, logger};
pub enum PopupCommand { pub enum PopupCommand {
Show { Show {

View file

@ -1,7 +1,8 @@
use std::collections::HashMap;
use crate::value_objects::output_handle::OutputHandle; use crate::value_objects::output_handle::OutputHandle;
use crate::value_objects::output_info::OutputInfo; use crate::value_objects::output_info::OutputInfo;
use crate::value_objects::output_policy::OutputPolicy; use crate::value_objects::output_policy::OutputPolicy;
use std::collections::HashMap;
#[derive(Clone)] #[derive(Clone)]
pub struct OutputRegistry { pub struct OutputRegistry {

View file

@ -1,6 +1,7 @@
use crate::value_objects::handle::PopupHandle;
use std::collections::HashMap; use std::collections::HashMap;
use crate::value_objects::handle::PopupHandle;
#[derive(Debug, Default, Clone)] #[derive(Debug, Default, Clone)]
pub struct PopupTree { pub struct PopupTree {
root_popups: Vec<PopupHandle>, root_popups: Vec<PopupHandle>,

View file

@ -1,5 +1,6 @@
use std::error::Error; use std::error::Error;
use std::result::Result as StdResult; use std::result::Result as StdResult;
use thiserror::Error as ThisError; use thiserror::Error as ThisError;
pub type Result<T> = StdResult<T, DomainError>; pub type Result<T> = StdResult<T, DomainError>;

View file

@ -1,6 +1,5 @@
use std::fmt::{Debug, Formatter, Result as FmtResult}; use std::fmt::{Debug, Formatter, Result as FmtResult};
use std::hash::Hash; use std::hash::{Hash, Hasher};
use std::hash::Hasher;
use std::marker::PhantomData; use std::marker::PhantomData;
use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::atomic::{AtomicUsize, Ordering};

View file

@ -1,7 +1,8 @@
use crate::value_objects::output_info::OutputInfo;
use std::fmt; use std::fmt;
use std::rc::Rc; use std::rc::Rc;
use crate::value_objects::output_info::OutputInfo;
type OutputFilter = Rc<dyn Fn(&OutputInfo) -> bool>; type OutputFilter = Rc<dyn Fn(&OutputInfo) -> bool>;
/// Determines which outputs (monitors) should display the surface /// Determines which outputs (monitors) should display the surface

View file

@ -1,6 +1,7 @@
use std::path::PathBuf;
use layer_shika::prelude::*; use layer_shika::prelude::*;
use layer_shika::slint_interpreter::Value; use layer_shika::slint_interpreter::Value;
use std::path::PathBuf;
fn main() -> Result<()> { fn main() -> Result<()> {
env_logger::builder() env_logger::builder()

View file

@ -1,9 +1,10 @@
use std::path::PathBuf;
use std::rc::Rc;
use layer_shika::calloop::channel::Sender; use layer_shika::calloop::channel::Sender;
use layer_shika::prelude::*; use layer_shika::prelude::*;
use layer_shika::slint::SharedString; use layer_shika::slint::SharedString;
use layer_shika::slint_interpreter::Value; use layer_shika::slint_interpreter::Value;
use std::path::PathBuf;
use std::rc::Rc;
#[derive(Debug)] #[derive(Debug)]
enum UiUpdate { enum UiUpdate {

View file

@ -1,8 +1,9 @@
use layer_shika::prelude::*;
use layer_shika::slint_interpreter::Value;
use std::path::PathBuf; use std::path::PathBuf;
use std::rc::Rc; use std::rc::Rc;
use layer_shika::prelude::*;
use layer_shika::slint_interpreter::Value;
fn main() -> Result<()> { fn main() -> Result<()> {
env_logger::builder() env_logger::builder()
.filter_level(log::LevelFilter::Info) .filter_level(log::LevelFilter::Info)

View file

@ -1,8 +1,9 @@
use layer_shika::prelude::*;
use layer_shika::slint_interpreter::Value;
use std::path::PathBuf; use std::path::PathBuf;
use std::rc::Rc; use std::rc::Rc;
use layer_shika::prelude::*;
use layer_shika::slint_interpreter::Value;
fn main() -> Result<()> { fn main() -> Result<()> {
env_logger::builder() env_logger::builder()
.filter_level(log::LevelFilter::Info) .filter_level(log::LevelFilter::Info)

View file

@ -1,7 +1,8 @@
use layer_shika::prelude::*;
use std::path::PathBuf; use std::path::PathBuf;
use std::rc::Rc; use std::rc::Rc;
use layer_shika::prelude::*;
fn main() -> Result<()> { fn main() -> Result<()> {
env_logger::builder() env_logger::builder()
.filter_level(log::LevelFilter::Info) .filter_level(log::LevelFilter::Info)

View file

@ -1,6 +1,7 @@
use layer_shika::prelude::*;
use std::path::PathBuf; use std::path::PathBuf;
use layer_shika::prelude::*;
fn main() -> Result<()> { fn main() -> Result<()> {
env_logger::builder() env_logger::builder()
.filter_level(log::LevelFilter::Info) .filter_level(log::LevelFilter::Info)

View file

@ -1,6 +1,7 @@
use layer_shika::prelude::*;
use std::path::PathBuf; use std::path::PathBuf;
use layer_shika::prelude::*;
fn main() -> Result<()> { fn main() -> Result<()> {
env_logger::builder() env_logger::builder()
.filter_level(log::LevelFilter::Info) .filter_level(log::LevelFilter::Info)

View file

@ -131,29 +131,24 @@ pub mod shell;
pub mod slint_integration; pub mod slint_integration;
pub mod window; pub mod window;
pub use event::{EventDispatchContext, EventLoopHandle, ShellEventLoop};
pub use layer_shika_composition::{ pub use layer_shika_composition::{
CallbackContext, Error, Handle, Result, SurfaceHandle, SurfaceInstanceId, SurfaceTarget, CallbackContext, Error, Handle, Result, SurfaceHandle, SurfaceInstanceId, SurfaceTarget,
}; };
pub use output::{OutputGeometry, OutputHandle, OutputInfo, OutputPolicy, OutputRegistry};
pub use shell::{ pub use shell::{
CompiledUiSource, DEFAULT_COMPONENT_NAME, DEFAULT_SURFACE_NAME, LayerSurfaceHandle, Output, CompiledUiSource, DEFAULT_COMPONENT_NAME, DEFAULT_SURFACE_NAME, LayerSurfaceHandle, Output,
Selection, Selector, Shell, ShellBuilder, ShellConfig, ShellControl, ShellEventContext, Selection, Selector, Shell, ShellBuilder, ShellConfig, ShellControl, ShellEventContext,
ShellRuntime, ShellSurfaceConfigHandler, Surface, SurfaceComponentConfig, SurfaceConfigBuilder, ShellRuntime, ShellSurfaceConfigHandler, Surface, SurfaceComponentConfig, SurfaceConfigBuilder,
SurfaceDefinition, SurfaceInfo, SurfaceDefinition, SurfaceInfo,
}; };
pub use slint_integration::{PopupWindow, slint, slint_interpreter};
pub use window::{ pub use window::{
Alignment, AnchorEdges, AnchorPoint, AnchorStrategy, ConstraintAdjustment, Alignment, AnchorEdges, AnchorPoint, AnchorStrategy, ConstraintAdjustment,
KeyboardInteractivity, Layer, Offset, OutputTarget, PopupBehavior, PopupBuilder, PopupConfig, KeyboardInteractivity, Layer, Offset, OutputTarget, PopupBehavior, PopupBuilder, PopupConfig,
PopupHandle, PopupPosition, PopupShell, PopupSize, PopupHandle, PopupPosition, PopupShell, PopupSize,
}; };
pub use output::{OutputGeometry, OutputHandle, OutputInfo, OutputPolicy, OutputRegistry};
pub use event::{EventDispatchContext, EventLoopHandle, ShellEventLoop};
pub use slint_integration::{PopupWindow, slint, slint_interpreter};
pub mod calloop { pub mod calloop {
pub use layer_shika_composition::calloop::*; pub use layer_shika_composition::calloop::*;
} }

View file

@ -8,32 +8,26 @@
#![allow(clippy::pub_use)] #![allow(clippy::pub_use)]
pub use layer_shika_composition::prelude::{
Anchor, LogicalPosition, LogicalRect, LogicalSize, Margins, PhysicalSize, ScaleFactor,
SurfaceConfig, SurfaceDimension, UiSource,
};
pub use crate::event::{EventDispatchContext, EventLoopHandle, ShellEventLoop};
pub use crate::output::{OutputGeometry, OutputHandle, OutputInfo, OutputPolicy, OutputRegistry};
pub use crate::shell::{ pub use crate::shell::{
CompiledUiSource, DEFAULT_COMPONENT_NAME, DEFAULT_SURFACE_NAME, LayerSurfaceHandle, Output, CompiledUiSource, DEFAULT_COMPONENT_NAME, DEFAULT_SURFACE_NAME, LayerSurfaceHandle, Output,
Selection, Selector, Shell, ShellBuilder, ShellConfig, ShellControl, ShellEventContext, Selection, Selector, Shell, ShellBuilder, ShellConfig, ShellControl, ShellEventContext,
ShellRuntime, ShellSurfaceConfigHandler, Surface, SurfaceComponentConfig, SurfaceConfigBuilder, ShellRuntime, ShellSurfaceConfigHandler, Surface, SurfaceComponentConfig, SurfaceConfigBuilder,
SurfaceDefinition, SurfaceInfo, SurfaceDefinition, SurfaceInfo,
}; };
pub use crate::slint_integration::{PopupWindow, slint, slint_interpreter};
pub use crate::window::{ pub use crate::window::{
Alignment, AnchorEdges, AnchorPoint, AnchorStrategy, ConstraintAdjustment, Alignment, AnchorEdges, AnchorPoint, AnchorStrategy, ConstraintAdjustment,
KeyboardInteractivity, Layer, Offset, OutputTarget, PopupBehavior, PopupBuilder, PopupConfig, KeyboardInteractivity, Layer, Offset, OutputTarget, PopupBehavior, PopupBuilder, PopupConfig,
PopupHandle, PopupPosition, PopupShell, PopupSize, PopupHandle, PopupPosition, PopupShell, PopupSize,
}; };
pub use crate::output::{OutputGeometry, OutputHandle, OutputInfo, OutputPolicy, OutputRegistry};
pub use crate::event::{EventDispatchContext, EventLoopHandle, ShellEventLoop};
pub use crate::slint_integration::{PopupWindow, slint, slint_interpreter};
pub use crate::{ pub use crate::{
CallbackContext, Error, Handle, Result, SurfaceHandle, SurfaceInstanceId, SurfaceTarget, CallbackContext, Error, Handle, Result, SurfaceHandle, SurfaceInstanceId, SurfaceTarget,
calloop,
}; };
pub use layer_shika_composition::prelude::{
Anchor, LogicalPosition, LogicalRect, LogicalSize, Margins, PhysicalSize, ScaleFactor,
SurfaceConfig, SurfaceDimension, UiSource,
};
pub use crate::calloop;

View file

@ -1,3 +1 @@
pub use layer_shika_composition::{slint, slint_interpreter}; pub use layer_shika_composition::{PopupWindow, slint, slint_interpreter};
pub use layer_shika_composition::PopupWindow;