zshell

Browserbereiche

Webseiten neben dem Terminal öffnen, mit nativen Bedienelementen navigieren und Links im Projekt behalten.

Zshell kann in jedem Tab oder geteilten Bereich einen integrierten Browser anzeigen. Das eignet sich für lokale Entwicklungsserver, API-Dokumentation, Issues und andere Webseiten, die Sie neben dem zugehörigen Terminal brauchen.

Einen Browser öffnen

  • Wählen Sie Ablage → Neuer Browser-Tab, um einen leeren Tab zu öffnen.
  • Öffnen Sie die Befehlspalette (Cmd+P) und wählen Sie Neuer Browser-Tab oder Neuer Browserbereich.
  • Klicken Sie im Terminal bei gedrückter Command-Taste mit der rechten Maustaste auf eine erkannte URL und wählen Sie eine dieser beiden Aktionen. Die Adresse muss nicht zuerst kopiert werden.

Browser-Tabs gehören zum ausgewählten Projekt und sind Teil seiner normalen Tab- und Bereichsanordnung. Ist noch kein Projekt geöffnet, legt Zshell eines für den Browser an.

Das obere Eingabefeld akzeptiert vollständige URLs, Hostnamen und Suchbegriffe:

  • zshell.sh wird zu einer HTTPS-Adresse.
  • localhost, lokale Hostnamen, IP-Adressen und explizite Ports verwenden HTTP.
  • Andere Eingaben werden als Google-Suche geöffnet.

Cmd+L fokussiert das Feld, Cmd+R lädt die Seite neu. Die Werkzeugleiste bietet außerdem Zurück, Vorwärts, Stoppen/Neu laden, Teilen und Im Standardbrowser öffnen. Die Vor- und Zurückgesten des Trackpads funktionieren ebenfalls.

AktionTastenkürzel
Adressleiste fokussierenCmd+L
Seite neu ladenCmd+R

Das Kontextmenü eines Webseitenlinks bietet Link in neuem Tab öffnen und Link in neuem Bereich öffnen. Die neue Seite bleibt im Arbeitsbereich desselben Projekts.

Im Terminal öffnet ein normaler Command-Klick eine erkannte Webadresse im Standardbrowser. Erst Command-Rechtsklick bietet einen Zshell-Tab oder -Bereich an. Für lokale Pfade gibt es entsprechende Aktionen unter Pfade und URLs.

Was erhalten bleibt

Beim Wechsel zwischen Tabs oder Projekten bleiben Verlauf, Scrollposition, Formulare und interner Zustand der Seite erhalten. Beim erneuten Start von Zshell werden aktuelle URL und Anordnung wiederhergestellt, jedoch nicht der vollständige Vor- und Zurückverlauf.

Browserbereiche speichern Cookies, Anmeldungen und andere Websitedaten über Tabs und Neustarts hinweg. Es handelt sich nicht um einen privaten Browsermodus.

Die Seite von einem Agent testen lassen

Bitte deinen Coding-Agent, eine bereits in diesem Projekt geöffnete Seite zu prüfen, ein Formular auszufüllen, ein Ergebnis zu kontrollieren oder den sichtbaren Bereich aufzunehmen. Er nutzt die vorhandene Browsersitzung und lässt den Fokus standardmäßig im Terminal. Eine lokale Entwicklungs-URL kann auch in einem Browserbereich im Hintergrund geöffnet werden.

Führe diese Befehle für Skripte in einem Zshell-Terminal aus. Notiere die zurückgegebene browser_id und ersetze unten BROWSER_ID:

zshell +browser list
zshell +browser open http://localhost:3000 --wait
zshell +browser snapshot --browser BROWSER_ID
zshell +browser fill --browser BROWSER_ID --selector '#search' --text 'terminal'
zshell +browser click --browser BROWSER_ID --selector 'button[type="submit"]'
zshell +browser wait --browser BROWSER_ID --selector '#results' --timeout 10000
zshell +browser screenshot --browser BROWSER_ID --output /tmp/zshell-page.png

Snapshots liefern Text des Hauptframes, zugängliche Beschriftungen und Elementreferenzen. Nach Seitenänderungen oder Aktionen verfallen Referenzen; erstelle vor der Wiederverwendung einen neuen Snapshot. Ein CSS-Selektor muss genau ein Element treffen. Zur Navigation dienen navigate, back, forward, reload und stop.

Erlaubt sind vollständige HTTP/HTTPS-URLs und about:blank. Andere Protokolle, Downloads, Dateiauswahl und native Dialoge erfordern deine Interaktion. Die Einschränkung endet durch manuelle Navigation über Adress- oder Werkzeugleiste. Befehle bleiben im Projekt und Fenster des aufrufenden Terminals. --timeout beträgt 100–30000 Millisekunden. Snapshots enthalten höchstens 200 Elemente, 32768 Textzeichen und 256 KiB; Passwort- und Dateifeldwerte fehlen. PNG-Aufnahmen des sichtbaren Bereichs sind auf 512 KiB begrenzt, funktionieren auch vor dem ersten Anzeigen mit einem 1024 × 768 großen Viewport ohne Fokuswechsel und überschreiben keine Dateien. Mit --width lässt sich die Größe reduzieren. Alle Optionen: zshell +browser --help.

Seitenskripte und Anmeldestatus

zshell +browser eval --browser BROWSER_ID --script 'Promise.resolve({title: document.title})'
zshell +browser state save --browser BROWSER_ID --output /tmp/zshell-login.json
zshell +browser state load --browser BROWSER_ID --input /tmp/zshell-login.json
zshell +browser reload --browser BROWSER_ID --wait

eval --script läuft im echten Hauptframe, wartet auf eine zurückgegebene Promise und liefert JSON in value; undefined wird null. Für await nutze einen asynchronen Funktionsausdruck. Grenzen: 64 KiB Eingabe; 256 KiB, 10000 Werte und 64 Ebenen Ausgabe. DOM-Referenzen verfallen danach. Ein Timeout beendet nur das Warten. Prüfe die Seite vor dem Wiederholen einer Änderung; eine synchrone Endlosschleife kann das Schließen der Seite erfordern. Einzelne Ausdrücke einschließlich IIFEs werden als native globale Scripts eingefügt. Zeichenfolgen mit mehreren Anweisungen unterliegen weiterhin der CSP der Seite; wird ihre Auswertung blockiert, fasse die Anweisungen in einer IIFE zusammen.

state save speichert die für den Zielhost geltenden Cookies (auch übergeordnete Domains und HttpOnly) und localStorage der aktuellen Origin als Playwright storage-state JSON. state load führt Cookies zusammen und ersetzt diesen localStorage; lade danach neu. Schema, Host und Port müssen genau übereinstimmen. Fremde Cookie-Domains, öffentliche Suffixe, unbekannte Felder und falsche Typen werden vor Änderungen abgelehnt. Secure-Cookies erfordern HTTPS.

Mit --format cookies bei beiden Befehlen wird Netscape cookies.txt verwendet, ohne localStorage und SameSite. Dateien sind auf 256 KiB begrenzt und enthalten Zugangsdaten: privat halten und nicht in Git aufnehmen. Der Import verlangt eine reguläre Datei, auf die nur der Eigentümer zugreifen kann (etwa 0600); symbolische Links werden abgelehnt. Exporte erstellen neue private Dateien ohne Überschreiben. WebKit-Daten bleiben zwischen Browserbereichen geteilt; Projekt-, Fenster- und Navigationsgrenzen gelten weiterhin.

Werbung und Tracker

Unter Einstellungen → Browser ist die WebKit-Inhaltsblockierung mit EasyList und EasyPrivacy standardmäßig aktiv. Listen lassen sich einzeln ausschalten. Eigene HTTP-/HTTPS-ABP-Listen-URLs zeilenweise eintragen und Listen anwenden wählen. Höchstens 8 Listen mit je 8 MiB; HTTP ist unverschlüsselt.

Änderungen gelten für künftige Anfragen aller Browserbereiche. Offene Seiten danach neu laden. Listen jetzt aktualisieren erzwingt eine Aktualisierung. Listen werden lokal gespeichert; nach einem Neustart prüft das Öffnen des Browsers über vier Tage alte Listen. Die Einstellungen zeigen konvertierte/übersprungene Filter, Fehler und veraltete Caches an. Ein fehlgeschlagener Listenwechsel verwendet nicht stillschweigend eine abgewählte Liste weiter.

Unterstützt werden URL-Platzhalter, Anker, übliche Ressourcentypen, @@-Ausnahmen, einfache Domainbereiche und CSS ##/#@#. Domains beziehen sich auf die Hauptseite; Drittanbieter werden nach WebKit eingeordnet. Scriptlets, prozedurale Filter, Umleitungen, reguläre Ausdrücke, vollständige Seitenfreigaben und ausgeschlossene Subdomains eingeschlossener Domains werden übersprungen. Keine vollständige uBlock-Origin-Kompatibilität.