{"id":24443619,"url":"https://github.com/endlessm/endless-key-flatpak","last_synced_at":"2025-04-12T21:26:58.768Z","repository":{"id":190221323,"uuid":"680225087","full_name":"endlessm/endless-key-flatpak","owner":"endlessm","description":"Endless Key for Flatpak","archived":false,"fork":false,"pushed_at":"2025-03-25T23:04:01.000Z","size":6298,"stargazers_count":4,"open_issues_count":58,"forks_count":4,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-03-26T15:42:51.537Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/endlessm.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":"2023-08-18T16:43:56.000Z","updated_at":"2024-08-20T19:14:25.000Z","dependencies_parsed_at":"2024-08-19T21:43:26.121Z","dependency_job_id":"b901ac07-c7c9-40a5-bf6e-365de9ee67d1","html_url":"https://github.com/endlessm/endless-key-flatpak","commit_stats":null,"previous_names":["endlessm/endless-key-flatpak"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endlessm%2Fendless-key-flatpak","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endlessm%2Fendless-key-flatpak/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endlessm%2Fendless-key-flatpak/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endlessm%2Fendless-key-flatpak/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/endlessm","download_url":"https://codeload.github.com/endlessm/endless-key-flatpak/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248633568,"owners_count":21136891,"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":[],"created_at":"2025-01-20T22:16:54.404Z","updated_at":"2025-04-12T21:26:58.743Z","avatar_url":"https://github.com/endlessm.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# endless-key-flatpak\n\nEndless Key app for GNOME.\n\n### Requirements\n\n- Python 3.6+\n\n### Getting started\n\nThe fastest way to try the Kolibri GNOME front-end is to install the\nFlatpak app from Flathub:\n\n\u003ca href=\"https://flathub.org/apps/details/org.learningequality.Kolibri\"\u003e\n\u003cimg\n    src=\"https://flathub.org/assets/badges/flathub-badge-i-en.png\"\n    alt=\"Download Kolibri on Flathub\"\n    width=\"240px\"\n    height=\"80px\"\n/\u003e\n\u003c/a\u003e\n\n### Building\n\nTo build and install this project, you will need to use the\n[Meson](https://meson.build) build system:\n\n    meson . build\n    ninja -C build\n    ninja -C build install\n\nThe resulting software expects to have Kolibri installed on the system, with\nthe Kolibri launcher in _$PATH_ and Kolibri Python packages available in\n_$PYTHONHOME_. We expect that an installer package will provide these\ndependencies in addition to installing the desktop front-end.\n\nIt will also take advantage of having the following Kolibri plugins installed:\n- [kolibri-app-desktop-xdg-plugin](https://github.com/endlessm/kolibri-app-desktop-xdg-plugin)\n- [kolibri-desktop-auth-plugin](https://github.com/endlessm/kolibri-desktop-auth-plugin)\n\nIf so, they will be automatically registered before Kolibri is\ninitialized.\n\n### Developer documentation\n\n#### Setup repository\n\nPlease setup `pre-commit` as a git hook before submitting a pull\nrequest:\n\n```\n# If you don't have pre-commit already:\npip install pre-commit\n\n# Setup git hook:\npre-commit install\n```\n\nNow `pre-commit` will run automatically on `git commit`!\n\n#### Using GNOME Builder\n\nThis project is ready to be built with Builder. Since this project has\nmultiple modules which interact through D-Bus, you will first have to\nbuild and install a flatpak. Once the flatpak is installed, you'll be\nable to develop any module.\n\n1. Select *Clone Repository* from Builder's start dialog, or by\n   opening the application menu at the right of the top bar. Fill in\n   the Repository URL for this repository and click *Clone Project*.\n\n2. Builder will attempt a build right after cloning. The next time you\n   want to build, use the brick wall icon at the top bar.\n\n3. Once the first build succeeds, click on the title in the middle of\n   the top bar. It will open a panel. Click on the *Export Bundle*\n   button. Once the export has successfully completed, Builder will\n   open a file browser window showing the export directory, with the\n   flatpak bundle already selected. Note that this file is named\n   *org.endlessos.Key.Devel.flatpak*, the \".Devel\" allows\n   parallel installation with the production flatpak.\n\n4. Double-click the icon of the flatpak bundle file in order to\n   install it. Or if you prefer a CLI output, copy the path to the\n   file and use `flatpak install` from a Terminal window. The path is\n   somewhere inside Builder's cache folder.\n\n5. Now you are ready to develop. For running the front-end, just click\n   on the play button at the top bar. For running any other module,\n   you can change the command in the\n   `build-aux/flatpak/org.endlessos.Key.Devel.json` flatpak\n   manifest file. Example: `{\"command\":\n   \"/app/libexec/kolibri-app/kolibri-gnome-search-provider\"}`.\n\n#### Modules\n\nThis repository includes the following modules:\n- **kolibri_gnome:** A GNOME front-end for Kolibri\n- **kolibri_gnome_search_provider:** A search provider for GNOME Shell\n- **kolibri_daemon:** A system service to interact with Kolibri\n- **kolibri_gnome_launcher:** A launcher for the frontend from desktop\n  URIs\n- **kolibri_app:** Common utilities used by the modules above\n- **libkolibri_daemon_dbus:** Helper library for kolibri-daemon D-Bus\n  interfaces\n\n**kolibri_gnome:** Kolibri as a standalone GNOME app in a\nwebview. Opens channels as separate applications, each in their own\nwindow (see kolibri_launcher). Has command line parameters to start\nthe webview in a specific channel or content page.\n\n**kolibri_gnome_search_provider:** Expose Kolibri search capabilities\nto GNOME Shell. The default search provider contains results for all\nchannels, but it is possible to group search results by their\nrespective channels by querying a channel-specific search provider\nobject. Interacts with the kolibri_daemon service to get search\nresults from kolibri.\n\n**kolibri_daemon:** A D-Bus service to manage Kolibri lifecycle and\nallow other modules to interact with the running Kolibri. It is possible to\nrun it as a system service, as opposed to a session service, using\nconfiguration such as \u003chttps://github.com/endlessm/eos-kolibri\u003e.\nExposes an App Key property that the frontend must use in order to\nauthenticate the webview.\n\n**kolibri_launcher:** Launcher of kolibri-gnome. Understands desktop\nURIs like `kolibri-channel://`, `x-kolibri-dispatch://` and converts\nthem into kolibri-gnome arguments. Starts kolibri-gnome with a\nspecific application ID depending on the URI. This is why a launcher\nprocess is needed instead of handling these URIs in kolibri-gnome.\n\n#### Managing release notes\n\nWhile making changes for an upcoming release, please update [org.endlessos.Key.metainfo.xml.in.in](data/metainfo/org.endlessos.Key.metainfo.xml.in.in)\nwith information about those changes. In the `\u003creleases\u003e` section, there should\nalways be a release entry with `version` set to the previous version followed by\n`+next`, like this:\n\n```\n\u003crelease version=\"0.7+next\" date=\"2023-10-27\" type=\"development\"\u003e\n  \u003cdescription\u003e\n    \u003cul\u003e\n      \u003cli\u003eThe description of a new feature goes here.\u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/description\u003e\n\u003c/release\u003e\n```\n\nIf there is not one, please create one as the first entry in `\u003creleases\u003e`.\n\n#### Creating releases\n\nTo create a release, use [bump-my-version](\u003chttps://pypi.org/project/bump-my-version/\u003e):\n\n```\nbump-my-version bump minor\ngit push\ngit push --tags\n```\n\nThis will create a new git tag, update the `VERSION` file in the project root,\nand update the \"+next\" release entry in [org.endlessos.Key.metainfo.xml.in.in](data/metainfo/org.endlessos.Key.metainfo.xml.in.in).\n\nNote that it is possible to increment either the `major`, `minor`, or `patch`\ncomponent of the project's version number.\n\n### Debugging and advanced usage\n\n#### Web inspector\n\nFor development builds, kolibri-gnome enables WebKit developer extras. You can\nopen the web inspector by pressing F12, or by right clicking and choosing\n\"Inspect Element\" from the context menu. If this is not available, try running\nthe application with `env ENDLESS_KEY_APP_DEVELOPER_EXTRAS=1` for a production\nbuild, or with `env ENDLESS_KEY_DEVEL_APP_DEVELOPER_EXTRAS=1` for a development\nbuild.\n\n#### Automatic provisioning\n\nThe kolibri-daemon service will automatically provision Kolibri when it starts\nfor the first time. This skips Kolibri's first-run setup wizard and sets up\nKolibri with no root user. To disable this feature, start kolibri-daemon with\nthe `ENDLESS_KEY_APP_AUTOMATIC_PROVISION` environment variable set to `0` for a\nproduction build, or with `ENDLESS_KEY_DEVEL_APP_AUTOMATIC_PROVISION` for a\ndevelopment build. For example, using the reference flatpak:\n\n```\nenv ENDLESS_KEY_DEVEL_APP_AUTOMATIC_PROVISION=0 flatpak run --command=/app/libexec/kolibri-app/kolibri-daemon org.endlessos.Key.Devel\n```\n\nAlternatively, provide your own [automatic provisioning file](httpshttps://github.com/learningequality/kolibri/blob/release-v0.16.x/kolibri/core/device/utils.py#L335-L365)\nand start kolibri-daemon with `env KOLIBRI_AUTOMATIC_PROVISION_FILE=/path/to/automatic_provision.json`.\n\n#### Automatic sign in\n\nThe kolibri-gnome application will automatically sign in to Kolibri using a\nprivate token assigned to the current desktop user. This is necessary to\nsupport the automatic provisioning feature. To disable automatic sign in, so\nKolibri will instead require you to sign in with a password, start the\napplication with the `ENDLESS_KEY_APP_AUTOMATIC_LOGIN` environment variable set\nto `0` for a production build, or with `ENDLESS_KEY_DEVEL_APP_AUTOMATIC_LOGIN`\nfor a development build. For example, using the reference flatpak:\n\n```\nenv ENDLESS_KEY_DEVEL_APP_AUTOMATIC_LOGIN=0 flatpak run org.endlessos.Key.Devel\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fendlessm%2Fendless-key-flatpak","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fendlessm%2Fendless-key-flatpak","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fendlessm%2Fendless-key-flatpak/lists"}