Blob


1 TELESCOPE(1) General Commands Manual TELESCOPE(1)
3 NAME
4 telescope multi-protocol browser
6 SYNOPSIS
7 telescope [-ChnSv] [-c config] [URL]
9 DESCRIPTION
10 telescope is an interactive browser that supports the Finger, Gemini and
11 Gopher protocols. telescope features tabs, a minibuffer, interactive
12 completions, bookmarks and out-of-band TOFU verification.
14 The arguments are as follows:
16 -C, --colours Show all available colors and exit. This option can also
17 be spelled --colors.
19 -c config Specify an alternative configuration file. By default
20 ~/.config/telescope/config is loaded.
22 -h, --help Display version, usage and exit.
24 -n Configtest mode. Only check the configuration file for
25 validity.
27 -S, --safe Safe (or sandbox) mode. Prevent telescope from
28 writing files to the disk and to acquire the lock,
29 allowing to run multiple instances at the same time.
30 telescope still loads the session file and the custom
31 about pages.
33 -v, --version Display version and exit.
35 UI CONCEPTS
36 telescope interface is divided into four areas: the tabline, the body,
37 the modeline and the echoarea/minibuffer.
39 The tabline is always at the top of the screen and displays the tabs
40 separated by a vertical line. When there are more tabs than the size of
41 the window allow to display, the characters < or > are shown at the
42 start/end of the tabline to indicate that there are more tabs in that
43 direction.
45 The body occupies the majority of the visible area. It contains the
46 current page and optionally a side window.
48 The modeline is the second to last row of the screen. It shows some
49 information about the page: a spinner when the page is loading, the trust
50 level, the document type, the scroll offset and the URL.
52 The echoarea is usually the last line of the screen. Messages are often
53 showed there, and link addresses too. The echoarea is also used to
54 obtain input from the user. When commands like swiper or link-select are
55 invoked, the minibuffer area grows to show possible completions.
57 TOFU
58 telescope aims to use the Trust, but Verify (where appropriate)
59 approach for TOFU (Trust On First Use). The idea is to define three
60 level of verification for a certificate:
62 untrusted (!) the server fingerprint does NOT match the stored
63 value.
65 trusted (v) the server fingerprint matches the store one.
67 verified (V) the fingerprint matches and has been verified out-of-
68 band.
70 The trust level of the page is indicated in the modeline with the
71 indicated character.
73 Most of the time the trusted level is enough, but where is appropriate
74 users should be able to verify out-of-band the certificate.
76 At the moment, there is no built-in support for an out-of-band
77 verification though.
79 SUPPORTED PROTOCOLS
80 The following protocols are supported:
82 about: About pages are telescope internal page. See about:about for
83 a list of all these pages.
85 file:// File types know to telescope, such as .gmi, .gemini, .txt,
86 .md, .markdown, .diff or .patch, can be viewed inside the
87 application. Types of local files are detected solely based
88 on the file extension. On some systems, such as OpenBSD, only
89 files inside special directories (like /tmp or ~/Downloads)
90 are available.
92 finger:// Finger URLs are interpreted as follows:
93 the host is determined by the host name portion of the URL
94 if the user portion of the URL is provided, it's
95 interpreted as the user to finger, otherwise the path
96 component will be used
97 thus finger://user@hostname and finger://hostname/user are
98 treated as the same URL.
100 gemini:// Gemini is fully supported, with the exception of client-
101 certificates.
103 gopher:// Gopher support is limited to items type 0, 1 and 7. All text
104 is assumed to be encoded in UTF-8 (or ASCII).
106 User-entered URLs, given as argument on the command line or entered with
107 load-url, are intepreted with a simple heuristic:
108 if it's a proper absolute URL then use it as-is,
109 if it starts with ./ or / assume it's a file:// URL,
110 otherwise assume it's a Gemini URL.
112 CONFIGURATION FILE
113 During the startup, telescope reads the configuration file at
114 ~/.config/telescope/config or ~/.telescope/config.
116 It's possible to load a custom configuration file using the -c flag.
118 telescope will also load a file called config-TERM, where TERM is the
119 name of the terminal type (i.e. the TERM environment variable), if it
120 exists.
122 The format of the configuration file is fairly flexible. The current
123 line can be extended over multiple ones using a backslash (\).
124 Comments can be put anywhere in the file using a hash mark (#), and
125 extend to the end of the current line, but backslashes can't be used to
126 extend comments over multiple lines.
128 The following constructs are available:
130 bind map key cmd
131 Bind key to the function cmd in the keymap map. Valid values for
132 map are global-map (i.e. when the user is viewing a page) and
133 minibuffer-map (i.e. when the minibuffer has the focus.) key
134 follows the same syntax described in DEFAULT KEY BINDINGS and all
135 the possible functions are listed in INTERACTIVE COMMANDS.
137 proxy proto via url
138 Use url as proxy for all URLs with protocol proto. url must be a
139 Gemini URI without path, query and fragment component.
141 set opt = val
142 Set the option opt to the value val. Valid options are:
144 autosave (integer) If greater than zero, save the session
145 after the specified amount of seconds after some
146 events happens (new or closed tabs, visited a link
147 ...) Defaults to 20.
148 dont-wrap-pre (integer) If nonzero, don't wrap preformatted
149 blocks. Defaults to 0.
150 download-path (string) The default download path. Defaults to
151 /tmp.
152 emojify-link (integer) If nonzero, when the text of a link
153 starts with an emoji followed by a space, use that
154 emoji as line prefix. Defaults to 1.
155 enable-colors (integer) If nonzero, enable colours. Defaults to
156 0 if NO_COLORS is set, 1 otherwise.
157 fill-column (integer) If greater than zero, lines of text will
158 be formatted in a way that don't exceed the given
159 number of columns. Defaults to 80.
160 fringe-ignore-offset
161 (integer) If nonzero, the fringe doesn't obey to
162 olivetti-mode. Defaults to 1.
163 hide-pre-blocks
164 (integer) If nonzero, hide by default the body of
165 the preformatted blocks. Defaults to zero.
166 push-button can be used to toggle the visibility
167 per-block.
168 hide-pre-closing-line
169 (integer) If nonzero, hide the closing line of
170 preformatted blocks. Defaults to 0.
171 hide-pre-context
172 (integer) If nonzero, hide the start and end line
173 of the preformatted blocks. If both hide-pre-
174 context and hide-pre-blocks are nonzero,
175 preformatted blocks are irremediably hidden.
176 Defaults to zero.
177 new-tab-url (string) URL for the new tab page. Defaults to
178 about:new.
179 max-killed-tabs
180 (integer) The maximum number of closed tabs to
181 keep track of, defaults to 10. Must be a positive
182 number; if zero, don't save closed tabs at all.
183 olivetti-mode (integer) If nonzero, enable olivetti-mode
184 Defaults to 1.
185 tab-bar-show (integer) If tab-bar-show is -1 hide the tab bar
186 permanently, if 0 show it unconditionally. If
187 it's 1, show the bar only when there is more than
188 one tab. Defaults to 1.
189 update-title (integer) If nonzero, set the terminal title to
190 the page title. Defaults to 1.
192 style name option
193 Change the styling of the element identified by name. Multiple
194 options may be specified within curly braces. Valid style
195 identifiers are:
196 line the area outside the lines in the
197 body of the page.
198 line.compl the completions.
199 line.compl.current the current completion.
200 line.help text in the *Help* buffer.
201 line.download.ongoing an ongoing download
202 line.download.done a completed download
203 line.download.info informational text in the
204 *Downloads* buffer.
205 line.fringe (virtual) lines draw after the end
206 of a buffer.
207 line.text text lines.
208 line.link link lines.
209 line.title1..3 headings
210 line.item item lines.
211 line.quote quotes.
212 line.pre.start the heading of a preformatted block.
213 line.pre the content of a preformatted block.
214 line.pre.end the closing line of a preformatted
215 block.
216 download the download pane
217 minibuffer the minibuffer.
218 modeline the modeline.
219 tabline the tabline.
220 tabline.tab the non-focused tabs.
221 tabline.current the focused tab.
223 Valid options are:
225 attr prefix [line [trail]]
226 Sets the text attributes. If only one value is given,
227 line and trail default to that; if two values are given
228 then trail defaults to prefix. Each attribute is a
229 comma-separated list of keywords:
230 normal no attributes.
231 standout best highlighting mode for the terminal.
232 underline underlines the text.
233 reverse reverses background/foreground colors.
234 blink makes the text blinking.
235 dim half bright.
236 bold extra bright or bold.
238 Only the style identifiers with the line. prefix accept
239 up to three attributes. The other will only use the
240 first one given.
242 bg prefix [line [trail]]
243 Sets the background color. Follows the same behaviour as
244 attr regarding the optional parameters. The colour is
245 one of black, red, green, yellow, blue, magenta, cyan and
246 white; colour0 to colour255 (or color0 to color255) from
247 the 256-colour set; default for the default colour.
249 fg prefix [line [trail]]
250 Sets the foreground color. It behaves just like bg.
252 prefix prfx [cont]
253 Sets the prefix for the current line type to prfx and
254 cont as the prefix for the continuation lines (i.e. when
255 a long line gets wrapped.) If cont is not given its value
256 will be the same of prfx.
258 DEFAULT KEY BINDINGS
259 The default key bindings are very similar to GNU Emacs, but care has been
260 taken to include also bindings familiar for vi(1) and CUA users. In
261 the following examples, C-x means Control-x, M-x means Meta-x, where the
262 Meta key may be either a special key on the keyboard or the ALT key;
263 otherwise ESC followed by the key X works as well, and C-M-x means to
264 press the key X together with both Control and Meta.
266 Keys are usually a single character, like p or n, but some special
267 keys are accepted as well.
269 <up> Up arrow
270 <down> Down arrow
271 <left> Left arrow
272 <right> Right arrow
273 <prior> Previous page/Page up
274 <next> Next page/Page down
275 <home> Home
276 <end> End
277 <f0> thru <f63> Function keys
278 del or backspace Backspace
279 esc Escape
280 space or spc Space
281 enter or ret Enter
282 tab Tab
283 backtab Depends on the configuration of the terminal
284 emulator; usually shift tab.
286 GNU Emacs-like keys
287 C-p previous-line
288 C-n next-line
289 C-f forward-char
290 C-b backward-char
291 M-{ backward-paragraph
292 M-} forward-paragraph
293 C-a move-beginning-of-line
294 C-e move-end-of-line
295 M-v, M-space scroll-up
296 C-v, space scroll-down
297 M-< beginning-of-buffer
298 M-> end-of-buffer
299 C-x C-c kill-telescope
300 C-g clear-minibuf
301 M-x execute-extended-command
302 C-c { dec-fill-column
303 C-c } inc-fill-column
304 C-c p previous-heading
305 C-c n next-heading
306 > load-url
307 < load-current-url
308 C-x C-f load-url
309 C-x M-f load-current-url
310 C-x o other-window
311 C-x t 0 tab-close
312 C-x t 1 tab-close-other
313 C-x t 2 tab-new
314 C-x t o tab-next
315 C-x t O tab-previous
316 C-x t m tab-move
317 C-x t M tab-move-to
318 B, C-M-b previous-page
319 F, C-M-f next-page
320 <f7> a bookmark-page
321 <f7> <f7> list-bookmarks
322 C-z suspend-telescope
324 vi(1)-like keys
325 k previous-line
326 j next-line
327 l forward-char
328 h backward-char
329 { backward-paragraph
330 } forward-paragraph
331 ^ move-beginning-of-line
332 $ move-end-of-line
333 K scroll-line-up
334 J scroll-line-down
335 g g beginning-of-buffer
336 G end-of-buffer
337 g D tab-close
338 g N tab-new
339 g t tab-next
340 g T tab-previous
341 g M-t tab-move
342 g M-T tab-move-to
343 H previous-page
344 L next-page
345 u tab-undo-close
346 q kill-telescope
347 ESC clear-minibuf
348 : execute-extended-command
350 CUA-like keys
351 <up> previous-line
352 <down> next-line
353 <right> forward-char
354 <left> backward-char
355 <home> move-beginning-of-line
356 <end> move-end-of-line
357 <prior> scroll-up
358 <next> scroll-down
359 C-w tab-close
360 C-t tab-new
361 M-<prior> tab-previous
362 M-<next> tab-next
363 del previous-page
364 M-<left> previous-page
365 M-<right> next-page
366 <f5> reload-page
367 r reload-page
369 Neither Emacs nor vi specific
370 <f1> toggle-help
371 enter push-button
372 M-enter push-button-new-tab
373 M-tab previous-button
374 backtab previous-button
375 tab next-button
376 M-t tab-select
377 [ tab-previous
378 ] tab-next
379 M-[ tab-move-to
380 M-] tab-move
381 M-l link-select
382 M-/ swiper
383 M-r reply-last-input
385 Minibuffer-specific keys
386 enter mini-complete-and-exit
387 C-g mini-abort
388 ESC mini-abort
389 C-d mini-delete-char
390 del mini-delete-backward-char
391 backspace mini-delete-backward-char
392 C-h mini-delete-backward-char
393 C-b backward-char
394 C-f forward-char
395 <left> backward-char
396 <right> forward-char
397 C-e move-end-of-line
398 C-a move-beginning-of-line
399 <end> move-end-of-line
400 <home> move-beginning-of-line
401 C-k mini-kill-line
402 M-p mini-previous-history-element
403 M-n mini-next-history-element
404 C-p previous-completion
405 C-n next-completion
406 <up> previous-completion
407 <down> next-completion
408 tab insert-current-candidate
409 M-< mini-goto-beginning
410 M-> mini-goto-end
412 INTERACTIVE COMMANDS
413 Follows the documentation for the interactive commands. These commands
414 can be bound to a key or executed with execute-extended-command.
416 Movement commands
417 backward-char Move point one character backward.
418 backward-paragraph Move point one paragraph backward.
419 beginning-of-buffer Move point to the beginning of the buffer.
420 end-of-buffer Move point to the end of the buffer.
421 forward-char Move point one character forward.
422 forward-paragraph Move point one paragraph forward.
423 insert-current-candidate Copy the current selection text as minibuffer
424 input.
425 move-beginning-of-line Move point at the beginning of the current
426 (visual) line.
427 move-end-of-line Move point at the end of the current (visual)
428 line.
429 next-button Move point to the next link.
430 next-completion Select the next completion.
431 next-heading Move point to the next heading.
432 next-line Move point to the next (visual) line, in the
433 same column if possible.
434 previous-button Move point to the previous link.
435 previous-completion Select the previous completion.
436 previous-heading Move point to the previous heading.
437 previous-line Move point to the previous (visual) line.
439 Bookmark-related commands
440 bookmark-page Save a page in the bookmark file. It preloads
441 the minibuffer with the current URL.
442 list-bookmarks Load the bookmarks page.
444 Tab-related commands
445 tab-close Close the current tab.
446 tab-close-other Close all tabs but the current one.
447 tab-move Move the current tab after the next one,
448 wrapping around if needed.
449 tab-move-to Move the current tab before the previous one,
450 wrapping around if needed.
451 tab-new Open a new tab.
452 tab-next Focus next tab, wrapping around eventually.
453 tab-previous Focus the previous tab, wrapping around
454 eventually.
455 tab-select Switch to a tab using the minibuffer.
456 tab-undo-close Re-open the most recently closed tab, if any.
458 Misc commands
459 cache-info Show cache stats.
460 clear-minibuf Clear the echo area.
461 dec-fill-column Decrement fill-column by two.
462 execute-extended-command Execute an internal command.
463 kill-telescope Quit telescope.
464 inc-fill-column Increment fill-column by two.
465 link-select Select and visit a link using the minibuffer.
466 load-current-url Edit the current URL.
467 load-url Prompt for an URL.
468 next-page Go forward in the page history.
469 olivetti-mode Toggle olivetti mode (i.e. horizontal centering
470 of the lines of the window.)
471 other-window Select the other window.
472 previous-page Go backward in the page history.
473 push-button Follow link at point, or toggle the visibility
474 of the following preformatted block if called
475 when the cursor is on the heading of the block.
476 push-button-new-tab Follow link at point in a new tab.
477 redraw Redraw the screen, useful if some background
478 program messed up the display.
479 reload-page Reload the current page.
480 reply-last-input Reply the last input request.
481 scroll-down Scroll down by one visual page.
482 scroll-line-down Scroll down by one line.
483 scroll-line-up Scroll up by one line.
484 scroll-up Scroll up by one visual page.
485 suspend-telescope Suspend the current telescope session.
486 swiper Jump to a line using the minibuffer.
487 toc Jump to a heading using the minibuffer.
488 toggle-help Toggle side window with help about available
489 keys and their associated interactive command.
490 toggle-pre-wrap Toggle the wrapping of preformatted blocks.
492 Minibuffer commands
493 mini-abort Abort the current minibuffer action.
494 mini-complete-and-exit Complete the current minibuffer action.
495 mini-delete-backward-char
496 Delete the character before the point.
497 mini-delete-char Delete the character after the point.
498 mini-goto-beginning Select the first completion, if any.
499 mini-goto-end Select the last completion, if any.
500 mini-kill-line Delete from point until the end of the line.
501 mini-next-history-element
502 Load the previous history element.
503 mini-previous-history-element
504 Load the next history element.
506 Aliases
507 The following aliases are available during execute-extended-command:
508 open load-url
509 tabn tab-next
510 tabnew tab-new
511 tabp tab-previous
512 q and wq kill-telescope
514 ENVIRONMENT
515 When telescope is started, it inspects the following environment
516 variables:
518 HOME The user's login directory.
520 NO_COLORS To decide whether to use colors or not. The content of the
521 variable doesn't matter.
523 TERM The user's terminal name.
525 XDG_CACHE_HOME, XDG_CONFIG_HOME, XDG_DATA_HOME
526 If defined can alter the default location of the files used.
528 FILES
529 By default telescope follows the XDG Base Directory Specification.
530 However, if ~/.telescope exists, XDG is ignored and all the files are
531 stored inside it. The usage of XDG_CACHE_HOME, XDG_CONFIG_HOME and
532 XDG_DATA_HOME can further alter the location of these files.
534 ~/.config/telescope/config
535 Default configuration file.
536 ~/.local/share/telescope/pages/about_*.gmi
537 Overrides for built-in about: pages.
538 ~/.local/share/telescope/bookmarks.gmi
539 Bookmarks file.
540 ~/.local/share/telescope/known_hosts
541 Hash of the certificates for all the known hosts. Each line
542 contains three fields: hostname with optional port number, hash
543 of the certificate and a numeric flag.
544 ~/.cache/telescope/lock
545 Lock file used to prevent multiple instance of telescope from
546 running at the same time.
547 ~/.cache/telescope/session
548 The list of tabs from the last session.
550 EXAMPLES
551 It's possible to browse the small web (i.e. simple websites) by using
552 programs like the duckling-proxy by defining a proxy in
553 ~/.config/telescope/config:
555 proxy http via "gemini://127.0.0.1:1965"
556 proxy https via "gemini://127.0.0.1:1965"
558 To load telescope without any configuration
560 telescope -c /dev/null
562 STANDARDS
563 XDG Base Directory Specification,
564 https://specifications.freedesktop.org/basedir-spec/latest/.
566 ACKNOWLEDGEMENTS
567 The Trust, but verify (where appropriate) TOFU scheme was firstly
568 suggested by thfr: gemini://thfr.info/gemini/modified-trust-verify.gmi.
570 AUTHORS
571 The telescope program was written by Omar Polo <op@omarpolo.com>.
573 CAVEATS
574 telescope assumes a UTF-8 environment and doesn't try to cope with other
575 encodings. This can cause strange rendering issues if you're lucky, or
576 possibly weird thing happening depending on your locale and terminal
577 emulator.
579 The algorithm used for text-wrapping is naive and doesn't really work for
580 languages that make heavily use of glyphs composed by multiple UNICODE
581 codepoints.
583 BUGS
584 There's no UI for out-of-band certificates validation.
586 OpenBSD 7.1 January 5, 2022 OpenBSD 7.1