2020-05-08 15:45:43 +02:00
|
|
|
#+OPTIONS: html-postamble:nil html-preamble:nil
|
|
|
|
#+AUTHOR:
|
|
|
|
#+TITLE: tinmop
|
|
|
|
|
|
|
|
* Introduction
|
|
|
|
|
2020-08-28 18:12:37 +02:00
|
|
|
Tinmop is an opinionated client for
|
2022-12-26 14:33:06 +01:00
|
|
|
[[https://gemini.circumlunar.space/][gemini protocol]], Gopher,
|
2020-08-28 18:12:37 +02:00
|
|
|
[[https://pleroma.social/][Pleroma]] (using the mastodon API) and
|
2022-12-26 14:33:06 +01:00
|
|
|
[[https://kamid.omarpolo.com/][kamid]] protocols. It offer a
|
2020-08-28 18:12:37 +02:00
|
|
|
distraction free terminal interface.
|
2020-05-08 15:45:43 +02:00
|
|
|
|
|
|
|
The name is a recursive acronym: "Tinmop Is Not Mutt or Pine". The
|
2020-05-17 22:28:50 +02:00
|
|
|
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".
|
2020-05-08 15:45:43 +02:00
|
|
|
|
|
|
|
* Peculiar Features
|
|
|
|
|
|
|
|
- tree structure of messages;
|
|
|
|
- subscriptions of hashtag;
|
2020-05-16 19:13:33 +02:00
|
|
|
- programmable and extensible;
|
2020-05-08 15:45:43 +02:00
|
|
|
- encrypted direct message (but see [[FAQ]]);
|
2020-05-16 11:24:11 +02:00
|
|
|
- no mentions notification, no knowledge of when or who favourited
|
2020-05-08 15:45:43 +02:00
|
|
|
your status;
|
|
|
|
- No blocking or muting, the client can be configured to ignore
|
|
|
|
a list of accounts.
|
|
|
|
|
2020-05-16 15:24:29 +02:00
|
|
|
** 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
|
2020-05-16 15:26:23 +02:00
|
|
|
is [[NO WARRANTY][NO WARRANTY]].
|
2020-05-16 15:24:29 +02:00
|
|
|
|
2020-05-08 15:45:43 +02:00
|
|
|
* Dependency
|
|
|
|
|
|
|
|
** Programs
|
|
|
|
|
2020-12-13 16:30:26 +01:00
|
|
|
+ to build the package:
|
2021-01-31 13:08:34 +01:00
|
|
|
xgettext.
|
2020-05-08 15:45:43 +02:00
|
|
|
|
|
|
|
+ to install the package, including running the script to install
|
|
|
|
lisp libraries (~quick_quicklisp.sh~):
|
2021-02-26 20:41:05 +01:00
|
|
|
- AWK;
|
2021-07-05 18:12:45 +02:00
|
|
|
- git.
|
2020-05-08 15:45:43 +02:00
|
|
|
|
2020-12-13 16:30:26 +01:00
|
|
|
+ to run the program:
|
|
|
|
- SBCL compiler;
|
|
|
|
- xdg-open;
|
2021-03-09 09:32:09 +01:00
|
|
|
- openssl;
|
2021-12-01 11:54:20 +01:00
|
|
|
- unzip (command line utitlity to decompress zip file);
|
2020-12-13 16:30:26 +01:00
|
|
|
- your favourite editor (default: nano).
|
|
|
|
|
2022-12-10 14:49:53 +01:00
|
|
|
+ optional recommended programs:
|
|
|
|
- man
|
|
|
|
- imagemagick
|
|
|
|
|
|
|
|
All the dependencies above should be available using the package
|
|
|
|
manager of your distribution (~apt~, ~yum~ etc).
|
2021-01-03 17:55:02 +01:00
|
|
|
|
2020-05-08 15:45:43 +02:00
|
|
|
** Lisp Libraries
|
|
|
|
- alexandria;
|
2022-03-04 14:33:55 +01:00
|
|
|
- cl-ppcre-unicode;
|
2020-05-08 15:45:43 +02:00
|
|
|
- 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;
|
2022-03-04 14:33:55 +01:00
|
|
|
- drakma;
|
|
|
|
- usocket;
|
|
|
|
- cffi;
|
|
|
|
- babel;
|
|
|
|
- percent-encoding;
|
|
|
|
- trivial-clipboard.
|
2020-05-08 15:45:43 +02:00
|
|
|
|
2021-01-03 17:55:02 +01:00
|
|
|
All these libraries will be downloaded, compiled and installed by
|
|
|
|
the script ~quick_quicklisp.sh~, see below.
|
|
|
|
|
2020-05-08 15:45:43 +02:00
|
|
|
** Foreign (C language) library
|
|
|
|
|
2020-12-12 14:47:22 +01:00
|
|
|
- libssl (TLS socket)
|
2020-05-08 15:45:43 +02:00
|
|
|
|
2021-01-10 20:48:39 +01:00
|
|
|
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
|
2021-01-31 13:08:34 +01:00
|
|
|
# apt-get install libssl-dev
|
2021-01-10 20:48:39 +01:00
|
|
|
#+END_SRC
|
|
|
|
|
2020-05-08 15:45:43 +02:00
|
|
|
* Install
|
|
|
|
|
2021-03-09 09:32:09 +01:00
|
|
|
** Using guix
|
|
|
|
|
|
|
|
Using [[https://guix.gnu.org/][guix]] is the simpler way to install this software:
|
|
|
|
|
|
|
|
#+BEGIN_SRC sh
|
2021-12-03 16:22:53 +01:00
|
|
|
$ guix pull && guix package -u && guix install tinmop
|
2021-03-09 09:32:09 +01:00
|
|
|
#+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 [[https://guix.gnu.org/manual/en/guix.html#Binary-Installation][as explained in the guix manual]].
|
|
|
|
|
|
|
|
** From source
|
2020-05-08 15:45:43 +02:00
|
|
|
1. optional step needed only if you have not already the configure script,
|
|
|
|
you will need ~autotools~ for that.
|
|
|
|
|
|
|
|
#+BEGIN_SRC sh
|
|
|
|
$ autoreconf -fiv
|
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
2. run ~configure~ and resolve the missing dependencies (if any)
|
|
|
|
|
|
|
|
#+BEGIN_SRC sh
|
|
|
|
$ ./configure
|
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
3. the script ~quick-quicklisp.sh~ will download and install the library manager and the
|
2021-07-05 18:17:21 +02:00
|
|
|
libraries on your home dir.
|
2020-05-08 15:45:43 +02:00
|
|
|
|
|
|
|
#+BEGIN_SRC sh
|
|
|
|
$ ./quick_quicklisp.sh
|
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
This step is optional if you have already installed quicklisp, in
|
|
|
|
this case just load the [[Dependency][dependencies]]
|
|
|
|
using the client installed on your computer.
|
|
|
|
|
2021-07-05 18:17:21 +02:00
|
|
|
4. optional step if you did not ran ~quick-quicklisp.sh~.
|
|
|
|
|
|
|
|
Clone in ~$HOME/quicklisp/local-projects/~ the latest version of
|
2020-05-11 20:43:13 +02:00
|
|
|
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
|
|
|
|
|
2020-12-20 13:56:24 +01:00
|
|
|
5. build the executable:
|
2020-05-08 15:45:43 +02:00
|
|
|
|
|
|
|
#+BEGIN_SRC sh
|
|
|
|
$ make
|
|
|
|
#+END_SRC
|
|
|
|
|
2020-12-20 13:56:24 +01:00
|
|
|
6. install on your system:
|
2020-05-08 15:45:43 +02:00
|
|
|
|
|
|
|
#+BEGIN_SRC sh
|
2021-01-10 20:48:39 +01:00
|
|
|
# make install
|
2020-05-08 15:45:43 +02:00
|
|
|
#+END_SRC
|
|
|
|
|
2021-01-03 17:55:02 +01:00
|
|
|
7. take a look the manpage:
|
|
|
|
|
|
|
|
#+BEGIN_SRC sh
|
|
|
|
$ man tinmop
|
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
8. run the software!
|
2020-05-08 15:45:43 +02:00
|
|
|
|
|
|
|
#+BEGIN_SRC sh
|
|
|
|
$ tinmop
|
|
|
|
#+END_SRC
|
|
|
|
|
2021-01-04 21:41:49 +01:00
|
|
|
9. An error will be printed about a missing file
|
|
|
|
place a simple configuration file in one of the directory the software indicated.
|
|
|
|
See [[FAQ][the FAQ below]].
|
|
|
|
|
2020-05-08 15:45:43 +02:00
|
|
|
* 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
|
|
|
|
[[https://notabug.org/cage/tinmop/][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
|
|
|
|
|
2020-05-16 19:13:33 +02:00
|
|
|
The author of this software collects no user data information with
|
|
|
|
this software.
|
2020-05-08 15:45:43 +02:00
|
|
|
|
2020-05-16 11:24:11 +02:00
|
|
|
But this software is a client to connect and interact to one or more
|
2020-05-16 19:13:33 +02:00
|
|
|
remote computer. So potentially it could share a lot of information
|
|
|
|
with other actors but just after the user allowed it to do so.
|
2020-05-16 11:24:11 +02:00
|
|
|
|
2020-05-16 19:13:33 +02:00
|
|
|
It is the user responsibility to checks the privacy conditions of the
|
2020-05-16 11:24:11 +02:00
|
|
|
instance this software connect to.
|
|
|
|
|
|
|
|
Moreover launching ~quick_quicklisp.sh~ will contact
|
2020-05-08 15:45:43 +02:00
|
|
|
[[https://www.quicklisp.org/]], check the
|
|
|
|
[[https://beta.quicklisp.org/quicklisp.lisp][quicklisp sources]] for
|
|
|
|
details.
|
|
|
|
|
2020-06-22 13:58:04 +02:00
|
|
|
By default, pressing "!" will contact the remote service located at:
|
2021-05-02 14:03:49 +02:00
|
|
|
"gemini://geminispace.info/search".
|
2020-06-22 13:58:04 +02:00
|
|
|
|
2020-05-08 15:45:43 +02:00
|
|
|
* Contributing
|
|
|
|
|
|
|
|
Any help is appreciated. If you intend to contribute please point
|
|
|
|
your browser to the
|
|
|
|
[[https://notabug.org/cage/tinmop/issues][issue tracker]] or file a
|
|
|
|
[[https://notabug.org/cage/tinmop/pulls][pull request]].
|
|
|
|
|
|
|
|
But, please take a minute to read the file [[./CONTRIBUTING.org]]
|
|
|
|
|
2020-05-16 11:24:11 +02:00
|
|
|
* FAQ
|
|
|
|
|
2021-01-04 21:41:49 +01:00
|
|
|
- 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
|
|
|
|
|
2021-02-10 14:59:53 +01:00
|
|
|
If this file does not exists or is invalid tinmop could be used
|
|
|
|
just as a gemini client.
|
2021-01-04 21:41:49 +01:00
|
|
|
|
|
|
|
Please check the man page (tinmop(1)) for more information.
|
|
|
|
|
2021-01-03 17:55:02 +01:00
|
|
|
- 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 [[BUGS][contact me]].
|
|
|
|
|
2020-05-24 19:15:14 +02:00
|
|
|
- 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
|
|
|
|
[[https://github.com/tootsuite/mastodon/issues/13817][here]].
|
|
|
|
|
|
|
|
I hope this will change in the future but this depends entirely
|
|
|
|
from the people are developing the server.
|
|
|
|
|
2020-05-16 11:24:11 +02:00
|
|
|
- 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
|
2020-05-08 15:45:43 +02:00
|
|
|
there is a problem of secure key exchanging). Moreover i am not a
|
2020-05-16 11:24:11 +02:00
|
|
|
crypto expert and probably i made something wrong. Note that i am
|
2020-05-08 15:45:43 +02:00
|
|
|
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
|
|
|
|
|
2021-04-17 12:14:53 +02:00
|
|
|
tinmop: an humble gemini and pleroma client
|
2020-05-08 15:45:43 +02:00
|
|
|
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/][http://www.gnu.org/licenses/]].
|
2020-05-10 19:29:59 +02:00
|
|
|
|
|
|
|
* 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".
|
2020-05-16 14:57:48 +02:00
|
|
|
|
|
|
|
Also thanks to "barbar" for testing of the installation scripts.
|