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 exceptions are feature-gated: reading and writing that config file (fs) and locale negotiation (locale), which reads the host’s language preference, both on by default; and, off by default, the dedicated tokio worker thread the host crates run async work on (worker) and the tracing filter every process installs (logging). Without them 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.
app
The foreground application, in the form per-app profiles match against.
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, the openlogi:// deep-link command vocabulary, the three processes’ bundle identifiers, and the app bundle’s layout — where the helpers live and what they are called on disk.
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.
env
The environment variables OpenLogi reads at runtime.
hid
Wire-format types for HID++ device control that need no device I/O.
locale
Locale negotiation: which shipped catalog a BCP-47 code resolves to.
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/.
scroll
Platform-neutral scroll distances.
single_instance
Cross-platform single-instance process guard.