tui-tools

tui-tools

Every tui-tools tool in one place, installed through your package manager

A terminal UI (TUI) for pacman, apt and dnf on Linux: the launcher of the tui-tools family.

v0.2.1betapackagesMIT
The dashboard: every tool of the family, what this machine has, and what the repository offers
The dashboard: every tool of the family, what this machine has, and what the repository offers

The launcher of the tui-tools family. Every tool of the family is a card: what it does, whether this machine has it, which version, and whether the repository offers a newer one.

A second group holds the companions: family packages that are not terminal UIs, and upstream projects rebuilt under the family provenance gate. The row says which repository the installed copy came from; o switches it to the family's build.

Install, update and remove go through the distribution's own package manager — apt, dnf or pacman — each previewed as the exact command line and confirmed before it runs. enter hands the terminal to an installed tool and takes it back on exit.

The catalog it reads only says which packages exist. It never decides what reaches the machine: your package manager verifies the signed repository index and the signed package, and every package name in it is validated twice before it can reach a command line. A snapshot of it is built into the binary, so the dashboard works offline.

s sets the repository up, with the key pinned by fingerprint.

Run tui-tools --demo for a sample machine where every key works and nothing is touched.

Keys

KeyAction
enterLaunch the selected tool; on a companion, show its full status instead
iInstall it, through this machine's package manager
uUpdate it
x / dRemove it; nothing it pulled in is autoremoved
oSwitch a companion to the tui-tools build, when it came from elsewhere
sSet the tui-tools repository up, with the key pinned by fingerprint
rRe-read the catalog and the machine
/Filter by name, tagline, category or state
?Help
qQuit

Press ? inside the tool for the full help screen, which is generated from the same action table as the key map.

Compatibility

This tool is a face on the program below, so its version matters.Tested is not a claim: a version lands there only after the tool's own suite passed against it on a real machine in the lab, and the run is kept as evidence in the repository. At startup the tool probes the backend once and says what it found in its header — a version nobody has run against is shown as(untested) in the warning colour, one older than the minimum as (below minimum) in the error colour. Neither stops it: the backend still refuses what it cannot do, in its own words.

pacman

pacman ≥ 6.0
Binary
pacman
Minimum
6.0
Probed with
pacman --version
Tested
No recorded run yet. The tool still runs and reports the version it found as untested.

What changes on older versions

  • pacman >=6.0

    Arch has no supported way to upgrade one package against a refreshed database without upgrading the machine with it, so an update here is pacman -Syu with the tool named, and the confirm dialog says so before it runs

  • pacman >=6.0

    the repository setup writes a [tui-tools] section under /etc/pacman.d and adds one Include line to pacman.conf, so a later setup finds it again instead of appending a second block

  • pacman >=6.0

    pacman records no repository for an installed package, so a companion's origin is inferred rather than read: a bare [installed] in pacman -Sl tui-tools means the machine has the version that repository offers, and pacman -Si names the repository whose version matches the installed one

apt

apt ≥ 2.0
Binary
apt
Minimum
2.0
Probed with
apt --version
Tested
No recorded run yet. The tool still runs and reports the version it found as untested.

What changes on older versions

  • apt >=2.0

    the available version comes from apt-cache policy, which reads the lists already on disk; a repository added a moment ago reports nothing until the refresh, which is the first previewed step of an install rather than something the read path does behind you

  • apt >=2.0

    a companion's origin is read off apt-cache policy: the version marked *** is the installed one, and the first source under it that is not /var/lib/dpkg/status is where it came from. apt cannot install from a named repository, so a switch names the family's version instead

dnf

dnf ≥ 4.0
Binary
dnf
Minimum
4.0
Probed with
dnf --version
Tested
No recorded run yet. The tool still runs and reports the version it found as untested.

Needs a version this new

  • dnf5since 5.0

What changes on older versions

  • dnf >=5.0

    dnf --version prints dnf5 version 5.2.18.0, where dnf4 prints a bare 4.24.0 on its first line; both are read by the same pattern, which keeps three components because a four-part version is not one the family schema records

  • dnf >=4.0

    the available version comes from dnf repoquery, which answers from the cache on disk, so a machine whose metadata has expired reports what it last fetched rather than refreshing behind you

  • dnf >=4.0

    dnf is the one manager that records where an installed package came from, so a companion's origin is read rather than inferred: dnf repoquery --installed --qf '%{name}|%{from_repo}' answers it on dnf4 and dnf5, and @System means it came from a file

Install

Once per machine, then every tool in the family is one pacman away.

Add the repository
$ curl -fsSL https://pkgs.tui.tools/install.sh | sh
Or run the same thing yourself, one command at a time

A family whose whole promise is preview before you run is not going to insist you pipe a script into a shell. These are the commands that script runs.

The one-time setup, by hand
$ curl -fsSL -o /tmp/tui-tools.asc https://pkgs.tui.tools/pubkey.asc
  sudo pacman-key --add /tmp/tui-tools.asc
  sudo pacman-key --lsign-key \
    "$(gpg --show-keys --with-colons /tmp/tui-tools.asc | awk -F: '/^fpr:/{print $10; exit}')"
  printf '[tui-tools]\nServer = https://pkgs.tui.tools/arch/$arch\n' \
    | sudo tee -a /etc/pacman.conf
  sudo pacman -Sy
Arch Linux · tui-tools
$ sudo pacman -S tui-tools

Upgrades then arrive with the rest of your system updates.

What it can do to your machine

  • Preview, then confirm

    Every change is shown as an exact command line and confirmed before it runs. The dialog and the runner receive the same value, so the preview cannot drift from what executes.

  • Escalates for actions

    Reads are unprivileged: which tools are installed and which the repositories offer are local database queries any user may make. Escalation is sudo -n, which never prompts, and covers only the installs, updates, removals and the repository setup you confirmed.

  • No daemon, no state of its own

    Nothing keeps running after you quit, and nothing is installed to run later. The system is the source of truth; the tool re-reads it after every change.

  • Opens network connections

    It fetches https://tui.tools/catalog.json, the list of tools and their versions. The catalog only informs: nothing from it reaches a command line except a name matching tui-<word>, and the package manager verifies the signed repository. --offline uses the snapshot in the binary.

  • Static binary

    Released statically linked, with no runtime dependencies to install.

  • Signed release, with provenance

    checksums.txt carries a keyless cosign signature from this repository's release workflow, every archive has a CycloneDX SBOM, and every archive, package and the checksum file carry SLSA build provenance. The security page shows the three commands that check it.

Reporting

Report a security issue privately, through GitHub's private vulnerability reporting on the repository's Security tab. The family-wide policy, and what counts as in scope, is on the security page.

Downloads

v0.2.1 · 2026-09-02
FileSizeSHA-256
checksums.txt1016 B
checksums.txt.sigstore.json10 KB
provenance.intoto.jsonl12 KB
tui-tools-0.2.1-1-aarch64.pkg.tar.zst3.0 MB8764b600de18641e01bd15559f5ad9c72fc00717e40001b87f5e47a3c1fa8ec5
tui-tools-0.2.1-1-x86_64.pkg.tar.zst3.4 MBb132584282038aefcef176243c764b7e892d70b469eb1e19594cf0eeff1f71cc
tui-tools-0.2.1-1.aarch64.rpm3.0 MBb5728beb91514b5c0d787980af84fe93437313437cd6a097b3400c07a6ae2da1
tui-tools-0.2.1-1.x86_64.rpm3.3 MBa8f3f15b966941d06db8fef17659d404b1b4921af371e8762220842eaaac4ff4
tui-tools_0.2.1_amd64.deb3.3 MB8c2cf8cc6a7018e45ec9b152d3e0601f90d434aab8f1c484825d742685c04d4f
tui-tools_0.2.1_arm64.deb3.0 MB43188cf86aa1c383e41de8ef44ecd742bda7f73e4687a42e9a3c604526ab8e7f
tui-tools_0.2.1_linux_amd64.tar.gz3.3 MBf262a3cc942549847969bfd7bfafa0d38e4a87126e62ec6e0c0578e531d28be4
tui-tools_0.2.1_linux_amd64.tar.gz.cyclonedx.json23 KB0aa2651f7e9ea583792c6ce68b0895debbb3c0db521c378fc17cc6ca8b8ac01a
tui-tools_0.2.1_linux_arm64.tar.gz3.0 MB7aa77eed07497609c94d7d8115984a129011a0d3c105e7d0e0e4f79713cf2f77
tui-tools_0.2.1_linux_arm64.tar.gz.cyclonedx.json23 KB6b46d3a4a67b1b112774b7a153d64d6de0387641f7eeb86d03b12c885038947e

Every release ships a checksums.txt. Download it next to the archive and run sha256sum -c checksums.txt --ignore-missing. See verifying a download.

Releases

v0.2.1

2026-09-02
## tui-tools v0.2.1

tui-kit v0.3.0: the dialogs wrap and scroll instead of clipping the
command preview, and the picker filters as you type.

Built by this repository's CI on the tag itself. Each archive ships a
CycloneDX SBOM, `checksums.txt` carries a keyless cosign signature, and
every file has SLSA build provenance — see the README's "Verify a
download" for the two commands that check them.

The commits in this release:

## Changelog
* 5cffc85bf3773457fa40b6e4f7331e3e2c8d45b9 Bump tui-kit to v0.3.0 (#15)
* 541da53892282b130a36d7054a35bb443376c5e4 Re-render the README frames on the companions build (#14)

v0.2.0

2026-09-02
## tui-tools v0.2.0

v0.2.0

Built by this repository's CI on the tag itself. Each archive ships a
CycloneDX SBOM, `checksums.txt` carries a keyless cosign signature, and
every file has SLSA build provenance — see the README's "Verify a
download" for the two commands that check them.

The commits in this release:

## Changelog
* c25cd2e6a834404f6ae75e54d8a1c67fda22c9c2 A code of conduct that fits on one screen (#11)
* ed096cc3462b8ac4986bd8d172258b0870af400d Add --report, and a bug form that asks for it (#12)
* 65906d641b388bca2fadda50f23c65efea58ed45 Carry the OpenSSF Best Practices badge (#9)
* a5344ec3b5b5fad554ea98050ae8e558a3bde9fb Show the companions, and where each installed one came from (#13)
* bc4643d4471188e0c18a7f7180ac5ffa0eb2cb5a Take tui-kit v0.2.8: hashed pip install, provenance bundle on the release (#10)

v0.1.3

2026-08-30
## tui-tools v0.1.3

Release notes that say what changed

The release header now prints the whole tag message, so this paragraph is
the first release note a reader of the family sees on a release page.
Nothing in the launcher itself moved since v0.1.1: same dashboard, same
package, same epoch.

Built by this repository's CI on the tag itself. Each archive ships a
CycloneDX SBOM, `checksums.txt` carries a keyless cosign signature, and
every file has SLSA build provenance — see the README's "Verify a
download" for the two commands that check them.

The commits in this release:

## Changelog
* c10f83d71e7db96632ec951f8f8ab80638e9217d Print the whole tag message, not only its body (#8)

v0.1.2

2026-08-30
## tui-tools v0.1.2



Built by this repository's CI on the tag itself. Each archive ships a
CycloneDX SBOM, `checksums.txt` carries a keyless cosign signature, and
every file has SLSA build provenance — see the README's "Verify a
download" for the two commands that check them.

The commits in this release:

## Changelog
* bad69f56854ddf9a474cbc70528c11f22da96fb9 Fetch the tag annotation before releasing (#7)
* 5191fe142898ffde4020e838e47e2f59cae4920e Say beta once (#6)

v0.1.1

2026-08-30
## tui-tools v0.1.1



Built by this repository's CI on the tag itself. Each archive ships a
CycloneDX SBOM, `checksums.txt` carries a keyless cosign signature, and
every file has SLSA build provenance — see the README's "Verify a
download" for the two commands that check them.

The commits in this release:

## Changelog
* 9739acf69ba242bff964856368eb6ecf1e3fc07d Pin what CI runs, fuzz the parsers, and say the releases are signed (#4)

v0.1.0

2026-08-30
## Changelog
* 22ef3093debdf59d9e3be1f96ed0d5a40c812978 Initial commit
* c6fe870df208bf0145a417b5616b68269814b0dc Outrank the metapackage that used to carry this name (#3)
* 43ce7c9482beb181af6d0b7e3d48f1ad3c170587 Take tui-kit v0.2.7: an Arch install is one -Syu step (#2)
* e4955cd15ae8779c798e684202cf18791d923079 The launcher: every tool of the family in one dashboard (#1)