mirror of
https://github.com/kevinveenbirkenbach/cli-gnome-extension-manager.git
synced 2025-09-09 09:37:10 +02:00
Compare commits
9 Commits
46e8a481ca
...
main
Author | SHA1 | Date | |
---|---|---|---|
59943dc029 | |||
a6207b0a8c | |||
685784a777 | |||
ed0ae6d811 | |||
ebb2313aa3 | |||
639b09e9a4 | |||
d211d53264 | |||
5ef2d65f88 | |||
7857bb099b |
7
.github/FUNDING.yml
vendored
Normal file
7
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
github: kevinveenbirkenbach
|
||||
|
||||
patreon: kevinveenbirkenbach
|
||||
|
||||
buy_me_a_coffee: kevinveenbirkenbach
|
||||
|
||||
custom: https://s.veen.world/paypaldonate
|
73
README.md
73
README.md
@@ -1,2 +1,71 @@
|
||||
# cli-gnome-extension-manager
|
||||
Bash script to install, activate and deactivate gnome extensions via CLI
|
||||
# CLI GNOME Extension Manager 🚀
|
||||
[](https://github.com/sponsors/kevinveenbirkenbach) [](https://www.patreon.com/c/kevinveenbirkenbach) [](https://buymeacoffee.com/kevinveenbirkenbach) [](https://s.veen.world/paypaldonate)
|
||||
|
||||
|
||||
[](./LICENSE) [](https://www.gnu.org/software/bash/) [](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! 🌟
|
||||
|
@@ -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
52
main.sh
Executable 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
3
requirements.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
pacman:
|
||||
- gnome-shell-extensions
|
||||
- gnome-shell-extension-gtk4-desktop-icons-ng
|
Reference in New Issue
Block a user