A suite of tools designed to automate the setup and teardown of complex development and research environments on GNOME. It handles launching applications, waiting for windows to initialize, and precisely arranging them across single or dual monitor setups.
WorkEnvLauncher.py: The main Python-based orchestrator that reads JSON configurations to launch and tile applications.3dWS.sh/launchUniWS.sh: Specialized bash scripts for specific high-stakes environments.closeWS.sh: A robust utility to instantly close all windows on the current workspace.CONFIG_GUIDE.md: Detailed documentation on how to create your own workspace JSONs.
This project relies heavily on the Windows GNOME Shell extension. This extension exposes a DBus interface (org.gnome.Shell.Extensions.Windows) that allows external scripts to:
- List open windows with their metadata (ID, class, title, workspace).
- Move, resize, maximize, and minimize windows.
- Close windows and change focus.
Installation: Ensure this extension is installed and enabled in your GNOME environment.
The scripts and the orchestrator require the following tools:
python3withPyGObject(for Gtk/Gdk/Gio integration).jq(for JSON processing in bash scripts).gdbus(standard on most GNOME systems).flatpak(if you are launching flatpak-based applications).
The Python orchestrator uses native GNOME libraries. On most distributions (like Fedora or Ubuntu), you can install the necessary introspecton libraries via:
# Example for Debian/Ubuntu
sudo apt install python3-gi gir1.2-gtk-3.0To launch a workspace defined in a JSON file:
./WorkEnvLauncher.py your_workspace.jsonTo quickly clear your current virtual desktop:
./closeWS.shThe most efficient way to use these tools is to map them to system-wide keyboard shortcuts in GNOME:
- Open GNOME Settings -> Keyboard -> View and Customize Shortcuts.
- Custom Shortcuts -> Add Shortcut.
- Example: Close Workspace
- Name:
Close Workspace - Command:
/path/to/LinuxScripts/MultiProgramLauncher/closeWS.sh - Shortcut:
Super + X(or your preference)
- Name:
- Example: Launch 3D Workspace
- Name:
Launch 3D WS - Command:
/path/to/LinuxScripts/MultiProgramLauncher/WorkEnvLauncher.py /path/to/3d.json - Shortcut:
Super + Alt + 3(or your preference)
- Name:
The .gitignore in this directory is configured to ignore *.json files. This is intentional to prevent personal information, private URLs, or machine-specific paths from being committed to version control.
For details on how to write your own workspace JSON configurations, see CONFIG_GUIDE.md. CONFIG_GUIDE.md).