Skip to main content

Crate openlogi_core

Crate openlogi_core 

Source
Expand description

Shared types and configuration for OpenLogi.

Everything here is data — the device model, the action catalogue, the binding types, the shape of the config file. It must never depend on hidpp, async-hid, or any platform-specific event/window API; those live in sibling crates.

The one exception is reading and writing that config file, which is gated behind the fs feature (on by default). Without it this crate touches no host at all, which is what the wasm (portable crates) CI job checks.

Modules§

action_ring
The Actions Ring’s shared display-duration constant.
binding
Logical mouse button identifiers and the action vocabulary each one can bind to. Lives in openlogi-core because the config schema serializes these directly — the GUI re-exports them.
bindings
Binding-map construction: overlay the stored per-device (and per-app) bindings on top of the built-in defaults.
brand
Brand constants shared across the workspace: the project’s public URLs and the openlogi:// deep-link command vocabulary.
color
A validated RGB color for the lighting config.
config
User configuration, persisted as TOML at the platform-standard config path.
device
Serializable device-model types.
device_order
Canonical device ordering shared by the GUI carousel and the agent’s no-selection fallback.
diagnostics
Privacy-filtered diagnostics report for support tickets — model-level only, no unique identifiers by construction.
hid
Wire-format types for HID++ device control that need no device I/O.
paths
Per-OS application directories, following the XDG Base Directory spec on every platform — including macOS, so configuration lives at the familiar ~/.config/openlogi/ rather than macOS’s ~/Library/Application Support/.
single_instance
Cross-platform single-instance process guard.