{"id":32830055,"url":"https://github.com/letdown2491/runkit","last_synced_at":"2025-11-07T20:03:18.534Z","repository":{"id":321677839,"uuid":"1086295644","full_name":"Letdown2491/runkit","owner":"Letdown2491","description":"Graphical manager for runit services.","archived":false,"fork":false,"pushed_at":"2025-11-07T03:07:10.000Z","size":1001,"stargazers_count":27,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-07T05:26:16.351Z","etag":null,"topics":["gtk4","runit","rust-lang","service-management","void-linux","void-packages","voidtools"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/Letdown2491.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-30T08:16:44.000Z","updated_at":"2025-11-07T03:07:14.000Z","dependencies_parsed_at":"2025-10-31T00:09:47.827Z","dependency_job_id":"f1eda2f9-9331-45ca-9d7c-bcb6c823f988","html_url":"https://github.com/Letdown2491/runkit","commit_stats":null,"previous_names":["letdown2491/runkit"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Letdown2491/runkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Letdown2491%2Frunkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Letdown2491%2Frunkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Letdown2491%2Frunkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Letdown2491%2Frunkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Letdown2491","download_url":"https://codeload.github.com/Letdown2491/runkit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Letdown2491%2Frunkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283249415,"owners_count":26804613,"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-11-07T02:00:06.343Z","response_time":61,"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":["gtk4","runit","rust-lang","service-management","void-linux","void-packages","voidtools"],"created_at":"2025-11-07T20:01:13.959Z","updated_at":"2025-11-07T20:03:18.529Z","avatar_url":"https://github.com/Letdown2491.png","language":"Rust","readme":"# Runkit\n\nGraphical manager runit services. The application targets a friendly, guided user experience that balances power-user workflows with newcomers who just want to start, stop, or understand system services. While it was written for Void Linux, it should work on any disto which uses runit.\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshots/1-services.png\" alt=\"Runkit Service Manager\" width=\"45%\" /\u003e\n  \u003cimg src=\"assets/screenshots/2-preferences.png\" alt=\"Runkit Preferences\" width=\"45%\" /\u003e\n\u003c/p\u003e\n\n## Workspace Layout\n\n- `runkit-core`: service discovery, status parsing, and shared domain types.\n- `runkitd`: privileged helper exposed as the system D-Bus service `tech.geektoshi.Runkit1`. It runs as root, executes `sv` commands, manages `/var/service` symlinks, and enforces polkit authorization per request.\n- `runkit`: libadwaita interface that lists services, shows details, and calls into the D-Bus helper for status queries and lifecycle operations.\n- `services-merge`: tiny utility used by the installer to seed and merge cached service descriptions.\n\n## Requirements\n\n- A distro utilizing runit\n- GTK 4.14+ and libadwaita 1.4+ runtimes\n- Rust 1.88.0 or newer (tested with 1.88.0)\n- DBus\n- Polkit\n\n## Installation\n\nFor Void Linux the repository ships an installer that builds release binaries and places them under `/usr/libexec`. It will also install any dependencies, copy icons, lay down the desktop entry, seed service descriptions, install the system D-Bus definition, and copy the polkit policy.\n\n```bash\nchmod +x start.sh\n./start.sh                 # installs dependencies, builds, and installs binaries\n./start.sh uninstall       # removes the installed binaries\n```\nAfter installation, you can launch directly from your application launcher or via the CLI by typing runkit.\n\n## Building\n\nThis workspace requires the Rust 1.83+ toolchain. The GTK frontend also depends on system libraries:\n\n```bash\nsudo xbps-install -S rustup gtk4-devel libadwaita-devel glib-devel pango-devel pkg-config\nrustup default stable\n```\n\nOnce dependencies are present:\n\n```bash\ncargo build                # builds every crate\n```\n\n\u003e **Note:** `cargo check -p runkit` (or a full `cargo build`) will fail unless the GTK/libadwaita headers are installed. The helper and core crates can be compiled independently with standard Rust tooling.\n\n## Running / Developing\n\nAfter installation the system bus activates `runkitd` automatically. The desktop app talks to the service using the well-known name `tech.geektoshi.Runkit1`, so the first privileged action prompts through polkit. Users can choose between “always ask” and “reuse authorization while the app is open” in Preferences, which simply toggles the polkit action (`tech.geektoshi.Runkit.require_password` vs `tech.geektoshi.Runkit.cached`).\n\nFor local development:\n\n1. Build the helper and GUI:\n   ```bash\n   cargo build --bins\n   ```\n2. Start the D-Bus service as root (in another terminal):\n   ```bash\n   sudo target/debug/runkitd --dbus-service\n   ```\n3. Run the GUI against the service:\n   ```bash\n   cargo run -p runkit\n   ```\n\nAlternatively, copy `assets/dbus-1/system-services/tech.geektoshi.Runkit1.service` to `/usr/share/dbus-1/system-services/`, set `Exec` to your debug path, and reload the bus.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fletdown2491%2Frunkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fletdown2491%2Frunkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fletdown2491%2Frunkit/lists"}