{"id":50363990,"url":"https://github.com/iharob/khelvum","last_synced_at":"2026-05-30T03:02:14.839Z","repository":{"id":361287156,"uuid":"1253887128","full_name":"iharob/khelvum","owner":"iharob","description":"A native KDE/Qt6 patchbay for PipeWire","archived":false,"fork":false,"pushed_at":"2026-05-29T23:09:26.000Z","size":45,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-30T01:09:25.905Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iharob.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-29T23:08:52.000Z","updated_at":"2026-05-29T23:09:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/iharob/khelvum","commit_stats":null,"previous_names":["iharob/khelvum"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/iharob/khelvum","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iharob%2Fkhelvum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iharob%2Fkhelvum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iharob%2Fkhelvum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iharob%2Fkhelvum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iharob","download_url":"https://codeload.github.com/iharob/khelvum/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iharob%2Fkhelvum/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33678271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"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":[],"created_at":"2026-05-30T03:02:14.193Z","updated_at":"2026-05-30T03:02:14.834Z","avatar_url":"https://github.com/iharob.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# khelvum\n\nA native **KDE / Qt 6** patchbay for [PipeWire](https://pipewire.org/), ported from\n[Helvum](https://gitlab.freedesktop.org/pipewire/helvum) (the GTK patchbay that ships\nwith PipeWire).\n\nkhelvum shows every audio, video and MIDI node as a box in a live graph and lets you\nconnect or disconnect ports by dragging between them. It talks to PipeWire directly\nthrough the libpipewire C API and renders the graph with `QGraphicsView`.\n\nLinux only — it manages PipeWire/PulseAudio routing, so there is no cross-platform build.\n\n## Architecture\n\n| Area | File(s) | Notes |\n|------|---------|-------|\n| PipeWire connection | `src/pw/PwConnection.*` | Owns a `pw_thread_loop`; registry + per-object proxy listeners; link create/destroy. Emits Qt signals (queued) carrying plain value types. |\n| Value types | `src/pw/PwTypes.h` | `NodeData` / `PortData` / `LinkData`, media-type enum. |\n| Graph model | `src/model/GraphModel.*` | Turns PipeWire events into `QGraphicsItem`s, lays nodes out in output / other / input columns. |\n| Canvas | `src/graph/GraphView.*` | Anchored Ctrl+scroll zoom (0.3–4.0×), middle-drag pan, drag-to-connect. |\n| Items | `src/graph/{NodeItem,PortItem,LinkItem}.*` | Node boxes, port anchors, cubic-bezier links. |\n| Window | `src/ui/MainWindow.*` | `KXmlGuiWindow`, status bar, zoom widget. |\n\nThe PipeWire loop runs on its own thread; callbacks copy data into value types and emit\nqueued signals to the GUI thread. UI → server requests (create/destroy link) take the\nthread-loop lock and call the C API directly.\n\n## Building\n\n```sh\ncmake -B build -G Ninja\ncmake --build build\n./build/khelvum\n```\n\nRequires Qt 6, KDE Frameworks 6 (CoreAddons, I18n, XmlGui, ConfigWidgets, Crash),\nextra-cmake-modules and `libpipewire-0.3` development headers.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiharob%2Fkhelvum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiharob%2Fkhelvum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiharob%2Fkhelvum/lists"}