Compare commits

...

9 Commits

5 changed files with 133 additions and 51 deletions

7
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,7 @@
github: kevinveenbirkenbach
patreon: kevinveenbirkenbach
buy_me_a_coffee: kevinveenbirkenbach
custom: https://s.veen.world/paypaldonate

View File

@@ -1,2 +1,71 @@
# cli-gnome-extension-manager
Bash script to install, activate and deactivate gnome extensions via CLI
# CLI GNOME Extension Manager 🚀
[![GitHub Sponsors](https://img.shields.io/badge/Sponsor-GitHub%20Sponsors-blue?logo=github)](https://github.com/sponsors/kevinveenbirkenbach) [![Patreon](https://img.shields.io/badge/Support-Patreon-orange?logo=patreon)](https://www.patreon.com/c/kevinveenbirkenbach) [![Buy Me a Coffee](https://img.shields.io/badge/Buy%20me%20a%20Coffee-Funding-yellow?logo=buymeacoffee)](https://buymeacoffee.com/kevinveenbirkenbach) [![PayPal](https://img.shields.io/badge/Donate-PayPal-blue?logo=paypal)](https://s.veen.world/paypaldonate)
[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](./LICENSE) [![Bash Version](https://img.shields.io/badge/Bash-4.x%2B-green.svg)](https://www.gnu.org/software/bash/) [![GitHub stars](https://img.shields.io/github/stars/kevinveenbirkenbach/cli-gnome-extension-manager.svg?style=social)](https://github.com/kevinveenbirkenbach/cli-gnome-extension-manager/stargazers)
Manage your GNOME extensions easily from the command line with **CLI GNOME Extension Manager**. This Bash script lets you install, update, enable, and disable GNOME extensions directly from your terminal.
## Features ✨
- **Install & Update**: Clone extension repositories and update them if already installed.
- **Compile**: Automatically compile the extension if a Makefile is provided.
- **Activate/Deactivate**: Enable or disable GNOME extensions easily using the CLI.
- **Automation-Friendly**: Perfect for power users and automation scripts.
## Requirements 🔧
- **GNOME Shell** (version 3.36+)
- **Bash** (version 4.x+)
- **Git** (for cloning repositories)
- **Make** (optional, for compiling extensions)
- **gnome-extensions** CLI tool
## Installation 📦
You can install **CLI GNOME Extension Manager** using [Kevin's Package Manager](https://github.com/kevinveenbirkenbach/pkgmgr):
```bash
pkgmgr install goexma
```
Alternatively, clone this repository:
```bash
git clone https://github.com/kevinveenbirkenbach/cli-gnome-extension-manager.git
cd cli-gnome-extension-manager
```
## Usage ⚙️
To **install and enable** an extension, run:
```bash
goexma enable <extension_name> <extension_repository_path>
```
To **disable** an extension, run:
```bash
goexma disable <extension_name>
```
The script will:
- Clone the repository if the extension isn't installed.
- Pull updates if the extension is already a Git repository.
- Compile the extension if a Makefile is present.
- Enable or disable the extension using `gnome-extensions`.
## License 📜
This project is licensed under the GNU Affero General Public License v3.0. See the [LICENSE](./LICENSE) file for details.
## Author 👨‍💻
**Kevin Veen-Birkenbach**
- 📧 [kevin@veen.world](mailto:kevin@veen.world)
- 🌐 [https://www.veen.world/](https://www.veen.world/)
---
Feel free to contribute, open issues, or suggest improvements. Enjoy managing your GNOME extensions effortlessly! 🌟

View File

@@ -1,49 +0,0 @@
#!/bin/bash
# @param $1 enable|disable
# @param $2 extension name
# @param $3 repository path [optional]
action_type="$1"
extension_name="$2"
extension_repository_path="$3"
extension_folder="$HOME/.local/share/gnome-shell/extensions/$extension_repository_path/"
echo "Install GNOME extension \"$extension_name\"..."
if [ "$action_type" == "enable" ];
then
if [ -z "$extension_repository_path" ];
then
if [ -d "$extension_folder" ];
then
if [ -d "$extension_folder"".git" ];
then
echo "Pulling changes from git..." &&
(cd "$extension_folder" && git pull) || exit 1
else
echo "No git repository. Extension will not be updated."
fi
else
echo "Install..." &&
git clone "$extension_repository_path" "$extension_folder" || exit 1
fi
if [ -f "$extension_folder""Makefile" ];
then
tmp_extension_folder="/tmp/$extension_repository_path"
mv "$extension_folder" "$tmp_extension_folder"
echo "Compilling extension.."
(cd "$tmp_extension_folder" && make install) || exit 1 "Compilation with failed."
echo "Cleaning up tmp-extension folder..."&&
rm -fr "$tmp_extension_folder" || exit 1
else
echo "No Makefile found. Skipping compilation..."
fi
fi
echo "enable GNOME extension \"$extension_name\"..." &&
gnome-extensions enable "$extension_name" || exit 1
fi
if [ "$action_type" == "disable" ];
then
echo "disable GNOME extension \"$extension_name\"..." &&
gnome-extensions disable "$extension_name" || exit 1
fi

52
main.sh Executable file
View File

@@ -0,0 +1,52 @@
#!/bin/bash
# @param $1 enable|disable
# @param $2 extension name
# @param $3 repository path [optional]
action_type="$1"
extension_name="$2"
extension_repository_path="$3"
extension_folder="$HOME/.local/share/gnome-shell/extensions/$extension_name/"
echo "=== GNOME Extension Installer ==="
echo "Installing GNOME extension \"$extension_name\"..."
if [ "$action_type" == "enable" ]; then
if [ ! -z "$extension_repository_path" ]; then
echo "Generating extension based on $3"
if [ -d "$extension_folder" ]; then
if [ -d "$extension_folder.git" ]; then
echo "Pulling changes from git..."
(cd "$extension_folder" && git pull) || exit 1
else
echo "No git repository. Extension will not be updated."
fi
else
echo "Cloning repository..."
git clone "$extension_repository_path" "$extension_folder" || exit 1
fi
if [ -f "$extension_folder/Makefile" ]; then
tmp_extension_folder="/tmp/$extension_name"
mv "$extension_folder" "$tmp_extension_folder"
echo "Compiling extension..."
(cd "$tmp_extension_folder" && make install) || exit 1 "Compilation failed."
echo "Cleaning up temporary extension folder..."
rm -fr "$tmp_extension_folder" || exit 1
else
echo "No Makefile found. Skipping compilation..."
fi
fi
echo "Enabling GNOME extension \"$extension_name\"..."
gnome-extensions enable "$extension_name" || exit 1
fi
if [ "$action_type" == "disable" ]; then
echo "Disabling GNOME extension \"$extension_name\"..."
gnome-extensions disable "$extension_name" || exit 1
fi
echo "Installation complete."

3
requirements.yml Normal file
View File

@@ -0,0 +1,3 @@
pacman:
- gnome-shell-extensions
- gnome-shell-extension-gtk4-desktop-icons-ng