💾 Archived View for gemini.rmf-dev.com › repo › Vaati › Vgmi › files › 23dfe99b384bff68aa3636d7e9a80… captured on 2023-12-28 at 15:41:23. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
0 # Vgmi
1
2 [Gemini][0] client written in C with vim-like keybindings.
3
4 
5
6 ## Keybindings
7
8 * k - Scroll up
9 * j - Scroll down
10 * gT - Switch to the previous tab
11 * gt - Switch to the next tab
12 * h - Go back to the previous page
13 * l - Go forward to the next page
14 * gg - Go at the top of the page
15 * G - Go at the bottom of the page
16 * / - Open search mode
17 * : - Open input mode
18 * u - Open input mode with the current url
19 * b - Open about:bookmarks in a new tab
20 * f - Open about:history in a new tab
21 * r - Reload the page
22 * [number]Tab - Select link
23 * Tab - Follow selected link
24 * Shift+Tab - Open selected link in a new tab
25
26 You can prefix a movement key with a number to repeat it.
27
28 ## Commands
29
30 * :q - Close the current tab
31 * :qa - Close all tabs, exit the program
32 * :o [url] - Open an url
33 * :s [search] - Search the Geminispace using geminispace.info
34 * :nt [url] - Open a new tab, the url is optional
35 * :add [name] - Add the current url to the bookmarks, the name is optional
36 * :[number] - Scroll to the line number
37 * :gencert - Generate a client-certificate for the current capsule
38 * :forget [host] - Forget the certificate for the host
39 * :download [name] - Download the current page, the name is optional
40 * :help - Open about:help in a new tab
41
42 ## Sandboxing
43
44 ### FreeBSD
45 On FreeBSD, Vgmi uses [capsicum(4)][1] to limit the filesystem and to enter
46 capability mode, it also uses [cap_net(3)][2] for networking while in capability
47 mode.
48
49 ### OpenBSD
50 On OpenBSD, Vgmi uses [unveil(2)][3] to limit access to the filesystem and
51 [pledge(2)][4] to restrict the capabilities of the program.
52
53 ### Linux
54 On Linux, Vgmi uses [seccomp(2)][5] to restrict system calls and
55 [landlock(7)][6] to restrict the filesystem.
56
57 ### Illumos and Solaris
58 On Illumos and Solaris, Vgmi uses [privileges(7)][7] to isolate the
59 parser processes.
60
61 On top of sandboxing the main process, Vgmi forks itself to parse foreign data
62 in completely isolated and sandboxed processes.
63
64 ## Dependencies
65
66 * [LibreSSL][8] - fork of OpenSSL developed by the OpenBSD project
67 * [termbox2][9] - terminal rendering library
68
69 ### Optional dependency
70 * [stb-image][10] - image loading library
71
72 ## Building
73
74 Executing the build.sh script will download all dependencies and build Vgmi.
75
76 [0]: https://gemini.circumlunar.space/
77 [1]: https://www.freebsd.org/cgi/man.cgi?query=capsicum
78 [2]: https://www.freebsd.org/cgi/man.cgi?query=cap_net
79 [3]: https://man.openbsd.org/unveil
80 [4]: https://man.openbsd.org/pledge
81 [5]: https://man7.org/linux/man-pages/man2/seccomp.2.html
82 [6]: https://man7.org/linux/man-pages/man7/Landlock.7.html
83 [7]: https://www.illumos.org/man/7/privileges
84 [8]: https://www.libressl.org/
85 [9]: https://github.com/termbox/termbox2
86 [10]: https://github.com/nothings/stb/blob/master/stb_image.h
87