Terminaux locaux : detecter et proposer les shells Unix du poste

L'emulateur de terminal etait deja le notre (pyte + QPainter) ; ce qui manquait
pour se rapprocher de MobaXterm, c'etait le *shell*. MobaXterm ne fournit pas
"son propre terminal" mais son propre bash, issu d'un Cygwin embarque : c'est ce
qui donne ls/grep/sed/awk/vi sous Windows.

Plutot que d'embarquer un binaire tiers, l'application detecte maintenant les
shells deja installes et les propose tous : PowerShell, cmd, Bash de Git for
Windows, MSYS2, Cygwin, WSL, et un busybox-w32 pose a cote de l'executable pour
les postes qui n'ont rien. Un shell Unix est choisi par defaut quand il y en a un.

Deux details qui bloquaient :
- pywinpty ne sait pas decouper une commande passee en chaine avec des
  guillemets, et les chemins Windows en contiennent ("Program Files") : les
  commandes sont donc des listes d'arguments.
- le bash de MSYS2 demarre sans jamais afficher d'invite si MSYSTEM n'est pas
  definie ; chaque shell peut donc declarer ses variables d'environnement
  (CHERE_INVOKING pour demarrer dans le dossier courant).

Les menus et l'arborescence sont generes depuis la detection, ils s'adaptent
donc au poste sans configuration.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
snoopy
2026-09-04 11:45:03 +02:00
parent 6de0aad79c
commit b322b95aa4
3 changed files with 2641 additions and 865 deletions

View File

@@ -15,7 +15,12 @@ Client SSH/SFTP personnel (type MobaXterm/Termius/Bitvise), 100% local, sans com
avec des serveurs de test qui redemarrent souvent
- Les hotes deja approuves par votre commande `ssh` (`~/.ssh/known_hosts`) sont reconnus : pas de
double confirmation d'empreinte. Les nouvelles cles vont dans le fichier propre a l'application
- Terminaux locaux Windows (PowerShell / Invite de commandes) accessibles en un clic, **sans avoir besoin d'une session enregistree** — pratique pour un usage ponctuel, comme le terminal Windows natif
- Terminaux locaux accessibles en un clic, **sans session enregistree**. L'application detecte les
shells presents sur le poste et les propose tous : PowerShell, cmd, et surtout les **shells Unix**
s'ils sont installes (Bash de Git for Windows, MSYS2, Cygwin, WSL, ou un busybox pose a cote de
l'application). Comme le terminal local de MobaXterm, on retrouve alors `ls`, `grep`, `sed`, `awk`,
`vi`, `scp`... sous Windows. **Un shell Unix est choisi par defaut** quand il y en a un ;
sinon PowerShell. Rien n'est embarque : l'application reutilise ce qui est deja installe
- Carnet d'adresses de serveurs (JSON local, `data/sessions.json`) organise par dossiers, connexion en un clic
- Gestion des cles SSH : generation (Ed25519 / RSA), import de cles existantes, export (cle publique/privee)
- Client SFTP integre facon WinSCP : double panneau local/distant avec colonnes triables (nom, taille, date, droits),