{"id":17694263,"url":"https://github.com/andyholmes/gnome-shell-extension-beans","last_synced_at":"2026-01-20T11:31:51.828Z","repository":{"id":103772126,"uuid":"531330318","full_name":"andyholmes/gnome-shell-extension-beans","owner":"andyholmes","description":"Experimental GNOME Shell extension with Peas plugins","archived":false,"fork":false,"pushed_at":"2023-09-12T16:12:45.000Z","size":71,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T07:48:54.038Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andyholmes.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}},"created_at":"2022-09-01T02:13:33.000Z","updated_at":"2023-02-25T21:13:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"4df4ddda-9b92-463f-9698-5e9001184d05","html_url":"https://github.com/andyholmes/gnome-shell-extension-beans","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andyholmes/gnome-shell-extension-beans","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyholmes%2Fgnome-shell-extension-beans","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyholmes%2Fgnome-shell-extension-beans/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyholmes%2Fgnome-shell-extension-beans/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyholmes%2Fgnome-shell-extension-beans/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andyholmes","download_url":"https://codeload.github.com/andyholmes/gnome-shell-extension-beans/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyholmes%2Fgnome-shell-extension-beans/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28602446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T10:46:13.255Z","status":"ssl_error","status_checked_at":"2026-01-20T10:42:51.865Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2024-10-24T13:48:18.418Z","updated_at":"2026-01-20T11:31:51.813Z","avatar_url":"https://github.com/andyholmes.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CD](https://github.com/andyholmes/gnome-shell-extension-beans/actions/workflows/cd.yml/badge.svg)](https://github.com/andyholmes/gnome-shell-extension-beans/actions/workflows/cd.yml)\n\n# Beans (GNOME Shell Extension)\n\nBeans is a proof of concept, demonstrating the use of libpeas to load C plugins\nwithin a GNOME Shell extension.\n\nIn practical terms this not a great idea, but might be good for educational\npurposes or a few laughs.\n\n\n## Extension\n\nBuilding the GNOME Shell extension requires `meson` and `zip`. The helper script\n`build-aux/misc/ego.sh` will build an extension ZIP that can be installed with\n`gnome-extensions`:\n\n```sh\n./build-aux/misc/ego.sh\ngnome-extensions install --force beans@andyholmes.ca.zip\n```\n\nThere are also nightly builds available for [download][nightly-build].\n\n[nightly-build]:  https://nightly.link/andyholmes/gnome-shell-extension-beans/workflows/cd/main/nightly-build.zip\n\n\n## Example Plugin\n\nBeans includes an example plugin with three extensions:\n\n* `BeansActionGroup`: A `Gio.SimpleActionGroup` subclass\n\n    Beans is setup to load `Gio.ActionGroup` implementations and aggregate them\n    with a simple `Gio.ActionGroup` muxer, [`actionMuxer.js`][action-muxer].\n    \n* `BeansActivatable`: An implementation of `Peas.Activatable`\n\n    Beans will load each extension implementing `Peas.Activatable` into\n    [`activator.js`][activator]. It will call `Peas.Activatable.activate()` when\n    the GNOME Shell extension is enabled, and `Peas.Activatable.deactivate()`\n    when it is disabled.\n    \n* `BeansActor`: A `Clutter.Actor` subclass\n\n    Beans will load each extension implementing `Clutter.Container` into\n    [`actorTroupe.js`][actor-troupe]. It creates an instance of the actor and\n    watch for the `destroy` signal.\n\n[action-muxer]: https://github.com/andyholmes/gnome-shell-extension-beans/blob/main/src/extension/actionMuxer.js\n[activator]: https://github.com/andyholmes/gnome-shell-extension-beans/blob/main/src/extension/activator.js\n[actor-troupe]: https://github.com/andyholmes/gnome-shell-extension-beans/blob/main/src/extension/actorTroupe.js\n\n\n### Compiling\n\nBuilding the example plugin requires the development headers for Peas, GLib and\nMutter (e.g. `libpeas-devel`, `glib2-devel` and `mutter-devel` on Fedora):\n\n```sh\nmeson -Dexample=true _build\nmeson compile -C _build\n```\n\nBeans is hardcoded to load plugins from `XDG_DATA_HOME/beans/plugins`. Once\ncompiled, you can copy the example plugin there before enabling the extension:\n\n```sh\nmkdir -p ~/.local/share/beans/plugins\ncp _build/src/plugin/{libexample.so,example.plugin} ~/.local/share/beans/plugins\n```\n\nThere are also nightly builds available for [download][example-plugin].\n\n[example-plugin]: https://nightly.link/andyholmes/gnome-shell-extension-beans/workflows/cd/main/example-plugin.zip\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandyholmes%2Fgnome-shell-extension-beans","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandyholmes%2Fgnome-shell-extension-beans","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandyholmes%2Fgnome-shell-extension-beans/lists"}