makepad/apps/wm/Cargo.toml
Admin 82ac76882e photos: the picture wall as an app — the SMBC archive on the tile engine, a module from its first line; fabric in the launcher
apps/photos (lib + bin) puts libs/image_tiles' TileGrid in a tile: it
opens a baked library found by name (IMAGE_TILES_HOME, the cwd's
local/image-tiles, the checkout the binary was built in — the smbc
collection first), shows a status line with the bake command when
there is none, and exposes photos.search (every query word in a title
or link), photos.show (the camera glides onto one picture) and
photos.summary — the same answer for the port and for the module's
executor. PhotosModule mints the view inside an isolate with an open
schema that takes a collection name, never a path; the WM links it
behind app-photos and lists it in the menu. image_tiles learned to
decode GIF and WebP and to read a manifest's pictures from disk, so
the bake can take local/smbc's mirror: the last 300 comics are baked
under local/image-tiles/smbc (293; seven of the mirror's files are
saved error pages). fabric joins the launcher with a title and a
polite close.

Driven hidden: the wall in a process tile beside the left pane, panned
and zoomed; search and show cards; the same wall as an in-process
module; fabric launched and closed; standalone photos with the F10
overlay on the left. photos 7, image_tiles 5, wm 152; the photos lib
checks for wasm32.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 17:59:12 +02:00

53 lines
2.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.
#
# 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"]