0 # Vgmi
1
2 Gemini client written in C with vim-like keybindings
3
4 ## Screenshots
5
6 =>img/img1.png On Konsole 1.6.6
7 =>img/img2.png On gnome terminal
8 =>img/img3.png On uxterm
9
10 ## Statically linked binaries
11
12 ### x86_64
13 =>/static/vgmi/vgmi_linux_x86_64 Linux
14 =>/static/vgmi/vgmi_openbsd_x86_64 OpenBSD
15 =>/static/vgmi/vgmi_netbsd_x86_64 NetBSD
16 =>/static/vgmi/vgmi_freebsd_x86_64 FreeBSD
17 =>/static/vgmi/vgmi_illumos_x86_64 Illumos
18
19 ### aarch64
20 =>/static/vgmi/vgmi_linux_aarch64 Linux
21 =>/static/vgmi/vgmi_freebsd_aarch64 FreeBSD
22
23 ## Bug reports
24
25 If you find a bug you can send an email at rawmonk@firemail.cc, or send a message to Vaati on GmiChat
26 =>gemini://chat.rmf-dev.com GmiChat
27
28 It's also possible to open an issue on the Github page
29 =>https://github.com/RealMelkor/Vgmi Github
30
31 ## Keybindings
32
33 * k - Scroll up
34 * j - Scroll down
35 * gT - Switch to the previous tab
36 * gt - Switch to the next tab
37 * H - Go back in the history
38 * L - Go forward in the history
39 * gg - Go at the top of the page
40 * G - Go at the bottom of the page
41 * / - Open search mode
42 * : - Open input mode
43 * u - Open input mode with the current url
44 * f - Show the history
45 * r - Reload the page
46 * [number]Tab - Select link
47 * Tab - Scroll to the line number
48 * Shift+Tab - Open selected link in a new tab
49 * Del - Delete the selected link from the bookmarks
50
51 You can prefix a movement key with a number to repeat it.
52
53 ## Commands
54
55 * :q - Close the current tab
56 * :qa - Close all tabs, exit the program
57 * :o [url] - Open an url
58 * :s [search] - Search the Geminispace using geminispace.info
59 * :nt [url] - Open a new tab, the url is optional
60 * :add [name] - Add the current url to the bookmarks, the name is optional
61 * :[number] - Follow the link
62 * :gencert - Generate a certificate for the current capsule
63 * :forget [host] - Forget the certificate for the host
64 * :ignore [host] - Ignore expiration for the host certificate
65 * :download [name] - Download the current page, the name is optional
66 * :exec - Open the last downloaded file
67
68 ## Sandboxing
69
70 ### FreeBSD
71 On FreeBSD, Vgmi uses Capsicum to limit the filesystem and to enter capability mode, it also uses Casper for networking while in capability mode
72
73 ### OpenBSD
74 On OpenBSD, Vgmi uses Unveil to limit access to the filesystem and Pledge to restrict the capabilities of the program
75
76 ### Linux
77 On Linux, Vgmi uses Seccomp to restrict system calls and LandLock to restrict the filesystem
78
79 ### Illumos and Solaris
80 On Illumos and Solaris, Vgmi uses Privileges, separating read, write and networking privileges in different processes
81
82 ## Dependencies
83
84 => https://www.libressl.org/ LibreSSL - fork of OpenSSL developed by the OpenBSD project
85 => https://github.com/termbox/termbox2 termbox2 - terminal rendering library
86
87 ### Optional dependency
88 => https://github.com/nothings/stb/blob/master/stb_image.h stb-image - image loading library
89
90 ## Building
91
92 Executing the build.sh script will download all dependencies and build Vgmi
93