matterhorn: Terminal client for the Mattermost chat system

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.


This is a terminal client for the Mattermost chat system. Please see the README for a list of features and information on getting started.

[Skip to ReadMe]


Versions30802.1.0, 31000.0.0, 40000.0.0, 40000.0.1, 40000.0.2, 40000.1.0, 40400.0.0, 40400.0.0, 40600.0.0, 40600.1.0, 40700.0.0, 40800.0.0, 40800.0.2, 40900.0.0, 40900.0.1, 40901.0.0, 50200.0.0, 50200.1.0, 50200.1.1, 50200.2.0
Dependenciesaspell-pipe (==0.3.*), base (>=4.8 && <5), base-compat (==0.9.*), brick (==0.29.*), bytestring (==0.10.*), cheapskate (==0.1.*), config-ini (>=0.1.2 && <0.2), connection (==0.2.*), containers (>=0.5.7 && <0.6), directory (==1.3.*), filepath (==1.4.*), gitrev (==1.3.*), hashable (==1.2.*), Hclip (==3.0.*), mattermost-api (==40400.0.0), microlens-platform (==0.3.*), mtl (==2.2.*), process (>=1.4 && <1.7), skylighting (>= && <0.4), stm (==2.4.*), stm-delay (==0.1.*), strict (==0.3.*), temporary (==1.2.*), text (==1.2.*), text-zipper (==0.10.*), time (>=1.6 && <1.9), transformers (>=0.4 && <0.6), unix (>= && <, unordered-containers (==0.2.*), utf8-string (==1.0.*), vector (<0.13), vty (==5.18.*), xdg-basedir (==0.2.*) [details]
Copyright©2016-2017 AUTHORS.txt
Source repositoryhead: git clone
UploadedThu Nov 30 01:41:05 UTC 2017 by gdritter


Maintainers' corner

For package maintainers and hackage trustees

Readme for matterhorn-40400.0.0

[back to package description]


Matterhorn is a terminal client for the Mattermost chat system.

Quick Start

We provide pre-built binary releases for some platforms. Please see the release list to download a binary release for your platform that matches your server version:

To fetch a release and run Matterhorn, run the following commands (where VERSION and PLATFORM match your setup):

tar xf matterhorn-<VERSION>-<PLATFORM>.tar.gz
cd matterhorn-<VERSION>-<PLATFORM>

When you run Matterhorn you'll be prompted for your server information and credentials. At present matterhorn supports only username/password authentication.

Note: Version ABBCC.X.Y matches Mattermost server version A.BB.CC. For example, if your Mattermost server version is 3.6.0 then you would download matterhorn version 30600.2.4. See Our Versioning Scheme for details.


For configuration options you have two choices:

The first option is useful when trying out the program because you can get up and running without worrying about making a configuration. Once you're ready to make your settings persistent, they can be added to a configuration file. An example configuration file can be found at sample-config.ini. Any settings omitted from the configuration will be obtained interactively at startup.

When looking for configuration files, matterhorn will prefer config.ini in the current working directory, but will look in the typical XDG configuration directories (you'll probably want to use $HOME/.config/matterhorn/config.ini) and as a last resort look for a globally-accessible /etc/matterhorn/config.ini.

Using the Client

The user interface has three main areas:

You can use built-in keybindings or /cmd-style commands to operate the client. To see available keybindings and commands, use the default binding of F1 or run the /help command. Keybindings may include modifiers such as Control (indicated with a C- prefix) or Meta (indicated with a M- prefix). If your keyboard has an Alt key, that will work as Meta. If it does not, you may be able to configure your terminal to provide Meta via other means (e.g. iTerm2 on OS X can be configured to make the left Option key work as Meta).

To join a channel, use the /join command to choose from a list of available channels. To create a channel, use /create-channel. To leave a channel, use /leave-channel.

To create a private group chat amongst yourself and other users, use the /group-msg command, e.g., /group-msg user1 user2.

To see the members in the current channel, use the /members command.

To send a message, type it into the editor and press Enter to send. To send a multi-line message, toggle multi-line mode with the default binding M-e. Markdown syntax is accepted.

To edit your current message in an external editor ($EDITOR), use the default binding of M-k.

To preview the message you're about to send (e.g. to check on how your Markdown syntax will be rendered), toggle preview mode with the default binding M-p.

To change channels, use /focus or one of the default bindings C-n (next channel), C-p (previous channel), C-g (fast channel switch).

To directly message another user, use /focus or C-g.

C-g channel switching mode does a substring match of the input text on the channel and usernames; metacharacters ^ and $ at the beginning or end of input, respectively, anchor the match in case of multiple matches. The cursor in this mode is usable with C-n and C-p.

To switch to the channel you were in prior to the current channel, use the default binding M-s (swap). The most recent channel is marked in the channel list with a "<" indicator.

To switch to the next channel with unread messages, use the default binding M-a.

To quickly show a list of URLs mentioned in the current channel and then open one in your local browser, use the default binding of C-o and configure the urlOpenCommand configuration setting.

To edit, delete, flag, or reply to a message, select a message with the default binding of C-s. Use the default binding of C-c to cancel these operations.

Messages that have been flagged can be viewed with either the /flags command or M-8. This view allows you to select and unflag particular messages, as well.

To enable spell-checking in the message editor, install Aspell and set enableAspell to True in your configuration. To override Aspell's choice of master dictionary, set the aspellDictionary option to the name of the dictionary you'd like to use.


Spell Checking Support

Matterhorn uses aspell to perform spell-checking of your message input. To use this feature:


matterhorn is built with the provided script, which requires git and an appropriate ghc/cabal installation. (Although the name suggests installtion, this will just do a build in dist-newstyle.) This script will pull the appropriate repos and build the application. This is required for building Matterhorn since clones of some of our other dependencies may need to be locally available in deps/ in case important changes to those dependencies have not yet been released.

Our Versioning Scheme

Matterhorn version strings will be of the form ABBCC.X.Y where ABBCC corresponds to the Mattermost server version supported by the release. For example, if a release supports Mattermost server version 1.2.3, the ABBCC portion of the matterhorn version will be 10203. The X.Y portion of the version corresponds to our own version namespace for the package. If the server version changes, X.Y SHOULD be 0.0. Otherwise the first component should increment if the package undergoes major code changes or functionality changes. The second component alone should change only if the package undergoes security fixes or other bug fixes.


If you decide to contribute, that's great! Here are some guidelines you should consider to make submitting patches easier for all concerned:

Frequently Asked Questions