Go Back

0 # Vgmi

1

2 [Gemini][0] client written in C with vim-like keybindings

3

4 ![pic0](./img/img1.png)

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 in the history

13 * L - Go forward in the history

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 * f - Show the history

20 * r - Reload the page

21 * [number]Tab - Select link

22 * Tab - Follow selected link

23 * Shift+Tab - Open selected link in a new tab

24 * Del - Delete the selected link from the bookmarks

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 certificate for the current capsule

38 * :forget [host] - Forget the certificate for the host

39 * :ignore [host] - Ignore expiration for the host certificate

40 * :download [name] - Download the current page, the name is optional

41 * :exec - Open the last downloaded file

42

43 ## Sandboxing

44

45 ### FreeBSD

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

47

48 ### OpenBSD

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

50

51 ### Linux

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

53

54 ### Illumos and Solaris

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

56

57 ## Dependencies

58

59 * [LibreSSL][1] - fork of OpenSSL developed by the OpenBSD project

60 * [termbox2][2] - terminal rendering library

61

62 ### Optional dependency

63 * [stb-image][3] - image loading library

64

65 ## Building

66

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

68

69 [0]: https://gemini.circumlunar.space/

70 [1]: https://www.libressl.org/

71 [2]: https://github.com/termbox/termbox2

72 [3]: https://github.com/nothings/stb/blob/master/stb_image.h

73