Blob


1 .\" Copyright (c) 2021 Omar Polo <op@omarpolo.com>
2 .\"
3 .\" Permission to use, copy, modify, and distribute this software for any
4 .\" purpose with or without fee is hereby granted, provided that the above
5 .\" copyright notice and this permission notice appear in all copies.
6 .\"
7 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14 .Dd $Mdocdate: March 28 2021$
15 .Dt TELESCOPE 1
16 .Os
17 .Sh NAME
18 .Nm telescope
19 .Nd Gemini client
20 .Sh SYNOPSIS
21 .Nm
22 .Bk -words
23 .Op Ar URL
24 .Ek
25 .Sh DESCRIPTION
26 .Nm
27 is an interactive browser for the Gemini protocol.
28 It is able to process text/gemini and more in general every text/* file.
29 .Nm
30 also features tabs, bookmarks and out-of-band TOFU verification.
31 .Sh TOFU
32 .Nm
33 aims to use the "Trust, but Verify (where appropriate)" approach.
34 The idea is to define three level of verification for a certificate:
35 .Bl -tag -width 12m
36 .It untrusted
37 the server fingerprint does NOT match the stored value
38 .It trusted
39 the server fingerprint matches the store one
40 .It verified
41 the fingerprint matches and has been verified out-of-band
42 .El
43 .Pp
44 Most of the time the
45 .Dq trusted
46 level is enough, but where is appropriate users should be able to
47 verify out-of-band the certificate.
48 .Pp
49 At the moment, there is no built-in support for an out-of-band
50 verification though.
51 .Pp
52 Known certificates are store in
53 .Pa ~/.telescope/known_hosts
54 with a format similar to the
55 .Xr ssh 1 Ns '
56 .Pa known_hosts
57 file.
58 Each line is a record and it's made up by three fields, separated by a
59 single space, according to the following format:
60 .Dq HOST HASH TRUSTED
61 where:
62 .Pp
63 .Bl -tag -width 12m
64 .It HOST
65 is the hostname.
66 .It HASH
67 is the hash of the certificate, as outputted by
68 .Xr tls_peer_cert_hash 3 Ns .
69 .It TRUSTED
70 a single digit.
71 0 means trusted, 1 verified.
72 .El
73 .Sh DEFAULT KEY BINDINGS
74 The default key bindings are very similar to GNU Emacs, but care has
75 been taken to include also bindings familiar for
76 .Xr vi 1
77 and
78 .Dq CUA
79 users.
80 In the following examples, C-x means Control-x, M-x means Meta-x,
81 where the Meta key may be either a special key on the keyboard or the
82 ALT key; otherwise ESC followed by the key X works as well, and C-M-x
83 means to press the key X together with both Control and Meta.
84 .Pp
85 Keys are usually a single character, like
86 .Sq p
87 or
88 .Sq n ,
89 but some special keys are accepted as well.
90 .Pp
91 .Bl -tag -width 16m -offset indent -compact
92 .It <up>
93 Up arrow
94 .It <down>
95 Down arrow
96 .It <left>
97 Left arrow
98 .It <right>
99 Right arrow
100 .It <prior>
101 Previous page/Page up
102 .It <next>
103 Next page/Page down
104 .It <home>
105 Home
106 .It <end>
107 End
108 .It <f0> thru <f63>
109 Function keys
110 .It del or backspace
111 Backspace
112 .It esc
113 Escape
114 .It space or spc
115 Space
116 .It enter or ret
117 Enter
118 .It tab
119 Tab
120 .El
121 .Ss GNU Emacs-like keys
122 .Bl -tag -width xxxxxxxxxxxx -offset indent -compact
123 .It C-p
124 .Ic previous-line
125 .It C-n
126 .Ic next-line
127 .It C-f
128 .Ic forward-char
129 .It C-b
130 .Ic backward-char
131 .It M-{
132 .Ic backward-paragraph
133 .It M-}
134 .Ic forward-paragraph
135 .It C-a
136 .Ic move-beginning-of-line
137 .It C-e
138 .Ic move-end-of-line
139 .It M-v, M-space
140 .Ic scroll-up
141 .It C-v, space
142 .Ic scroll-down
143 .It M-<
144 .Ic beginning-of-buffer
145 .It M->
146 .Ic end-of-buffer
147 .It C-x C-c
148 .Ic kill-telescope
149 .It C-g
150 .Ic clear-minibuf
151 .It M-x
152 .Ic execute-extended-command
153 .It C-x C-f
154 .Ic load-url
155 .It C-x M-f
156 .Ic load-current-url
157 .It C-x t 0
158 .Ic tab-close
159 .It C-x t 1
160 .Ic tab-close-other
161 .It C-x t 2
162 .Ic tab-new
163 .It C-x t o
164 .Ic tab-next
165 .It C-x t O
166 .Ic tab-previous
167 .It C-x t m
168 .Ic tab-move
169 .It C-x t M
170 .Ic tab-move-to
171 .It C-M-b
172 .Ic previous-page
173 .It C-M-f
174 .Ic next-page
175 .It <f7> a
176 .Ic bookmark-page
177 .It <f7> <f7>
178 .Ic goto-bookmarks
179 .El
180 .Ss Xr vi 1 Ns -like keys
181 .Bl -tag -width xxxxxxxxxxxx -offset indent -compact
182 .It k
183 .Ic previous-line
184 .It j
185 .Ic next-line
186 .It l
187 .Ic forward-char
188 .It h
189 .Ic backward-char
190 .It {
191 .Ic backward-paragraph
192 .It }
193 .Ic forward-paragraph
194 .It ^
195 .Ic move-beginning-of-line
196 .It $
197 .Ic move-end-of-line
198 .It K
199 .Ic scroll-line-up
200 .It J
201 .Ic scroll-line-down
202 .It g g
203 .Ic beginning-of-buffer
204 .it G
205 .Ic end-of-buffer
206 .It g D
207 .Ic tab-close
208 .It g N
209 .Ic tab-new
210 .It g t
211 .Ic tab-next
212 .It g T
213 .Ic tab-previous
214 .It g M-t
215 .Ic tab-move
216 .It g M-T
217 .Ic tab-move-to
218 .It H
219 .Ic previous-page
220 .It L
221 .Ic next-page
222 .It q
223 .Ic kill-telescope
224 .It ESC
225 .Ic clear-minibuf
226 .It :
227 .Ic execute-extended-command
228 .El
229 .Ss CUA-like keys
230 .Bl -tag -width xxxxxxxxxxxx -offset indent -compact
231 .It <up>
232 .Ic previous-line
233 .It <down>
234 .Ic next-line
235 .It <right>
236 .Ic forward-char
237 .It <left>
238 .Ic backward-char
239 .It <prior>
240 .Ic scroll-up
241 .It <next>
242 .Ic scroll-down
243 .It M-<left>
244 .Ic previous-page
245 .It M-<right>
246 .Ic next-page
247 .El
248 .Ss Neither Emacs nor vi specific
249 .Bl -tag -width xxxxxxxxxxxx -offset indent -compact
250 .It enter
251 .Ic push-button
252 .It M-enter
253 .Ic push-button-new-tab
254 .It M-tab
255 .Ic previous-button
256 .It tab
257 .Ic next-button
258 .El
259 .Ss Minibuffer-specific keys
260 .Bl -tag -width xxxxxxxxxxxx -offset indent -compact
261 .It enter
262 .Ic mini-complete-and-exit
263 .It C-g
264 .Ic mini-abort
265 .It ESC
266 .Ic mini-abort
267 .It C-d
268 .Ic mini-delete-char
269 .It del
270 .Ic mini-delete-backward-char
271 .It backspace
272 .Ic mini-delete-backward-char
273 .It C-h
274 .Ic mini-delete-backward-char
275 .It C-b
276 .Ic backward-char
277 .It C-f
278 .Ic forward-char
279 .It <left>
280 .Ic backward-char
281 .It <right>
282 .Ic forward-char
283 .It C-e
284 .Ic move-end-of-line
285 .It C-a
286 .Ic move-beginning-of-line
287 .It <end>
288 .Ic move-end-of-line
289 .It <home>
290 .Ic move-beginning-of-line
291 .It C-k
292 .Ic mini-kill-line
293 .It M-p
294 .Ic mini-previous-history-element
295 .It M-n
296 .Ic mini-next-history-element
297 .It <up>
298 .Ic mini-previous-history-element
299 .It <down>
300 .Ic mini-next-history-element
301 .El
302 .Sh INTERACTIVE COMMANDS
303 Follows the documentation for the interactive commands.
304 These commands can be bound to a key or executed with
305 .Ic execute-extended-command .
306 .Ss Movement commands
307 .Bl -tag -width execute-extended-command -compact
308 .It Ic backward-char
309 Move point one character backward.
310 .It Ic backward-paragraph
311 Move point one paragraph backward.
312 .It Ic beginning-of-buffer
313 Move point to the beginning of the buffer.
314 .It Ic end-of-buffer
315 Move point to the end of the buffer.
316 .It Ic forward-char
317 Move point one character forward.
318 .It Ic forward-paragraph
319 Move point one paragraph forward.
320 .It Ic move-beginning-of-line
321 Move point at the beginning of the current (visual) line.
322 .It Ic move-end-of-line
323 Move point at the end of the current (visual) line.
324 .It Ic next-button
325 Move point to the next link.
326 .It Ic next-line
327 Move point to the next (visual) line, in the same column if possible.
328 .It Ic previous-button
329 Move point to the previous link.
330 .It Ic previous-line
331 Move point to the previous (visual) line.
332 .El
333 .Ss Bookmark-related commands
334 .Pp
335 .Bl -tag -width execute-extended-command -compact
336 .It Ic bookmark-page
337 Add a link to the bookmark file.
338 It preloads the minibuffer with the current URL.
339 .It Ic goto-bookmarks
340 Load the bookmarks page.
341 .El
342 .Ss Tab-related commands
343 .Bl -tag -width execute-extended-command -compact
344 .It Ic tab-close
345 Close the current tab.
346 .It Ic tab-close-other
347 Close all tabs but the current one.
348 .It Ic tab-move
349 Move the current tab after the next one, wrapping around if
350 needed.
351 .It Ic tab-move-to
352 Move the current tab before the previous one, wrapping around if needed.
353 .It Ic tab-new
354 Open a new tab.
355 .It Ic tab-next
356 Focus next tab, wrapping around eventually.
357 .It Ic tab-previous
358 Focus the previous tab, wrapping around eventually.
359 .El
360 .Ss Misc commands
361 .Bl -tag -width execute-extended-command -compact
362 .It Ic clear-minibuf
363 Clears the echo area.
364 .It Ic execute-extended-command
365 Prompts for a command name using the minibuffer.
366 .It Ic kill-telescope
367 Quit
368 .Nm .
369 .It Ic load-current-url
370 Prompts for an URL, the minibuffer is preloaded with the current
371 one.
372 .It Ic load-url
373 Prompts for an URL.
374 .It Ic next-page
375 Load the next item in the history list.
376 .It Ic previous-page
377 Load the previous item in the history list.
378 .It Ic push-button
379 Follow the link on the current line.
380 .It Ic push-button-new-tab
381 Follow the link on the current line on a new tab.
382 .It Ic redraw
383 Redraws the screen, useful if some background program messed up the
384 display.
385 .It Ic scroll-down
386 Scroll down by one visual page.
387 .It Ic scroll-line-down
388 Scroll down by one line.
389 .It Ic scroll-line-up
390 Scroll up by one line.
391 .It Ic scroll-up
392 Scroll up by one visual page.
393 .El
394 .Ss Minibuffer commands
395 .Bl -tag -width execute-extended-command -compact
396 .It Ic mini-abort
397 Abort the current minibuffer action.
398 .It Ic mini-complete-and-exit
399 Complete the current minibuffer action.
400 .It Ic mini-delete-backward-char
401 Delete the character before the point.
402 .It Ic mini-delete-char
403 Delete the character after the point.
404 .It Ic mini-kill-line
405 Delete from the point until the end of the line.
406 .It Ic mini-next-history-element
407 Load the previous history element.
408 .It Ic mini-previous-history-element
409 Load the next history element.
410 .El
411 .Sh FILES
412 .Bl -tag -width Ds -compact
413 .It Pa ~/.telescope/bookmarks.gmi
414 Holds the bookmarks.
415 .It Pa ~/.telescope/known_hosts
416 Contains a list of host keys for all the hosts the user has visited.
417 See the TOFU section for more info.
418 .Sh AUTHORS
419 .An -nosplit
420 The
421 .Nm
422 program was written by
423 .An Omar Polo Aq Mt op@omarpolo.com .