{"id":13494760,"url":"https://github.com/essembeh/gnome-extensions-cli","last_synced_at":"2025-12-14T13:41:51.866Z","repository":{"id":65234350,"uuid":"264316334","full_name":"essembeh/gnome-extensions-cli","owner":"essembeh","description":"Command line tool to manage your Gnome Shell extensions","archived":false,"fork":false,"pushed_at":"2025-02-17T13:21:20.000Z","size":3406,"stargazers_count":121,"open_issues_count":1,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-17T20:21:27.019Z","etag":null,"topics":["gnome","gnome-shell","gnome-shell-extension"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/essembeh.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":"2020-05-15T22:59:41.000Z","updated_at":"2025-03-17T06:13:13.000Z","dependencies_parsed_at":"2024-01-18T23:24:20.891Z","dependency_job_id":"861baed6-410a-4aab-a6b0-d677d8d8e14c","html_url":"https://github.com/essembeh/gnome-extensions-cli","commit_stats":{"total_commits":40,"total_committers":2,"mean_commits":20.0,"dds":"0.025000000000000022","last_synced_commit":"010246d076535af3d0ddc1f898a792852cfcd366"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/essembeh%2Fgnome-extensions-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/essembeh%2Fgnome-extensions-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/essembeh%2Fgnome-extensions-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/essembeh%2Fgnome-extensions-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/essembeh","download_url":"https://codeload.github.com/essembeh/gnome-extensions-cli/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246046096,"owners_count":20714905,"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":["gnome","gnome-shell","gnome-shell-extension"],"created_at":"2024-07-31T19:01:27.867Z","updated_at":"2025-12-14T13:41:46.796Z","avatar_url":"https://github.com/essembeh.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"![Github](https://img.shields.io/github/tag/essembeh/gnome-extensions-cli.svg)\n![PyPi](https://img.shields.io/pypi/v/gnome-extensions-cli.svg)\n![Python](https://img.shields.io/pypi/pyversions/gnome-extensions-cli.svg)\n![CI](https://github.com/essembeh/gnome-extensions-cli/actions/workflows/poetry.yml/badge.svg)\n\n# gnome-extensions-cli\n\nInstall, update and manage your Gnome Shell extensions from your terminal !\n\n# Features\n\n- You can install any extension available on [Gnome website](https://extensions.gnome.org)\n- Use _DBus_ to communicate with _Gnome Shell_ like the Firefox addon does\n  - Also support non-DBus installations if needed\n- Automatically select the compatible version to install for your Gnome Shell\n- Update all your extensions with one command: `gext update`\n\nAvailable commands:\n\n- `gext list` to list you installed extensions\n- `gext search` to search for extensions on [Gnome website](https://extensions.gnome.org)\n- `gext install` to install extensions\n- `gext update` to update any or all your extensions\n- `gext uninstall` to uninstall extensions\n- `gext show` to show details about extensions\n- `gext enable` to enable extensions\n- `gext disable` to disable extensions\n- `gext preferences` to open the extension configuration window\n\n\u003e Note: `gext` is an alias of `gnome-extensions-cli`\n\n# Install\n\n## Releases\n\nReleases are available on [PyPI](https://pypi.org/project/gnome-extensions-cli/)\n\n\u003e Note: [PipX](https://pypi.org/project/pipx/) is the recommended way to install 3rd-party apps in dedicated environments.\n\n```sh\n# install using pip\n$ pip3 install --upgrade gnome-extensions-cli\n\n# or using pipx (you need to install pipx first)\n$ pipx install gnome-extensions-cli --system-site-packages\n\n# gext is an alias for gnome-extensions-cli\n$ gnome-extensions-cli --help\n$ gext --help\n```\n\n## From the source\n\nYou can also install the _latest_ version from the Git repository:\n\n```sh\n$ pip3 install --upgrade git+https://github.com/essembeh/gnome-extensions-cli\n```\n\nYou can setup a development environment with, requires [Poetry](https://python-poetry.org/)\n\n```sh\n# dependencies to install PyGObject with pip\n$ sudo apt install libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0\n\n# clone the repository\n$ git clone https://github.com/essembeh/gnome-extensions-cli\n$ cd gnome-extensions-cli\n\n# install poetry if you don't have it yet\n$ pipx install poetry\n\n# create the venv using poetry\n$ poetry install\n$ poetry shell\n(.venv) $ gnome-extensions-cli --help\n```\n\n# Using\n\nBy default commands output use terminal colors and styles for a better experience.\nIf you want to disable the colors and style, when using `gext` in shell scripts for example, you can \n- use `gext --no-color ...` \n- or set the environment variable `export NO_COLOR=1` in your shell script before calling `gext`\n\n\n## List your extensions\n\nBy default, the `list` command only display the _enabled_ extensions, using `-a|--all` argument also displays _disabled_ ones.\n\n![gext list](images/list.png)\n\n## Install, update or uninstall extensions\n\nThe `install` commands allows you to install extensions from their _uuid_ or _pk_.\n\n\u003e Note: You can use `search` command to find extensions, `gext` prints _uuids_ in _yellow_ .\n\n```sh\n# Install extension by its UUID\n$ gext install dash-to-panel@jderose9.github.com\n\n# or use its package number from https://extensions.gnome.org\n$ gext install 1160\n\n# You can also install multiple extensions at once\n$ gext install 1160 todo.txt@bart.libert.gmail.com\n\n# Uninstall extensions\n$ gext uninstall todo.txt@bart.libert.gmail.com\n\n# You can enable and disable extensions\n$ gext enable todo.txt@bart.libert.gmail.com\n$ gext disable todo.txt@bart.libert.gmail.com dash-to-panel@jderose9.github.com\n```\n\n![gext install](images/install.gif)\n\nThe `update` command without arguments updates all _enabled_ extensions.\nYou can also `update` a specific extension by giving its _uuid_.\n\n![gext update](images/update.gif)\n\n\u003e Note: the `--install` argument allow you to _install_ extensions given to `update` command if they are not installed.\n\n## Search for extensions and show details\n\nThe `search` command searches from [Gnome website](https://extensions.gnome.org) and prints results in your terminal:\n\n![gext search](images/search.png)\n\nThe `show` command fetches details from _Gnome website_ and prints them:\n\n![gext show](images/show.png)\n\n# Under the hood: DBus vs Filesystem\n\n`gext` can interact with Gnome Shell using two different implementations, using `dbus` or using a `filesystem` operations.\n\n\u003e Note: By default, it uses `dbus` (as it is the official way), but switches to `filesystem` if `dbus` is not available (like with _ssh_ sessions)\n\n## DBus\n\nUsing `--dbus`, the application uses _dbus_ messages with DBus Python API to communicate with Gnome Shell directly.\n\nInstallations are interactive, like when you install extensions from your browser on Gnome website, you are prompted with a Gnome _Yes/No_ dialog before installing the extensions\n\nPros:\n\n- You are using the exact same way to install extensions as the Firefox addon\n- Automatically restart the Gnome Shell when needed\n- Very stable\n- You can open the extension preference dialog with `gext edit EXTENSION_UUID`\n\nCons:\n\n- You need to have a running Gnome session\n\n## Filesystem backend\n\nUsing `--filesystem`, the application uses unzip packages from [Gnome website](https://extensions.gnome.org) directly in you `~/.local/share/gnome-shell/extensions/` folder, enable/disable them and restarting the Gnome Shell using subprocesses.\n\nPros:\n\n- You can install extensions without any Gnome session running (using _ssh_ for example)\n- Many `gext` alternatives CLI tools use this method\n\nCons:\n\n- Some extensions might not install well\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fessembeh%2Fgnome-extensions-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fessembeh%2Fgnome-extensions-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fessembeh%2Fgnome-extensions-cli/lists"}