An opinionated mastodon client

Omar Polo 5e404dfa18 handle run-external-program failure 2 years ago
doc 5a8f8edf87 - updating documentation (mentioning navigation keys). 3 years ago
etc ade9ed3473 - [gemini] reverted tour mode keys to old ones "t t" -> "t" 2 years ago
m4 c56a5b86ca - initial commit. 4 years ago
modules cd11e04658 - got rid of 'prepare-new-search' and 'cleanup-after-search'; 2 years ago
po e8f3dba9e9 - updated docs. 2 years ago
scripts 6c590dbf1a - fixed welcomebot and moved to a new directory "scripts"; 3 years ago
src 5e404dfa18 handle run-external-program failure 2 years ago
.gitignore c4b00021f9 - Added Makefile.in. 3 years ago
AUTHORS 31a6794ce2 - added AUTHORS file. 2 years ago
CONTRIBUTING.org c56a5b86ca - initial commit. 4 years ago
COPYING c56a5b86ca - initial commit. 4 years ago
ChangeLog e8f3dba9e9 - updated docs. 2 years ago
LICENSES.org a9ce526dce - added 'remove-corrupting-utf8-chars' to clean up rendered text from trouble characters. 3 years ago
Makefile.am f8352e5212 - updated autotools scripts. 2 years ago
Makefile.in f8352e5212 - updated autotools scripts. 2 years ago
NEWS.org e8f3dba9e9 - updated docs. 2 years ago
README.org 0f23ac98d8 - [gemini] changed gemini search site. 3 years ago
README.txt 0f23ac98d8 - [gemini] changed gemini search site. 3 years ago
aclocal.m4 0fc46fa1b5 - removed dependency from libidn2 3 years ago
compare_version.awk 0571c43c1c avoid strtonum (a GNU AWK extension) 3 years ago
compile c56a5b86ca - initial commit. 4 years ago
config.guess c56a5b86ca - initial commit. 4 years ago
config.rpath c56a5b86ca - initial commit. 4 years ago
config.sub c56a5b86ca - initial commit. 4 years ago
configure f8352e5212 - updated autotools scripts. 2 years ago
configure.ac f8352e5212 - updated autotools scripts. 2 years ago
install-sh c56a5b86ca - initial commit. 4 years ago
missing c56a5b86ca - initial commit. 4 years ago
quick_quicklisp.sh.in ee5eb80d07 - removed installation of 'quri'. 3 years ago
tinmop.asd c5e86a4380 - updated Changelog, NEWS.org and version number in the asdf file. 2 years ago

README.org

Introduction

Tinmop is an opinionated client for Pleroma (using the mastodon API) and gemini protocol. 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".

Peculiar Features

  • tree structure of messages;
  • subscriptions of hashtag;
  • programmable and extensible;
  • encrypted direct message (but see FAQ);
  • 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.

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.

Dependency

Programs

  • to build the package:
  • xgettext.
  • to install the package, including running the script to install
  • lisp libraries (~quick_quicklisp.sh~):
  • AWK;
  • BASH shell.
  • to run the program:
  • SBCL compiler;
  • xdg-open;
  • openssl;
  • your favourite editor (default: nano).

All the dependencies above should be available using the package manager of your distribution (apt, yum etc).

Lisp Libraries

  • alexandria;
  • cl-ppcre;
  • tooter;
  • croatoan;
  • osicat;
  • cl-spark;
  • access;
  • sqlite;
  • sxql;
  • sxql-composer;
  • marshal;
  • bordeaux-threads;
  • log4cl;
  • local-time;
  • cl-colors2;
  • cl-i18n;
  • clunit2;
  • esrap;
  • ieee-floats;
  • parse-number;
  • cl-html5-parser;
  • unix-opts;
  • crypto-shortcuts;
  • drakma.

All these libraries will be downloaded, compiled and installed by the script quick_quicklisp.sh, see below.

Foreign (C language) library

  • libssl (TLS socket)

The C library should be installed with their header (*.h) files. On Debian or derived system this means installing the library package with the -dev suffix as shown below:

#+BEGIN_SRC sh # apt-get install libssl-dev #+END_SRC

Install

Using guix

Using guix is the simpler way to install this software:

#+BEGIN_SRC sh $ guix install tinmop #+END_SRC

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

#+BEGIN_SRC sh $ apt-get install guix #+END_SRC

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

From source

  1. optional step needed only if you have not already the configure script,
  2. you will need ~autotools~ for that.

#+BEGIN_SRC sh $ autoreconf -fiv #+END_SRC

  1. run configure and resolve the missing dependencies (if any)

#+BEGIN_SRC sh $ ./configure #+END_SRC

  1. the script quick-quicklisp.sh will download and install the library manager and the
  2. library on your home dir.

#+BEGIN_SRC sh $ ./quick_quicklisp.sh #+END_SRC

This step is optional if you have already installed quicklisp, in this case just load the dependencies using the client installed on your computer.

  1. clone in $HOME/quicklisp/local-projects/ the latest version of
  2. croatoan, a library to wrap the ncurses TUI library.

This step is temporary as this version will get into quicklisp eventually. #+BEGIN_SRC sh $ cd $HOME/quicklisp/local-projects/ $ git clone https://github.com/McParen/croatoan.git #+END_SRC

  1. build the executable:

#+BEGIN_SRC sh $ make #+END_SRC

  1. install on your system:

#+BEGIN_SRC sh # make install #+END_SRC

  1. take a look the manpage:

#+BEGIN_SRC sh $ man tinmop #+END_SRC

  1. run the software!

#+BEGIN_SRC sh $ tinmop #+END_SRC

  1. An error will be printed about a missing file
  2. place a simple configuration file in one of the directory the software indicated. See [[FAQ][the FAQ below]].

Usage

See the command line options:

#+BEGIN_SRC sh $ tinmop -h #+END_SRC

To get instruction about configuration:

#+BEGIN_SRC sh $ man tinmop #+END_SRC

BUGS

Please file bug reports on the notabug repository.

Translations

Only Italian translation is regularly updated.

License

This program is released under GNU General Public license version 3 or later (see COPYING file).

The program use data and code from other sources, please see LICENSES.org for credits.

Although any efforts has been put to make the list of credits exhaustive, errors are always possible. Please send correction to cage-dev at twistfold dot it.

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 quick_quicklisp.sh will contact https://www.quicklisp.org/, check the quicklisp sources for details.

By default, pressing "!" will contact the remote service located at: "gemini://geminispace.info/search".

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 /CONTRIBUTING

FAQ

  • 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.

Example : #+BEGIN_SRC text # a line starting with a '#' is a comment

# a file can be included in another with this directive: # use "shared.conf"

# The server instance name server = server address

# your username username = username #+END_SRC

If this file does not exists or is invalid tinmop could be used just as a gemini client.

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

  • The quick_quicklisp.sh script failed and refuse to start again,
  • what can I do?

If tinmop is the first Common lisp program you have ever installed installed, try to rename the directory $/HOME/quicklisp and, then, restart the script.

If problem persists contact me.

  • 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.

  • 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:

https://notabug.org/tinmop/issues/

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.

NO WARRANTY

tinmop: an humble gemini and pleroma 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 http://www.gnu.org/licenses/.

Acknowledgment

My deep thanks to the folks that provided us with wonderful SBCL and Common lisp libraries.

In particular i want to thanks the authors of the libraries Croatoan and Tooter for their help when I started to develop this program.

There are more people i borrowed code and data from, they are mentioned in the file LINCENSES.org

This program is was born also with the help of CCCP: "Collettivo Computer Club Palermo".

Also thanks to "barbar" for testing of the installation scripts.