Table of Contents


Figure 1: A tin soldier with a mop

1 Latest News

1.1 2021-05-23 version 0.8.0

  • New features
    • [gemini]
      • Added a table of contents (TOC) window when a gemini stream is completed. The TOC is auto-generated from header lines contained in the gemini text;
    • the position and width of the notification window is now customizable by users using configuration files.
    • Bugfix
      • [gemini]
        • prevented rendering gemini files in the message window when a toot is shown.
        • fixed parsing of quoted lines, an empty line can be a valid quote.
        • recognized gemlog's subtitle (if presents);
        • if VISUAL or EDITOR contains invalid editor's path and no editor is specified in the configuration file print an error instead of jump to the debugger.
    • Improvements
      • When the user try to authenticate the program on a server a success message is returned on the browser (thanks op!).
      • do not load configuration files if command line options -h or -v are used;
      • if no editor is specified in the config file the program look for values of environment variables EDITOR or VISUAL and fallback to ed if the variables are not setted or have empty value;
      • improved appearance of the tree of available keybindings.

For more information please read the NEWS file.

2 Important note

This is alpha quality software, many things are broken, some feature are missing some works with unintended/unexpected side effects; this software is for testing only and remember that there is NO WARRANTY.

3 Introduction

Tinmop is an opinionated client for Pleroma (using the mastodon API) and gemini.


It offer a distraction free terminal interface.

The name is a recursive acronym: "Tinmop Is Not Mutt or Pine". The older of us can remember that, in turn, Pine is sometimes considered an acronym as well: "Pine Is Not Elm" and, finally, Elm means (according to Wikipedia): "Electronic Mail".

4 Source

The source is kindly hosted on NotaBug.

5 Peculiar Features

  • tree structure of messages;
  • subscriptions of hashtag;
  • encrypted direct message (but see 8);
  • extensible and programmable;
  • no mentions notification, no knowledge of when or who favourited your status;
  • No blocking or muting, the client can be configured to ignore a list of accounts.

5.1 Screenshots


Figure 2: A screenshot of the terminal running tinmop. From top left and clockwise: tags window, thread window, message window and chat window


Figure 3: A screenshot of a toot with a poll attached


Figure 4: A screenshot of tinmop rendering gemini:// © Jason McBrayer, 2021 licensed under a Creative Commons Attribution NonCommercial ShareAlike 4.0 License

6 Installing

6.1 Using guix

Using guix is the simpler way to install this software:

$ guix install tinmop

Guix can be installed on debian (testing or sid):

$ apt-get install guix

or using a shell script as explained in the guix manual.

6.2 From sources

Clone the repository:

$ git clone

In the file README.txt you will find the instructions to compile and install the software.

7 Contributing

Any help is appreciated. If you intend to contribute please point your browser to the issue tracker or file a pull request.

But, please take a minute to read the file


  • Is tinmop compatible with mastodon servers?

    Unfortunately no, the way some API endpoint provide the toots is not suitable for this client, for more information please go here.

    I hope this will change in the future but this depends entirely from the people are developing the server.

    Moreover with mastodon user will lose some pleroma only features, like chats.

  • I just tried to start the program for the first time but it give me a weird error, what's wrong?

    Did you wrote a configuration file before starting?

    Tinmop expects a configuration file in your config directory (usually $HOME/.config/tinmop/). This file must contains at least the username and the name of the instance you want to connect. If this file does not exists or is invalid tinmop will refuse to start.

    Please check the man page (tinmop(1)) for more information.

  • OK the program is running but how can i use it?

    Press the key ? to get a list of the available keys available.

  • Tinmop crashed! Where can i report that?

    The issue tracker is here:

    Please also, if possible, send the backtrace of the process. To print a backtrace just write backtrace when the debugger has been invoked.

    Important note

    The backtrace can contains sensitive and personal information, please always carefully checks the backtrace contents before making this information public!

  • Are the encrypted messages secure?

    No. First only a symmetric encryption scheme is implemented (so there is a problem of secure key exchanging). Moreover i am not a crypto expert and probably i made something wrong. Note that i am not claiming that the algorithm (AES256) or the implementation of such encrypting algorithm is flawed but that, likely, is flawed the code i wrote to use the crypto library in this software.

    So, please do not consider the encrypted message secure at all.

9 Privacy

The author of this software collects no user data information with this software.

But this software is a client to connect and interact to one or more remote computer. So potentially it could share a lot of information with other actors but just after the user allowed it to do so.

It is the user responsibility to checks the privacy conditions of the instance this software connect to.

Moreover launching will contact, check the quicklisp sources for details.


tinmop: an humble mastodon client Copyright (C) 2020 cage

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Italy License.

Distribuited software and source code published are licensed under the GNU General Public License version 3.0 or later if not specified otherwise.