{"id":18024245,"url":"https://github.com/yshui/runa","last_synced_at":"2025-04-07T12:06:01.901Z","repository":{"id":148711025,"uuid":"539238153","full_name":"yshui/runa","owner":"yshui","description":"wayland compositor toolbox","archived":false,"fork":false,"pushed_at":"2024-03-11T01:43:20.000Z","size":1043,"stargazers_count":114,"open_issues_count":2,"forks_count":4,"subscribers_count":10,"default_branch":"next","last_synced_at":"2025-04-06T06:12:17.631Z","etag":null,"topics":["compositor","wayland","wayland-compositor"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yshui.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-09-21T00:16:28.000Z","updated_at":"2025-03-22T05:08:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"46c6c720-5da8-4e58-9c88-6f075a45b697","html_url":"https://github.com/yshui/runa","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yshui%2Fruna","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yshui%2Fruna/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yshui%2Fruna/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yshui%2Fruna/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yshui","download_url":"https://codeload.github.com/yshui/runa/tar.gz/refs/heads/next","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247648976,"owners_count":20972945,"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":["compositor","wayland","wayland-compositor"],"created_at":"2024-10-30T07:12:22.002Z","updated_at":"2025-04-07T12:06:01.876Z","avatar_url":"https://github.com/yshui.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# runa - wayland compositor toolbox\n\n## Table of contents \n  * [Demo](#demo)\n  * [Project status, goals and plans](#project-status-goals-and-plans)\n  * [Chat room](#chat-room)\n  * [Roadmap](#roadmap)\n  * [Q\u0026A](#qa)\n\n## Demo\n\nhttps://user-images.githubusercontent.com/366851/228325348-7b988f84-9837-4f5b-8fcd-d2085ea7edea.mp4\n\n## Project status, goals and plans\n\nThis project is still pretty much a \"tech demo\" in this stage. What you can see above is all that works. And it took a lot of short cuts to even get that far. (And please don't run `cargo test`.)\n\nCreating a wayland compositor library from the ground up is a daunting task, and I don't think I can do this just by myself. That's why this project is announced in this state - because I wanted to attract interests, and potentially collaborators to this project.\n\nI tried to document the code base in its current state as best as I can. Have a look at the documentation, or the code base, and get in touch if you are interested:\n\n- [runa-core](https://yshui.github.io/runa/runa_core/index.html): base traits and types for a wayland compositor.\n- [runa-orbiter](https://yshui.github.io/runa/runa_orbiter/index.html): wayland protocol impls based on `runa-core`.\n\n## Chat room\n\nI am currently hanging out in the `#runa` channel on libra.chat.\n\n## Roadmap\n\n### 0.0.2\n\n- Have unittests for easily testable components.\n- All of the core and stable wayland interfaces implemented. No more \"not implemented\" error.\n- Fix interface versioning\n\n### 0.0.3 - 0.0.4\n\n- Crescent able to run as DRM master\n  - We likely want to create a crate for making accessing raw display devices and input devices easier.\n    or use an existing crate. winit might become a viable option (rust-windowing/winit#2272)\n- Support hardware accelerated clients\n\n### 0.1.0\n\n- Crescent can function as a minimal wayland compositor\n- A tutorial for writing compositors with runa\n\n### 0.2.0\n\n- Xwayland support\n\n## Q\u0026A\n\n- **Why runa, instead of other wayland libraries like wlroots, or smithay?**\n\n  wlroots has a model that is not very suitable for a Rust binding - people has [tried and failed](https://way-cooler.org/blog/2019/04/29/rewriting-way-cooler-in-c.html) at creating a binding for it. And even if I do manage to create a wlroots binding, it's not going to be ergonomic Rust.\n\n  As for smithay, runa's design philosophy is pretty different. First of all, smithay was created quite a few years back, and Rust has evolved a lot in that time. runa tries to take advantage of new Rust features, most notably `async`, as much as possible. (this does unfortunately mean a nightly Rust compiler is required for now, at least until TAIT is stabilized).\n\n  Also, runa took a page from other amazing Rust crates like [smol](https://docs.rs/smol/latest/smol/) and [futures](https://docs.rs/futures/latest/futures), and has a very modular design, unlike smithay which is everything inside a single crate. This way 1) users can bring their own implementation if what we provide is not suitable; 2) some of our crates can be useful outside runa.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyshui%2Fruna","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyshui%2Fruna","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyshui%2Fruna/lists"}