From Excelano

apt repository

Debian packages for the Excelano tools.

Add the repository once and every Excelano tool installs, upgrades, and removes through apt like anything else on the system. Signed, for Debian and Ubuntu on amd64 and arm64.

Add the repository

One line installs the signing key, registers the source, and refreshes the package lists. It installs no tools; it ends by pointing here so you choose.

curl -fsSL https://excelano.com/apt/setup.sh | sudo sh

Then sudo apt install any package listed below by name. Updates arrive with sudo apt upgrade from here on, and sudo apt remove takes a tool back out.

By hand

The setup script is short and readable. It does this:

curl -fsSL https://excelano.com/apt/excelano-archive-keyring.gpg | \
  sudo tee /usr/share/keyrings/excelano-archive-keyring.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/excelano-archive-keyring.gpg] https://excelano.com/apt stable main" | \
  sudo tee /etc/apt/sources.list.d/excelano.list
sudo apt update

Verify the key with gpg --show-keys excelano-archive-keyring.gpg. Its fingerprint is FB1E 4E35 1E9F 95E3 6127 816B B895 F237 8578 17F9.

Packages

Read from the repository index as it stands, last rebuilt Mon, 02 Nov 2026 21:49:02 +0000. The pool keeps the current version of each package and the one before it, so a release can be rolled back with apt install <package>=<version>.

PackageVersionForDescription
aski 0.2.0-1 amd64, arm64 one-shot questions for command-line LLMs — no quotes, no follow-up
baustelle 0.7.1 amd64 block-world game whose blueprint you edit while you play
blick 0.16.0 amd64, arm64 Microsoft 365 status panel for the terminal.
bz 0.5.0-1 amd64 Bogenzeit: time as position on the Sun's arc. The reference engine and the bz
cleave 1.7.7 all Bake a CSV, Markdown, or iCalendar file into one portable HTML file
comma 0.1.14-1 amd64, arm64 Edit delimited text files
ditto 0.8.1 amd64, arm64 Cargo-style build system for Microsoft Office and HTML deliverables.
duckling 0.4.0 amd64 Convert documents to DocLang, Markdown, JSON, LaTeX or an office format
fileroom 0.6.0-1 amd64, arm64 Read and verify records under the Slipcase Records Profile: records, hold
flyleaf 0.2.8 amd64, arm64 Structure-aware TOML editor
libwhisper-dev 1.9.5+dfsg-1~bpo13+1 amd64 Automatic speech recognition and transcribing - development files
luxc 0.21.0-1 amd64, arm64 A small teaching language that runs anywhere and transpiles to Rust, Swift, and
nved 1.5.3 amd64, arm64 A terminal text editor that feels like a REPL, not a full-screen app.
odox 0.10.0 amd64, arm64 open an OpenDocument file with the application that reads it Installs the 3 below.
xodt 0.10.0 amd64, arm64 lightweight OpenDocument text document editor
xods 0.10.0 amd64, arm64 lightweight OpenDocument spreadsheet editor
xodp 0.10.0 amd64, arm64 lightweight OpenDocument presentation editor
parkett 0.1.1 amd64 View Apache Parquet files
paxc 4.0.1-1 amd64, arm64 A compiler for the pax DSL, producing Power Automate cloud flow definitions
plene 0.3.0-1 amd64, arm64 Shows Rust source alongside an expanded transcription: the same code with
plene-gui 0.3.0-1 amd64, arm64 A window showing Rust source beside its expanded transcription: the same code
segler 0.1.6 amd64, arm64 Editor for DocLang documents
slipcase 0.7.0-1 amd64, arm64 Pack, unpack, repack, inspect, and validate Slipcase containers: a ZIP holding
slipcase-common 1.1.3 all Media type and icon for Slipcase containers
slipcase-desktop 0.2.0 amd64, arm64 Viewer and flyleaf editor for Slipcase containers
slipcase-fileroom 0.1.3 amd64, arm64 Records management on Slipcase containers kept on file shares
slipcase-open 0.2.2-1 amd64 Open the content file of a Slipcase container in its own application, and write
slipcase-query 0.3.0 amd64, arm64 Query a folder of Slipcase containers by their flyleaf
slipql 0.3.0-1 amd64, arm64 A query language for Slipcase flyleaves: select, from, where over a directory
this2that 0.5.1 all Converters between plain-text, Office, and data file formats
umwand 0.1.1 amd64 Open Office Open XML files as OpenDocument
upd 0.2.1 all Update every package manager on the machine in one command
ved 0.2.1-1 amd64, arm64 The verbose ed — an ed clone with friendly errors and a built-in help system
vier 0.1.0-1 amd64 Four in a row against the computer or a second player
waddle 0.4.1-1 amd64, arm64 Write ODT, DOCX, ODS, ODP and XLSX from DocLang and docling JSON
whisper.cpp 1.9.5+dfsg-1~bpo13+1 all Automatic speech recognition and transcribing (metapackage)
whisper.cpp-tools 1.9.5+dfsg-1~bpo13+1 amd64 Automatic speech recognition and transcribing (tools) Installs the 2 below.
libggml0 0.27.0-1~bpo13+1 amd64 Tensor library for machine learning - libraries
libwhisper1 1.9.5+dfsg-1~bpo13+1 amd64 Automatic speech recogniztion and transcibing - library
xfiles 1.1.0 all Unix-shaped command-line tools for SharePoint document libraries Installs the 5 below.
xftp 1.12.2 amd64, arm64 xftp — an FTP-client feel for SharePoint document libraries.
xcp 1.12.2 amd64, arm64 xcp — an scp-style one-shot copy for SharePoint document libraries.
xfind 1.12.2 amd64, arm64 xfind — the find(1) of the xftp family for SharePoint libraries.
xtree 1.12.2 amd64, arm64 xtree — the tree(1) of the xftp family for SharePoint libraries.
xsync 1.12.2 amd64, arm64 xsync — the rsync of the xftp family for SharePoint libraries.
xplit 0.5.0-1 amd64, arm64 A minimal terminal splitter with no prefix key and no configuration
xtabular 1.1.0 all Command-line tools for messy tabular data — the whole family Installs the 4 below.
xray 0.6.1-1 amd64, arm64 a read-only profiler for tabular data — what a CSV/DSV is, before you edit or
xled 0.13.1-1 amd64, arm64 sed and awk for tabular data — regex transforms over Excel-style ranges on
xshape 0.5.6-1 amd64, arm64 reshape tabular data — pivot, unpivot, split, merge, explode, transpose —
xql 1.13.2 amd64, arm64 XQL — Excelano Query Language CLI.
zappel 0.1.0-1 amd64 Turn caterpillars into butterflies with a garden sprinkler

aski

0.2.0-1 utils

one-shot questions for command-line LLMs — no quotes, no follow-up

aski puts a quick terminal question to a command-line LLM and prints the answer. There is no session and no follow-up, and the question is simply the rest of the command line, so nothing needs quoting. Each LLM is a table in a TOML config file naming the argv that puts that LLM in one-shot mode, together with any standing context to send along, so adding one is configuration rather than code. The first argument selects an LLM when it names one, and is the first word of the question when it does not. For scripts, which cannot rely on that guess, flags name the LLM outright, bound the wait, refuse standard input, and override the standing context, and the exit codes follow timeout(1).

Homepage
github.com/excelano/aski
Depends
libc6, libgcc-s1
Installed size
767 kB
Files

baustelle

0.7.1 games

block-world game whose blueprint you edit while you play

Baustelle is a first-person block world in which every world is a building site. Walk the rooms, pick things up, open doors, break and place blocks, and change how the world behaves by editing its blueprint, the code that runs it, live and inside the game. Several people can build one world together over the LAN. The first world is The Little Keep.

The display stack, the graphics driver loader and the keyboard map libraries are opened by name at run time, so Depends is written by hand. A Vulkan driver for the graphics card is what makes it run well; mesa-vulkan-drivers covers Intel and AMD.

Homepage
excelano.com/
Depends
libc6, libgcc-s1, libwayland-client0, libxkbcommon0, libxkbcommon-x11-0, libvulkan1 or libgl1, libegl1, libx11-6, libx11-xcb1, libxcb1, libxi6, libxcursor1, libxrandr2, desktop-file-utils, hicolor-icon-theme
Recommends
mesa-vulkan-drivers
Installed size
70.6 MB
Files

blick

0.16.0 mail

Microsoft 365 status panel for the terminal.

Single-screen view: unread Outlook mail, unread Teams chats, next meeting. Reply, mark-read, mark-all-read, refresh, today's calendar inline. Pure Go, device-code OAuth, requires your own Azure app registration (see /usr/share/doc/blick/setup.sh).

Homepage
github.com/excelano/blick-cli
Installed size
9.0 MB
Files

bz

0.5.0-1 utils

Bogenzeit: time as position on the Sun's arc. The reference engine and the bz

command Bogenzeit reads time as position on the Sun's arc instead of as a count of hours: spans from solar noon or solar midnight, a hundred per half-arc, and kiloseconds as the fixed scale beside them. bz computes a reading for any UTC instant and place, offline, and prints a day's table of anchors, quarter boundaries, sunrise, sunset and twilights. The standard it implements is the Bogenzeit spec in the same repository.

Homepage
github.com/excelano/bogenzeit
Depends
libc6
Installed size
486 kB
Files

cleave

1.7.7 utils

Bake a CSV, Markdown, or iCalendar file into one portable HTML file

cleave turns a document into a single self-contained .html that renders itself: the file carries the document, the Axe viewer, and only the assets that format actually needs. The recipient opens it straight from disk, with no server and no internet, and sees a rendered table, document, slide deck, or calendar rather than a download prompt.

It is the ship-it counterpart to the live Axe viewer, which needs an HTTP server because it fetches the document, and browsers refuse to fetch local files. Markdown becomes a document or, with --slides, a native slide deck. A brand stylesheet can be inlined with --brand so the output carries your palette instead of the default one.

The Axe assets cleave inlines are installed as this package's own data under /usr/share/cleave. This package does not deploy Axe as a web framework; sites get Axe from its repository.

Homepage
github.com/excelano/axe
Depends
python3
Files

comma

0.1.14-1 gnome

Edit delimited text files

Comma is a small GNOME editor for CSV, TSV, and other delimited text files. It shows a file as a grid of values and saves it back as the same kind of file it opened, leaving every row you did not edit byte for byte as it was.

Values are treated as text and never reinterpreted, so leading zeros survive, long identifiers stay whole, and dates are whatever the file says they are. Comma is not a spreadsheet: there are no formulas, no cell formatting, and no second file format to save into.

Homepage
github.com/excelano/comma
Depends
libadwaita-1-0, libc6, libcairo2, libgcc-s1, libglib2.0-0t64, libgraphene-1.0-0, libgtk-4-1, libpango-1.0-0, libpangocairo-1.0-0, dconf-gsettings-backend or gsettings-backend
Files

ditto

0.8.1 utils

Cargo-style build system for Microsoft Office and HTML deliverables.

Author Markdown and CSV under src/, build to Word/Excel/PowerPoint and portable HTML under dist/, then optionally publish to a SharePoint library. ditto conducts the converters and reimplements nothing: it calls pandoc-based office-convert (md2docx/md2pptx/csv2xlsx), cleave for HTML, and xsync (from the xfiles suite) for the SharePoint push. Install whichever converters you need; ditto warns about what is missing.

Homepage
github.com/excelano/ditto
Recommends
office-convert, cleave
Suggests
xfiles
Installed size
2.7 MB
Files

duckling

0.4.0 text

Convert documents to DocLang, Markdown, JSON, LaTeX or an office format

Duckling converts Word, PowerPoint, Excel, PDF, HTML, EPUB, RTF, OpenDocument, Apple iWork, email, Visio and some forty other document formats into DocLang, Markdown, docling JSON, a DocLang archive, LaTeX or an office document - ODT, ODS, ODP, DOCX or XLSX - on the machine it runs on, with nothing sent anywhere. Add files or folders, choose the format and where the output goes, and press Convert. The converter is docling.rs, the Rust port of IBM's Docling.

Scanned PDFs and images are read by layout, table-structure and OCR models that this package carries under /usr/lib/duckling, so nothing is downloaded after installation. That is most of the package's size.

The executable links libc, libgcc and libstdc++ (ONNX Runtime's) and nothing else the linker records. The display stack, the graphics driver loader and the keyboard map libraries are opened by name at run time, so Depends is written by hand and packaging/linux/check-libraries.sh measures it against a running window on both display backends.

There are two keyboard map libraries and not one, because there are two display backends. A Wayland session never loads libxkbcommon-x11 and an X11 session panics at startup without it; nothing pulls it in behind libxkbcommon0. slipcase-desktop shipped two releases without it.

The two tool packages at the end own the dpkg triggers that rebuild the desktop and icon caches, which is why this package carries no maintainer scripts.

Homepage
github.com/excelano/duckling
Depends
libc6, libgcc-s1, libstdc++6, libwayland-client0, libxkbcommon0, libxkbcommon-x11-0, libegl1, libvulkan1 or libgl1, libx11-6, libx11-xcb1, libxi6, libxcursor1, libxrandr2, desktop-file-utils, hicolor-icon-theme
Installed size
295.7 MB
Files

fileroom

0.6.0-1 utils

Read and verify records under the Slipcase Records Profile: records, hold

matters, aggregations, the disposition register, and the retention schedule fileroom reads and verifies records kept under the Slipcase Records Profile: a record's retention state and history, the organization's retention schedule, and the disposition register, so that any of them can be checked without a license and without a vendor. Six verbs: show, log, check, schedule, register, and verify.

Homepage
slipcaseformat.org/profiles/records
Depends
libc6, libgcc-s1
Installed size
2.4 MB
Files

flyleaf

0.2.8 editors

Structure-aware TOML editor

Tommy Flyleaf opens a TOML file and shows it as a tree beside what a save would write. Values are edited by their type, keys, tables, arrays and comments can be added, renamed, converted and removed, and a save keeps every comment, the key order, the whitespace and the quoting of everything that was not edited. The same editor is the metadata editor inside Slipcase.

Only two of the libraries above are found by dpkg-shlibdeps. The executable links libc and libgcc and nothing else; the display stack, the graphics driver loader, and the keyboard map libraries are all opened by name at run time, so a package built from the linker's answer alone would install on a machine where it cannot start. The list is the one slipcase-desktop measured for the same framework, checked here by packaging/linux/check-libraries.sh, which runs the application under both display backends and reads what it mapped.

There are two keyboard map libraries and not one, because there are two display backends. A Wayland session never loads libxkbcommon-x11, and an X11 session panics at startup without it; nothing pulls it in behind libxkbcommon0, which is the dependency in the other direction.

shared-mime-info declares application/toml, which is what makes a file manager offer this application for a .toml file; the type has been in it since 2.1. The two tool packages at the end own the dpkg triggers that rebuild the desktop and icon caches, which is why this package carries no maintainer scripts.

Homepage
github.com/excelano/flyleaf
Depends
libc6, libgcc-s1, libwayland-client0, libxkbcommon0, libxkbcommon-x11-0, libegl1, libvulkan1 or libgl1, libx11-6, libx11-xcb1, libxi6, libxcursor1, libxrandr2, shared-mime-info, desktop-file-utils, hicolor-icon-theme
Installed size
21.0 MB
Files

libggml0

0.27.0-1~bpo13+1 libs

Tensor library for machine learning - libraries

ggml is a tensor library for machine learning with the following features:

* Low-level cross-platform implementation * Integer quantization support * Broad hardware support * Automatic differentiation * ADAM and L-BFGS optimizers * No third-party dependencies * Zero memory allocations during runtime

On Debian, ggml is shipped as a package that depends on one of the CPU or GPU backends.

This package provides the main libraries, and the CPU backend.

Homepage
github.com/ggml-org/ggml
Depends
libc6, libgcc-s1, libgomp1, libstdc++6
Suggests
libggml0-backend-blas, libggml0-backend-cuda, libggml0-backend-hip, libggml0-backend-rpc, libggml0-backend-vulkan
Installed size
14.9 MB
Files

luxc

0.21.0-1

A small teaching language that runs anywhere and transpiles to Rust, Swift, and

Go # lux

lux is a small language built to be a great first language and then to be outgrown. Every feature is the simplest version of an idea you meet again in Rust, Swift, and Go, so the idea carries over when you move on to one of those — you relearn the syntax, not the concept. What you take away is a working model of how a computer holds a value, makes a decision, and admits that an answer might not be there — and that is worth having whether or not you write another line of code. The few hard ideas lux leaves out — ownership, classes, goroutines — are the ideas those bigger languages are built around, and they land better once you have written something that needs them.

The whole language is one file — read [learn-lux.md](learn-lux.md): it is the reference, the tutorial, and the test corpus all at once, and the suite runs every example in it. The same material is built into the binary, so once lux is installed you can read it in your terminal with `lux learn`.

## Installing

On macOS or Linux, install a prebuilt `lux` with one command — no Rust toolchain needed:

``` curl -LsSf https://anderix.com/lux/install | sh ```

On Windows, the same in PowerShell:

``` irm https://anderix.com/lux/install.ps1 | iex ```

Those URLs are stable front doors to the latest release: running one again updates in place, and once lux is installed `lux update` does the same from the binary itself. To remove it again:

``` curl -LsSf https://anderix.com/lux/uninstall | sh ```

If you already use Homebrew, lux is in a tap:

``` brew install anderix/tap/luxc ```

The formula is named `luxc`, matching the crate on crates.io, because `lux` was already taken in both places. The command it installs is `lux`, and that is the only name you type afterwards. On a Homebrew install `lux update` prints the `brew upgrade` line rather than updating in place, so the package manager stays the one thing that decides what is on your machine. Remove it with `brew uninstall anderix/tap/luxc`.

If you already have Rust, you can install from crates.io instead:

``` cargo install luxc ```

Remove that build with `cargo uninstall luxc`.

## Running a program

``` lux run examples/tour.lux ```

`lux run` interprets a program directly. `lux trace <file.lux>` runs it the same way but narrates each line and the state it changes, so you can watch a program work step by step — the narration goes to stderr, so the program's own output stays clean and can be captured on its own. `lux convert <rust|swift|go> <file.lux>` prints your program as real source in that language, and `lux build <file.lux>` runs the Rust translation through `rustc` to a native binary.

## Playing a crawl

``` lux crawl ```

`lux crawl` writes a small, playable text adventure into a `crawl/` folder and tells you how to play it. The whole world is the `world.lux` it leaves you — open it, and the rooms, doors, and the torch in the cellar are all there in plain lux, yours to change. `lux learn crawl` walks through how one is built.

## Learning the language

The reference travels inside the binary. `lux learn` opens a menu of short topics and guided lessons. Each topic is a one-screen card — `lux learn match` prints the idea, a runnable example, and an experiment to try; add `more` for the deeper why, the universal name for the concept, and where it goes in Rust, Swift, and Go. `lux learn basics` lays out the handful of shapes every procedural language shares, so the next language is mostly new spelling, and `lux learn tour` reads the whole thing top to bottom. Every example is real lux you can paste into a file and run. And when a program hits an error, the diagnostic points you at the topic that explains it — a non-exhaustive `match` ends with `help: run lux learn match` — so you learn the idea at the moment you need it.

``` lux learn # the menu lux learn enums # one topic, as a card lux learn enums more # the deeper level lux learn basics # the shapes every language shares lux learn tour # the whole language ```

## If you use Claude Code

Optional, and no part of learning lux. If you already work with Claude Code, this writes a `CLAUDE.md` into whatever folder you keep your lux files in. Claude Code reads it as that folder's project memory, and it asks Claude to help you learn rather than write your programs for you: coach before solving, never hand over a rewrite nobody asked for, and read lux's own reference instead of guessing from the languages lux resembles.

``` curl -LsSf https://anderix.com/lux/tutor | sh ```

It says what it found and what it intends to do before changing anything, and it leaves a `CLAUDE.md` of your own in place, adding its guidance in a marked block you can delete. Nothing about lux changes either way.

## Building from source

lux is written in Rust with no dependencies.

``` cargo build --release ./target/release/lux run examples/hello.lux ```

## Testing

The goal is "same source, same behaviour, three targets": `lux run` is the reference, the transpilers target it, and anywhere a translation behaves differently is a bug to fix. The suite is how those divergences get caught. `./check.sh` builds lux and runs everything against that fresh binary: the Rust test suite, then the conformance and flex corpora, which transpile a body of programs and diff each compiled translation against the interpreter — a divergence shows up here, or in a real program, and becomes the next patch. `./check.sh fast` runs just the build and the Rust tests for a tight loop. A leg whose compiler (`go`, `rustc`, `swiftc`) isn't installed is skipped, so the suite runs on whatever toolchains you have; CI, run by hand (`workflow_dispatch`), sweeps all three.

## Scope

Everything `lux run` accepts, `lux convert` turns into idiomatic Rust, Swift, or Go, each leaning on what that language already has, and `lux build` compiles the Rust to a native binary; [learn-lux.md](learn-lux.md) is the tour of what that is. The language has no null: `Option<T>` and `Result<T, E>` carry an answer that might not be there, and the outside world is modeled as those same two shapes, so fallible I/O is something you handle rather than a crash.

Around that core sits how you learn it. `lux learn` is the built-in reference — a two-level card-and-`more` system, cross-referenced from error messages, that also reads as guided lessons and a full tour. `lux magic` answers "how do I…?" with small working spells, each carrying a trail back to the topic that explains it. `lux crawl` drops a small text adventure whose whole world is one lux file you play by running and change by editing — with a tutorial-free fast track (`lux magic room`, `exit`, `thing`, `command`) for the tinkerer who would rather skip straight to changing it. `lux trace` narrates a running program line by line, for the bug that gives a wrong answer rather than an error. `lux editors highlighting` sets up syntax highlighting for whichever of GNOME Text Editor, Vim, Neovim, nano, or (on Windows) Notepad++ you already have — highlighting only, nothing that completes or corrects. And `lux update` fetches the latest release in place. For a program that wants lux inside it — a game whose rules are a lux file, a test harness — the `luxc` crate's `host` module loads a declarations-only program and calls its functions with values: output is captured, the file system, shell, and input are out of reach, every call runs under a step budget and a size cap, and a host may offer functions of its own whose calls it reads back after each call.

lux teaches from a point of view. It commits to no null, sum types with exhaustive `match`, and immutability by default — not as the only way to write programs, but as the habits the strongest current languages are converging on, and ones easier to learn first than to bolt on later. That stand is the reason lux exists: a language with no view on how programs should be written would have nothing to teach.

If you are weighing lux up rather than learning it — a parent or teacher deciding whether a language this small can carry a first year — [flex/](flex/) is written for you: a corpus of the programs a first course reaches for, each run on all four implementations, with a plain account of how far the language goes and exactly where it stops. [flex/CONVERT.md](flex/CONVERT.md) sets lux source beside the Rust, Swift, and Go it becomes — the graduation claim shown rather than asserted.

For the fuller history, see the [releases](https://github.com/anderix/lux/releases) and the scope notes at the bottom of [learn-lux.md](learn-lux.md).

## License

MIT.

Homepage
anderix.com/lux/
Depends
libc6
Installed size
1.4 MB
Files

odox

0.10.0 text

open an OpenDocument file with the application that reads it

One command for any OpenDocument file. It works out from the file whether it is a text document, a spreadsheet or a presentation, and becomes xodt, xods or xodp accordingly.

It draws nothing itself: it becomes the application that reads the file. Nothing is sent anywhere and nothing is written.

Homepage
github.com/excelano/odox
Depends
libc6, libgcc-s1, xodt, xods, xodp
Files

parkett

0.1.1 utils

View Apache Parquet files

Parkett opens an Apache Parquet file as a grid that scrolls through millions of rows, reading only the stretch in view, and beside it, on request, what the file says about itself: its schema, row groups, and each column's codec, encodings, sizes and statistics. Values are shown by their type, nested values as JSON. A selection copies as tab-separated rows, and the file or the columns selected export as CSV. It never writes Parquet.

The package declares the application/vnd.apache.parquet media type, which shared-mime-info does not, so a file manager knows a .parquet file and offers Parkett for it.

The executable links libc, libgcc and libm and nothing else the linker records; Zstandard is compiled in. The display stack, the graphics driver loader and the keyboard map libraries are opened by name at run time, so Depends is written by hand and packaging/linux/check-libraries.sh measures it against a running window on both display backends.

The last three packages own the dpkg triggers that rebuild the desktop, icon and media type caches, which is why this package carries no maintainer scripts.

Homepage
excelano.com/parkett/
Depends
libc6, libgcc-s1, libwayland-client0, libxkbcommon0, libxkbcommon-x11-0, libegl1, libvulkan1 or libgl1, libx11-6, libx11-xcb1, libxi6, libxcursor1, libxrandr2, desktop-file-utils, hicolor-icon-theme, shared-mime-info
Installed size
29.0 MB
Files

paxc

4.0.1-1 devel

A compiler for the pax DSL, producing Power Automate cloud flow definitions

paxc compiles the pax DSL into Power Automate cloud flow definitions. Write terse, readable code; get the verbose definition.json that Power Automate expects. Companion interpreter paxr runs the same source locally for fast iteration without round-tripping through the PA designer. Every pax construct maps to a documented PA action shape, and `paxc --decode <flow.json>` round-trips real PA exports back to pax source for refactoring under version control. See REFERENCE.md (installed at /usr/share/doc/paxc/) for the full language reference.

Homepage
excelano.com/paxc/
Depends
libc6, libgcc-s1
Installed size
3.3 MB
Files

plene

0.3.0-1 devel

Shows Rust source alongside an expanded transcription: the same code with

abbreviations and symbols written out in words plene shows Rust source alongside an expanded transcription: the same code with Rust's abbreviations and symbols written out as words. Each expansion depends on the role a token plays, so & in an expression reads "borrow" while & in a type reads "borrowed", and the same token in the same role always reads the same way. It spells out what is written and does not explain what it means.

Homepage
excelano.com/plene/
Depends
libc6, libgcc-s1
Installed size
1.8 MB
Files

plene-gui

0.3.0-1 devel

A window showing Rust source beside its expanded transcription: the same code

with abbreviations and symbols written out in words plene shows Rust source alongside an expanded transcription: the same code with Rust's abbreviations and symbols written out as words. This is its window: the source and the transcription in two columns, one row per source line, and a card on hovering a token that names its role and says what it does.

Homepage
excelano.com/plene/
Depends
desktop-file-utils, hicolor-icon-theme, libc6, libegl1, libgcc-s1, libvulkan1 or libgl1, libwayland-client0, libx11-6, libx11-xcb1, libxcursor1, libxi6, libxkbcommon-x11-0, libxkbcommon0, libxrandr2
Installed size
20.9 MB
Files

segler

0.1.6 editors

Editor for DocLang documents

Segler opens a DocLang document or archive and shows it as a reader would see it: headings, paragraphs, lists, tables and pictures in reading order, with the element tree beside it. Edits are made in the rendered document and in the element pane, with undo, and what is saved is the same file with the edits and nothing else changed. When an archive carries page images they open beside the document.

The package carries the application, the segler command-line tool over the same library, the desktop entry, and the two DocLang media types with their icons, so a .dclx or .dclg opens on a double-click.

Only two of the libraries above are found by dpkg-shlibdeps. The executable links libc and libgcc and nothing else; the display stack, the graphics driver loader, and the keyboard map libraries are all opened by name at run time, so a package built from the linker's answer alone would install on a machine where it cannot start. packaging/linux/check-libraries.sh measures the list against a running window on both display backends.

There are two keyboard map libraries and not one, because there are two display backends. A Wayland session never loads libxkbcommon-x11 and an X11 session panics at startup without it; nothing pulls it in behind libxkbcommon0. slipcase-desktop shipped two releases without it.

The three tool packages at the end own the dpkg triggers that rebuild the media type, desktop and icon caches, which is why this package carries no maintainer scripts.

Homepage
github.com/excelano/segler
Depends
libc6, libgcc-s1, libwayland-client0, libxkbcommon0, libxkbcommon-x11-0, libegl1, libvulkan1 or libgl1, libx11-6, libx11-xcb1, libxi6, libxcursor1, libxrandr2, shared-mime-info, desktop-file-utils, hicolor-icon-theme
Installed size
23.5 MB
Files

slipcase

0.7.0-1 utils

Pack, unpack, repack, inspect, and validate Slipcase containers: a ZIP holding

a content file and the TOML flyleaf that describes it slipcase attaches a flyleaf to a file without changing it. A .slpc container is a ZIP archive holding one content file of any type together with a TOML document describing it, so that copying, moving, or sending the content file carries its flyleaf along. Five verbs: pack, unpack, repack, info, and validate. The format is specified independently of this tool, and ordinary ZIP utilities can read a container without it.

Homepage
slipcaseformat.org
Depends
libc6, libgcc-s1
Installed size
1.7 MB
Files

slipcase-common

1.1.3 utils

Media type and icon for Slipcase containers

Declares application/vnd.excelano.slipcase+zip against *.slpc for shared-mime-info, with the provisional application/x.slipcase+zip as an alias, and ships the icon a container is drawn with. No executable.

It also declares five payload families — PDF, document, image, audio and video — each matching a longer glob such as *.pdf.slpc and carrying its own drawing, so that a container named for its payload is drawn with a mark for it. The family is read from the container's name, which SPEC calls a convention and not a rule, so it is a hint and the products that open a container are what say what is really inside.

Every Slipcase product on a Linux machine depends on this package rather than carrying a copy, because a media type has to be declared once and an icon named for a media type is one file at one path. Two packages shipping that path is not a merge, it is dpkg refusing the second install.

The two tool packages own the dpkg triggers that rebuild the mime and icon caches, which is why this package carries no maintainer scripts.

Breaks and Replaces name slipcase-desktop before 0.1.3 because the icon moved out of it into here. Without them dpkg refuses to install this package on any machine that already has one of those versions, the two archives having one path in common, and that is every machine the apt repository has served.

Homepage
slipcaseformat.org
Depends
shared-mime-info, hicolor-icon-theme
Installed size
56 kB
Files

slipcase-desktop

0.2.0 utils

Viewer and flyleaf editor for Slipcase containers

Opens a .slpc container, shows its flyleaf as an editable tree, and hands the content file to whatever application the desktop has registered for it.

The container format is read and written entirely through the slpc library, which is the reference implementation of the Slipcase specification. This application parses no containers of its own.

Only two of the libraries above are found by dpkg-shlibdeps. The executable links libc and libgcc and nothing else; the display stack, the graphics driver loader, and the keyboard map libraries are all opened by name at run time, so a package built from the linker's answer alone would install on a machine where it cannot start.

There are two keyboard map libraries and not one, because there are two display backends. A Wayland session never loads libxkbcommon-x11, and an X11 session panics at startup without it; nothing pulls it in behind libxkbcommon0, which is the dependency in the other direction. It was missing here until 2026-08-29 and no run on a developer machine could have shown it, every such machine having the package already.

slipcase-common declares the media type and ships the icon a container is drawn with. It is a hard dependency: without the type declared, nothing associates a .slpc with this application. It pulls shared-mime-info in behind it, which is why that is no longer named here.

The two tool packages at the end own the dpkg triggers that rebuild the desktop and icon caches, which is why this package carries no maintainer scripts.

Homepage
excelano.com/slipcase/
Depends
libc6, libgcc-s1, libwayland-client0, libxkbcommon0, libxkbcommon-x11-0, libegl1, libvulkan1 or libgl1, libx11-6, libx11-xcb1, libxi6, libxcursor1, libxrandr2, slipcase-common, desktop-file-utils, hicolor-icon-theme
Installed size
21.6 MB
Files

slipcase-fileroom

0.1.3 utils

Records management on Slipcase containers kept on file shares

Slipcase Fileroom opens a records root: a folder holding the retention schedule, the hold matters and the aggregations of an organisation's records, and the share roots where the records themselves are kept as Slipcase containers. It captures a document as a record, classifies it under the schedule, holds it for a matter, queues what is due, and runs a disposition batch to a certificate, writing every decision into the record's own log.

Everything that reads a record, verifies its log, computes its eligibility or destroys its file is the open fileroom crate's, so an auditor can read and verify a root with the fileroom command and no licence. This application decides when and on whose authority, and writes.

There is no store on Linux to buy a subscription in, so this package reads: every root, every record and its history, the Queue, the holds and the register. Writing is in the Microsoft Store and Mac App Store editions.

This package depends on no other Slipcase product and declares no file type: it is handed a folder, the records root, and opens a window over it.

Only two of the libraries above are found by dpkg-shlibdeps. The executable links libc and libgcc and nothing else; the display stack, the graphics driver loader and the keyboard map libraries are all opened by name at run time, so every one of them is written here by hand and checked against a running process by packaging/linux/check-libraries.sh.

Homepage
excelano.com/slipcase-fileroom/
Depends
libc6, libgcc-s1, libwayland-client0, libxkbcommon0, libxkbcommon-x11-0, libegl1, libvulkan1 or libgl1, libx11-6, libx11-xcb1, libxi6, libxcursor1, libxrandr2, desktop-file-utils, hicolor-icon-theme
Installed size
33.5 MB
Files

slipcase-open

0.2.2-1 utils

Open the content file of a Slipcase container in its own application, and write

edits back into the container slipcase-open opens the content file of a .slpc container in whatever application normally handles that kind of file, watches for edits, and writes them back into the container. Double-click a container and the document opens; save it and the container is repacked around it. No flyleaf window, no preview, no container browsing — the companion viewer is what those are for.

Homepage
github.com/excelano/slipcase-open
Depends
desktop-file-utils, libc6, libgcc-s1, slipcase-common
Installed size
4.5 MB
Files

slipcase-query

0.3.0 utils

Query a folder of Slipcase containers by their flyleaf

Point Slipcase Query at a folder of .slpc containers and ask a question in SlipQL: each container is a row and each flyleaf key a column. Select a row and the container's content file and its full flyleaf sit beside the table; one press hands the content file to whatever the system opens that kind of file with.

It reads the flyleaf in place, through the same library the slipcase command uses, and never unpacks a content file to answer. It keeps no index and no state, so every query is a fresh scan and the answer is what is on disk now. It never writes a container.

The query language is SlipQL, embedded as the slipql crate rather than reimplemented, so the command line and the window answer the same question the same way.

This package depends on no other Slipcase product, which is the difference from Slipcase Desktop and Slipcase Open. Those open a document, so they associate themselves with the .slpc media type and need slipcase-common to declare it. Slipcase Query is handed a folder and declares no file type at all.

Only two of the libraries above are found by dpkg-shlibdeps. The executable links libc and libgcc and nothing else; the display stack, the graphics driver loader and the keyboard map libraries are all opened by name at run time, so every one of them is written here by hand and checked against a running process by packaging/linux/check-libraries.sh.

Homepage
slipcaseformat.org
Depends
libc6, libgcc-s1, libwayland-client0, libxkbcommon0, libxkbcommon-x11-0, libegl1, libvulkan1 or libgl1, libx11-6, libx11-xcb1, libxi6, libxcursor1, libxrandr2, desktop-file-utils, hicolor-icon-theme
Installed size
21.4 MB
Files

slipql

0.3.0-1 utils

A query language for Slipcase flyleaves: select, from, where over a directory

of containers slipql runs select/from/where queries over the flyleaf of Slipcase containers in a directory tree. Each container is a row, each flyleaf key a column, and the result renders as a table, CSV, TSV, or JSON. It reads each flyleaf in place without unpacking, keeps no index, and changes nothing.

Homepage
slipcaseformat.org
Depends
libc6, libgcc-s1
Installed size
1.8 MB
Files

this2that

0.5.1 utils

Converters between plain-text, Office, and data file formats

Thirteen command-line converters, each named <from>2<to>: md2docx and docx2md (Markdown and Word), md2pptx (Markdown to PowerPoint), docx2odt and odt2docx (Word and OpenDocument text), csv2xlsx and xlsx2csv (CSV and Excel), xlsx2ods and ods2xlsx (Excel and OpenDocument spreadsheets), sqlite2csv, sqlite2xlsx, and sqlite2ods (SQLite tables to CSV, Excel, and OpenDocument), and parquet2csv (Parquet to CSV). PowerPoint is export-only because pandoc writes .pptx but cannot read it.

Each command takes an input file and an optional output path, defaulting to the input name with the new extension. md2docx and md2pptx accept a pandoc reference document as a style template, csv2xlsx types cells only when the conversion is lossless so leading-zero codes and long digit runs survive the trip into Excel as text, and sqlite2csv, sqlite2xlsx, and sqlite2ods can each dump every table in a database in one pass (--all for sqlite2csv's separate CSVs, one sheet per table for the other two). xlsx2ods and ods2xlsx rewrite formulas between Excel syntax and OpenFormula, keeping the last computed value and naming the cell on stderr wherever a formula has no equivalent on the other side.

The converters reimplement nothing: pandoc does the Markdown, Word, PowerPoint, and OpenDocument text work, openpyxl does the Excel work, odfpy does the OpenDocument spreadsheet work, sqlite2csv uses only the Python standard library, and parquet2csv uses the DuckDB CLI, which Debian does not package and so is not a dependency: install it from https://duckdb.org/docs/installation.

Homepage
github.com/excelano/this2that
Depends
pandoc, python3, python3-openpyxl, python3-odf
Files

umwand

0.1.1 utils

Open Office Open XML files as OpenDocument

umwand registers as the handler for .docx, .xlsx and .pptx files. Opening one converts it to .odt, .ods or .odp and opens the result in the default application for OpenDocument. The converted file sits beside the original, which is never changed; a file opened from a temporary or read-only location is converted into an umwand folder under Documents instead. Opening the same file again reuses a conversion that is newer than it.

LibreOffice does the conversion when it is installed. Without it, the this2that converters handle Word and Excel files, and presentations open unconverted. Digitally signed files, which conversion would invalidate, and files no converter manages are passed to the next application registered for their type.

Homepage
github.com/excelano/umwand
Depends
libglib2.0-bin, xdg-utils
Recommends
libreoffice-writer, libreoffice-calc, libreoffice-impress
Suggests
this2that
Files

upd

0.2.1 admin

Update every package manager on the machine in one command

upd runs the update for each package manager and self-updating tool it covers, starting with apt, and skips any that is not installed. Firmware updates through fwupd are off by default. A summary at the end lists which updates completed and which failed. ~/.config/upd/config lists the updates to run and is written on the first run.

Homepage
github.com/excelano/upd
Depends
sudo
Files

ved

0.2.1-1 editors

The verbose ed — an ed clone with friendly errors and a built-in help system

ved is a verbose clone of ed, the original Unix line editor, written in pure-stdlib Rust. It adds friendly error messages, command confirmations, long-form command aliases, and a built-in help reference while preserving close compatibility so most scripts written for real ed run against ved unchanged. Full tutorial at https://excelano.com/ved/tutorial/.

Homepage
excelano.com/ved/
Depends
libc6, libgcc-s1
Installed size
423 kB
Files

vier

0.1.0-1 games

Four in a row against the computer or a second player

Vier is four in a row on a seven-by-six board. Play red against the computer at Easy, Medium or Hard, or pass the mouse between two players. It makes no network connection and keeps only its settings and the game in progress.

Homepage
github.com/excelano/vier-desktop
Depends
desktop-file-utils, hicolor-icon-theme, libc6, libegl1, libvulkan1 or libgl1, libwayland-client0, libx11-6, libx11-xcb1, libxcursor1, libxi6, libxkbcommon-x11-0, libxkbcommon0, libxrandr2
Installed size
16.3 MB
Files

waddle

0.4.1-1 utils

Write ODT, DOCX, ODS, ODP and XLSX from DocLang and docling JSON

waddle writes an OpenDocument or Office Open XML package from a docling DoclingDocument: DocLang, a DocLang archive, or docling JSON in, ODT or DOCX out, offline and in pure Rust. docling.rs reads office documents and writes none; waddle is the writer. Output is deliberately plain, the document a well-structured Markdown file would give you opened in Writer or Word, and nothing is ever overwritten.

Homepage
github.com/excelano/waddle
Depends
libc6, libgcc-s1
Installed size
13.6 MB
Files

whisper.cpp-tools

1.9.5+dfsg-1~bpo13+1 libs

Automatic speech recognition and transcribing (tools)

Port of OpenAI's Whisper automatic speech recognition model in C/C++ as command line tools.

Includes early support for Nvidia Parakeet models. See upstream documentation to find out which models are supported.

Homepage
github.com/ggml-org/whisper.cpp/
Depends
libavcodec61, libavformat61, libavutil59, libc6, libgcc-s1, libggml0, libsdl2-2.0-0, libstdc++6, libswresample5, libwhisper1
Installed size
7.4 MB
Files

xfiles

1.1.0 utils

Unix-shaped command-line tools for SharePoint document libraries

xfiles installs the whole suite of command-line tools for SharePoint document libraries over Microsoft Graph: xftp (interactive ftp-feel), xcp (scp-style one-shot copy), xfind (recursive find), xtree (recursive tree), and xsync (rsync-style mirror). This metapackage pulls in all five; install an individual package by name to get just that one.

Suggests xql, which handles the other half of SharePoint: xfiles works on files and folders in a document library, xql queries and edits the rows of a list. They share the same tenant authentication. Neither pulls the other in — xql is properly a tabular tool, and dragging it into a file suite would mismatch the name.

Homepage
github.com/excelano/xfiles
Depends
xftp, xcp, xfind, xtree, xsync
Suggests
xql
Files

xled

0.13.1-1 utils

sed and awk for tabular data — regex transforms over Excel-style ranges on

CSV/DSV xled is sed and awk for tabular data: awk's field model, sed's s/// substitution, and ed's live in-memory buffer, applied to Excel-style ranges over CSV and DSV files. It is stringly-typed with explicit casts (leading zeros and long IDs stay intact), never reshapes the table, and previews every edit before you commit. Part of the Excelano tabular family — four small tools split by what changes: xray observes and changes nothing, xled edits cell values, xshape changes the grid's shape, xql queries the row set.

Homepage
excelano.com/xled/
Depends
libc6, libgcc-s1
Installed size
3.5 MB
Files

xodp

0.10.0 text

lightweight OpenDocument presentation editor

Open a .odp deck and read it: every slide at the size the document sets, its shapes where the document puts them, and the speaker's notes. Move a shape, resize it or change its text, undo, and save the deck back as it was.

Editing means changing what is there, not authoring: no formatting beyond bold, italic, underline and strikethrough, no inserting, no formulas. What was not touched is written back as it was read, element for element. Nothing is sent anywhere, and nothing is written until Save, and then only the file that was opened or the one named.

Homepage
github.com/excelano/odox
Depends
libc6, libgcc-s1, libvulkan1, libx11-6, libx11-xcb1, libxcb1, libxcursor1, libxext6, libxi6, libxkbcommon0, libxkbcommon-x11-0, libwayland-client0
Recommends
fonts-liberation
Files

xods

0.10.0 text

lightweight OpenDocument spreadsheet editor

Open a .ods workbook and read it: every sheet, the values the document holds and the text it displays, with the formula behind the cell you pick. Type into a cell to change it, undo, and save it back as the document it was.

Editing means changing what is there, not authoring: no formatting beyond bold, italic, underline and strikethrough, no inserting, no formulas. What was not touched is written back as it was read, element for element. Nothing is sent anywhere, and nothing is written until Save, and then only the file that was opened or the one named.

Homepage
github.com/excelano/odox
Depends
libc6, libgcc-s1, libvulkan1, libx11-6, libx11-xcb1, libxcb1, libxcursor1, libxext6, libxi6, libxkbcommon0, libxkbcommon-x11-0, libwayland-client0
Recommends
fonts-liberation
Files

xodt

0.10.0 text

lightweight OpenDocument text document editor

Open a .odt document and read it: headings, lists, tables, pictures and the document's own fonts, with an outline beside the page. Change the text that needs changing, undo, and save it back as the document it was.

Editing means changing what is there, not authoring: no formatting beyond bold, italic, underline and strikethrough, no inserting, no formulas. What was not touched is written back as it was read, element for element. Nothing is sent anywhere, and nothing is written until Save, and then only the file that was opened or the one named.

Homepage
github.com/excelano/odox
Depends
libc6, libgcc-s1, libvulkan1, libx11-6, libx11-xcb1, libxcb1, libxcursor1, libxext6, libxi6, libxkbcommon0, libxkbcommon-x11-0, libwayland-client0
Recommends
fonts-liberation
Files

xplit

0.5.0-1 utils

A minimal terminal splitter with no prefix key and no configuration

xplit splits one terminal window into shells side by side or stacked, and splits those again: no prefix key, no status bar, no configuration and no sessions. Typing xplit inside a pane splits it, Alt+arrow keys move focus between panes, and a pane closes when its shell exits.

Homepage
github.com/excelano/xplit
Depends
libc6, libgcc-s1
Recommends
wl-clipboard or xclip
Installed size
1.1 MB
Files

xql

1.13.2 database

XQL — Excelano Query Language CLI.

One binary, one SQL dialect, three backends: CSV files, SharePoint Lists over Microsoft Graph, and xinglists (read-only). The same SELECT runs against any of them; CSV and SharePoint also take INSERT, UPDATE, and DELETE, which preview the affected rows and commit only on confirmation. Part of the Excelano tabular family — four small tools split by what changes: xray observes and changes nothing, xled edits cell values, xshape changes the grid's shape, xql queries the row set.

Homepage
github.com/excelano/xql
Installed size
8.2 MB
Files

xray

0.6.1-1 utils

a read-only profiler for tabular data — what a CSV/DSV is, before you edit or

query it xray is a read-only profiler for tabular data: one streaming pass over a CSV or DSV that reports what the file is (shape, delimiter, encoding), what each column holds (type, fill, cardinality — stringly-typed, so leading zeros and long IDs stay text), and what will bite a later step (ragged rows, total rows, currency text, mixed types, buried headers). It observes and never writes. Part of the Excelano tabular family — four small tools split by what changes: xray observes and changes nothing, xled edits cell values, xshape changes the grid's shape, xql queries the row set.

Homepage
excelano.com/xray/
Depends
libc6, libgcc-s1
Installed size
1.3 MB
Files

xshape

0.5.6-1 utils

reshape tabular data — pivot, unpivot, split, merge, explode, transpose —

without touching a value xshape changes the geometry of a single table — pivot, unpivot, transpose, split one column into several, merge several into one, explode a delimited cell into rows — without ever changing, filtering, or aggregating a value. Every input cell reappears unchanged; a pivot errors rather than silently sum on a collision. It shares xled's column-addressing dialect (letters, [bracketed names], ranges), so the family reads as one language with different verbs. Part of the Excelano tabular family — four small tools split by what changes: xray observes and changes nothing, xled edits cell values, xshape changes the grid's shape, xql queries the row set.

Homepage
excelano.com/xshape/
Depends
libc6, libgcc-s1
Installed size
1.1 MB
Files

xtabular

1.1.0 utils

Command-line tools for messy tabular data — the whole family

xtabular installs the four Excelano tools for messy tabular data, split by what changes: xray profiles a CSV or DSV and never writes, xled edits cell values in place (sed and awk for tables), xshape changes the shape of the grid without touching a value, and xql queries the row set with SQL. This metapackage pulls in all four; install an individual package by name to get just that one.

The four ship from separate repositories on independent release cadences, and this package is the suite version: it is bumped when a set has been tested together, the way a distribution declares a known-good combination, rather than tracking any one tool.

Dependencies are by name today. They gain version floors as the tools begin to reference each other — xray already names its siblings in the referral block and writes commands against them, so a floor becomes load-bearing the moment one of those commands depends on syntax newer than the installed sibling.

Suggests xfiles, the sister suite for SharePoint document libraries. The two meet at xql, which queries SharePoint list rows while xfiles moves the files; neither pulls the other in, since a file suite and a tabular suite are different jobs.

Homepage
excelano.com/
Depends
xray, xled, xshape, xql
Suggests
xfiles
Files

zappel

0.1.0-1 games

Turn caterpillars into butterflies with a garden sprinkler

Zappel is an arcade game in a garden. A caterpillar winds down toward a sprinkler that sprays water at it, and every segment the water hits turns into a butterfly. Bees, acorns and snails join in as the waves go on. It makes no network connection and keeps only its best score and sound setting.

Homepage
github.com/excelano/zappel-desktop
Depends
desktop-file-utils, fonts-dejavu-core, hicolor-icon-theme, libasound2t64, libasound2t64, libc6, libegl1, libvulkan1 or libgl1, libwayland-client0, libx11-6, libx11-xcb1, libxcursor1, libxi6, libxkbcommon-x11-0, libxkbcommon0, libxrandr2
Installed size
16.5 MB
Files

About this repository

Every package here is built from a public GitHub release under github.com/excelano and signed with a key dedicated to this repository. The indices are regenerated on every ship, and this page renders those indices directly, so what you read here is what apt sees.

Removing the repository is two files: /etc/apt/sources.list.d/excelano.list and /usr/share/keyrings/excelano-archive-keyring.gpg.

A 32-bit system such as a Raspberry Pi running the 32-bit OS will find nothing installable here; the repository serves amd64 and arm64 only.