makepad/apps/wm/Cargo.toml
2026-10-26 10:25:39 +01:00

84 lines
4 KiB
TOML

# wm — makepad window manager. An Omarchy-behaving tiling window manager
# built as a Makepad app.
#
# Nested mode (this crate, all desktop OSes): wm owns one OS window,
# fullscreen it and it is the desktop. Tiles host other Makepad apps as
# child processes through the Studio runview mechanism: a tiny in-process
# websocket hub accepts `--stdin-loop` clients, each tile shares a GPU
# swapchain (IOSurface / DXGI handle / DMA-BUF) with its child and forwards
# input over the studio protocol.
#
# In-process mode (apps/wm-all, iOS and the web): the same desk hosts app
# crates linked in as MODULES (libs/app_module), one splash isolate each,
# drawn into the desk's own texture. This crate is a LIBRARY for that: the
# `wm` binary here is the desktop build (src/main.rs), and an all-in-one
# project links `makepad-app-wm` plus its app crates and sets the `WmBuild`
# (src/build.rs). No app crate is a dependency of wm itself.
#
# Session mode (later, Linux only): the same layout/chrome/protocol with a
# Wayland compositor display backend instead of a Makepad window. The
# layout tree, keybindings, theming and client management are kept free of
# nested-mode assumptions for that reason.
[package]
name = "makepad-app-wm"
version = "0.1.0"
edition = "2021"
license = "MIT"
default-run = "makepad-app-wm"
[lib]
name = "makepad_app_wm"
path = "src/lib.rs"
[[bin]]
name = "makepad-app-wm"
path = "src/main.rs"
# The deploy's prebuild of what the WM starts (the AI Hub, its apps, the JIT tool), each with the
# WM's own start command as a build (deploy_build.rs).
[[bin]]
name = "makepad-wm-build"
path = "src/bin/makepad_wm_build.rs"
[features]
default = ["tweaker"]
# The design overlay (Shift+F10 with the dev overlays on). On for development
# builds; the Builder's releases build without it (--no-default-features).
tweaker = ["dep:makepad-widgets-tweaker", "makepad-widgets/data", "makepad-widgets/dock", "makepad-widgets/fab"]
[dependencies]
makepad-widgets = { path = "../../widgets", default-features = false, features = ["charts", "color", "data", "dates", "chat", "dock", "rich_text", "dropzone", "vector", "glass", "nav_menus", "command_palette"] }
makepad-widgets-tweaker = { path = "../../widgets/families/tweaker", optional = true }
makepad-studio-protocol = { path = "../../platform/studio" }
makepad-network = { path = "../../platform/network" }
makepad-wm-api = { path = "../../libs/wm_api" }
makepad-desk-link = { path = "../../libs/desk_link" }
makepad-app-registry = { path = "../../libs/app_registry" }
makepad-app-host = { path = "../../libs/app_host" }
# The AI services wire only: the WM relays frames between the aichat child and the apps.
makepad-ai-services = { path = "../../libs/ai/services" }
makepad-strict-json = { path = "../../libs/strict_json" }
makepad-ai-hub = { path = "../../libs/ai/hub", default-features = false }
# The shell's drawing kit and the AI hub control panel (shared with the AI Hub app).
makepad-shell-kit = { path = "../../libs/shell_kit" }
makepad-ai-hub-panel = { path = "../../libs/ai/hub_panel" }
makepad-desk-link-panel = { path = "../../libs/desk_link_panel" }
# In-process hosting (aicontrol §3): the module contract and the palette
# applied into each instance's isolate. Which modules a build links is the
# binary's say (src/build.rs), never a feature of this crate.
makepad-app-module = { path = "../../libs/app_module" }
makepad-civil-time = { path = "../../libs/civil_time" }
# The headset IMU reader (src/headset_imu.rs) inflates the tracker board's
# zlib config JSON.
makepad-fast-inflate = { path = "../../libs/fast_inflate" }
# Foreign Wayland windows (src/wayland_host): the WM serves the protocol itself.
[target.'cfg(target_os = "linux")'.dependencies]
makepad-wayland-server = { path = "../../libs/wayland_server" }
makepad-xkb-keymap = { path = "../../libs/xkb_keymap" }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
# Serving Desk Link (listener, TLS, fleet credentials): native desktops only
makepad-desk-link = { path = "../../libs/desk_link", features = ["server"] }
makepad-hal = { path = "../../platform/hal" }