{"id":32376453,"url":"https://github.com/icrazeios/runeapi","last_synced_at":"2025-10-24T22:56:36.009Z","repository":{"id":242309604,"uuid":"809210498","full_name":"iCrazeiOS/RuneAPI","owner":"iCrazeiOS","description":"Developer API documentation for creating Rune plugins","archived":false,"fork":false,"pushed_at":"2024-06-02T04:50:07.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-03T05:41:19.611Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://havoc.app/package/rune","language":"Shell","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/iCrazeiOS.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":"2024-06-02T03:03:54.000Z","updated_at":"2024-06-02T04:50:10.000Z","dependencies_parsed_at":"2024-06-02T05:51:39.323Z","dependency_job_id":null,"html_url":"https://github.com/iCrazeiOS/RuneAPI","commit_stats":null,"previous_names":["icrazeios/runeapi"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/iCrazeiOS/RuneAPI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCrazeiOS%2FRuneAPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCrazeiOS%2FRuneAPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCrazeiOS%2FRuneAPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCrazeiOS%2FRuneAPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iCrazeiOS","download_url":"https://codeload.github.com/iCrazeiOS/RuneAPI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCrazeiOS%2FRuneAPI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280878232,"owners_count":26406644,"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-10-24T02:00:06.418Z","response_time":73,"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":"2025-10-24T22:55:54.827Z","updated_at":"2025-10-24T22:56:35.995Z","avatar_url":"https://github.com/iCrazeiOS.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rune Developer API\n\n#### For extending the functionality of [Rune](https://havoc.app/package/rune)\n\nRequirements: [Theos](https://theos.dev/docs/installation)\n\n## Getting Started\n\n1. Start by cloning this repo to your machine\n\n2. Run `plugin-gen.sh` to create a new plugin. It will ask you for some details before setting up the project.\n\n![Screenshot of plugin-gen](https://github.com/iCrazeiOS/RuneAPI/assets/39101269/93ff1fa7-da0e-46ae-b64d-4330e673285b)\n\n3. `cd` into the newly created directory and compile the plugin using `make package`. If you are compiling for a rootless jailbreak, append `THEOS_PACKAGE_SCHEME=rootless` to the command.\n\n4. If the compilation was successful, you should have a `.deb` file in the `packages` directory. After installing the package and respringing, it should appear within Rune's panel selection.\n\n![Screenshot of a successful compilation](https://github.com/iCrazeiOS/RuneAPI/assets/39101269/4b0b714b-6e25-4da9-b0a7-1cb49a16ff71)\n\n![Screenshot of Rune's panel list](https://github.com/iCrazeiOS/RuneAPI/assets/39101269/478ff06f-54bc-46d3-bb3f-2fa627e0ce87)\n\nAfter enabling the plugin, you should see its panel show up within Rune.\n\n![Screenshot of the plugin in action](https://github.com/iCrazeiOS/RuneAPI/assets/39101269/638fe62d-3741-4607-b5ab-188d610ffed0)\n\n\n## Programming\n\nNow that you have a plugin set up, you can edit `Tweak.x` to build your UI and add functionality.\n\nThe `plugin-gen.sh` script creates a subclass of BBRBasePanelView for you automatically. This is the class that you should use to build your panel.\n\nThe `didMoveToWindow` method is called when the panel is (re)loaded by Rune. Use this to set up your panel's UI and any other initialisation code.\n\nAs each plugin is a Substrate tweak, you can hook methods just like you would in any other tweak.\n\n\n## NSNotificationCenter\n\nRune uses NSNotificationCenter to communicate with plugins. You can listen for notifications by adding an observer in your panel's `didMoveToWindow` method.\n\nHere is an example of how to listen for the `com.icraze.rune-opened` notification, to call a method named `updatePanel` whenever Rune is presented:\n\n```objc\n[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updatePanel) name:@\"com.icraze.rune-opened\" object:nil];\n```\n\nAvailable notifications:\n\n`com.icraze.rune-opened` - Fired when Rune is presented\n\n`com.icraze.rune-closed` - Fired when Rune is dismissed\n\n\n## Other Info\n\nThe `icon` field within the plugin's plist must be the name of an [SF Symbol](https://developer.apple.com/design/human-interface-guidelines/sf-symbols). Be sure to choose a symbol that is available on iOS 14 and above, as Rune supports these versions.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficrazeios%2Fruneapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficrazeios%2Fruneapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficrazeios%2Fruneapi/lists"}