SwitchShuttle ist eine plattformübergreifende System-Tray-Anwendung, die es Benutzern ermöglicht, vordefinierte Befehle in verschiedenen Terminalanwendungen auszuführen. Es unterstützt macOS, Windows und Linux und bietet eine einfache und anpassbare Möglichkeit, Ihre häufig verwendeten Befehle zu verwalten und auszuführen.
SwitchShuttle ist eine Neuinterpretation und Erweiterung der Shuttle Anwendung. Während Shuttle eine einfache und effektive Möglichkeit bietet, Befehlskurzbefehle in macOS zu verwalten, erweitert SwitchShuttle dieses Konzept, indem es Unterstützung für mehrere Betriebssysteme und Terminalemulatoren bietet, zusammen mit erweiterten Konfigurationsmöglichkeiten und Anpassungsoptionen für den Benutzer.
- Unterstützt mehrere Terminalanwendungen: iTerm, Terminal, Warp, Alacritty, Hyper.
- Befehle in verschiedenen Modi ausführen: aktuelles Fenster, neuer Tab, neues Fenster.
- Start beim Login umschalten.
- Konfiguration direkt über das Tray-Menü bearbeiten.
- Konfigurationsordner aus dem Tray-Menü öffnen.
- Unterstützung von Untermenüs für eine bessere Organisation der Befehle.
- Unterstützung dynamischer Eingaben für Befehle.
- Neu: Kontextmenü mit einer Hotkey-Tastenkombination aufrufen.
Die Konfiguration wird in JSON-Dateien im Konfigurationsverzeichnis des Benutzers gespeichert. Der Standardpfad ist ~/.config/switch-shuttle/
auf Linux und macOS und C:\Users\<Username>\AppData\Roaming\switch-shuttle\
auf Windows. Sie können mehrere Konfigurationsdateien in diesem Verzeichnis speichern, wobei jede eine andere Sammlung von Befehlen und Einstellungen darstellt.
Hier ist ein Beispiel für eine Konfigurationsdatei:
{
"terminal": "iterm",
"launch_in": "current",
"theme": "Homebrew",
"title": "New tab",
"menu_hotkey": "Ctrl+Shift+M",
"commands": [
{
"name": "Command",
"inputs": null,
"command": null,
"commands": null,
"hotkey": null,
"submenu": [
{
"name": "Example Command",
"inputs": null,
"command": "echo Hello, world!",
"commands": null,
"submenu": null,
"hotkey": "Ctrl+Shift+E"
},
{
"name": "Example Multi-Command with input",
"inputs": {
"key1": "default1",
"key2": "default2"
},
"command": null,
"commands": [
"export MY_VAR=$(echo 'Step 1: [key1]')",
"RESULT=$(echo 'Step 2: [key2]' && echo $MY_VAR)",
"echo Step 3: Finalize && echo $RESULT"
],
"submenu": null,
"hotkey": "Ctrl+Shift+M"
},
{
"name": "Example Submenu",
"inputs": null,
"command": null,
"commands": null,
"submenu": [
{
"name": "Subcommand 1",
"inputs": null,
"command": "echo Subcommand 1",
"commands": null,
"submenu": null,
"hotkey": "Ctrl+Shift+S"
},
{
"name": "Subcommand 2",
"inputs": null,
"command": "echo Subcommand 2",
"commands": null,
"submenu": null,
"hotkey": null
}
],
"hotkey": null
}
]
}
]
}
Parameter | Typ | Beschreibung | Gültige Werte |
---|---|---|---|
terminal | String | Das zu verwendende Terminalprogramm | "iterm", "terminal", "warp" |
launch_in | String | Wo der Befehl gestartet werden soll | "current", "new_tab", "new_window" |
theme | String | Das zu verwendende Thema (falls unterstützt) | Jeder Zeichenfolgenwert, der ein Thema darstellt |
title | String | Der Titel für das Terminalfenster/-tab | Jeder Zeichenfolgenwert |
menu_hotkey | String (Optional) | Die globale Hotkey-Tastenkombination zum Aufrufen des Kontextmenüs | Jede gültige Hotkey-Kombination, z.B. "Ctrl+Shift+M" |
commands | Array | Liste der Befehlskonfigurationen | Siehe unten für Befehl-Parameter |
Parameter | Typ | Beschreibung | Gültige Werte |
---|---|---|---|
name | String | Der Name des Befehls oder Untermenüs | Jeder Zeichenfolgenwert |
inputs | Object (Optional) | Schlüssel-Wert-Paare für Eingaben | {"key1": "default1", "key2": "default2"} |
command | String (Optional) | Der auszuführende Befehl (falls dies ein Befehl ist) | Jeder Zeichenfolgenwert, der einen Befehl darstellt |
commands | Array (Optional) | Liste der nacheinander auszuführenden Befehle | Jeder Array von Zeichenfolgen, jede Zeichenfolge ist ein Befehl |
submenu | Array (Optional) | Liste der Unterbefehle (falls dies ein Untermenü ist) | Siehe oben für Befehl-Parameter |
hotkey | String (Optional) | Die globale Hotkey-Tastenkombination zum Auslösen des Befehls | Jede gültige Hotkey-Kombination, z.B. "Ctrl+Shift+E" |
SwitchShuttle unterstützt die Definition eines einzelnen Befehls mit dem Parameter command
, einer Liste von Befehlen mit dem Parameter commands
oder beides. Wenn sowohl command
als auch commands
angegeben sind, wird der einzelne Befehl zuerst ausgeführt, gefolgt von den Befehlen in der Liste.
- Einzelbefehl: Wenn nur
command
angegeben ist, wird dieser Befehl ausgeführt. - Mehrere Befehle: Wenn nur
commands
angegeben ist, wird jeder Befehl in der Liste nacheinander ausgeführt. - Beide Parameter: Wenn sowohl
command
als auchcommands
angegeben sind, wird der einzelne Befehl zuerst ausgeführt, gefolgt von jedem Befehl in der Listecommands
.
SwitchShuttle ermöglicht die Definition dynamischer Eingaben für Befehle. Diese Eingaben werden vom Benutzer angefordert, bevor der Befehl ausgeführt wird. Sie können Eingaben mit dem Parameter inputs
in der Befehlskonfiguration definieren.
{
"name": "Example Multi-Command with input",
"inputs": {
"key1": "default1",
"key2": "default2"
},
"command": null,
"commands": [
"export MY_VAR=$(echo 'Step 1: [key1]')",
"RESULT=$(echo 'Step 2: [key2]' && echo $MY_VAR)",
"echo Step 3: Finalize && echo $RESULT"
],
"submenu": null,
"hotkey": "Ctrl+Shift+M"
}
Sie können globale Hotkeys für Befehle zuweisen, indem Sie den Parameter hotkey
zur Befehlskonfiguration hinzufügen. Die Hotkey-Kombination muss dem Format der Modifikatortasten (Ctrl, Shift, Alt, Win) in Kombination mit einer Taste (A-Z, 0-9 usw.) folgen. Zum Beispiel, um "Ctrl+Shift+E" als Hotkey für einen Befehl festzulegen:
{
"name": "Example Command",
"command": "echo Hello, world!",
"submenu": null,
"hotkey": "Ctrl+Shift+E",
"commands": null
}
Der Parameter hotkey
ist optional. Wenn er nicht angegeben ist, hat der Befehl keinen globalen Hotkey zugewiesen.
- Hotkeys zuweisen: Bearbeiten Sie die Konfigurationsdatei, um den Parameter
hotkey
für die Befehle hinzuzufügen, die Sie mit globalen Hotkeys auslösen möchten. - Hotkeys verwenden: Verwenden Sie nach dem Neustart der Anwendung die zugewiesenen Hotkeys, um die entsprechenden Befehle auszulösen, unabhängig davon, welche Anwendung derzeit im Fokus steht.
- Edit Config: Klicken Sie mit der rechten Maustaste auf das Tray-Symbol und wählen Sie Konfiguration, um die Konfigurationsdatei in Ihrem Standardeditor zu öffnen. Passen Sie die Konfiguration nach Bedarf an.
- KShow Config Folder: Klicken Sie mit der rechten Maustaste auf das Tray-Symbol und wählen Sie "Show Config Folder", um das Konfigurationsverzeichnis in Ihrem Dateimanager zu öffnen.
- Toggle Launch at Logi: Klicken Sie mit der rechten Maustaste auf das Tray-Symbol und wählen Sie "Toggle Launch at Login", um das automatische Starten der Anwendung beim Login zu aktivieren oder zu deaktivieren.
- Execute Command: Klicken Sie mit der linken Maustaste auf das Tray-Symbol und wählen Sie den Befehl aus, den Sie ausführen möchten, aus dem Menü. Der Befehl wird im angegebenen Terminalprogramm ausgeführt.
Um Untermenüs zu erstellen, setzen Sie das Feld command
auf null
und geben Sie eine Liste von Unterbefehlen im Feld submenu
an. Unterbefehle können auch eigene Untermenüs haben, was verschachtelte Menüs ermöglicht.
- Klonen Sie das Repository:
git clone https://github.com/s00d/switchshuttle.git
cd switchshuttle
npm i
- Bauen Sie die Anwendung:
cargo tauri build
- Führen Sie die Anwendung aus:
cargo tauri dev
Die neueste Version von SwitchShuttle kann auf der GitHub Releases Seite heruntergeladen werden.
Anwendung signieren
Wenn Sie macOS verwenden, müssen Sie möglicherweise die Anwendung vor dem Ausführen signieren. Hier sind die Schritte:
- Machen Sie die Binärdatei ausführbar:
chmod +x /Applications/switch-shuttle.app
- Löschen Sie erweiterte Attribute und signieren Sie die Binärdatei:
xattr -cr /Applications/switch-shuttle.app && codesign --force --deep --sign - /Applications/switch-shuttle.app
Beiträge sind willkommen! Bitte senden Sie eine Pull-Request oder öffnen Sie ein Issue auf GitHub.
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe die LICENSE Datei für Details.
Viel Spaß beim Verwenden von SwitchShuttle zur einfachen Verwaltung Ihrer Terminalbefehle!