https://github.com/mrusme/gomphotherium
Gomphotherium (/ˌɡɒmfəˈθɪəriəm/; "welded beast"), a command line Mastodon client.
https://github.com/mrusme/gomphotherium
activitypub cli cobra command-line command-line-tool commandline mastodon mastodon-api mastodon-app mastodon-client rice tcell terminal-based text-user-interface tui tview
Last synced: about 1 year ago
JSON representation
Gomphotherium (/ˌɡɒmfəˈθɪəriəm/; "welded beast"), a command line Mastodon client.
- Host: GitHub
- URL: https://github.com/mrusme/gomphotherium
- Owner: mrusme
- License: gpl-3.0
- Created: 2021-04-04T05:11:19.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2025-03-14T13:18:47.000Z (about 1 year ago)
- Last Synced: 2025-04-10T05:11:35.859Z (about 1 year ago)
- Topics: activitypub, cli, cobra, command-line, command-line-tool, commandline, mastodon, mastodon-api, mastodon-app, mastodon-client, rice, tcell, terminal-based, text-user-interface, tui, tview
- Language: Go
- Homepage: https://マリウス.com/gomphotherium-a-command-line-mastodon-client/
- Size: 3.93 MB
- Stars: 90
- Watchers: 6
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-tuis - Gomphotherium
- awesome-cli-apps-in-a-csv - Gomphotherium - A command line Mastodon client, offering a CLI and TUI with usage similar to rainbowstream; Intended to be used at 80 characters width maximum, ideally inside tmux as a sidebar-style program. (<a name="chat"></a>Chat and instant messaging)
- awesome-cli-apps - Gomphotherium - A command line Mastodon client, offering a CLI and TUI with usage similar to rainbowstream; Intended to be used at 80 characters width maximum, ideally inside tmux as a sidebar-style program. (<a name="chat"></a>Chat and instant messaging)
README
Gomphotherium
-------------
Gomphotherium (*/ˌɡɒmfəˈθɪəriəm/*; "welded beast"), a command line Mastodon
client.
## Info
As [I have left](https://xn--gckvb8fzb.com/project-updates-q3-2021/#gomphotherium)
the Fediverse for now, I won't be iterating too much on this. However, I'm
happy to accept PRs; If you're interested in actively contributing to
Gomphotherium or even support maintaining it, feel free to ping me!
## Description
Gomphotherium is a Mastodon client for the command line, offering a CLI as well
as a TUI with a usage similar to [rainbowstream](rainbowstream). It is intended
to be used at 80 characters width maximum, but ideally inside [tmux][tmux] as
a sidebar-style program.

[rainbowstream]: https://github.com/orakaro/rainbowstream
[tmux]: https://github.com/tmux/tmux
## Installation
Download a binary from the [releases][releases] page.
Or build it yourself (requires Go 1.19+):
```bash
make
```
Or run via Dockerfile:
```bash
docker build . -t gomphotherium:latest
docker run -it --rm -e gomphotherium:latest
```
[releases]: https://github.com/mrusme/gomphotherium/releases
## User Manual
### Authentication
To authenticate with your Mastodon instance, run the following command and
follow the instructions:
```sh
gomphotherium authenticate https://YOUR-MASTODON-SERVER-URL-HERE.com
```
### TUI
Launch the TUI with the following command:
```sh
gomphotherium tui
```
**Note:** If you haven't exported the required environment variables that were
shown to you during the [Authentication][#authentication], please do so first
or use the CLI flags (`gomphotherium -h`) instead.
#### Modes
The TUI can be operated in two modes: **Normal** and **Command**.
In **Normal** mode no interaction is possible apart from scrolling and
refreshing the timeline and quitting Gomphotherium. The shortcuts can be looked
up on the [cheatsheet](#cheatsheet)
In **Command** mode, the command input becomes available and scrolling the
timeline is not possible anymore. Commands can then be issued to interact with
the Mastodon instance.
#### Cheatsheet
##### Shortcuts
This is a list of supported keyboard shortcuts. The information in box brackets
tells to which mode the shortcut applies.
- `:` [normal] \
Enter **Command** mode
- `Esc` [command] \
Leave **Command** mode
- `ArrowUp` / `k`, `ArrowDn` / `j` [normal] \
Scroll timeline in either direction by one line
- `PgUp` / `b`, `PgDn` / `f` [normal] \
Scroll timeline in either direction by one page
- `u`, `d` [normal] \
Scroll timeline in either direction by half a page
- `g`, `G` [normal] \
Scroll timeline to the very top/bottom
- `Ctrl` + `R` [any] \
Refresh timeline
- `Ctrl` + `Q` [any] \
Quit Gomphotherium
##### Commands
`home` \
`local` \
`public` \
`notifications` \
`hashtag`*` tag [local]`* \
Switch between timelines
`whois`*` user`* \
Switch to user profile and timeline
`t`*` content ...`* \
`toot`*` content ...`* \
Publish a new public toot
`tp`*` content ...`* \
`tootprivate`*` content ...`* \
Publish a new private toot
`tu`*` content ...`* \
`tootunlisted`*` content ...`* \
Publish a new unlisted toot
`td`*` content ...`* \
`tootdirect`*` content ...`* \
Publish a new direct toot
`re`*` toot-id content ...`* \
`reply`*` toot-id content ...`* \
Reply to a toot publicly
`rep`*` toot-id content ...`* \
`replyprivate`*` toot-id content ...`* \
Reply to a toot privately
`reu`*` toot-id content ...`* \
`replyunlisted`*` toot-id content ...`* \
Reply to a toot unlisted
`red`*` toot-id content ...`* \
`replydirect`*` toot-id content ...`* \
Reply to a toot directly
`rt`*` toot-id`* \
`retoot`*` toot-id`* \
`boost`*` toot-id`* \
Boost a toot
`ut`*` toot-id`* \
`unretoot`*` toot-id`* \
`unboost`*` toot-id`* \
Undo boosting a toot
`fav`*` toot-id`* \
Fav a toot
`unfav`*` toot-id`* \
Undo fav-ing a toot
`open`*` toot-id`* \
Open toot in system browser
`share`*` toot-id`* \
Copy toot URL to the clipboard
`history` \
Show command history
`help` \
`?` \
Show help page
`quit` \
`exit` \
`bye` \
Quit Gomphotherium
**Info:** \
- `content ...` describes the text content of a toot, including
[inline shortcodes](#inline-shortcodes)
- `toot-id` describes the toot ID (number) visible on the right side of each
toot in the timeline
##### Inline Shortcodes
Inline shortcodes allow to add additional info to toots. They can be added
anywhere in the toot content as they get filtered from the toot before
publishing.
`~!!` \
Mark toot as sensitive; one-time shortcode
`~#[`*`text ...`*`]` \
Add content warning (spoiler) text to toot; one-time shortcode
`~:[`*`/path/to/file`*`]` \
Add media by file path to toot; can be specified multiple times
##### Usage Examples
`home` \
Switch to the home timeline
`hashtag theStudio local` \
Switch to the hashtag timeline and search for the hashtag *#theStudio* on only
the *local* instance
`hashtag lol` \
Switch to the hashtag timeline and search for the hashtag *#lol* globally
`whois user@server.com` \
Switch to the profile of *user@server.com* and list his toots
`t Hello World!` \
Publish a new public toot that says *Hello World!*
`tp Mondays are fine. It’s your life that sucks. ~#[Controversial joke]` \
Publish a new private toot that says *Mondays are fine. It’s your life that
sucks.* with a content warning that says *Controversial joke*
`tu Check out my mustache! ~:[/home/user/Photos/awesome_mustache.jpg] ~!!` \
Publish a new unlisted toot with a photo attached to it, that is flagged
sensitive
`re 11 I think so, @brain, but aren't we out of shaving cream?` \
Publicly reply to toot with ID *11* with *I think so, @brain, but aren't we out
of shaving cream?*
`rt 11` \
Retoot/boost toot with ID *11*
`help` \
Show this help
`bye` \
Goodbye!
### CLI
The CLI interface allows for exectuion of commands right from the terminal
prompt. Not all commands are supported.
#### Usage Examples
`gomphotherium cmd home` \
Render the home timeline
`gomphotherium cmd t Hello World!` \
Publish a new public toot that says *Hello World!*