Skip to main content

Mastodon terminal user interface

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

toot_tooi-0.23.1.tar.gz (361.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

toot_tooi-0.23.1-py3-none-any.whl (101.5 kB view details)

Uploaded Python 3

File details

Details for the file toot_tooi-0.23.1.tar.gz.

File metadata

  • Download URL: toot_tooi-0.23.1.tar.gz
  • Upload date:
  • Size: 361.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"43","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for toot_tooi-0.23.1.tar.gz
Algorithm Hash digest
SHA256 9e9ebdaedd710981060affc882a4e24a45bd2477eb338a06ce4b3ac67be479ea
MD5 e33e90f0408d0b4ae651b46d8dab5fc6
BLAKE2b-256 c010495f16b697e2910913d60d218fd5b8ce03a57c9748147730cb9d1bf1840c

See more details on using hashes here.

File details

Details for the file toot_tooi-0.23.1-py3-none-any.whl.

File metadata

  • Download URL: toot_tooi-0.23.1-py3-none-any.whl
  • Upload date:
  • Size: 101.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"43","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for toot_tooi-0.23.1-py3-none-any.whl
Algorithm Hash digest
SHA256 97160fb2f8cee4f60c118ea84c3f8d8fddb1f156e4e96c07786a23b38e67cfea
MD5 649e2c6ca15f5ca94ae56ad1a31a0848
BLAKE2b-256 9208c308ecedfa3d34406c53cdaf5479561b6aef26f10cb03a7c22c630c33534

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page