tinmop.man 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. .TH "tinmop" "1"
  2. .SH "Name"
  3. .PP
  4. tinmop - a client for gemini or pleroma social network
  5. .SH "Synopsis"
  6. .PP
  7. tinmop [OPTION]...
  8. .SH "Description"
  9. .PP
  10. This document assumes basic knowledge of how fediverse works. More
  11. information about this topic can be found on the
  12. official website (\fIhttps://docs.joinmastodon.org/\fP).
  13. .PP
  14. Tinmop proposes a terminal interface to connect with Pleroma
  15. social network and as client for the gemini protocol
  16. .PP
  17. gemini://gemini.circumlunar.space/
  18. .SH "Options"
  19. .PP
  20. Without options the program will start a terminal interface and will
  21. try to connect to your instance (see \fIConfiguration\fP)
  22. .TP
  23. \fB-o, --open-gemini-url ARG \fP
  24. Open gemini url
  25. .TP
  26. \fB-m, --notify-mentions ARG \fP
  27. Notify messages that mentions the user
  28. .TP
  29. \fB-R, --reset-timeline-pagination \fP
  30. Reset the timeline pagination. By default the new toots are fetched
  31. starting from the last one downloaded from the instance, this switch
  32. will force the program to fetch the last message posted by users
  33. .TP
  34. \fB-c, --check-follows-requests \fP
  35. Checks for follow request at start
  36. .TP
  37. \fB-e, --execute-script SCRIPT-FILE\fP
  38. Execute a script file
  39. .TP
  40. \fB-f, --folder FOLDER-NAME \fP
  41. Start on that folder
  42. .TP
  43. \fB-h, --help \fP
  44. print program help and exit
  45. .TP
  46. \fB-t, --timeline TIMELINE-NAME \fP
  47. Start using this timeline
  48. .TP
  49. \fB-u, --update-timeline \fP
  50. Update the selected timeline
  51. .TP
  52. \fB-v, --version \fP
  53. Print program version and exit
  54. .SH "Usage"
  55. .PP
  56. Users of Tinmop supposed to interact with the social network
  57. using a terminal interface (TUI), The terminal screen layout is
  58. sketched below:
  59. .RS
  60. .nf
  61. \fC+---------------+---------------------------+
  62. | | |
  63. | tags window | thread windows |
  64. | | |
  65. | | modeline |
  66. +---------------+---------------------------+
  67. | | |
  68. | conversations | main window |
  69. | window | |
  70. | | |
  71. | | |
  72. +---------------+---------------------------+
  73. | command window |
  74. +-------------------------------------------+
  75. \fP
  76. .fi
  77. .RE
  78. .PP
  79. The screen is subdivided in five window:
  80. .TP
  81. \fBtag window\fP
  82. shows the tag users subscribed for and available messages for each tag;
  83. .TP
  84. \fBthreads window\fP
  85. for a given timeline and folder (see \fIFolders\fP) show the discussions saved in user's local database;
  86. .TP
  87. \fBconversations window\fP
  88. show the \fIprivate\fP conversations the user is having with others;
  89. .TP
  90. \fBmain window\fP
  91. show the body of the message selected in the tag window or gemini page
  92. .TP
  93. \fBcommand window\fP
  94. the window where the user instruct the software to perform commands
  95. .PP
  96. The main way to interact with the program is using the keyboard. By
  97. default you can move focus to each window (except command window
  98. that can not get focus explicitly) using \fB'M-arrow key'\fP (meta is
  99. \fBALT\fP on many keyboards). There is a contextual help that appears
  100. when the user input data that provide hints about commands and a
  101. quick help window that can be shown by hitting \fC?\fP (if this
  102. keybinding has not been customized).
  103. .SS "Folders"
  104. .PP
  105. A folder is an object to groups messages for each timeline an
  106. arbitrary number of folders can be created, when the last message of
  107. a folder is deleted the folder is deleted as well.
  108. .SH "Configuration"
  109. .PP
  110. The configuration of tinmop is based on text files but there are
  111. available two different kind with different syntax and scope.
  112. .IP \(em 4
  113. a key-value text files used to configure the access credential to
  114. .PP
  115. server and visual theme of the program (simple configuration);
  116. .IP \(em 4
  117. common lisp source code. Used to write module (AKA plugin) and to
  118. .PP
  119. configure keybindings to interact with the software.
  120. .PP
  121. The distribution of this software comes with a bunch of pre-backed
  122. configuration files but user is expected to write a simple file with
  123. their credential to log into the server.
  124. .SS "Simple configuration"
  125. .PP
  126. This is a simple file with each entry in a single line that look like this:
  127. .RS
  128. .nf
  129. \fC
  130. # a line starting with a '#' is a comment
  131. # a file can be included in another with this directive:
  132. # use "shared.conf"
  133. # The server instance name
  134. server = server address
  135. # your username
  136. username = username
  137. \fP
  138. .fi
  139. .RE
  140. .PP
  141. Not incidentally the information in the example above are the
  142. absolute minimum the user has to provide before starts the program
  143. and connect to pleroma (to use tinmop as a gemini browser only an
  144. empty file will suffice): the name you chose when you made the
  145. account on the server and the address of the server.
  146. .PP
  147. As you can see a line starting with a \fB#\fP is considered comment and
  148. skipped by the program
  149. .PP
  150. The file with this credential are confidential and must be put into
  151. user's home directory under the path
  152. \fC$HOME/.local/share/tinmop/main.conf\fP. Probably the directory
  153. \fCtinmop\fP does not exists on user system, if it does not exists must
  154. be created manually.
  155. .PP
  156. If the program was installed correctly two other files with simple
  157. semantics are located in your system wide configuration directory
  158. (usually \fC/etc/tinmop/\fP), please check these files for more
  159. information, as they are extensively commented.
  160. .PP
  161. Is worth mentioning again that, without an user configuration file,
  162. the program can be used as gemini client.
  163. .SS "Lisp program"
  164. .PP
  165. These files contains Common lisp (see \fIhttps://common-lisp.net/\fP)
  166. source code. And are used both as a way to configure the program
  167. and to write module for tinmop itself.
  168. .PP
  169. These files are the only way to configure program's keybindings:
  170. sequence of pressing button to fire command commands (do not worry
  171. it is not too difficult!).
  172. .PP
  173. These files must be a valid Common Lisp program to allow the
  174. program to even starts. Again this is actual source code that is
  175. loaded end executed by the main program; be careful, do not copy
  176. and paste code from untrusted sources as this could results in a
  177. \fBsevere\fP security damage.
  178. .PP
  179. Again in the configuration directory there is a (commented) file
  180. named \fCinit.lisp\fP that user can use as their starting point to
  181. write their files. A custom init file, or other module files, must
  182. be located into the directory \fC$HOME/.local/share/tinmop/\fP or
  183. \fC$HOME/.config/tinmop/\fP (because, you know, data is code and code
  184. is data) to be successfully loaded.
  185. .PP
  186. However there is no need to write their own init file if user is
  187. happy with the provided one by the package maintainers.
  188. .SH "First time start"
  189. .PP
  190. After the configuration the program can be started but we are not
  191. ready to join the network yet because tinmop need to be \fItrusted\fP by
  192. the server. Just follows the instruction on screen to register the
  193. application with your instance. This procedure should be followed
  194. once: when the program starts for the first time (but please note
  195. that there must be a file with valid credentials available).
  196. .SH "How to get more help"
  197. .PP
  198. For help with pleroma visit the pleroma website:
  199. .PP
  200. \fIhttps://pleroma.social/\fP
  201. .PP
  202. For information about gemini:
  203. .PP
  204. $ tinmop -o gemini://gemini.circumlunar.space
  205. .PP
  206. The program has an inline help (default binding for help is "?")
  207. .PP
  208. You can search the help strings with a command (default: "C-h a").
  209. .PP
  210. Moreover you can have some useful hint at the program web page:
  211. .PP
  212. [\fIhttps://www.autistici.org/interzona/tinmop/\fP]
  213. .SH "BUGS"
  214. .PP
  215. There are many, totally unknown, hiding in the code! Please help the
  216. programmer to nail them using the
  217. https://notabug.org/cage/tinmop/issues/ \fBat\fP \fIissue tracker\fP.
  218. .SH "Contributing"
  219. .PP
  220. There is always need for help, you can join the developer, sending
  221. patches or translating the UI to your favourite language.
  222. .PP
  223. Just point your browser to the
  224. https://notabug.org/cage/tinmop/ \fBat\fP \fIcode repository\fP.
  225. .PP
  226. See also the file CONTRIBUTE.org
  227. .SS "Debug mode"
  228. .PP
  229. If you decomment the line:
  230. .RS
  231. .nf
  232. \fC;;(push :debug-mode *features*)
  233. \fP
  234. .fi
  235. .RE
  236. .PP
  237. The program will be compiled in \fCdebug\-mode\fP this means that a lot
  238. of diagnostic output will be appended to a file named \fCtinmop.log\fP
  239. in the directory \fC$HOME/.local/share/tinmop/\fP.
  240. .SH "Files"
  241. .IP \(em 4
  242. \fC$HOME/.local/share/tinmop/db.sqlite3\fP: the program database
  243. .IP \(em 4
  244. \fC$HOME/.local/share/tinmop/client\fP: the program credentials to connect with the instance \fBkeep private!\fP
  245. .IP \(em 4
  246. \fC$HOME/.local/share/tinmop/tinmop.log\fP: this file is created only for debugging and should not be enabled in binary package distribution (see \fIContributing\fP).
  247. .IP \(em 4
  248. \fC/etc/tinmop/default\-theme.conf\fP: default visual style
  249. .IP \(em 4
  250. \fC/etc/tinmop/shared.conf\fP: some default configuration not related to themes
  251. .IP \(em 4
  252. \fC/etc/tinmop/init.lisp\fP: system wide configuration
  253. .IP \(em 4
  254. \fC$HOME/.config/tinmop/init.lisp\fP: user configuration
  255. .IP \(em 4
  256. \fC$HOME/.config/tinmop/main.conf\fP: user configuration (simple format)
  257. .SH "Privacy"
  258. .PP
  259. The author of this software collects no user data information with
  260. this software.
  261. .PP
  262. But this software is a client to connect and interact to one or more
  263. remote computer. So potentially it could share a lot of information
  264. with other actors but just after the user allowed it to do so.
  265. .PP
  266. It is the user responsibility to checks the privacy conditions of the
  267. instance this software connect to.
  268. .PP
  269. By default, pressing "!" will contact the remote service located at:
  270. "gemini://houston.coder.town/search".
  271. .PP
  272. Moreover launching \fCquick_quicklisp.sh\fP will contact
  273. \fIhttps://www.quicklisp.org/\fP, check the
  274. https://beta.quicklisp.org/quicklisp.lisp \fBat\fP \fIquicklisp sources\fP for
  275. details.
  276. .SH "Acknowledgment"
  277. .PP
  278. My deep thanks to the folks that provided us with wonderful SBCL and
  279. Common lisp libraries.
  280. .PP
  281. In particular i want to thanks the authors of the libraries Croatoan and Tooter
  282. for their help when I started to develop this program.
  283. .PP
  284. There are more people i borrowed code and data from, they are mentioned
  285. in the file LINCENSES.org
  286. .PP
  287. This program is was born also with the help of CCCP: "Collettivo Computer
  288. Club Palermo".
  289. .PP
  290. Also thanks to "barbar" for testing of the installation scripts.