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
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.
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.
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.
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.