• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

include/H16-Dec-2021-1,046493

protocols/H16-Dec-2021-1,6131,357

src/H16-Dec-2021-4,1613,052

util/H16-Dec-2021-12189

.gitignoreH A D16-Dec-202179 98

CONTRIBUTING.mdH A D16-Dec-20211.4 KiB3626

COPYINGH A D16-Dec-2021739 1411

FAQ.mdH A D16-Dec-2021853 2518

README.mdH A D16-Dec-20213.2 KiB127105

meson.buildH A D03-May-20223.4 KiB166139

meson.build.nogitH A D16-Dec-20213.4 KiB166139

wayvnc.pamH A D16-Dec-2021120 32

wayvnc.scdH A D16-Dec-20214.2 KiB174118

README.md

1# wayvnc
2
3## Introduction
4This is a VNC server for wlroots based Wayland compositors. It attaches to a
5running Wayland session, creates virtual input devices and exposes a single
6display via the RFB protocol. The Wayland session may be a headless one, so it
7is also possible to run wayvnc without a physical display attached.
8
9Please check the [FAQ](FAQ.md) for answers to common questions. For further
10support, join the #wayvnc IRC channel on freenode, or ask your questions on the
11GitHub [discussion forum](https://github.com/any1/wayvnc/discussions) for the
12project.
13
14## Installing
15```
16# archlinux
17yay -S wayvnc
18
19# FreeBSD
20pkg install wayvnc
21
22# Fedora
23dnf install wayvnc
24
25# openSUSE Tumbleweed
26zypper install wayvnc
27
28# Void Linux
29xbps-install wayvnc
30```
31
32## Building
33### Runtime Dependencies
34 * aml
35 * drm
36 * gbm (optional)
37 * libxkbcommon
38 * neatvnc
39 * pam (optional)
40 * pixman
41
42### Build Dependencies
43 * GCC
44 * meson
45 * ninja
46 * pkg-config
47
48#### For archlinux
49```
50pacman -S base-devel libglvnd libxkbcommon pixman gnutls
51```
52
53#### For fedora 31
54```
55dnf install -y meson gcc ninja-build pkg-config egl-wayland egl-wayland-devel \
56	mesa-libEGL-devel mesa-libEGL libwayland-egl libglvnd-devel \
57	libglvnd-core-devel libglvnd mesa-libGLES-devel mesa-libGLES \
58	libxkbcommon-devel libxkbcommon libwayland-client libwayland \
59	wayland-devel gnutls-devel
60```
61
62The easiest way to satisfy the neatvnc and aml dependencies is to link to them
63in the subprojects directory:
64```
65git clone https://github.com/any1/wayvnc.git
66git clone https://github.com/any1/neatvnc.git
67git clone https://github.com/any1/aml.git
68
69mkdir wayvnc/subprojects
70cd wayvnc/subprojects
71ln -s ../../neatvnc .
72ln -s ../../aml .
73cd -
74
75mkdir neatvnc/subprojects
76cd neatvnc/subprojects
77ln -s ../../aml .
78cd -
79
80meson build
81ninja -C build
82```
83
84## Running
85Wayvnc can be run from the build directory like so:
86```
87./build/wayvnc
88```
89
90:radioactive: The server only accepts connections from localhost by default. To
91accept connections via any interface, set the address to `0.0.0.0` like this:
92```
93./build/wayvnc 0.0.0.0
94```
95
96:warning: Do not do this on a public network or the internet without
97user authentication enabled. The best way to protect your VNC connection is to
98use SSH tunneling while listening on localhost, but users can also be
99authenticated when connecting to Wayvnc.
100
101### Encryption & Authentication
102You'll need a private X509 key and a certificate. A self signed key with a
103certificate can be generated like so:
104```
105openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
106	-keyout key.pem -out cert.pem -subj /CN=localhost \
107	-addext subjectAltName=DNS:localhost,DNS:localhost,IP:127.0.0.1
108```
109Replace `localhost` and `127.0.0.1` in the command above with your public facing
110host name and IP address, respectively, or just keep them as is if you're
111testing locally.
112
113Create a config with the authentication info and load it using the `--config`
114command line option or place it at the default location
115`$HOME/.config/wayvnc/config`.
116```
117address=0.0.0.0
118enable_auth=true
119username=luser
120password=p455w0rd
121private_key_file=/path/to/key.pem
122certificate_file=/path/to/cert.pem
123```
124
125## Compatible Software
126See https://github.com/any1/neatvnc#client-compatibility
127