Skip to main content
No UI in this crate. Each module parses, searches, or formats; apps wire results into Surface Description or stdout.

Calculator (calc)

Expression parsing and evaluation for otter-calc and launcher =EXPR mode. Integer and float paths with bounded token buffers.

Emoji (emoji)

Emoji name search and :query completion data shared by otter-emoji and launcher.

Clipboard (clipboard, clip_history)

History store bounds and wl-copy/wl-paste compatible invocation. clip_history persists entries under XDG data paths via otter-utils helpers.

Calendar (calendar)

Month grid generation and weekday headers for otter-cal.

Duration (duration)

Human-readable duration parsing (5m, 1h30s) for otter-timer.

Weather (weather)

URL construction and response field extraction for otter-weather. No HTTP client here; apps fetch.

Color (color)

RGB/HSL/hex conversion for otter-pick and launcher color preview.

Record (record)

Encoder and container selection helpers for otter-rec (bounded list of installed tools).

Search (otter_tools_search, search_client)

Desktop search is pure Zig. No Rust or vendored fuzzy engines. otter_tools_search expands roots (XDG user dirs, ~/.config, shallow $HOME, plus user roots), skips heavy dirs, and scores path and content hits. Submodules live under src/search/ (file_index, scanner, finder, fuzzy, content, query, scoring). otter-search and otter-searchctl link both modules. otter-launcher only needs search_client to query a running daemon. Other tools stay free of the search core unless they import otter_tools_search.

Assist client (assist_client)

Unix-socket client for otter-assist. Covers infer, status, unload, JSON chat requests, and streamed events (message_delta, tool events, final). Used by otter-assistctl and otter-assistant.

Config (config)

Shared key paths and load helpers for tools that read small .conf fragments.

App configs

app_configs.zig defines structs for calc, emoji, clip, cal, timer, weather, pick, rec, shot, and related tools. Import from otter_tools_core.app_configs in both the app and otter-settings.