{"id":21674524,"url":"https://github.com/utmapp/vd_agent","last_synced_at":"2025-03-20T08:47:51.284Z","repository":{"id":263330062,"uuid":"889807644","full_name":"utmapp/vd_agent","owner":"utmapp","description":"SPICE guest agent","archived":false,"fork":false,"pushed_at":"2024-12-10T21:36:32.000Z","size":628,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-25T09:44:41.219Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","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/utmapp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"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}},"created_at":"2024-11-17T09:41:05.000Z","updated_at":"2025-01-19T18:18:03.000Z","dependencies_parsed_at":"2024-11-17T22:27:22.183Z","dependency_job_id":"139a968a-71b0-4d8f-a783-7ec831b91254","html_url":"https://github.com/utmapp/vd_agent","commit_stats":null,"previous_names":["utmapp/vd_agent"],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utmapp%2Fvd_agent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utmapp%2Fvd_agent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utmapp%2Fvd_agent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utmapp%2Fvd_agent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/utmapp","download_url":"https://codeload.github.com/utmapp/vd_agent/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244583196,"owners_count":20476233,"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":[],"created_at":"2024-11-25T13:48:01.478Z","updated_at":"2025-03-20T08:47:51.262Z","avatar_url":"https://github.com/utmapp.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"Spice agent for Linux and macOS\n===============================\n\n### Linux\n\nThe spice agent for Linux consists of 2 parts, a daemon spice-vdagentd and\na per X-session process spice-vdagent. The daemon gets started in Spice guests\nthrough a Sys-V initscript or a systemd unit. The per X-session gets\nautomatically started in desktop environments which honor /etc/xdg/autostart,\nand under gdm.\n\nThe main daemon needs to know which X-session daemon is in the currently\nactive X-session (think switch user functionality) for this console kit or\nsystemd-logind (compile time option) is used. If no session info is\navailable only one X-session agent is allowed.\n\nFeatures:\n* Client mouse mode (no need to grab mouse by client, no mouse lag)\n  this is handled by the daemon by feeding mouse events into the kernel\n  via uinput. This will only work if the active X-session is running a\n  spice-vdagent process so that its resolution can be determined.\n* Automatic adjustment of the X-session resolution to the client resolution\n* Support of copy and paste (text and images) between the active X-session\n  and the client. This supports both the primary selection and the clipboard.\n* Support for transferring files from the client to the agent\n* Full support for multiple displays using Xrandr, this requires a new\n  enough xorg-x11-drv-qxl driver, as well as a new enough host.\n* Limited support for multiple displays using Xinerama.\n* Limited support for setups with multiple Screens (multiple qxl devices each\n  mapped to their own screen)\n\n### macOS\n\nSimilar to Linux, the SPICE agent has a LaunchDaemon spice-vdagentd which\nhandles communication with the console port and a LaunchAgent spice-vdagent\nthat runs for each logged in user. Note that there is no protection against\none logged in user from snooping another user's clipboard when this is running.\n\nThe macOS agent currently only supports clipboard features.\n\n## Install (Linux)\n\nFrom inside your virtual machine (e.g., GNOME Boxes), use your guest system’s\npackage manager to install.\n\nFor example, if you’re running a Debian/Ubuntu derivative in a VM, use:\n\n```shell\nsudo apt install spice-vdagent\n```\n\n## Build (macOS)\n\nCurrently, you can only build on Apple Silicon Macs with Homebrew installed in\nboth native and Rosetta. This is because we require GLib installed in both\narchitectures at the default location.\n\n\u003e\u003e\u003e\n    $ /opt/homebrew/bin/brew install glib # arm64\n    $ /usr/local/bin/brew install glib # x86_64\n\u003e\u003e\u003e\n\nThen, you can build the project with Xcode or `xcodebuild`\n\n\u003e\u003e\u003e\n    $ xcodebuild archive -scheme vd_agent -archivePath vd_agent.xcarchive\n\u003e\u003e\u003e\n\nAfterwards, you can sign the output and create an installer package with a paid\nApple Developer certificate (Developer ID Application and Developer ID\nInstaller are both needed).\n\n\u003e\u003e\u003e\n    $ ./package_macos.sh vd_agent.xcarchive spice-vdagent-x.yy.pkg\n\u003e\u003e\u003e\n\nYou may then wish to notarize it before distributing.\n\n## How it works\n\nAll vdagent communications on the guest side run over a single pipe which\ngets presented to the guest os as a virtio serial port.\n\nUnder windows this virtio serial port has the following name:\n\u003e\u003e\u003e\n    \\\\\\\\.\\\\Global\\\\com.redhat.spice.0\n\u003e\u003e\u003e\n\nUnder Linux this virtio serial port has the following name:\n\u003e\u003e\u003e\n    /dev/virtio-ports/com.redhat.spice.0\n\u003e\u003e\u003e\n\nUnder macOS this virtio serial port has the following name:\n\u003e\u003e\u003e\n    /dev/tty.com.redhat.spice.0\n\u003e\u003e\u003e\n\nTo enable the virtio serial port you need to pass the following params on\nthe qemu cmdline:\n\n\u003e\u003e\u003e\n    -device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0,addr=0x5 \\\n    -chardev spicevmc,name=vdagent,id=vdagent \\\n    -device virtserialport,nr=1,bus=virtio-serial0.0,chardev=vdagent,name=com.redhat.spice.0\n\u003e\u003e\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futmapp%2Fvd_agent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Futmapp%2Fvd_agent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futmapp%2Fvd_agent/lists"}