{"id":15058808,"url":"https://github.com/mrusme/gomphotherium","last_synced_at":"2025-04-10T05:11:44.338Z","repository":{"id":40990420,"uuid":"354461310","full_name":"mrusme/gomphotherium","owner":"mrusme","description":"Gomphotherium (/ˌɡɒmfəˈθɪəriəm/; \"welded beast\"), a command line Mastodon  client.","archived":false,"fork":false,"pushed_at":"2025-03-14T13:18:47.000Z","size":4120,"stargazers_count":90,"open_issues_count":1,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-10T05:11:35.859Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"https://マリウス.com/gomphotherium-a-command-line-mastodon-client/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrusme.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"custom":["https://github.com/mrusme#support"]}},"created_at":"2021-04-04T05:11:19.000Z","updated_at":"2025-03-14T13:18:50.000Z","dependencies_parsed_at":"2023-12-23T19:06:15.305Z","dependency_job_id":"2dde1cb5-d58d-4365-a142-b69963d6c5c3","html_url":"https://github.com/mrusme/gomphotherium","commit_stats":{"total_commits":87,"total_committers":3,"mean_commits":29.0,"dds":"0.16091954022988508","last_synced_commit":"12004e25c65f07a23d043f7fed459db2da1326ba"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrusme%2Fgomphotherium","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrusme%2Fgomphotherium/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrusme%2Fgomphotherium/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrusme%2Fgomphotherium/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrusme","download_url":"https://codeload.github.com/mrusme/gomphotherium/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248161276,"owners_count":21057555,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["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"],"created_at":"2024-09-24T22:30:52.481Z","updated_at":"2025-04-10T05:11:44.311Z","avatar_url":"https://github.com/mrusme.png","language":"Go","funding_links":["https://github.com/mrusme#support"],"categories":["Table of Contents","\u003ca name=\"chat\"\u003e\u003c/a\u003eChat and instant messaging"],"sub_categories":[],"readme":"Gomphotherium\n-------------\n\nGomphotherium (*/ˌɡɒmfəˈθɪəriəm/*; \"welded beast\"), a command line Mastodon \nclient.\n\n## Info\n\nAs [I have left](https://xn--gckvb8fzb.com/project-updates-q3-2021/#gomphotherium) \nthe Fediverse for now, I won't be iterating too much on this.  However, I'm \nhappy to accept PRs; If you're interested in actively contributing to \nGomphotherium or even support maintaining it, feel free to ping me!\n\n\n## Description\n\nGomphotherium is a Mastodon client for the command line, offering a CLI as well\nas a TUI with a usage similar to [rainbowstream](rainbowstream). It is intended\nto be used at 80 characters width maximum, but ideally inside [tmux][tmux] as\na sidebar-style program.\n\n![Gomphotherium](gomphotherium.jpg)\n\n[rainbowstream]: https://github.com/orakaro/rainbowstream\n[tmux]: https://github.com/tmux/tmux\n\n\n## Installation\n\nDownload a binary from the [releases][releases] page.\n\nOr build it yourself (requires Go 1.19+):\n\n```bash\nmake\n```\n\nOr run via Dockerfile:\n\n```bash\ndocker build . -t gomphotherium:latest\n\ndocker run -it --rm -e \u003cENVIRONMENT VARIABLES\u003e gomphotherium:latest\n```\n\n[releases]: https://github.com/mrusme/gomphotherium/releases\n## User Manual\n\n\n### Authentication\n\nTo authenticate with your Mastodon instance, run the following command and\nfollow the instructions:\n\n```sh\ngomphotherium authenticate https://YOUR-MASTODON-SERVER-URL-HERE.com\n```\n\n\n### TUI\n\nLaunch the TUI with the following command:\n\n```sh\ngomphotherium tui\n```\n\n**Note:** If you haven't exported the required environment variables that were\nshown to you during the [Authentication][#authentication], please do so first\nor use the CLI flags (`gomphotherium -h`) instead.\n\n\n#### Modes\n\nThe TUI can be operated in two modes: **Normal** and **Command**.\n\nIn **Normal** mode no interaction is possible apart from scrolling and \nrefreshing the timeline and quitting Gomphotherium. The shortcuts can be looked\nup on the [cheatsheet](#cheatsheet)\n\nIn **Command** mode, the command input becomes available and scrolling the\ntimeline is not possible anymore. Commands can then be issued to interact with\nthe Mastodon instance.\n\n\n#### Cheatsheet\n\n\n##### Shortcuts\n\nThis is a list of supported keyboard shortcuts. The information in box brackets\ntells to which mode the shortcut applies.\n\n- `:` [normal] \\\n  Enter **Command** mode\n\n- `Esc` [command] \\\n  Leave **Command** mode\n\n- `ArrowUp` / `k`, `ArrowDn` / `j` [normal] \\\n  Scroll timeline in either direction by one line\n\n- `PgUp` / `b`, `PgDn` / `f` [normal] \\\n  Scroll timeline in either direction by one page\n\n- `u`, `d` [normal] \\\n  Scroll timeline in either direction by half a page\n\n- `g`, `G` [normal] \\\n  Scroll timeline to the very top/bottom\n\n- `Ctrl` + `R` [any] \\\n  Refresh timeline\n\n- `Ctrl` + `Q` [any] \\\n  Quit Gomphotherium\n\n\n##### Commands\n\n`home` \\\n`local` \\\n`public` \\\n`notifications` \\\n`hashtag`*` tag [local]`* \\\nSwitch between timelines\n\n`whois`*` user`* \\\nSwitch to user profile and timeline\n\n`t`*` content ...`* \\\n`toot`*` content ...`* \\\nPublish a new public toot\n\n`tp`*` content ...`* \\\n`tootprivate`*` content ...`* \\\nPublish a new private toot\n\n`tu`*` content ...`* \\\n`tootunlisted`*` content ...`* \\\nPublish a new unlisted toot\n\n`td`*` content ...`* \\\n`tootdirect`*` content ...`* \\\nPublish a new direct toot\n\n`re`*` toot-id content ...`* \\\n`reply`*` toot-id content ...`* \\\nReply to a toot publicly\n\n`rep`*` toot-id content ...`* \\\n`replyprivate`*` toot-id content ...`* \\\nReply to a toot privately\n\n`reu`*` toot-id content ...`* \\\n`replyunlisted`*` toot-id content ...`* \\\nReply to a toot unlisted\n\n`red`*` toot-id content ...`* \\\n`replydirect`*` toot-id content ...`* \\\nReply to a toot directly\n\n`rt`*` toot-id`* \\\n`retoot`*` toot-id`* \\\n`boost`*` toot-id`* \\\nBoost a toot\n\n`ut`*` toot-id`* \\\n`unretoot`*` toot-id`* \\\n`unboost`*` toot-id`* \\\nUndo boosting a toot\n\n`fav`*` toot-id`* \\\nFav a toot\n\n`unfav`*` toot-id`* \\\nUndo fav-ing a toot\n\n`open`*` toot-id`* \\\nOpen toot in system browser\n\n`share`*` toot-id`* \\\nCopy toot URL to the clipboard\n\n`history` \\\nShow command history\n\n`help` \\\n`?` \\\nShow help page\n\n`quit` \\\n`exit` \\\n`bye` \\\nQuit Gomphotherium\n\n**Info:** \\\n- `content ...` describes the text content of a toot, including \n  [inline shortcodes](#inline-shortcodes)\n- `toot-id` describes the toot ID (number) visible on the right side of each \n  toot in the timeline\n\n##### Inline Shortcodes\n\nInline shortcodes allow to add additional info to toots. They can be added\nanywhere in the toot content as they get filtered from the toot before\npublishing.\n\n`~!!` \\\nMark toot as sensitive; one-time shortcode\n\n`~#[`*`text ...`*`]` \\\nAdd content warning (spoiler) text to toot; one-time shortcode\n\n`~:[`*`/path/to/file`*`]` \\\nAdd media by file path to toot; can be specified multiple times\n\n\n##### Usage Examples\n\n`home` \\\nSwitch to the home timeline\n\n`hashtag theStudio local` \\\nSwitch to the hashtag timeline and search for the hashtag *#theStudio* on only\nthe *local* instance\n\n`hashtag lol` \\\nSwitch to the hashtag timeline and search for the hashtag *#lol* globally\n\n`whois user@server.com` \\\nSwitch to the profile of *user@server.com* and list his toots\n\n`t Hello World!` \\\nPublish a new public toot that says *Hello World!*\n\n`tp Mondays are fine. It’s your life that sucks. ~#[Controversial joke]` \\\nPublish a new private toot that says *Mondays are fine. It’s your life that \nsucks.* with a content warning that says *Controversial joke*\n\n`tu Check out my mustache! ~:[/home/user/Photos/awesome_mustache.jpg] ~!!` \\\nPublish a new unlisted toot with a photo attached to it, that is flagged\nsensitive\n\n`re 11 I think so, @brain, but aren't we out of shaving cream?` \\\nPublicly reply to toot with ID *11* with *I think so, @brain, but aren't we out \nof shaving cream?*\n\n`rt 11` \\\nRetoot/boost toot with ID *11*\n\n`help` \\\nShow this help\n\n`bye` \\\nGoodbye!\n\n\n### CLI\n\nThe CLI interface allows for exectuion of commands right from the terminal\nprompt. Not all commands are supported.\n\n\n#### Usage Examples\n\n`gomphotherium cmd home` \\\nRender the home timeline\n\n`gomphotherium cmd t Hello World!` \\\nPublish a new public toot that says *Hello World!*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrusme%2Fgomphotherium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrusme%2Fgomphotherium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrusme%2Fgomphotherium/lists"}