Blob


1 .\" Copyright (c) 2021, 2022, 2024 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: February 23 2024$
15 .Dt TELESCOPE 1
16 .Os
17 .Sh NAME
18 .Nm telescope
19 .Nd multi-protocol browser
20 .Sh SYNOPSIS
21 .Nm
22 .Bk -words
23 .Op Fl hnSv
24 .Op Fl c Ar config
25 .Op Ar URL
26 .Ek
27 .Sh DESCRIPTION
28 .Nm
29 is a browser that supports the Finger, Gemini and Gopher protocols.
30 .Nm
31 features tabs, a minibuffer, interactive completions, bookmarks and
32 client certificates.
33 .Pp
34 The arguments are as follows:
35 .Bl -tag -width xxxxxxxxxxxxx
36 .It Fl c Ar config
37 Specify an alternative configuration file.
38 By default
39 .Pa ~/.config/telescope/config
40 is loaded.
41 .It Fl h , Fl -help
42 Display version, usage and exit.
43 .It Fl n
44 Configtest mode.
45 Only check the configuration file for validity.
46 .It Fl S , Fl -safe
47 .Dq Safe
48 .Pq or Dq sandbox
49 mode.
50 Prevent
51 .Nm
52 from writing files to the disk and to acquire the lock, allowing to
53 run multiple instances at the same time.
54 .Nm
55 still loads the session file and the custom about pages.
56 .It Fl v , Fl -version
57 Display version and exit.
58 .El
59 .Sh UI CONCEPTS
60 .Nm
61 interface is divided into four areas: the tabline, the body, the
62 modeline and the echoarea/minibuffer.
63 .Pp
64 The tabline is always at the top of the screen and displays the tabs
65 separated by a vertical line.
66 When there are more tabs than the size of the window allow to display,
67 the characters
68 .Sq \&<
69 or
70 .Sq \&>
71 are shown at the start/end of the tabline to indicate that there are
72 more tabs in that direction.
73 .Pp
74 The body occupies the majority of the visible area.
75 It contains the current page and optionally a side window.
76 .Pp
77 The modeline is the second to last row of the screen.
78 It shows some information about the page: a spinner when the page is
79 loading, the trust level, whether a client certificate is in use, the
80 document type, the scroll offset and the URL.
81 When a client certificate is in use, a
82 .Sq C
83 character is showed.
84 .Pp
85 The echoarea is usually the last line of the screen.
86 Messages are often showed there, and link addresses too.
87 The echoarea is also used to obtain input from the user.
88 When commands like
89 .Ic swiper
90 or
91 .Ic link-select
92 are invoked, the minibuffer area grows to show possible completions.
93 .Sh TOFU
94 .Nm
95 aims to use the
96 .Dq Trust, but Verify Pq where appropriate
97 approach for
98 TOFU
99 .Pq Dq Trust On First Use .
100 The idea is to define three level of verification for a certificate:
101 .Bl -tag -width 12m
102 .It untrusted
103 .Pq Sq \&!
104 the server fingerprint does not match the stored value.
105 .It trusted
106 .Pq Sq v
107 the server fingerprint matches the store one.
108 .It verified
109 .Pq Sq V
110 the fingerprint matches and has been verified out-of-band.
111 .El
112 .Pp
113 The trust level of the page is indicated in the modeline with the
114 indicated character.
115 .Pp
116 Most of the time the
117 .Dq trusted
118 level is enough, but where is appropriate users should be able to
119 verify out-of-band the certificate.
120 .Pp
121 At the moment, there is no built-in support for an out-of-band
122 verification though.
123 .Sh SUPPORTED PROTOCOLS
124 The following protocols are supported:
125 .Bl -tag -width gemini://
126 .It about:
127 About pages are
128 .Nm
129 internal page.
130 See about:about for a list of all these pages.
131 .It file://
132 File types know to
133 .Nm ,
134 such as .gmi, .gemini, .txt, .md, .markdown, .diff or .patch, can be
135 viewed inside the application.
136 Types of local files are detected solely based on the file extension.
137 On some systems, such as
138 .Ox ,
139 only files inside special directories
140 .Pq like Pa /tmp No or Pa ~/Downloads
141 are available.
142 .It finger://
143 Finger URLs are interpreted as follows:
144 .Bl -bullet -compact
145 .It
146 the host is determined by the host name portion of the URL
147 .It
148 if the user portion of the URL is provided, it's interpreted as the
149 user to finger, otherwise the path component will be used
150 .El
151 thus
152 .Lk finger://user@hostname
153 and
154 .Lk finger://hostname/user
155 are treated as the same URL.
156 .It gemini://
157 Gemini is fully supported.
158 .It gopher://
159 Gopher support is limited to items type 0, 1 and 7.
160 All text is assumed to be encoded in UTF-8 (superset of ASCII).
161 .El
162 .Pp
163 User-entered URLs, given as argument on the command line or entered
164 with
165 .Ic load-url ,
166 by default are intepreted with a simple heuristic:
167 .Bl -bullet -compact
168 .It
169 if it's a proper absolute URL then use it as-is,
170 .It
171 if it starts with
172 .Dq ./
173 or
174 .Dq /
175 assume it's a file:// URL,
176 .It
177 otherwise treat it like a hostname with protocol
178 .Ic default-protocol
179 .Pq gemini by default .
180 .El
181 .Pp
182 The setting
183 .Ic load-url-use-heuristic
184 can be used to disable the use of heuristics.
185 .Sh CONFIGURATION FILE
186 During the startup,
187 .Nm
188 reads the configuration file at
189 .Pa ~/.config/telescope/config
190 or
191 .Pa ~/.telescope/config .
192 .Pp
193 It's possible to load a custom configuration file using the
194 .Fl c
195 flag.
196 .Pp
197 .Nm
198 will also load a file called
199 .Pa config-TERM ,
200 where
201 .Dq TERM
202 is the name of the terminal type
203 .Pq i.e. the TERM environment variable ,
204 if it exists.
205 .Pp
206 The format of the configuration file is fairly flexible.
207 The current line can be extended over multiple ones using a
208 backslash
209 .Pq Sq \e .
210 Comments can be put anywhere in the file using a hash mark
211 .Pq Sq # ,
212 and extend to the end of the current line, but backslashes can't be
213 used to extend comments over multiple lines.
214 .Pp
215 The following constructs are available:
216 .Bl -tag -width Ds
217 .It Ic bind Ar map Ar key Ar cmd
218 Bind
219 .Ar key
220 to the function
221 .Ar cmd
222 in the keymap
223 .Ar map .
224 Valid values for map are
225 .Dq global-map
226 .Pq i.e. when the user is viewing a page
227 and
228 .Dq minibuffer-map
229 .Pq i.e. when the minibuffer has the focus.
230 .Ar key
231 follows the same syntax described in
232 .Sx DEFAULT KEY BINDINGS
233 and all the possible functions are listed in
234 .Sx INTERACTIVE COMMANDS .
235 .It Ic proxy Ar proto Ic via Ar url
236 Use
237 .Ar url
238 as proxy for all URLs with
239 protocol
240 .Ar proto .
241 .Ar url
242 must be a Gemini URI without path, query and fragment component.
243 .It Ic set Ar opt No = Ar val
244 Set the option
245 .Ar opt
246 to the value
247 .Ar val .
248 Valid options are:
249 .Pp
250 .Bl -tag -width twelveletters -compact
251 .It Ic autosave
252 .Pq integer
253 If greater than zero, save the session after the specified amount of
254 seconds after some events happened
255 .Pq new or closed tabs, visited a link ...
256 Defaults to 20.
257 .It Ic default-protocol
258 .Pq string
259 The default protocol assumed for the
260 .Ic load-url
261 heuristic.
262 Defaults to
263 .Dq gemini .
264 .It Ic dont-wrap-pre
265 .Pq boolean
266 If true, don't wrap preformatted blocks.
267 Defaults to false.
268 .It Ic download-path
269 .Pq string
270 The default download path.
271 Defaults to
272 .Pa /tmp .
273 .It Ic emojify-link
274 .Pq boolean
275 If true, when the text of a link starts with an emoji followed by a
276 space, use that emoji as line prefix.
277 Defaults to true.
278 .It Ic enable-colors
279 .Pq boolean
280 If true, enable colours.
281 Defaults to false if
282 .Ev NO_COLORS
283 is set, true otherwise.
284 .It Ic fill-column
285 .Pq integer
286 If greater than zero, lines of text will be formatted in a way that
287 don't exceed the given number of columns.
288 Defaults to 80.
289 .It Ic fringe-ignore-offset
290 .Pq boolean
291 If true, the fringe doesn't obey to
292 .Ic olivetti-mode .
293 Defaults to false.
294 .It Ic hide-pre-blocks
295 .Pq boolean
296 If true, hide by default the body of the preformatted blocks.
297 Defaults to false.
298 .Ic push-button
299 can be used to toggle the visibility per-block.
300 .It Ic hide-pre-closing-line
301 .Pq boolean
302 If true, hide the closing line of preformatted blocks.
303 Defaults to false.
304 .It Ic hide-pre-context
305 .Pq boolean
306 If true, hide the start and end line of the preformatted blocks.
307 If both
308 .Ic hide-pre-context
309 and
310 .Ic hide-pre-blocks
311 are true, preformatted blocks are irremediably hidden.
312 Defaults to false.
313 .It Ic new-tab-url
314 .Pq string
315 URL for the new tab page.
316 Defaults to
317 .Dq about:new .
318 .It Ic load-url-use-heuristic
319 .Pq boolean
320 If false, don't use euristics to resolve the URLs.
321 Non-absolute URLs given as command line argument will be resolved as
322 file system paths,
323 .Ic load-url
324 will resolve as relative to the current URL.
325 Defaults to true.
326 .It Ic max-killed-tabs
327 .Pq integer
328 The maximum number of closed tabs to keep track of, defaults to 10.
329 Must be a positive number; if zero, don't save closed tabs at all.
330 .It Ic olivetti-mode
331 .Pq boolean
332 If true, enable
333 .Ic olivetti-mode .
334 Defaults to true.
335 .It Ic default-search-engine
336 .Pq string
337 URL of the preferred search engine, used by the
338 .Cm search
339 command.
340 If it's a Gemini URI, the user query will be appended as query,
341 replacing it if present.
342 If it's a Gopher URI, the user query will be sent as gopher search
343 parameter.
344 No other URI scheme are allowed.
345 .It Ic tab-bar-show
346 .Pq integer
347 If tab-bar-show is -1 hide the tab bar permanently, if 0 show it
348 unconditionally.
349 If 1, show the bar only when there is more than one tab.
350 Defaults to 1.
351 .It Ic update-title
352 .Pq boolean
353 If true, set the terminal title to the page title.
354 Defaults to true.
355 .El
356 .It Ic style Ar name Ar option
357 Change the styling of the element identified by
358 .Ar name .
359 Multiple options may be specified within curly braces.
360 Valid style identifiers are:
361 .Bl -tag -width line.download.ongoing -compact -offset Ds
362 .It line
363 the area outside the lines in the body of the page.
364 .It line.compl
365 the completions.
366 .It line.compl.current
367 the current completion.
368 .It line.help
369 text in the *Help* buffer.
370 .It line.download.ongoing
371 an ongoing download
372 .It line.download.done
373 a completed download
374 .It line.download.info
375 informational text in the *Downloads* buffer.
376 .It line.fringe
377 .Pq virtual
378 lines draw after the end of a buffer.
379 .It line.text
380 text lines.
381 .It line.link
382 link lines.
383 .It line.title1..3
384 headings
385 .It line.item
386 item lines.
387 .It line.quote
388 quotes.
389 .It line.pre.start
390 the heading of a preformatted block.
391 .It line.pre
392 the content of a preformatted block.
393 .It line.pre.end
394 the closing line of a preformatted block.
395 .It download
396 the download pane
397 .It minibuffer
398 the minibuffer.
399 .It modeline
400 the modeline.
401 .It tabline
402 the tabline.
403 .It tabline.tab
404 the non-focused tabs.
405 .It tabline.current
406 the focused tab.
407 .El
408 .Pp
409 Valid options are:
410 .Bl -tag -width Ds
411 .It Ic attr Ar prefix Oo Ar line Oo Ar trail Oc Oc
412 Sets the text attributes.
413 If only one value is given,
414 .Ar line
415 and
416 .Ar trail
417 default to that; if two values are given then
418 .Ar trail
419 defaults to
420 .Ar prefix .
421 Each attribute is a comma-separated list of keywords:
422 .Bl -tag -width underline -compact -offset Ds
423 .It Ic normal
424 no attributes.
425 .It Ic standout
426 best highlighting mode for the terminal.
427 .It Ic underline
428 underlines the text.
429 .It Ic reverse
430 reverses background/foreground colors.
431 .It Ic blink
432 makes the text blinking.
433 .It Ic dim
434 half bright.
435 .It Ic bold
436 extra bright or bold.
437 .El
438 .Pp
439 Only the style identifiers with the
440 .Dq line.
441 prefix accept up to three attributes.
442 The other will only use the first one given.
443 .It Ic bg Ar prefix Oo Ar line Oo Ar trail Oc Oc
444 Sets the background color.
445 Follows the same behaviour as
446 .Ic attr
447 regarding the optional parameters.
448 The colour is one of black, red, green, yellow, blue,
449 magenta, cyan and white; colour0 to colour255
450 .Pq or color0 to color255
451 from the 256-colour set;
452 default for the default colour.
453 .It Ic fg Ar prefix Oo Ar line Oo Ar trail Oc Oc
454 Sets the foreground color.
455 It behaves just like
456 .Ic bg .
457 .It Ic prefix Ar prfx Op Ar cont
458 Sets the prefix for the current line type to
459 .Ar prfx
460 and
461 .Ar cont
462 as the prefix for the continuation lines
463 .Pq i.e. when a long line gets wrapped.
464 If
465 .Ar cont
466 is not given its value will be the same of
467 .Ar prfx .
468 .El
469 .El
470 .Sh DEFAULT KEY BINDINGS
471 The default key bindings are very similar to GNU Emacs, but care has
472 been taken to include also bindings familiar for
473 .Xr vi 1
474 and
475 .Dq CUA
476 users.
477 In the following examples, C-x means Control-x, M-x means Meta-x,
478 where the Meta key may be either a special key on the keyboard or the
479 ALT key; otherwise ESC followed by the key X works as well, and C-M-x
480 means to press the key X together with both Control and Meta.
481 .Pp
482 Keys are usually a single character, like
483 .Sq p
484 or
485 .Sq n ,
486 but some special keys are accepted as well.
487 .Pp
488 .Bl -tag -width 16m -offset indent -compact
489 .It <up>
490 Up arrow
491 .It <down>
492 Down arrow
493 .It <left>
494 Left arrow
495 .It <right>
496 Right arrow
497 .It <prior>
498 Previous page/Page up
499 .It <next>
500 Next page/Page down
501 .It <home>
502 Home
503 .It <end>
504 End
505 .It <f0> thru <f63>
506 Function keys
507 .It del or backspace
508 Backspace
509 .It esc
510 Escape
511 .It space or spc
512 Space
513 .It enter or ret
514 Enter
515 .It tab
516 Tab
517 .It backtab
518 Depends on the configuration of the terminal emulator; usually shift
519 tab.
520 .El
521 .Ss GNU Emacs-like keys
522 .Bl -tag -width xxxxxxxxxxxx -offset indent -compact
523 .It C-p
524 previous-line
525 .It C-n
526 next-line
527 .It C-f
528 forward-char
529 .It C-b
530 backward-char
531 .It M-{
532 backward-paragraph
533 .It M-}
534 forward-paragraph
535 .It C-a
536 move-beginning-of-line
537 .It C-e
538 move-end-of-line
539 .It M-v, M-space
540 scroll-up
541 .It C-v, space
542 scroll-down
543 .It M-<
544 beginning-of-buffer
545 .It M->
546 end-of-buffer
547 .It C-x C-c
548 kill-telescope
549 .It C-x C-w
550 write-buffer
551 .It C-g
552 clear-minibuf
553 .It M-x
554 execute-extended-command
555 .It C-c {
556 dec-fill-column
557 .It C-c }
558 inc-fill-column
559 .It C-c p
560 previous-heading
561 .It C-c n
562 next-heading
563 .It >
564 load-url
565 .It <
566 load-current-url
567 .It C-x C-f
568 load-url
569 .It C-x M-f
570 load-current-url
571 .It C-x o
572 other-window
573 .It C-x t 0
574 tab-close
575 .It C-x t 1
576 tab-close-other
577 .It C-x t 2
578 tab-new
579 .It C-x t o
580 tab-next
581 .It C-x t O
582 tab-previous
583 .It C-x t m
584 tab-move
585 .It C-x t M
586 tab-move-to
587 .It B, C-M-b
588 previous-page
589 .It F, C-M-f
590 next-page
591 .It <f7> a
592 bookmark-page
593 .It <f7> <f7>
594 list-bookmarks
595 .It C-z
596 suspend-telescope
597 .El
598 .Ss Xr vi 1 Ns -like keys
599 .Bl -tag -width xxxxxxxxxxxx -offset indent -compact
600 .It k
601 previous-line
602 .It j
603 next-line
604 .It l
605 forward-char
606 .It h
607 backward-char
608 .It {
609 backward-paragraph
610 .It }
611 forward-paragraph
612 .It ^
613 move-beginning-of-line
614 .It $
615 move-end-of-line
616 .It K
617 scroll-line-up
618 .It J
619 scroll-line-down
620 .It g g
621 beginning-of-buffer
622 .It G
623 end-of-buffer
624 .It g u
625 up
626 .It g r
627 root
628 .It g h
629 home
630 .It g D
631 tab-close
632 .It g N
633 tab-new
634 .It g t
635 tab-next
636 .It g T
637 tab-previous
638 .It g M-t
639 tab-move
640 .It g M-T
641 tab-move-to
642 .It H
643 previous-page
644 .It L
645 next-page
646 .It u
647 tab-undo-close
648 .It q
649 kill-telescope
650 .It ESC
651 clear-minibuf
652 .It :
653 execute-extended-command
654 .El
655 .Ss CUA-like keys
656 .Bl -tag -width xxxxxxxxxxxx -offset indent -compact
657 .It <up>
658 previous-line
659 .It <down>
660 next-line
661 .It <right>
662 forward-char
663 .It <left>
664 backward-char
665 .It <home>
666 move-beginning-of-line
667 .It <end>
668 move-end-of-line
669 .It <prior>
670 scroll-up
671 .It <next>
672 scroll-down
673 .It C-w
674 tab-close
675 .It C-t
676 tab-new
677 .It M-<prior>
678 tab-previous
679 .It M-<next>
680 tab-next
681 .It del
682 previous-page
683 .It M-<left>
684 previous-page
685 .It M-<right>
686 next-page
687 .It <f5>
688 reload-page
689 .It r
690 reload-page
691 .El
692 .Ss Neither Emacs nor vi specific
693 .Bl -tag -width xxxxxxxxxxxx -offset indent -compact
694 .It <f1>
695 toggle-help
696 .It enter
697 push-button
698 .It M-enter
699 push-button-new-tab
700 .It M-tab
701 previous-button
702 .It backtab
703 previous-button
704 .It tab
705 next-button
706 .It M-t
707 tab-select
708 .It \&[
709 tab-previous
710 .It \&]
711 tab-next
712 .It M-\&[
713 tab-move-to
714 .It M-\&]
715 tab-move
716 .It M-l
717 link-select
718 .It M-/
719 swiper
720 .It M-r
721 reply-last-input
722 .It s
723 search
724 .El
725 .Ss Minibuffer-specific keys
726 .Bl -tag -width xxxxxxxxxxxx -offset indent -compact
727 .It enter
728 mini-complete-and-exit
729 .It C-g
730 mini-abort
731 .It ESC
732 mini-abort
733 .It C-d
734 mini-delete-char
735 .It del
736 mini-delete-backward-char
737 .It backspace
738 mini-delete-backward-char
739 .It C-h
740 mini-delete-backward-char
741 .It C-b
742 backward-char
743 .It C-f
744 forward-char
745 .It <left>
746 backward-char
747 .It <right>
748 forward-char
749 .It C-e
750 move-end-of-line
751 .It C-a
752 move-beginning-of-line
753 .It <end>
754 move-end-of-line
755 .It <home>
756 move-beginning-of-line
757 .It C-k
758 mini-kill-line
759 .It C-u
760 mini-kill-whole-line
761 .It M-p
762 mini-previous-history-element
763 .It M-n
764 mini-next-history-element
765 .It C-p
766 previous-completion
767 .It C-n
768 next-completion
769 .It <up>
770 previous-completion
771 .It <down>
772 next-completion
773 .It tab
774 insert-current-candidate
775 .It M-<
776 mini-goto-beginning
777 .It M->
778 mini-goto-end
779 .El
780 .Sh INTERACTIVE COMMANDS
781 Follows the documentation for the interactive commands.
782 These commands can be bound to a key or executed with
783 .Ic execute-extended-command .
784 .Ss Movement commands
785 .Bl -tag -width execute-extended-command -compact
786 .It Ic backward-char
787 Move point one character backward.
788 .It Ic backward-paragraph
789 Move point one paragraph backward.
790 .It Ic beginning-of-buffer
791 Move point to the beginning of the buffer.
792 .It Ic end-of-buffer
793 Move point to the end of the buffer.
794 .It Ic forward-char
795 Move point one character forward.
796 .It Ic forward-paragraph
797 Move point one paragraph forward.
798 .It Ic insert-current-candidate
799 Copy the current selection text as minibuffer input.
800 .It Ic move-beginning-of-line
801 Move point at the beginning of the current (visual) line.
802 .It Ic move-end-of-line
803 Move point at the end of the current (visual) line.
804 .It Ic next-button
805 Move point to the next link.
806 .It Ic next-completion
807 Select the next completion.
808 .It Ic next-heading
809 Move point to the next heading.
810 .It Ic next-line
811 Move point to the next (visual) line, in the same column if possible.
812 .It Ic previous-button
813 Move point to the previous link.
814 .It Ic previous-completion
815 Select the previous completion.
816 .It Ic previous-heading
817 Move point to the previous heading.
818 .It Ic previous-line
819 Move point to the previous (visual) line.
820 .El
821 .Ss Bookmark-related commands
822 .Bl -tag -width execute-extended-command -compact
823 .It Ic bookmark-page
824 Save a page in the bookmark file.
825 It preloads the minibuffer with the current URL.
826 .It Ic list-bookmarks
827 Load the bookmarks page.
828 .El
829 .Ss Client certificate-related commands
830 .Bl -tag -width execute-extended-command -compact
831 .It Ic client-certificate-info
832 Show the active client certificate.
833 .It Ic unload-certificate
834 Forget the certificate on this page.
835 .It Ic use-certificate
836 Use a certificate for the current page.
837 .El
838 .Ss Tab-related commands
839 .Bl -tag -width execute-extended-command -compact
840 .It Ic tab-close
841 Close the current tab.
842 .It Ic tab-close-other
843 Close all tabs but the current one.
844 .It Ic tab-move
845 Move the current tab after the next one, wrapping around if
846 needed.
847 .It Ic tab-move-to
848 Move the current tab before the previous one, wrapping around if needed.
849 .It Ic tab-new
850 Open a new tab.
851 .It Ic tab-next
852 Focus next tab, wrapping around eventually.
853 .It Ic tab-previous
854 Focus the previous tab, wrapping around eventually.
855 .It Ic tab-select
856 Switch to a tab using the minibuffer.
857 .It Ic tab-undo-close
858 Re-open the most recently closed tab, if any.
859 .El
860 .Ss Misc commands
861 .Bl -tag -width execute-extended-command -compact
862 .It Ic cache-info
863 Show cache stats.
864 .It Ic clear-minibuf
865 Clear the echo area.
866 .It Ic dec-fill-column
867 Decrement fill-column by two.
868 .It Ic execute-extended-command
869 Execute an internal command.
870 .It Ic home
871 Go to the home directory.
872 The home directory is assumed to be the first path component in the
873 .Sy ~username
874 form.
875 If not found, loads the root directory.
876 .It Ic kill-telescope
877 Quit
878 .Nm .
879 .It Ic inc-fill-column
880 Increment fill-column by two.
881 .It Ic link-select
882 Select and visit a link using the minibuffer.
883 .It Ic load-current-url
884 Edit the current URL.
885 .It Ic load-url
886 Prompt for an URL.
887 Use the same heuristic as the URLs given as a command-line argument,
888 unless the
889 .Ic load-url-use-heuristic
890 option is unsed, in which case the URL is resolved using the current
891 one as base.
892 .It Ic next-page
893 Go forward in the page history.
894 .It Ic olivetti-mode
895 Toggle olivetti mode (i.e. horizontal centering of the lines of the
896 window.)
897 .It Ic other-window
898 Select the other window.
899 .It Ic previous-page
900 Go backward in the page history.
901 .It Ic push-button
902 Follow link at point, or toggle the visibility of the following
903 preformatted block if called when the cursor is on the heading of the block.
904 .It Ic push-button-new-tab
905 Follow link at point in a new tab.
906 .It Ic redraw
907 Redraw the screen, useful if some background program messed up the
908 display.
909 .It Ic reload-page
910 Reload the current page.
911 .It Ic reply-last-input
912 Reply the last input request.
913 .It Ic root
914 Go to the root directory.
915 .It Ic search
916 Search using the preferred search engine.
917 .It Ic scroll-down
918 Scroll down by one visual page.
919 .It Ic scroll-line-down
920 Scroll down by one line.
921 .It Ic scroll-line-up
922 Scroll up by one line.
923 .It Ic scroll-up
924 Scroll up by one visual page.
925 .It Ic suspend-telescope
926 Suspend the current
927 .Nm
928 session.
929 .It Ic swiper
930 Jump to a line using the minibuffer.
931 .It Ic toc
932 Jump to a heading using the minibuffer.
933 .It Ic toggle-help
934 Toggle side window with help about available keys and their associated
935 interactive command.
936 .It Ic toggle-pre-wrap
937 Toggle the wrapping of preformatted blocks.
938 .It Ic up
939 Go up one level in the path hierarchy.
940 .It Ic write-buffer
941 Save the current buffer to the disk.
942 .El
943 .Ss Minibuffer commands
944 .Bl -tag -width execute-extended-command -compact
945 .It Ic mini-abort
946 Abort the current minibuffer action.
947 .It Ic mini-complete-and-exit
948 Complete the current minibuffer action.
949 .It Ic mini-delete-backward-char
950 Delete the character before the point.
951 .It Ic mini-delete-char
952 Delete the character after the point.
953 .It Ic mini-goto-beginning
954 Select the first completion, if any.
955 .It Ic mini-goto-end
956 Select the last completion, if any.
957 .It Ic mini-kill-line
958 Delete from point until the end of the line.
959 .It Ic mini-kill-whole-line
960 Delete the whole line.
961 .It Ic mini-next-history-element
962 Load the previous history element.
963 .It Ic mini-previous-history-element
964 Load the next history element.
965 .El
966 .Ss Aliases
967 The following aliases are available during
968 .Ic execute-extended-command :
969 .Bl -tag -width 16m -compact
970 .It Ic open
971 .Ic load-url
972 .It Ic tabn
973 .Ic tab-next
974 .It Ic tabnew
975 .Ic tab-new
976 .It Ic tabp
977 .Ic tab-previous
978 .It Ic q No and Ic wq
979 .Ic kill-telescope
980 .It Ic w
981 .Ic write-buffer
982 .El
983 .Sh ENVIRONMENT
984 When
985 .Nm
986 is started, it inspects the following environment variables:
987 .Bl -tag -width NO_COLORS
988 .It Ev HOME
989 The user's login directory.
990 .It Ev NO_COLORS
991 To decide whether to use colors or not.
992 The content of the variable doesn't matter.
993 .It Ev TERM
994 The user's terminal name.
995 .It Ev XDG_CACHE_HOME , Ev XDG_CONFIG_HOME , Ev XDG_DATA_HOME
996 If defined can alter the default location of the files used.
997 .El
998 .Sh FILES
999 By default
1000 .Nm
1001 follows the XDG Base Directory Specification.
1002 However, if
1003 .Pa ~/.telescope
1004 exists, XDG is ignored and all the files are stored inside it.
1005 The usage of
1006 .Ev XDG_CACHE_HOME ,
1007 .Ev XDG_CONFIG_HOME
1008 and
1009 .Ev XDG_DATA_HOME
1010 can further alter the location of these files.
1011 .Pp
1012 .Bl -tag -width Ds -compact
1013 .It Pa ~/.config/telescope/config
1014 Default configuration file.
1015 .It Pa ~/.config/telescope/certs.conf
1016 URLs to client certificate mappings.
1017 .It Pa ~/.local/share/telescope/pages/about_*.gmi
1018 Overrides for built-in about: pages.
1019 .It Pa ~/.local/share/telescope/bookmarks.gmi
1020 Bookmarks file.
1021 .It Pa ~/.local/share/telescope/certs/
1022 Directory where client certificates
1023 .Pq identities
1024 are stored.
1025 .It Pa ~/.local/share/telescope/known_hosts
1026 Hash of the certificates for all the known hosts.
1027 Each line contains three fields: hostname with optional port number,
1028 hash of the certificate and a numeric flag.
1029 .It Pa ~/.cache/telescope/lock
1030 Lock file used to prevent multiple instance of
1031 .Nm
1032 from running at the same time.
1033 .It Pa ~/.cache/telescope/session
1034 The list of tabs from the last session.
1035 .El
1036 .Sh EXAMPLES
1037 It's possible to browse
1038 .Dq the small web
1039 .Pq i.e. simple websites
1040 by using programs like the duckling-proxy by defining a proxy in
1041 .Pa ~/.config/telescope/config :
1042 .Bd -literal -offset indent
1043 proxy http via "gemini://127.0.0.1:1965"
1044 proxy https via "gemini://127.0.0.1:1965"
1045 .Ed
1046 .Pp
1047 To load
1048 .Nm
1049 without any configuration
1050 .Bd -literal -offset indent
1051 $ telescope -c /dev/null
1052 .Ed
1053 .Sh SEE ALSO
1054 .Xr telescope-identity 1
1055 .Sh STANDARDS
1056 .Rs
1057 .%B XDG Base Directory Specification
1058 .%U https://specifications.freedesktop.org/basedir-spec/latest/
1059 .Re
1060 .Sh ACKNOWLEDGEMENTS
1061 The
1062 .Dq Trust, but verify (where appropriate)
1063 TOFU scheme was firstly suggested by thfr:
1064 .Lk gemini://thfr.info/gemini/modified-trust-verify.gmi .
1065 .Sh AUTHORS
1066 .An -nosplit
1067 The
1068 .Nm
1069 program was written by
1070 .An Omar Polo Aq Mt op@omarpolo.com .
1071 .Sh CAVEATS
1072 .Nm
1073 assumes a UTF-8 environment and doesn't try to cope with other encodings.
1074 This can cause strange rendering issues if you're lucky, or possibly
1075 weird thing happening depending on your locale and terminal emulator.
1076 .Sh BUGS
1077 There's no UI for out-of-band certificates validation.