Client RFB/VNC asynchrone pur Python, fork d'asyncvnc2 (Tight/Hextile/ZlibHex, curseur, resize, Fence/ContinuousUpdates) + 23 patches vérifiés.
Pensé comme la bibliothèque VNC pour Gcm4 (Gnome Connection Manager 4) — consommée par le plugin pluginvnc2 (plugins/pluginvnc2/vnc_tab.py).
import asyncio
import asyncvnc2
async def main():
async with asyncvnc2.connect("192.168.1.10", password="secret") as client:
print(client.name, client.width, "x", client.height)
client.keyboard.write("hello")
frame = await client.capture()
asyncio.run(main())50 tests unitaires, ruff check à 0 signalement, ruff format idempotent. 23 patches appliqués, tous vérifiés par exécution réelle ou contre une spec faisant autorité (RFC 6143, rfbproto.rst, code source QEMU/TigerVNC).
Détail complet dans CLAUDE.md, docs/features-backlog.md et docs/sessions/.
| Catégorie | Fonctionnalités |
|---|---|
| Encodages | Tight, ZRLE, Hextile, CoRRE, RRE, Copy, Curseur, ZYWRLE (à perte, opt-in) |
| Authentification | VNC Auth, Apple ARD, VeNCrypt (6 sous-types), RSA-AES (RA2/RA2_256), MSLogonII, SASL (PLAIN/ANONYMOUS) |
| Transport | WebSockets (client + serveur), reconnexion inversée (listen()), repli 3.3/3.7/3.8 |
| Extensions | xvp, Extended Clipboard, QEMU Extended Key Event, send_set_desktop_size() |
| Sécurité | Plafonds anti-DoS, journalisation d'audit, confirmation avant commandes destructives |
uv sync # environnement isolé
uv run pytest test_asyncvnc2.py -v
uv run ruff check asyncvnc2.py test_asyncvnc2.pyDépendances : numpy, loguru, cryptography, keysymdef. Python >= 3.9 (python3 système de RHEL/Rocky 9 compris, issue #35), vérifié en CI.
- Sessions fermées : #1–#21
- Travaux restants : #22–#35 (14 issues ouvertes)
- Tableau récapitulatif :
docs/features-backlog.md§ Suivi des issues GitHub
Ce dépôt fait partie de l'écosystème Gcm4 :
- Gcm4 — Application principale (gestionnaire de connexions GTK4)
- AsyncVnc4 (ce dépôt) — Bibliothèque cliente VNC
- AsyncRdp4 — Bibliothèque cliente RDP
Roadmap d'intégration : Gcm4 #106 Tableau de bord : Gcm4 #107 Annonce du projet : Gcm4 #102
GPL-3.0. Le texte officiel de la GPLv3 se trouve dans LICENSE ; NOTICE donne l'avis des projets amont et les régimes de licence :
asyncvnc2.pydérive d'asyncvnc (Barney Gale) via asyncvnc2 (Andrew Shirayev). Ces deux projets sont publiés sous GPLv3 sans « ou toute version ultérieure », donc le fichier gardeGPL-3.0-only;- le reste du code (tests,
scripts/) est écrit par l'équipe et publié enGPL-3.0-or-later.
Chaque fichier de code porte son en-tête SPDX-License-Identifier. pyproject.toml déclare license = "GPL-3.0-only AND GPL-3.0-or-later". Une relicence en MIT est impossible, car une œuvre dérivée d'un programme GPL-3.0 reste sous GPL-3.0.