Mastodon terminal user interface
Project description
tooi
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.
- Source code: https://codeberg.org/ihabunek/tooi
- Python package: https://pypi.org/project/toot-tooi/ *
- IRC chat: #toot channel on libera.chat
* 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
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 is not packaged in any OS package repository. If you add such a package, please contact us to update this description.
Using uv
The recommended method of installation is using uv which installs python projects into their own virtual environments.
-
Follow the uv installation guide to set it up.
-
Install tooi:
uv tool install toot-tooi -
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.
-
Follow the pipx installation guide to set it up.
-
Install tooi:
pipx install toot-tooi -
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 TabandShift+Tab- move between focusable componentsSpaceorEnter- activate buttons and menu itemsCtrl+p- open the command palette
Managing tabs:
.- refresh timeline/- open search tab1-9- switch between open tabsCtrl+d, Ctrl+w- close current tabg- open new tab ("goto")
Status bindings:
a- show accountb- boost statusd- delete statuse- edit statusf- favourite statusm- show mediar- reply to statuss- reveal sensitivet- show threadu- show toot sourcev- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file toot_tooi-0.20.0.tar.gz.
File metadata
- Download URL: toot_tooi-0.20.0.tar.gz
- Upload date:
- Size: 358.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a1b009e4912ee7f00accd0844b18d970440c9be28ec3043723f93468e7316d7
|
|
| MD5 |
c4735510b349cd0ddda419f00db3e470
|
|
| BLAKE2b-256 |
ea99dbebc6a815e3c30850dd6e0197841a4a7fe12fc0beece53be30424fc5f51
|
File details
Details for the file toot_tooi-0.20.0-py3-none-any.whl.
File metadata
- Download URL: toot_tooi-0.20.0-py3-none-any.whl
- Upload date:
- Size: 99.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
416e5fade41f4275451aa24323ecbec4736778f60f892c8f9db7a914a01e4280
|
|
| MD5 |
e3687f008f52600863ed1cbb1a12911a
|
|
| BLAKE2b-256 |
68f9e9fec62f59570158d151e26a8e87548477408ae36e84dfb04481bf7a435d
|