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 * :download [name] - Download the current page, the name is optional

38 * :exec - Open the last downloaded file

39

40 ## Sandboxing

41

42 ### FreeBSD

43 On FreeBSD, Vgmi uses Capsicum to limit the filesystem and to enter capability mode, it also uses Casper for networking while in capability mode

44

45 ### OpenBSD

46 On OpenBSD, Vgmi uses Unveil to limit access to the filesystem and Pledge to restrict the capabilities of the program

47

48 ### Linux

49 On Linux, Vgmi uses Seccomp to restrict system calls and LandLock to restrict the filesystem

50

51 ### Illumos

52 On Illumos, Vgmi uses Privileges, separating read, write and networking privileges in different processes

53

54 ## Dependencies

55

56 https://www.libressl.org/ LibreSSL - fork of OpenSSL developed by the OpenBSD project

57 https://github.com/termbox/termbox2 termbox2 - terminal rendering library

58

59 ### Optional dependency

60 https://github.com/nothings/stb/blob/master/stb_image.h stb-image - image loading library

61

62 ## Building

63

64 Executing the build.sh script will download all dependencies and build Vgmi

65