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 portmantou of toot and TUI.

It uses the Textual framework.

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

Project status

This project is in its early days and things will change without notice.

While we aim to keep the project usable at all times, expect that things may break before we hit version 1.0.

Installation

Currently tooi requires toot for logging into instances.

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 toot and tooi by running:

    uv tool install toot
    uv tool install toot-tooi
    

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

Usage

Before first use, run toot login to log into your mastodon instance.

Tooi will authenticate as the currently active toot user. You can check who you're logged in as by running toot whoami, and switch accounts using toot activate.

Launch the program by running tooi.

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

Key bindings

Generic 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

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

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.

Please run make lint to check formatting before sending a patch. This runs flake8 which checks for some basic code style rules. It shouldn't be too aggressive, and if you're bothered by a rule, let me know.

Lines can be upto 100 characters wide, wrap them if they go over that.

Wrapping style

Wrapping style is not enforced by the linter, but this is the preferred style most of the time:

# NO: Do not wrap after opening paren

very_long_package_name.even_longer_long_function_call(first_argument,
                                                      second_argument,
                                                      third_argument)

# YES: Align arguments on next tab

very_long_package_name.even_longer_long_function_call(
    first_argument,
    second_argument,
    third_argument
)

Type checking

You're encouraged to specify types in your code. While they can be a bit of a pain in Python, I have found them to be useful in locating errors and eliminating potential bugs.

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.15.0.tar.gz (97.5 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.15.0-py3-none-any.whl (82.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: toot_tooi-0.15.0.tar.gz
  • Upload date:
  • Size: 97.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.11

File hashes

Hashes for toot_tooi-0.15.0.tar.gz
Algorithm Hash digest
SHA256 8df53f192e49209ee127a5fb7df4a186cca0315e2ab5a6367e24d86f0a3ef84a
MD5 d39899db59b22ea50002f4ed4d1d0f05
BLAKE2b-256 d62ec8e5120f58abe0eefbe6c03ed425116c79ceb6368f298844fd05d954bff6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: toot_tooi-0.15.0-py3-none-any.whl
  • Upload date:
  • Size: 82.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.11

File hashes

Hashes for toot_tooi-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 18542a2d02666b690404d49a826ba9df0ee1a2496fbe442d49ccf5b93c160524
MD5 6185447c21baa7a449d084fbb1195a76
BLAKE2b-256 5224543b577b5d5dac5ed73780c4869979587cb43d40ff562e80a608f8a35b70

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