Terminal & WSL
Onglet Terminal
L'onglet Terminal de Muyue propose des terminaux PTY natifs (xterm.js + creack/pty) avec :
- shells locaux (bash, zsh, fish, pwsh, powershell, cmd…)
- distributions WSL individuelles (Windows uniquement, depuis v0.6.0)
- connexions SSH sauvegardées (clé ou mot de passe via
sshpass -e)
Quick-launch WSL (Windows)
Sur un hôte Windows, le menu "+" du terminal liste désormais chaque distribution WSL installée comme une entrée distincte :
Détection
Backend : internal/api/terminal.go::listWSLDistros() exécute wsl --list --quiet et parse la sortie UTF-16LE de Windows en gardant uniquement les noms valides (regex ^[a-zA-Z0-9._-]+$). Aucun appel WSL si l'hôte n'est pas Windows.
Lancement
Quand l'utilisateur clique sur une entrée WSL, le frontend envoie data: "wsl -d Ubuntu" au WebSocket. Le backend reconnaît ce format via parseWSLShell() et lance wsl -d Ubuntu directement.
Sécurité
- Les noms de distros et users sont validés avant d'être passés en argv
wsl est résolu via exec.LookPath ; pas de shell intermédiaire ; pas de chaîne shell concaténée
Connexions SSH
POST /api/terminal/sessions enregistre une connexion SSH dans la config. Mots de passe :
- chiffrés au repos par
internal/secret
- masqués
"***" dans GET /api/terminal/sessions
- si l'utilisateur renvoie
"***" lors d'un update, le mot de passe stocké est conservé (pas écrasé)
- au runtime, transmis à
sshpass -e via la variable d'env SSHPASS (jamais en argv visible dans ps)