Skip to content

Repository files navigation

odox

Three small desktop applications that open an OpenDocument file and show it to you. xodt reads text documents, xods reads spreadsheets, xodp reads presentations. Rust and egui, one binary each, nothing sent anywhere.

xodt report.odt
xods accounts.ods
xodp deck.odp

There is a launcher too, for a shell or a script that has a file and does not want to know which kind it is:

odox anything.ods

Why not just open it in LibreOffice

LibreOffice is an office suite and these are viewers. The whole of xodt starts in well under a second on a document a suite takes several to load, and reading a document you were sent is most of what anyone does with one. The applications are also built to one standard rather than to compatibility with another program: what they implement is the OASIS OpenDocument specification, and a document that is valid ODF is a document they are meant to read, whichever application wrote it.

They read and do not write. A file you open is never modified, and there is no network code in any of them.

Install

On Debian or Ubuntu, from the Excelano apt repository, which is where updates come from:

curl -fsSL https://excelano.com/apt/setup.sh | sudo sh   # one-time
sudo apt install odox

odox is the launcher and it depends on the three viewers, so that installs the whole suite. To take only the ones you want, name them instead — sudo apt install xods, say, and no viewer depends on another. amd64 and arm64 both.

From crates.io, which gives you the binary and nothing around it — no desktop entry, no icon, so a file manager will not offer it:

cargo install xodt

The launcher on its own is cargo install odox, and there it really is on its own: a crate cannot depend on a Debian package, so the viewers are a separate cargo install each.

From a clone, which is the same package the apt repository serves:

cargo build --release
./packaging/debian/build-deb.sh
sudo apt install ./dist/*.deb

Or from a clone without a package, which puts the binaries, the desktop entries and the icons under ~/.local so a file manager offers them:

cargo build --release
./packaging/linux/install.sh          # --default to open ODF files with them

A Rust toolchain builds all of it and nothing else is needed: no C compiler, no system libraries at build time, no code generator. Cargo.toml names the toolchain version the build needs.

Windows and macOS are built and tested from this repository and have no installer yet; packaging/windows/README.md and packaging/macos/README.md say what each still needs.

Using them

Give a document on the command line, drop one on the window, or press Ctrl+O. Ctrl+R re-reads the file from disk, Ctrl+W closes it, and Ctrl+plus, Ctrl+minus and Ctrl+0 change the zoom.

xodt shows the document as one continuous page at the width its page layout asks for, with the headings listed beside it; clicking one scrolls to it. xods draws the sheet as a grid with the document's own column widths and cell styles, one tab per sheet, and shows the formula behind whichever cell you pick. xodp draws each slide at the size the document sets, with the speaker's notes under it.

Each application opens one kind of file and says so when handed another, naming the sibling that reads it.

The window draws in the desktop's language where it has one. German is there; crates/odox-ui/po is where another goes.

Where things are

crates/odox-core reads and writes the format and has no window in it. crates/odox-ui is everything a person sees, shared by all three. crates/xodt, crates/xods and crates/xodp are one screen each over that. crates/odox is the launcher, which draws nothing and links no toolkit. corpus/ holds the documents the tests read. packaging/ turns a build into something installable, one directory per platform. DESIGN.md is where every decision and its reasoning live; CLAUDE.md is the short guide for a session working here.

About

Three small OpenDocument viewers in Rust and egui: xodt for text documents, xods for spreadsheets, xodp for presentations

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages