Skip to main content

tooi

Horn logo

tooi is a text-based user interface for Mastodon, Pleroma and friends. The name is a portmanteau of toot and TUI.

tooi is a re-implementation of the TUI included with toot using the modern and more powerful Textual framework.

* Could not get tooi as Python project name, if someone knows python people ask them kindly to approve this request.

This project proudly uses Pride Versioning 🏳️‍🌈.

Screenshot

tooi screenshot

Project status

This project is still being actively developed. While we aim to keep the project usable at all times, expect that things may change before we hit version 1.0.

Installation

If possible, install tooi from your OS package repository.

Packaging status Packaging status

Otherwise, follow one of the options below.

Using uv

The recommended method of installation is using uv which installs python projects into their own virtual environments.

  1. Follow the uv installation guide to set it up.

  2. Install tooi:

    uv tool install toot-tooi
    
  3. Upgrade tooi to the latest version:

    uv tool upgrade toot-tooi
    

Using pipx

The second recommended option is using pipx which is similar to uv but somewhat slower.

  1. Follow the pipx installation guide to set it up.

  2. Install tooi:

    pipx install toot-tooi
    
  3. Upgrade tooi to the latest version:

    pipx upgrade toot-tooi
    

From the Python Package Index

Alternatively, if you know what you're doing, install tooi from pypi using your favourite method.

Usage

Launch the program by running tooi.

Run tooi --help to see the available commandline options.

On first login tooi will offer an account selection screen where you can log into your instance.

Key bindings

Context-specific key bindings are shown in the footer of the screen. You can also press ? to toggle the help panel which shows all available bindings.

Here's a possibly outdated overview of key bindings:

General bindings:

  • Arrow keys or h/j/k/l - move up/down/left/right
  • Tab and Shift+Tab - move between focusable components
  • Space or Enter - activate buttons and menu items
  • Ctrl+p - open the command palette

Managing tabs:

  • . - refresh timeline
  • / - open search tab
  • 1 - 9 - switch between open tabs
  • Ctrl+d, Ctrl+w - close current tab
  • g - open new tab ("goto")

Status bindings:

  • a - show account
  • b - boost status
  • d - delete status
  • e - edit status
  • f - favourite status
  • m - show media
  • r - reply to status
  • s - reveal sensitive
  • t - show thread
  • u - show toot source
  • v - open toot in browser

Image support

By default tooi will attempt to render images in your console using Terminal Graphics Protocol or Sixel graphics, and falling back to half-block images.

Whether images can be displayed depends on your terminal. Check out the list of known supported terminals.

To see if your terminal supports graphics, you can run tooi --env and look at the "Image support" section, e.g.:

## Image support

TGP (Kitty) images: True
Sixel images: False
Is TTY: True
Default: tgp

Setting up a dev environment

Usage of uv for development is recommended.

Check out tooi and install the dependencies:

git clone https://codeberg.org/ihabunek/tooi.git
cd tooi
uv sync

Run the app by invoking:

uv run tooi

Using the console

To use the Textual console, run it in a separate terminal window:

uv run textual console

Then run tooi in dev mode so it connects to the console:

uv run textual run --dev tooi.cli:main

Code style and linting

Rule of thumb: look at existing code, try to keep it similar in style.

This project uses ruff to format code. Please run it on any modified files before submitting changes: ruff format <path>

Type checking

This project is configured to use pyright for type checking, and I recommend that you install the pyright language server if it's available for your editor. Currently it returns errors in some places, some of which are caused by the way textual is implemented. So it's not required to have zero errors before submitting patches, but it will indicate problems in new code.

Metadata

Release files for toot-tooi 0.28.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for toot-tooi 0.28.0
File Size Uploaded Provenance Actions
toot_tooi-0.28.0.tar.gz 361.8 kB Without provenance Details for toot_tooi-0.28.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for toot-tooi 0.28.0
File Interpreter ABI Platform Actions
toot_tooi-0.28.0-py3-none-any.whl Python 3 none any Details for toot_tooi-0.28.0-py3-none-any.whl

Total release size: 461.7 kB

Release files / toot_tooi-0.28.0.tar.gz

Download URL toot_tooi-0.28.0.tar.gz
Size 361.8 kB
Tags Source
SHA-256 checksum
How to use checksums
f025011e3fe159dc5892e25a148233276bda22e4866a7d5b334c38669437a09b
BLAKE2b-256 checksum
How to use checksums
76bb1e72a54c1c386db3d619178356645fee4c6d30419dc872273855afdbe7fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"44","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / toot_tooi-0.28.0-py3-none-any.whl

Download URL toot_tooi-0.28.0-py3-none-any.whl
Size 99.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d2df780a51e1fe6597d73712f635cf65f4de21a974dcb4734f09cf2a2d456bdf
BLAKE2b-256 checksum
How to use checksums
5b3c9201c55580c38b04a163e16269c3f58605f7b102fc74ba7c6c71e89f932f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"44","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for toot-tooi 0.28.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.28.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page