gnome-extensions-cli


Namegnome-extensions-cli JSON
Version 0.10.3 PyPI version JSON
download
home_pagehttps://github.com/essembeh/gnome-extensions-cli
SummaryCommand line tool to manage your Gnome Shell extensions
upload_time2024-10-07 13:26:33
maintainerNone
docs_urlNone
authorSébastien MB
requires_python<4.0,>=3.8
licenseApache-2.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ![Github](https://img.shields.io/github/tag/essembeh/gnome-extensions-cli.svg)
![PyPi](https://img.shields.io/pypi/v/gnome-extensions-cli.svg)
![Python](https://img.shields.io/pypi/pyversions/gnome-extensions-cli.svg)
![CI](https://github.com/essembeh/gnome-extensions-cli/actions/workflows/poetry.yml/badge.svg)

# 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.

![gext list](images/list.png)

## 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
```

![gext install](images/install.gif)

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

![gext update](images/update.gif)

> 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:

![gext search](images/search.png)

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

![gext show](images/show.png)

# 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": "![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> 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![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> 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> 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> 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"
}
        
Elapsed time: 0.32960s