{"id":13436678,"url":"https://github.com/any1/wayvnc","last_synced_at":"2025-05-14T15:09:29.111Z","repository":{"id":39619740,"uuid":"213255828","full_name":"any1/wayvnc","owner":"any1","description":"A VNC server for wlroots based Wayland compositors","archived":false,"fork":false,"pushed_at":"2025-03-30T18:03:19.000Z","size":812,"stargazers_count":1283,"open_issues_count":30,"forks_count":74,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-04-12T01:51:53.512Z","etag":null,"topics":["remote-desktop","sway","vnc","wayland","wlroots"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/any1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":"FUNDING.yml","license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"any1","patreon":"andriyngvason"}},"created_at":"2019-10-06T22:51:03.000Z","updated_at":"2025-04-11T06:31:18.000Z","dependencies_parsed_at":"2023-12-17T15:26:15.133Z","dependency_job_id":"7047c64d-670e-4b26-bb4a-35261fdbb0b7","html_url":"https://github.com/any1/wayvnc","commit_stats":{"total_commits":628,"total_committers":32,"mean_commits":19.625,"dds":0.3073248407643312,"last_synced_commit":"f5c5fc856355b6e2f62047c7ec375fd8453f08d9"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/any1%2Fwayvnc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/any1%2Fwayvnc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/any1%2Fwayvnc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/any1%2Fwayvnc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/any1","download_url":"https://codeload.github.com/any1/wayvnc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248505873,"owners_count":21115354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["remote-desktop","sway","vnc","wayland","wlroots"],"created_at":"2024-07-31T03:00:51.210Z","updated_at":"2025-04-12T01:52:07.778Z","avatar_url":"https://github.com/any1.png","language":"C","funding_links":["https://github.com/sponsors/any1","https://patreon.com/andriyngvason"],"categories":["C","Install from Source","others"],"sub_categories":["Remote Access"],"readme":"# wayvnc\n\n[![Build and Unit Test](https://github.com/any1/wayvnc/actions/workflows/build.yml/badge.svg)](https://github.com/any1/wayvnc/actions/workflows/build.yml)\n[![builds.sr.ht status](https://builds.sr.ht/~andri/wayvnc.svg)](https://builds.sr.ht/~andri/wayvnc?)\n[![Packaging status](https://repology.org/badge/tiny-repos/wayvnc.svg)](https://repology.org/project/wayvnc/versions)\n\n## Introduction\nThis is a VNC server for wlroots-based Wayland compositors (:no_entry: Gnome,\nKDE and Weston are **not** supported). It attaches to a running Wayland session,\ncreates virtual input devices, and exposes a single display via the RFB\nprotocol. The Wayland session may be a headless one, so it is also possible\nto run wayvnc without a physical display attached.\n\nPlease check the [FAQ](FAQ.md) for answers to common questions. For further\nsupport, join the #wayvnc IRC channel on libera.chat, or ask your questions on the\nGitHub [discussion forum](https://github.com/any1/wayvnc/discussions) for the\nproject.\n\n## Building\n### Runtime Dependencies\n * aml\n * drm\n * gbm (optional)\n * libxkbcommon\n * neatvnc\n * pam (optional)\n * pixman\n * jansson\n\n### Build Dependencies\n * GCC\n * meson\n * ninja\n * pkg-config\n\n#### For Arch Linux\n```\npacman -S base-devel libglvnd libxkbcommon pixman gnutls jansson\n```\n\n#### For Fedora 37\n```\ndnf install -y meson gcc ninja-build pkg-config egl-wayland egl-wayland-devel \\\n\tmesa-libEGL-devel mesa-libEGL libwayland-egl libglvnd-devel \\\n\tlibglvnd-core-devel libglvnd mesa-libGLES-devel mesa-libGLES \\\n\tlibxkbcommon-devel libxkbcommon libwayland-client \\\n\tpam-devel pixman-devel libgbm-devel libdrm-devel scdoc \\\n\tlibavcodec-free-devel libavfilter-free-devel libavutil-free-devel \\\n\tturbojpeg-devel\twayland-devel gnutls-devel jansson-devel\n```\n\n#### For Debian (unstable / testing)\n```\napt build-dep wayvnc\n```\n\n#### For Ubuntu\n```\napt install meson libdrm-dev libxkbcommon-dev libwlroots-dev libjansson-dev \\\n\tlibpam0g-dev libgnutls28-dev libavfilter-dev libavcodec-dev \\\n\tlibavutil-dev libturbojpeg0-dev scdoc\n```\n\n#### Additional build-time dependencies\n\nThe easiest way to satisfy the neatvnc and aml dependencies is to link to them\nin the subprojects directory:\n```\ngit clone https://github.com/any1/wayvnc.git\ngit clone https://github.com/any1/neatvnc.git\ngit clone https://github.com/any1/aml.git\n\nmkdir wayvnc/subprojects\ncd wayvnc/subprojects\nln -s ../../neatvnc .\nln -s ../../aml .\ncd -\n\nmkdir neatvnc/subprojects\ncd neatvnc/subprojects\nln -s ../../aml .\ncd -\n```\n\n### Configure and Build\n```\nmeson build\nninja -C build\n```\n\nTo run the unit tests:\n```\nmeson test -C build\n```\n\nTo run the [integration tests](test/integration/README.md):\n```\n./test/integration/integration.sh\n```\n\n## Running\nWayvnc can be run from the build directory like so:\n```\n./build/wayvnc\n```\n\n:radioactive: The server only accepts connections from localhost by default. To\naccept connections via any interface, set the address to `0.0.0.0` like this:\n```\n./build/wayvnc 0.0.0.0\n```\n\n:warning: Do not do this on a public network or the internet without\nuser authentication enabled. The best way to protect your VNC connection is to\nuse SSH tunneling while listening on localhost, but users can also be\nauthenticated when connecting to wayvnc.\n\n### Encryption \u0026 Authentication\n\n#### VeNCrypt (TLS)\nFor TLS, you'll need a private X509 key and a certificate. A self-signed key\nwith a certificate can be generated like so:\n```\ncd ~/.config/wayvnc\nopenssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:secp384r1 -sha384 \\\n\t-days 3650 -nodes -keyout tls_key.pem -out tls_cert.pem \\\n\t-subj /CN=localhost \\\n\t-addext subjectAltName=DNS:localhost,DNS:localhost,IP:127.0.0.1\ncd -\n```\nReplace `localhost` and `127.0.0.1` in the command above with your public facing\nhost name and IP address, respectively, or just keep them as is if you're\ntesting locally.\n\nCreate a config with the authentication info and load it using the `--config`\ncommand line option or place it at the default location\n`$HOME/.config/wayvnc/config`.\n```\nuse_relative_paths=true\naddress=0.0.0.0\nenable_auth=true\nusername=luser\npassword=p455w0rd\nprivate_key_file=tls_key.pem\ncertificate_file=tls_cert.pem\n```\n\n#### RSA-AES\nThe RSA-AES security type combines RSA with AES in EAX mode to provide secure\nauthentication and encryption that's resilient to eavesdropping and MITM. Its\nmain weakness is that the user has to verify the server's credentials on first\nuse. Thereafter, the client software should warn the user if the server's\ncredentials change. It's a Trust on First Use (TOFU) scheme as employed by SSH.\n\nFor the RSA-AES to be enabled, you need to generate an RSA key. This can be\nachieved like so:\n```\nssh-keygen -m pem -f ~/.config/wayvnc/rsa_key.pem -t rsa -N \"\"\n```\n\nYou also need to tell wayvnc where this file is located, by setting setting the\n`rsa_private_key_file` configuration parameter:\n```\nuse_relative_paths=true\naddress=0.0.0.0\nenable_auth=true\nusername=luser\npassword=p455w0rd\nrsa_private_key_file=rsa_key.pem\n```\n\nYou may also add credentials for TLS in combination with RSA. The client will\nchoose.\n\n### wayvncctl control socket\n\nTo facilitate runtime interaction and control, wayvnc opens a unix domain socket\nat *$XDG_RUNTIME_DIR*/wayvncctl (or a fallback of /tmp/wayvncctl-*$UID*). A\nclient can connect and exchange json-formatted IPC messages to query and control\nthe running wayvnc instance.\n\nUse the `wayvncctl` utility to interact with this control socket from the\ncommand line.\n\nSee the `wayvnc(1)` manpage for an in-depth description of the IPC protocol and\nthe available commands, and `wayvncctl(1)` for more on the command line\ninterface.\n\nThere is also a handy event-loop mode that can be used to run commands when\nvarious events occur in wayvnc. See\n[examples/event-watcher](examples/event-watcher) for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fany1%2Fwayvnc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fany1%2Fwayvnc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fany1%2Fwayvnc/lists"}