{"id":16608414,"url":"https://github.com/curve/rohrkabel","last_synced_at":"2025-05-09T01:45:21.285Z","repository":{"id":44149924,"uuid":"487654911","full_name":"Curve/rohrkabel","owner":"Curve","description":"🔌 A C++ Pipewire-API Wrapper","archived":false,"fork":false,"pushed_at":"2025-05-07T11:13:11.000Z","size":592,"stargazers_count":63,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-09T01:45:16.716Z","etag":null,"topics":["coroutines","cpp-coroutines","cpp-library","cpp23","cpp23-library","library","pipewire","raii","rohrkabel"],"latest_commit_sha":null,"homepage":"","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/Curve.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-05-01T22:20:26.000Z","updated_at":"2025-05-07T11:13:15.000Z","dependencies_parsed_at":"2023-01-21T00:16:02.507Z","dependency_job_id":"efcfbb52-eae6-4b9c-8a6a-dc0dcf93c851","html_url":"https://github.com/Curve/rohrkabel","commit_stats":null,"previous_names":["curve/rohrkabel"],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Curve%2Frohrkabel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Curve%2Frohrkabel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Curve%2Frohrkabel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Curve%2Frohrkabel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Curve","download_url":"https://codeload.github.com/Curve/rohrkabel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253176443,"owners_count":21866142,"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":["coroutines","cpp-coroutines","cpp-library","cpp23","cpp23-library","library","pipewire","raii","rohrkabel"],"created_at":"2024-10-12T01:26:07.300Z","updated_at":"2025-05-09T01:45:21.271Z","avatar_url":"https://github.com/Curve.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e \n    \u003cimg src=\"assets/logo.svg\" height=\"256\"\u003e\n\u003c/div\u003e\n\n\n## 📃 Description\n\n_Rohrkabel_ is a C++23 wrapper around the pipewire-api that embraces **RAII** and **Coroutines**.\n\nAs of writing this, only a portion of the pipewire-api has been wrapped.\nHowever, this library easily allows to access the underlying wrapped objects and also allows to wrap existing pipewire objects without taking over their lifetime.\n\nMore portions of the pipewire-api will be wrapped based on user demand or (in-house) downstream ([Soundux](https://github.com/Soundux/Soundux), [venmic](https://github.com/Vencord/venmic)) demand.\n\n## 📦 Installation\n\n* Using [CPM](https://github.com/cpm-cmake/CPM.cmake)\n  ```cmake\n  CPMFindPackage(\n    NAME           rohrkabel\n    VERSION        9.0.0\n    GIT_REPOSITORY \"https://github.com/Curve/rohrkabel\"\n  )\n  ```\n\n* Using FetchContent\n  ```cmake\n  include(FetchContent)\n\n  FetchContent_Declare(rohrkabel GIT_REPOSITORY \"https://github.com/Curve/rohrkabel\" GIT_TAG v9.0.0)\n  FetchContent_MakeAvailable(rohrkabel)\n\n  target_link_libraries(\u003ctarget\u003e cr::rohrkabel)\n  ```\n\n## 🧵 Thread-Safety\n\nThe `pw_main_loop` is not thread-safe, but supplies a [special loop implementation](https://docs.pipewire.org/page_thread_loop.html) meant for threaded-usage. However said special loop is cumbersome to deal with, especially from a RAII perspective, thus _rohrkabel_ uses a different, [channel-based](https://github.com/Curve/channel) approach inspired by [pipewire-rs](https://pipewire.pages.freedesktop.org/pipewire-rs/pipewire/channel/index.html).\n\nThe channel based approach greatly simplifies working with _rohrkabel_ in multi-threaded environments.\n\nFor more information check out [this example](examples/channels), or feel free to [open a discussion](https://github.com/Curve/rohrkabel/discussions/new/choose).\n\n## 🌎 Who's using rohrkabel?\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr\u003e\n\n\u003cimg src=\"https://avatars.githubusercontent.com/u/74979035?s=200\u0026v=4\" width=30/\u003e\n\n[Soundux](https://github.com/Soundux)\n\n\u003cimg src=\"https://raw.githubusercontent.com/maltejur/discord-screenaudio/master/assets/de.shorsh.discord-screenaudio.png\" width=30/\u003e\n\n[Discord Screenaudio](https://github.com/maltejur/discord-screenaudio)\n\n\u003cimg src=\"https://avatars.githubusercontent.com/u/113042587?s=200\u0026v=4\" width=30/\u003e\n\n[Vencord](https://github.com/Vencord/linux-virtmic)\n\n\u003cimg src=\"https://raw.githubusercontent.com/PolisanTheEasyNick/Crescendo/main/icon.svg\" width=30/\u003e\n\n[Crescendo](https://github.com/PolisanTheEasyNick/Crescendo)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcurve%2Frohrkabel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcurve%2Frohrkabel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcurve%2Frohrkabel/lists"}