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.