zshell

Volets de navigateur

Ouvrez des sites à côté du terminal, utilisez des commandes natives et gardez les liens dans votre projet.

Zshell peut afficher un navigateur intégré dans n'importe quel onglet ou volet divisé. Il convient à un serveur de développement local, à la documentation d'une API, à un ticket ou à toute page utile à côté du terminal concerné.

Ouvrir un navigateur

  • Choisissez Fichier → Nouvel onglet de navigateur pour ouvrir un onglet vide.
  • Ouvrez la palette de commandes (Cmd+P) et lancez Nouvel onglet de navigateur ou Nouveau volet de navigateur.
  • Dans un terminal, maintenez Command en faisant un clic droit sur une URL reconnue, puis choisissez Nouvel onglet de navigateur ou Nouveau volet de navigateur pour l'ouvrir sans copier l'adresse.

Les onglets de navigateur appartiennent au projet sélectionné et participent à sa disposition habituelle d'onglets et de volets. Si aucun projet n'est ouvert, Zshell en crée un pour accueillir le navigateur.

Le champ supérieur accepte une URL complète, un nom d'hôte ou des mots à rechercher :

  • zshell.sh devient une adresse HTTPS.
  • localhost, les noms d'hôtes locaux, les adresses IP et les ports explicites utilisent HTTP.
  • Tout autre contenu lance une recherche Google.

Cmd+L place le focus dans le champ et Cmd+R recharge la page. La barre d'outils propose aussi Précédent, Suivant, Arrêter/Recharger, Partager et Ouvrir dans le navigateur par défaut. Les gestes de navigation arrière et avant du trackpad fonctionnent également.

ActionRaccourci
Activer la barre d'adresseCmd+L
Recharger la pageCmd+R

Faites un clic droit sur un lien dans une page pour choisir Ouvrir le lien dans un nouvel onglet ou Ouvrir le lien dans un nouveau volet. La nouvelle page reste dans l'espace de travail du même projet.

Dans un terminal, un simple clic avec Command ouvre l'URL reconnue dans votre navigateur par défaut. Le clic droit avec Command propose, lui, un onglet ou un volet Zshell. Les chemins locaux disposent d'actions équivalentes, décrites dans Chemins et URL.

Éléments conservés

Changer d'onglet ou de projet conserve la page, son historique, sa position de défilement, ses formulaires et son état interne. Au redémarrage de Zshell, l'URL actuelle et la disposition sont restaurées, mais pas l'historique complet des navigations arrière et avant.

Les volets conservent les cookies, les connexions et les autres données des sites entre les onglets et les lancements. Il ne s'agit pas d'un mode de navigation privée.

Faire tester la page par un agent

Demandez à votre agent de vérifier une page déjà ouverte dans ce projet, de remplir un formulaire, de contrôler un résultat ou de capturer la zone visible. Il réutilise la session du navigateur et conserve le focus du terminal par défaut. Il peut aussi ouvrir une URL de développement dans un volet en arrière-plan.

Dans un script, exécutez ces commandes depuis un terminal Zshell. Notez le browser_id renvoyé et remplacez BROWSER_ID ci-dessous :

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

Les instantanés renvoient le texte du cadre principal, les libellés accessibles et des références d’éléments. Ces références expirent après une modification ou une action : reprenez un instantané avant de les réutiliser. Un sélecteur CSS doit correspondre à un seul élément. Utilisez navigate, back, forward, reload et stop pour naviguer.

Seuls les URL HTTP/HTTPS explicites et about:blank sont autorisés. Les autres protocoles, téléchargements, sélecteurs de fichiers et dialogues natifs nécessitent votre intervention. Cette restriction cesse après une navigation manuelle par la barre d’adresse ou d’outils. Les commandes restent dans le projet et la fenêtre du terminal appelant. --timeout vaut 100–30000 millisecondes. Les instantanés sont limités à 200 éléments, 32768 caractères et 256 KiB, sans valeurs de mot de passe ou de fichier. Les captures PNG de la zone visible sont limitées à 512 KiB, fonctionnent aussi dans un volet jamais affiché avec une zone de 1024 × 768 sans changer le focus et n’écrasent aucun fichier. Réduisez --width si nécessaire. Voir zshell +browser --help.

Scripts et état de connexion

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 s’exécute dans la véritable page principale, attend une Promise renvoyée et retourne du JSON dans value ; undefined devient null. Utilisez une expression de fonction asynchrone pour await. Limites : 64 KiB en entrée ; 256 KiB, 10000 valeurs et 64 niveaux en sortie. Les références DOM expirent après l’exécution. Un délai dépassé arrête l’attente, pas le script. Inspectez la page avant de répéter une modification ; une boucle synchrone infinie peut nécessiter de fermer la page. Les expressions uniques, y compris les IIFE, sont injectées comme Scripts globaux natifs. Les chaînes contenant plusieurs instructions restent soumises à la CSP de la page ; si leur évaluation est bloquée, placez les instructions dans une IIFE.

state save enregistre les cookies applicables à l’hôte cible (y compris ceux du domaine parent et HttpOnly) et le localStorage de l’origine actuelle au format Playwright storage-state JSON. state load fusionne les cookies et remplace ce localStorage ; rechargez ensuite la page. Le schéma, l’hôte et le port doivent correspondre exactement. Les domaines sans rapport, suffixes publics, champs non pris en charge et types invalides sont refusés avant toute modification. Les cookies Secure exigent HTTPS.

Ajoutez --format cookies aux deux commandes pour Netscape cookies.txt, sans localStorage ni SameSite. Les fichiers, limités à 256 KiB, contiennent des identifiants : gardez-les privés et hors de Git. L’import exige un fichier ordinaire accessible uniquement à son propriétaire (par exemple 0600) et refuse les liens symboliques. L’export crée un fichier privé sans écraser de chemin existant. Les données WebKit restent partagées entre volets ; les restrictions de projet, fenêtre et navigation s’appliquent toujours.

Publicités et traqueurs

Réglages → Navigateur active par défaut le blocage WebKit avec EasyList et EasyPrivacy. Désactivez chaque liste séparément ou ajoutez une URL de liste ABP HTTP/HTTPS par ligne, puis cliquez sur Appliquer les listes. Maximum : 8 listes de 8 Mio chacune. HTTP n’est pas chiffré.

Les règles concernent les prochaines requêtes de tous les volets. Rechargez les pages après une modification. Mettre à jour les listes force l’actualisation. Les listes sont mises en cache ; après un redémarrage, l’ouverture du navigateur vérifie celles datant de plus de quatre jours. Les réglages affichent les filtres convertis/ignorés, les échecs et le recours au cache. Un remplacement échoué ne réutilise pas silencieusement une autre liste désélectionnée.

Prend en charge les jokers et ancres URL, types de ressources courants, exceptions @@, domaines simples et masquage CSS ##/#@#. Les domaines ciblent la page principale ; la classification des tiers suit WebKit. Scriptlets, filtres procéduraux, redirections, expressions régulières, autorisation de page entière et exclusions de sous-domaines d’un domaine inclus sont ignorés. Compatibilité uBlock Origin partielle.