# SwyxFFPlugin Firefox-Erweiterung zur Tab-Verwaltung fuer SwyxTray. Das Hintergrundskript haelt eine WebSocket-Verbindung zum **Plugin-Port** von SwyxTray (voreingestellt `ws://127.0.0.1:17655/`, einstellbar ueber `PluginPort` in `%LOCALAPPDATA%\SwyxTray\websocket.json`) und beantwortet drei Auftraege: | Auftrag | Antwort | |---|---| | `{"type":"tab","id":…,"action":"list"}` | `{"cmd":"tabresult","id":…,"ok":true,"tabs":[{id,title,url,active},…]}` | | `{"type":"tab","id":…,"action":"open","url":…}` | `{"cmd":"tabresult","id":…,"ok":true,"tabId":…}` | | `{"type":"tab","id":…,"action":"close","tabId":…}` | `{"cmd":"tabresult","id":…,"ok":true}` | Das Protokoll im Einzelnen steht im [Haupt-README](../../README.md) unter „Firefox-Plugin (SwyxFFPlugin)". Auf diesem Kanal fragt SwyxTray, das Plugin antwortet — genutzt vom `focus`-Kommando des Hauptports und von den Kontextmenuepunkten **Lese Tabs**, **Tab oeffnen** und **Tab schliessen** des Tray-Symbols. Laeuft SwyxTray (noch) nicht, verbindet das Skript sich selbst neu: beginnend mit 1 s Abstand, je Fehlversuch verdoppelt bis hoechstens 30 s. ## Installieren (zum Erproben) 1. In Firefox `about:debugging#/runtime/this-firefox` oeffnen. 2. **Temporaeres Add-on laden…** und die [manifest.json](manifest.json) dieses Ordners auswaehlen. 3. Im Protokoll von SwyxTray erscheint `WebSocket … verbunden (…, Plugin-Port)`. Ein temporaeres Add-on ueberlebt den Firefox-Neustart nicht. Fuer eine dauerhafte Installation muss die Erweiterung signiert werden (etwa unsigniert nur in Firefox Developer Edition/ESR mit `xpinstall.signatures.required=false`). Sind in SwyxTray die Handshake-Pruefungen eingeschaltet (zur Zeit sind sie abgeschaltet, siehe Haupt-README), braucht die Adresse in [background.js](background.js) zusaetzlich das Token (`ws://127.0.0.1:17655/?token=…`), und in `AllowedOrigins` muss der Origin `moz-extension://` der Erweiterung stehen — die UUID zeigt `about:debugging` als „Interne UUID".