oxigis-desktop-0.1.0 is not a library.
oxigis-desktop
OxiGIS native desktop shell: a single oxigis binary for Linux, macOS and Windows.
Status: Alpha
Hosts the shared oxigis-ui panels and oxigis-render map view inside a
native window, and supplies everything that view needs from the local
machine but cannot provide itself — network and file I/O, and font
discovery.
Features
- Native window —
eframe/egui in a winit window, with the map drawn through wgpu. - Blocking HTTP tile & range transport on worker pools —
ureq(Pure Rust TLS viarustls-graviola, with noringand no system OpenSSL) drives XYZ/vector tile fetches and COG/PMTiles/MBTiles range reads, so a request never blocks the render thread. The workers pull from one shared queue rather than each owning a private one filled round-robin: a per-worker queue head-of-line-blocks every job that landed behind one slow or unreachable host while its siblings sit idle. A429/503carrying aRetry-Afterpauses that origin — and only that origin — for the delay it asks for, shared by every worker. - N-layer stack rendering with a health watch — every tiled layer in the
project gets its own source, and every source in this shell is built
before its bytes are read (a COG's header, an archive's directory and a
tile's first fetch all land on a worker pool), so a successful
construction says nothing about whether the layer will ever draw. The
shell polls each source's own refusal state (
provider_watch) and reports it, instead of leaving the user with a layer in the panel, a basemap-only map, and no message. - Native file dialogs — project Open / Save / Save As, tile-archive
Open, and PDF export use
rfdon Windows and macOS, where it resolves to pure-Rust bindings (raw-dylibwindows-sys; theobjc2family) with nocc, no-syscrate and no prebuilt import library. Linux is deliberately off that edge — rfd's GTK backend would pullgtk-sys/glib-sysinto a Pure Rust graph and its portal backend an async runtime — so the shell asks there with its own in-appPathPromptwindow, which shows the absolute path a name resolves to and refuses the obvious mistakes. - Project files that cannot be half-written —
*.oxigis.jsonis written to a temp file in the same directory, flushed, and only then renamed over the destination, so a full disk, a permission error or a crash mid-write leaves the previous save byte-for-byte intact. Reads are bounded, because a project may carry inline GeoJSON. - Session persistence — window geometry, the recent-project list and the
directory the file dialogs open in are remembered between launches, in a
small line-oriented file this crate writes itself rather than by turning
on
eframe'spersistencefeature (which would dragronandserdeinto the shipped binary for four values). - Command line —
oxigis [OPTIONS] [PATH]...:-h/--help,-V/--version(which names this binary and the crates it is assembled from),--log-file, and any number of data or project paths to open at startup. Arguments are handled asOsStringthroughout, so a path that is not valid UTF-8 still opens. - Local file range reads — a local
.pmtiles/.mbtilesarchive is read withseek+readon its own worker pool instead of loading whole, so a 137 GB archive still opens with a 16 KiB read. - Background CJK font discovery — scans the OS font directories on a
background thread for Japanese/Korean/Simplified/Traditional Chinese
label fallback faces (plus a bold chain), streaming each face in as it's
read so startup never blocks on it. No single platform face covers all
four scripts — Meiryo has no Hangul, Malgun Gothic no kana — so the scan
keeps one candidate per script rather than one overall, and classifies by
what a face actually is: macOS's
STHeitiis Heiti TC, Traditional rather than Simplified, and a variable face whosewghtdefault is a hairline master (NotoSansJP-VF on stock Windows 11) ranks below the static candidates, because neither the label rasteriser nor the default print path can select a heavier instance. - GeoParquet input — enables
oxigis-ui's optionalgeoparquetfeature; this is the one crate in the workspace where it's turned on. - PDF map export — composes the current view to a PDF on a background
thread with embedded Latin + CJK fonts, building one provider per entry of
the N-layer tile stack (
export_stack) rather than reading only the three legacy single slots, so a project holding an orthophoto under a hillshade under a cadastral tileset prints the map it is showing. Windows and macOS show a native save dialog; Linux asks with the in-app path prompt.
Build
Tests
151 tests passing.
Part of OxiGIS — Pure Rust full-stack GIS. See the workspace README for the crate matrix and build instructions.
© 2026 COOLJAPAN OU (Team Kitasan) · Apache-2.0