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