Skip to content

KonstantinMerkel/MultiProgramLauncher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Workspace Orchestrator & Multi-Program Launcher

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.

Core Components

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

Requirements

1. GNOME Shell Extension: "Windows"

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.

2. System Dependencies

The scripts and the orchestrator require the following tools:

  • python3 with PyGObject (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).

3. Python Environment

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

Usage

Launching a Workspace

To launch a workspace defined in a JSON file:

./WorkEnvLauncher.py your_workspace.json

Closing a Workspace

To quickly clear your current virtual desktop:

./closeWS.sh

Recommended Setup: Keyboard Shortcuts

The most efficient way to use these tools is to map them to system-wide keyboard shortcuts in GNOME:

  1. Open GNOME Settings -> Keyboard -> View and Customize Shortcuts.
  2. Custom Shortcuts -> Add Shortcut.
  3. Example: Close Workspace
    • Name: Close Workspace
    • Command: /path/to/LinuxScripts/MultiProgramLauncher/closeWS.sh
    • Shortcut: Super + X (or your preference)
  4. 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)

Security Note

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.

Configuration

For details on how to write your own workspace JSON configurations, see CONFIG_GUIDE.md. CONFIG_GUIDE.md).

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors