# 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. # # 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-wm" version = "0.1.0" edition = "2021" default-run = "wm" [[bin]] name = "wm" path = "src/main.rs" [dependencies] makepad-widgets = { path = "../../widgets" } makepad-studio-protocol = { path = "../../platform/studio" } makepad-network = { path = "../../platform/network" } makepad-wm-api = { path = "../../libs/wm_api" } # 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" } # In-process hosting (aicontrol §3): the module contract, the palette applied # into each instance's isolate, and the modules this build links. makepad-app-module = { path = "../../libs/app_module" } makepad-wm-theme = { path = "../../libs/wm_theme" } makepad-sheets = { path = "../sheets", default-features = false, optional = true } makepad-photos = { path = "../photos", default-features = false, optional = true } # The assistant as a module, seated in the pane in-process: the web build's # only chat, a desktop option. Without the engine feature: no model runtime, # NoModel and the tool console (the child process keeps the real models). makepad-aichat = { path = "../aichat", default-features = false, optional = true } [features] default = ["app-sheets", "app-photos", "app-aichat"] # Sheets linked in as a module (hosting is still Process unless switched). app-sheets = ["dep:makepad-sheets"] # Photos (the picture wall) linked in as a module, the same way. app-photos = ["dep:makepad-photos"] # The aichat module linked in (the pane seats it in-process where there are # no processes, or when `aichat` is switched to module hosting). app-aichat = ["dep:makepad-aichat"]