{"id":13608105,"url":"https://github.com/matterhorn-chat/matterhorn","last_synced_at":"2025-05-14T18:07:04.269Z","repository":{"id":39633428,"uuid":"66096261","full_name":"matterhorn-chat/matterhorn","owner":"matterhorn-chat","description":"A feature-rich Unix terminal client for the Mattermost chat system","archived":false,"fork":false,"pushed_at":"2025-05-02T15:07:39.000Z","size":8255,"stargazers_count":1068,"open_issues_count":23,"forks_count":78,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-05-02T15:27:41.701Z","etag":null,"topics":["brick","client","haskell","mattermost","mattermost-chat","tui"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matterhorn-chat.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"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,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-08-19T16:25:54.000Z","updated_at":"2025-04-28T04:31:11.000Z","dependencies_parsed_at":"2023-01-31T09:46:22.894Z","dependency_job_id":"fa47cdca-db4a-4d5c-a654-1b54c49ea061","html_url":"https://github.com/matterhorn-chat/matterhorn","commit_stats":{"total_commits":3991,"total_committers":35,"mean_commits":"114.02857142857142","dds":0.2052117263843648,"last_synced_commit":"2eede8b21c37573459ef28a980afc363724cc792"},"previous_names":[],"tags_count":56,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matterhorn-chat%2Fmatterhorn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matterhorn-chat%2Fmatterhorn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matterhorn-chat%2Fmatterhorn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matterhorn-chat%2Fmatterhorn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matterhorn-chat","download_url":"https://codeload.github.com/matterhorn-chat/matterhorn/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254198515,"owners_count":22030966,"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":["brick","client","haskell","mattermost","mattermost-chat","tui"],"created_at":"2024-08-01T19:01:24.297Z","updated_at":"2025-05-14T18:06:59.254Z","avatar_url":"https://github.com/matterhorn-chat.png","language":"Haskell","funding_links":[],"categories":["Haskell","\u003ca name=\"chat\"\u003e\u003c/a\u003eChat and instant messaging","Table of Contents"],"sub_categories":[],"readme":"[![Hackage](https://img.shields.io/hackage/v/matterhorn.svg)](https://hackage.haskell.org/package/matterhorn)\n\n![](logo.png)\n\nMatterhorn is a terminal client for the Mattermost chat system.\n\n![](screenshots/screenshot-00.png)\n\n# Quick Start\n\nWe provide pre-built binary releases for some platforms. Please see the\nrelease list to download a binary release for your platform that matches\nyour server version:\n\nhttps://github.com/matterhorn-chat/matterhorn/releases\n\nTo run Matterhorn, unpack the binary release archive and run the\n`matterhorn` binary within.  Help is available via the `--help` or\n`-h` flag.\n\n    $ matterhorn --help\n    $ matterhorn\n\nWhen you run Matterhorn you'll be prompted for your server URL and\ncredentials. To connect, just paste your web client's Mattermost URL\ninto the Server URL box and enter your credentials. See the [Matterhorn\nUser Guide](docs/UserGuide.md) on the details for providing each kind of\nsupported credentials.\n\nNote: Version `ABBCC.X.Y` matches Mattermost server version `A.BB.CC`.\nFor example, if your Mattermost server version is `3.6.0` then you\nwould download matterhorn version `30600.2.4`. See [Our Versioning\nScheme](#our-versioning-scheme) for details.\n\n## Installation Requirements\n\nFor most of our binary releases, no additional packages need to be\ninstalled; they should just work out of the box. But here are some\nadditional requirements that may apply for your platform:\n\n* CentOS Steam 8\n  * The `ncurses-compat-libs` package must be installed.\n\n## Other Ways to Install: Third-Party Snap Package\n\n@3v1n0 maintains a Snap package here:\n\nhttps://github.com/3v1n0/matterhorn-snap/ ([Snapcraft page](https://snapcraft.io/matterhorn/))\n\n# Get Help!\n\nWe provide a number of avenues for getting support:\n\n* [Frequently asked questions](docs/FAQ.md)\n* [Matterhorn User Guide](docs/UserGuide.md)\n* Built-in help (`/help`)\n* [Command list](docs/commands.md)\n* [Keybinding list](docs/keybindings.md)\n* Chat with the developers on [the Mattermost Community server](https://community.mattermost.com/core/channels/matterhorn)\n* File tickets on this repository\n\n# Features\n\n* Channel creation, deletion, and membership management commands\n* Support for multiple teams\n* Optimized channel-switching modes: `M-a`, `M-s`, and `C-g`\n* Message posting, editing, replying, and deletion\n* Markdown rendering\n* Support for participating in threads via the thread window\n* Convenient URL-opening with local browser\n* Secure password entry via external command (e.g. OSX keychain)\n* Secure authentication token entry via external command (e.g. OSX\n  keychain)\n* Yank verbatim content from messages into the system clipboard\n* Optional live preview during message editing\n* Optional smart quoting for efficient Markdown entry\n* Edit messages with `$EDITOR`\n* Rebindable keys (see `/help keybindings`)\n* Message editor with kill/yank buffer and readline-style keybindings\n* Support for adding and removing emoji post reactions\n* Support for channel muting\n* Tab-completion of:\n  * Usernames: type `@`, then `Tab` to cycle through matches\n  * Channel names: type `~`, then `Tab` to cycle through matches\n  * Commands: type `/`, then `Tab` to cycle through matches\n  * Emoji: type `:` and then some text, then `Tab` to display and cycle\n    through matches\n  * Fenced code block languages: type three backticks to begin typing a\n    code block, then `Tab` to cycle through available languages\n* Support for attachment upload and download\n* Spell-checking via Aspell\n* Syntax highlighting of fenced code blocks in messages (works best in\n  256-color terminals)\n* Flagging and unflagging of posts, which are then viewable with `M-8`\n  or `/flags`\n* Support for SOCKS 4 and 5 proxies via the `ALL_PROXY` and\n  `HTTPS_PROXY` environment variables. (Plain HTTP proxies are not yet\n  supported.) Also supports `NO_PROXY`.\n* Multiple color themes with color theme customization support\n* Custom notifications via notification scripts (see the\n  `activityNotifyCommand` configuration setting and\n  `docs/notification-scripts.md` for details).\n* Optional mouse support\n\n# Our Versioning Scheme\n\nMatterhorn version strings will be of the form `ABBCC.X.Y` where ABBCC\ncorresponds to the lowest Mattermost server version expected to be\nsupported by the release.  For example, if a release supports\nMattermost server version 1.2.3, the ABBCC portion of the `matterhorn`\nversion will be `10203`.  There may be later versions of the\nMattermost server that are supported (e.g. Matterhorn 50200.X.Y\nsupports Mattermost server versions 5.2 through at least 5.8).\n\nThe `X.Y` portion of the version corresponds to our own version\nnamespace for the package. If the server version changes, `X.Y` SHOULD\nbe `0.0`. Otherwise the first component should increment if the\npackage undergoes major code changes or functionality changes. The\nsecond component alone should change only if the package undergoes\nsecurity fixes or other bug fixes.\n\n# Our Design Philosophy\n\nOverall, we strive to build a terminal client that provides the same\nbasic feature set as the web client. This is reflected in the state\nof the client, our issue backlog, and the content of our wiki feature\ndesign discussions.\n\nWe intend to add web client features to Matterhorn to the extent that\nthey can be added sensibly in a terminal setting. Our goal is to do\nso in a way that minimizes surprise to web client users migrating to\nMatterhorn while also providing the best terminal user experience that\nwe can think of. That might entail adding the web client features but\nchanging their designs to ones better suited for terminal use or it\nmight mean omitting aspects of web client features that rely heavily on\nmouse- or DOM-related UI idioms. It might also entail adding web client\nfeatures but deviating slightly on specific behaviors.\n\nIf you are used to a web client feature and don't see it in Matterhorn,\nthat's probably because we just haven't gotten to it yet. We would\nbe happy to hear from people wanting to contribute! If you can't\ncontribute, search existing issues to see if we already have an issue\nfor it, or create a new issue and let us know!\n\n# Contributing\n\nIf you decide to contribute, that's great! Here are some guidelines you\nshould consider to make submitting patches easier for all concerned:\n\n - If you are new to Haskell and are unsure how much Haskell you need\n   to know in order to contribute, please see [our list of Haskell\n   skills needed](docs/HASKELL.md).\n - Please base all patches against the `develop` branch unless you are\n   specifically fixing a bug in a released version, in which case\n   `master` is a fine place to start. Please also do this for submodules\n   that have a `develop` branch if you need to contribute changes to\n   submodules.\n - If you want to take on big things, let's have a design/vision\n   discussion before you start coding. Create a GitHub issue and we can\n   use that as the place to hash things out. We'll be interested to\n   discuss any usability / UI, performance, or compatibility issues.\n - Please make changes consistent with the conventions already used in\n   the codebase.\n - We follow a few development practices to support our project and it\n   helps when contributors are aware of these. Please see\n   [our practices document](docs/PRACTICES.md) for more information.\n\n# Building\n\nIf you just want to run Matterhorn, we strongly suggest running a binary\nrelease (see above). *Building from source is only recommended if you\nintend to contribute.*\n\nIf you want to contribute changes to Matterhorn, you'll need to build\nit from source. See [our building instructions](docs/BUILDING.md) for\ndetails.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatterhorn-chat%2Fmatterhorn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatterhorn-chat%2Fmatterhorn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatterhorn-chat%2Fmatterhorn/lists"}