0 # Vgmi
1
2 Gemini client written in C with vim-like keybindings
3
4 ## Keybindings
5
6 * k - Scroll up
7 * j - Scroll down
8 * gT - Switch to the previous tab
9 * gt - Switch to the next tab
10 * H - Go back in the history
11 * L - Go forward in the history
12 * gg - Go at the top of the page
13 * G - Go at the bottom of the page
14 * / - Open search mode
15 * : - Open input mode
16 * u - Open input mode with the current url
17 * f - Show the history
18 * r - Reload the page
19 * [number]Tab - Select link
20 * Tab - Follow selected link
21 * Shift+Tab - Open selected link in a new tab
22 * Del - Delete the selected link from the bookmarks
23
24 You can prefix a movement key with a number to repeat it.
25
26 ## Commands
27
28 * :q - Close the current tab
29 * :qa - Close all tabs, exit the program
30 * :o [url] - Open an url
31 * :s [search] - Search the Geminispace using geminispace.info
32 * :nt [url] - Open a new tab, the url is optional
33 * :add [name] - Add the current url to the bookmarks, the name is optional
34 * :[number] - Scroll to the line number
35 * :gencert - Generate a certificate for the current capsule
36 * :forget [host] - Forget the certificate for the host
37 * :ignore [host] - Ignore expiration for the host certificate
38 * :download [name] - Download the current page, the name is optional
39 * :exec - Open the last downloaded file
40
41 ## Sandboxing
42
43 ### FreeBSD
44 On FreeBSD, Vgmi uses Capsicum to limit the filesystem and to enter capability mode, it also uses Casper for networking while in capability mode
45
46 ### OpenBSD
47 On OpenBSD, Vgmi uses Unveil to limit access to the filesystem and Pledge to restrict the capabilities of the program
48
49 ### Linux
50 On Linux, Vgmi uses Seccomp to restrict system calls and LandLock to restrict the filesystem
51
52 ### Illumos and Solaris
53 On Illumos and Solaris, Vgmi uses Privileges, separating read, write and networking privileges in different processes
54
55 ## Dependencies
56
57 https://www.libressl.org/ LibreSSL - fork of OpenSSL developed by the OpenBSD project
58 https://github.com/termbox/termbox2 termbox2 - terminal rendering library
59
60 ### Optional dependency
61 https://github.com/nothings/stb/blob/master/stb_image.h stb-image - image loading library
62
63 ## Building
64
65 Executing the build.sh script will download all dependencies and build Vgmi
66