{"id":15565172,"url":"https://github.com/textshell/vtermdriver","last_synced_at":"2025-08-28T05:06:09.075Z","repository":{"id":200302562,"uuid":"216097735","full_name":"textshell/vtermdriver","owner":"textshell","description":"a simple wrapper around libvterm to test rendering of terminal applications","archived":false,"fork":false,"pushed_at":"2023-02-26T15:06:18.000Z","size":20,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-11T13:06:11.840Z","etag":null,"topics":["libvterm","terminal","testing"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/textshell.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":"2019-10-18T19:56:21.000Z","updated_at":"2023-10-20T18:01:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"89687688-36da-4f09-9924-a1a9d6f32cc0","html_url":"https://github.com/textshell/vtermdriver","commit_stats":null,"previous_names":["textshell/vtermdriver"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/textshell/vtermdriver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/textshell%2Fvtermdriver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/textshell%2Fvtermdriver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/textshell%2Fvtermdriver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/textshell%2Fvtermdriver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/textshell","download_url":"https://codeload.github.com/textshell/vtermdriver/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/textshell%2Fvtermdriver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272442797,"owners_count":24935843,"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","status":"online","status_checked_at":"2025-08-28T02:00:10.768Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["libvterm","terminal","testing"],"created_at":"2024-10-02T16:51:28.007Z","updated_at":"2025-08-28T05:06:09.025Z","avatar_url":"https://github.com/textshell.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"vtermdriver is a simple wrapper around [libvterm](http://www.leonerd.org.uk/code/libvterm/)\nto test rendering of terminal applications.\n\n\nUsage\n-----\n\nvtermdriver wraps an terminal application while allowing the calling process to use\ncommands to introspect terminal state and interact with the tested application.\n\nThe test software uses a socket pair passed as standard in to communicate with the\ntest driver.\n\nThe protocol consists of zero terminated ascii commands and syncronous replies. Additionally\nthere are notifications send to the test software.\n\nThe replies and notifications are zero terminated byte strings. Notifications start with the\nbyte '*'. Replies start with '{' and form a valid json document.\n\nInvocation: vtermdriver --control-via-fd0 /path/to/app/to/test [arguments]...\n\nCommands\n--------\n\ncapture:img\n\nSends the current screen content as json object.\n\ncapture:all\n\nSends the same data as capture:img plus additional terminal state\n\nsend-to-interior:\n\nSends bytes to the application that is tested. The bytes to send follow the ':' and are hex\nencoded.\n\nreset\n\nReset the terminal state.\n\nquit\n\nKill the interior application (if still running) and exit.\n\nset:auto-quit\n\nAutomatically quit if the interior application exits.\n\n\nNotifications\n-------------\n\n*exited:[code]\n\nThe application has exited with exit code [code].\n\n*bell\n\nThe appliaction triggered the terminal bell.\n\n\nJson Output\n-----------\n\n```json\n{\n    \"version\": 0,\n    \"cursor_column\": 0,\n    \"cursor_row\": 1,\n    \"cursor_blink\": true,\n    \"cursor_shape\": \"block\",\n    \"height\": 24,\n    \"width\": 80,\n    \"cells\": [\n        {\n            \"x\": 0,\n            \"t\": \"a\",\n            \"y\": 0\n        },\n        {\n            \"x\": 1,\n            \"t\": \"\\u3042\",\n            \"width\": 2,\n            \"y\": 0\n        },\n        {\n            \"x\": 3,\n            \"t\": \" \",\n            \"y\": 0\n        },\n        {\n            \"x\": 4,\n            \"t\": \" \",\n            \"y\": 0\n        },\n        // ...\n    ],\n    \"lines\": {\n\t\"0\": { \"soft_wrapped\": true },\n\t// ...\n    }\n}\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftextshell%2Fvtermdriver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftextshell%2Fvtermdriver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftextshell%2Fvtermdriver/lists"}