💾 Archived View for gemini.rmf-dev.com › repo › Vaati › Vgmi › files › 23dfe99b384bff68aa3636d7e9a80… captured on 2023-12-28 at 15:41:23. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Go Back

0 # Vgmi

1

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

3

4 ![pic0](./img/img4.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 to the previous page

13 * l - Go forward to the next page

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 * b - Open about:bookmarks in a new tab

20 * f - Open about:history in a new tab

21 * r - Reload the page

22 * [number]Tab - Select link

23 * Tab - Follow selected link

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

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

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

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

40 * :help - Open about:help in a new tab

41

42 ## Sandboxing

43

44 ### FreeBSD

45 On FreeBSD, Vgmi uses [capsicum(4)][1] to limit the filesystem and to enter

46 capability mode, it also uses [cap_net(3)][2] for networking while in capability

47 mode.

48

49 ### OpenBSD

50 On OpenBSD, Vgmi uses [unveil(2)][3] to limit access to the filesystem and

51 [pledge(2)][4] to restrict the capabilities of the program.

52

53 ### Linux

54 On Linux, Vgmi uses [seccomp(2)][5] to restrict system calls and

55 [landlock(7)][6] to restrict the filesystem.

56

57 ### Illumos and Solaris

58 On Illumos and Solaris, Vgmi uses [privileges(7)][7] to isolate the

59 parser processes.

60

61 On top of sandboxing the main process, Vgmi forks itself to parse foreign data

62 in completely isolated and sandboxed processes.

63

64 ## Dependencies

65

66 * [LibreSSL][8] - fork of OpenSSL developed by the OpenBSD project

67 * [termbox2][9] - terminal rendering library

68

69 ### Optional dependency

70 * [stb-image][10] - image loading library

71

72 ## Building

73

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

75

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

77 [1]: https://www.freebsd.org/cgi/man.cgi?query=capsicum

78 [2]: https://www.freebsd.org/cgi/man.cgi?query=cap_net

79 [3]: https://man.openbsd.org/unveil

80 [4]: https://man.openbsd.org/pledge

81 [5]: https://man7.org/linux/man-pages/man2/seccomp.2.html

82 [6]: https://man7.org/linux/man-pages/man7/Landlock.7.html

83 [7]: https://www.illumos.org/man/7/privileges

84 [8]: https://www.libressl.org/

85 [9]: https://github.com/termbox/termbox2

86 [10]: https://github.com/nothings/stb/blob/master/stb_image.h

87