



# gnome-extensions-cli
Install, update and manage your Gnome Shell extensions from your terminal !
# Features
- You can install any extension available on [Gnome website](https://extensions.gnome.org)
- Use _DBus_ to communicate with _Gnome Shell_ like the Firefox addon does
- Also support non-DBus installations if needed
- Automatically select the compatible version to install for your Gnome Shell
- Update all your extensions with one command: `gext update`
Available commands:
- `gext list` to list you installed extensions
- `gext search` to search for extensions on [Gnome website](https://extensions.gnome.org)
- `gext install` to install extensions
- `gext update` to update any or all your extensions
- `gext uninstall` to uninstall extensions
- `gext show` to show details about extensions
- `gext enable` to enable extensions
- `gext disable` to disable extensions
- `gext preferences` to open the extension configuration window
> Note: `gext` is an alias of `gnome-extensions-cli`
# Install
## Releases
Releases are available on [PyPI](https://pypi.org/project/gnome-extensions-cli/)
> Note: [PipX](https://pypi.org/project/pipx/) is the recommended way to install 3rd-party apps in dedicated environments.
```sh
# install using pip
$ pip3 install --upgrade gnome-extensions-cli
# or using pipx (you need to install pipx first)
$ pipx install gnome-extensions-cli --system-site-packages
# gext is an alias for gnome-extensions-cli
$ gnome-extensions-cli --help
$ gext --help
```
## From the source
You can also install the _latest_ version from the Git repository:
```sh
$ pip3 install --upgrade git+https://github.com/essembeh/gnome-extensions-cli
```
You can setup a development environment with, requires [Poetry](https://python-poetry.org/)
```sh
# dependencies to install PyGObject with pip
$ sudo apt install libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0
# clone the repository
$ git clone https://github.com/essembeh/gnome-extensions-cli
$ cd gnome-extensions-cli
# install poetry if you don't have it yet
$ pipx install poetry
# create the venv using poetry
$ poetry install
$ poetry shell
(.venv) $ gnome-extensions-cli --help
```
# Using
By default commands output use terminal colors and styles for a better experience.
If you want to disable the colors and style, when using `gext` in shell scripts for example, you can
- use `gext --no-color ...`
- or set the environment variable `export NO_COLOR=1` in your shell script before calling `gext`
## List your extensions
By default, the `list` command only display the _enabled_ extensions, using `-a|--all` argument also displays _disabled_ ones.

## Install, update or uninstall extensions
The `install` commands allows you to install extensions from their _uuid_ or _pk_.
> Note: You can use `search` command to find extensions, `gext` prints _uuids_ in _yellow_ .
```sh
# Install extension by its UUID
$ gext install dash-to-panel@jderose9.github.com
# or use its package number from https://extensions.gnome.org
$ gext install 1160
# You can also install multiple extensions at once
$ gext install 1160 todo.txt@bart.libert.gmail.com
# Uninstall extensions
$ gext uninstall todo.txt@bart.libert.gmail.com
# You can enable and disable extensions
$ gext enable todo.txt@bart.libert.gmail.com
$ gext disable todo.txt@bart.libert.gmail.com dash-to-panel@jderose9.github.com
```

The `update` command without arguments updates all _enabled_ extensions.
You can also `update` a specific extension by giving its _uuid_.

> Note: the `--install` argument allow you to _install_ extensions given to `update` command if they are not installed.
## Search for extensions and show details
The `search` command searches from [Gnome website](https://extensions.gnome.org) and prints results in your terminal:

The `show` command fetches details from _Gnome website_ and prints them:

# Under the hood: DBus vs Filesystem
`gext` can interact with Gnome Shell using two different implementations, using `dbus` or using a `filesystem` operations.
> 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)
## DBus
Using `--dbus`, the application uses _dbus_ messages with DBus Python API to communicate with Gnome Shell directly.
Installations 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
Pros:
- You are using the exact same way to install extensions as the Firefox addon
- Automatically restart the Gnome Shell when needed
- Very stable
- You can open the extension preference dialog with `gext edit EXTENSION_UUID`
Cons:
- You need to have a running Gnome session
## Filesystem backend
Using `--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.
Pros:
- You can install extensions without any Gnome session running (using _ssh_ for example)
- Many `gext` alternatives CLI tools use this method
Cons:
- Some extensions might not install well
Raw data
{
"_id": null,
"home_page": "https://github.com/essembeh/gnome-extensions-cli",
"name": "gnome-extensions-cli",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": null,
"author": "S\u00e9bastien MB",
"author_email": "seb@essembeh.org",
"download_url": "https://files.pythonhosted.org/packages/90/58/43b26cf10edc71b1cb8160088aa220f31758b9325222ac197044170a47fb/gnome_extensions_cli-0.10.3.tar.gz",
"platform": null,
"description": "\n\n\n\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> 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> 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\n\n## Install, update or uninstall extensions\n\nThe `install` commands allows you to install extensions from their _uuid_ or _pk_.\n\n> 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\n\nThe `update` command without arguments updates all _enabled_ extensions.\nYou can also `update` a specific extension by giving its _uuid_.\n\n\n\n> 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\n\nThe `show` command fetches details from _Gnome website_ and prints them:\n\n\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> 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",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Command line tool to manage your Gnome Shell extensions",
"version": "0.10.3",
"project_urls": {
"Homepage": "https://github.com/essembeh/gnome-extensions-cli"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "cda443560e333414a3fce88a2c9c68953d4f06393a7a5bf7128a4830f80327d3",
"md5": "859effa4a4dfdf5fdcb00ffb2c809c3b",
"sha256": "3f6cfaf8e7302432c9938f591c92457063172d396d880acaf28ef57feaa8d352"
},
"downloads": -1,
"filename": "gnome_extensions_cli-0.10.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "859effa4a4dfdf5fdcb00ffb2c809c3b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 25810,
"upload_time": "2024-10-07T13:26:32",
"upload_time_iso_8601": "2024-10-07T13:26:32.644127Z",
"url": "https://files.pythonhosted.org/packages/cd/a4/43560e333414a3fce88a2c9c68953d4f06393a7a5bf7128a4830f80327d3/gnome_extensions_cli-0.10.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "905843b26cf10edc71b1cb8160088aa220f31758b9325222ac197044170a47fb",
"md5": "9664a899b93cd5a0c616ba3b94421472",
"sha256": "67831b89607d228448b201f96462a70a1df6ec5cc6b4eb16e6fa632756407d3b"
},
"downloads": -1,
"filename": "gnome_extensions_cli-0.10.3.tar.gz",
"has_sig": false,
"md5_digest": "9664a899b93cd5a0c616ba3b94421472",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 19166,
"upload_time": "2024-10-07T13:26:33",
"upload_time_iso_8601": "2024-10-07T13:26:33.987489Z",
"url": "https://files.pythonhosted.org/packages/90/58/43b26cf10edc71b1cb8160088aa220f31758b9325222ac197044170a47fb/gnome_extensions_cli-0.10.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-07 13:26:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "essembeh",
"github_project": "gnome-extensions-cli",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "gnome-extensions-cli"
}