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.

Release files for toot-tooi 0.27.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.27.0
File Size Uploaded
toot_tooi-0.27.0.tar.gz 361.1 kB Details

Built distribution (wheel)

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

Total release size: 462.3 kB

Release files / toot_tooi-0.27.0.tar.gz

Download URL toot_tooi-0.27.0.tar.gz
Size 361.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1dcd12e3865d5c79f86873b21c294d3dc86a83a8ac3bb96f929f55532b7be23c
BLAKE2b-256 checksum
How to use checksums
19eb143bb29c92f24e17e68d716f96d1afb2692db4bfd30f1c0609c8eb1a5fff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","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.27.0-py3-none-any.whl

Download URL toot_tooi-0.27.0-py3-none-any.whl
Size 101.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a884d802e06943d94e77bf71c1ae3ae21f457fafbf2e1407e0aae54c4a54e889
BLAKE2b-256 checksum
How to use checksums
17d7feb1da4ae3d3a8397f6f78b9ea99f2dcdf3400d4b40342b18b8190b4538c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","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}
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