{"id":14982694,"url":"https://github.com/zocker-160/pyqvncwidget","last_synced_at":"2025-07-05T09:33:31.556Z","repository":{"id":44753560,"uuid":"385338726","full_name":"zocker-160/pyQVNCWidget","owner":"zocker-160","description":"VNC Widget for Python using PyQt5 ","archived":false,"fork":false,"pushed_at":"2023-09-02T21:34:04.000Z","size":129,"stargazers_count":7,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2023-12-19T17:13:11.662Z","etag":null,"topics":["hacktoberfest","python","qt5","vnc","vnc-client","vnc-viewer"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zocker-160.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-07-12T18:02:32.000Z","updated_at":"2023-11-28T08:42:07.000Z","dependencies_parsed_at":"2023-09-26T03:54:59.249Z","dependency_job_id":null,"html_url":"https://github.com/zocker-160/pyQVNCWidget","commit_stats":{"total_commits":80,"total_committers":4,"mean_commits":20.0,"dds":0.0625,"last_synced_commit":"68ab6de91d3a254b8c72dcf944a0b72d1888c00f"},"previous_names":[],"tags_count":8,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zocker-160%2FpyQVNCWidget","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zocker-160%2FpyQVNCWidget/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zocker-160%2FpyQVNCWidget/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zocker-160%2FpyQVNCWidget/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zocker-160","download_url":"https://codeload.github.com/zocker-160/pyQVNCWidget/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219857515,"owners_count":16556062,"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":["hacktoberfest","python","qt5","vnc","vnc-client","vnc-viewer"],"created_at":"2024-09-24T14:05:52.439Z","updated_at":"2024-10-12T01:21:30.046Z","avatar_url":"https://github.com/zocker-160.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pyQVNCWidget\nVNC Widget for Python using PyQt5\n\n## How to install\n\n```bash\npip3 install qvncwidget\n```\n\n### TODO:\n- Proper error handling `onFatalError`\n- support for more than just RAW and RGB32 PIXEL_FORMATs\n- support for compression\n- implement rfb 3.7 and 3.8\n- implement local and remote clipboard\n\n## Examples (see /examples folder)\n\n```python\nimport sys\nfrom PyQt5.QtWidgets import QApplication, QMainWindow\nfrom qvncwidget import QVNCWidget\n\nclass Window(QMainWindow):\n    def __init__(self):\n        super(Window, self).__init__()\n\n        self.setWindowTitle(\"QVNCWidget\")\n\n        self.vnc = QVNCWidget(\n            parent=self,\n            host=\"127.0.0.1\", port=5900,\n            password=\"1234\",\n            readOnly=True\n        )\n\n        self.setCentralWidget(self.vnc)\n\n        # if you want to resize the window to the resolution of the \n        # VNC remote device screen, you can do this\n        self.vnc.onInitialResize.connect(self.resize)\n\n        self.vnc.start()\n\n    def closeEvent(self, ev):\n        self.vnc.stop()\n        return super().closeEvent(ev)\n\napp = QApplication(sys.argv)\nwindow = Window()\nwindow.resize(800, 600)\nwindow.show()\n\nsys.exit(app.exec_())\n```\n\n### Example with widget input events\n\n```python\nimport sys\nfrom PyQt5.QtWidgets import QApplication, QMainWindow\nfrom qvncwidget import QVNCWidget\n\nclass Window(QMainWindow):\n    def __init__(self):\n        super(Window, self).__init__()\n\n        self.setWindowTitle(\"QVNCWidget\")\n\n        self.vnc = QVNCWidget(\n            parent=self,\n            host=\"127.0.0.1\", port=5900,\n            password=\"1234\",\n            readOnly=False\n        )\n\n        self.setCentralWidget(self.vnc)\n        # we need to request focus otherwise we will not get keyboard input events\n        self.vnc.setFocus()\n\n        # you can disable mouse tracking if desired\n        self.vnc.setMouseTracking(False)\n\n        self.vnc.start()\n\n    def closeEvent(self, ev):\n        self.vnc.stop()\n        return super().closeEvent(ev)\n\napp = QApplication(sys.argv)\nwindow = Window()\nwindow.resize(800, 600)\nwindow.show()\n\nsys.exit(app.exec_())\n```\n\n### Example with window input events\n\nIn this example we are passing input events from the window to the widget\n\n```python\nimport sys\nfrom PyQt5.QtWidgets import QApplication, QMainWindow\nfrom qvncwidget import QVNCWidget\n\nclass Window(QMainWindow):\n    def __init__(self):\n        super(Window, self).__init__()\n\n        self.setWindowTitle(\"QVNCWidget\")\n\n        self.vnc = QVNCWidget(\n            parent=self,\n            host=\"127.0.0.1\", port=5900,\n            password=\"1234\",\n            readOnly=False\n        )\n\n        self.setCentralWidget(self.vnc)\n\n        # you can disable mouse tracking if desired\n        self.vnc.setMouseTracking(False)\n\n        self.vnc.start()\n\n    def keyPressEvent(self, ev):\n        self.vnc.keyPressEvent(ev)\n        return super().keyPressEvent(ev) # in case you need the signal somewhere else in the window\n\n    def keyReleaseEvent(self, ev):\n        self.vnc.keyReleaseEvent(ev)\n        return super().keyReleaseEvent(ev) # in case you need the signal somewhere else in the window\n\n    def closeEvent(self, ev):\n        self.vnc.stop()\n        return super().closeEvent(ev)\n\napp = QApplication(sys.argv)\nwindow = Window()\nwindow.resize(800, 600)\nwindow.show()\n\nsys.exit(app.exec_())\n```\n\n## References\n\n- https://datatracker.ietf.org/doc/html/rfc6143\n- https://vncdotool.readthedocs.io/en/0.8.0/rfbproto.html?highlight=import#string-encodings\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzocker-160%2Fpyqvncwidget","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzocker-160%2Fpyqvncwidget","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzocker-160%2Fpyqvncwidget/lists"}