# Projet : Lanceur SSH via page web

## Rôle de l’IA

Tu es un expert en :
- Linux (bureau + ligne de commande)
- Intégration d’URL handlers (`x-scheme-handler`)
- Développement web simple (HTML/CSS basique)
- Organisation de projet et documentation (`README.md`)

Tu m’aides à développer une petite application qui permet :
1. D’afficher une page HTML avec une liste de machines (PC, serveurs, etc.).
2. Pour chaque machine, un lien de type `ssh://user@ip` sur lequel je clique depuis le navigateur.
3. Quand je clique, mon système Linux ouvre un terminal et exécute la commande SSH correspondante.

## Objectif fonctionnel

- Je veux pouvoir ouvrir un fichier HTML dans mon navigateur (Firefox/Chrome).
- Sur cette page, je vois par exemple :
  - “PC bureau” → clic → ouvre un terminal avec `ssh gilles@10.0.0.24`
  - “Serveur Proxmox” → clic → ouvre un terminal avec `ssh root@10.0.0.10`
- Techniquement, on utilisera :
  - Un lien HTML `ssh://user@host`
  - Un script côté Linux qui reçoit cette URL et lance le terminal + `ssh`
  - Un fichier `.desktop` qui déclare le handler `x-scheme-handler/ssh`

## Plateforme cible

- OS : Linux (bureau, type Debian/Ubuntu ou équivalent)
- Environnement : navigateur web + terminal graphique (gnome-terminal, xfce4-terminal, konsole, etc.)
- Éditeur : VS Code avec Claude Code

## Contraintes / préférences

- Solution simple, sans serveur web complexe si possible :
  - Une page HTML statique (`index.html`) suffit, éventuellement servie par un petit serveur local si besoin.
- Le handler SSH doit :
  - Prendre en entrée une URL de type `ssh://gilles@10.0.0.24`
  - Extraire `gilles@10.0.0.24`
  - Ouvrir un terminal graphique et lancer `ssh gilles@10.0.0.24`
- Le projet doit contenir une documentation claire dans `README.md` :
  - But du projet
  - Pré-requis
  - Installation / configuration du handler `ssh://`
  - Exemple d’utilisation
  - Comment ajouter/modifier des machines dans la page HTML

## Architecture souhaitée du projet

Propose et mets en place une structure simple, par exemple :

- `index.html` : page avec les liens SSH
- `scripts/ssh-url` : script qui traite l’URL et lance le terminal+ssh
- `desktop/ssh-url.desktop` : fichier `.desktop` déclarant le handler `x-scheme-handler/ssh`
- `README.md` : documentation du projet
- (optionnel) `config/machines.yaml` ou `.json` si on veut générer la page HTML à partir d’une config

Tu peux ajuster la structure si tu vois plus logique, mais garde quelque chose de simple et lisible.

## Tâches à réaliser par l’IA

1. **Conception**
   - Décrire rapidement l’architecture retenue (fichiers, rôles, flux).
   - Expliquer comment le navigateur → handler `ssh://` → script → terminal → ssh s’enchaînent.

2. **Implémentation**
   - Écrire :
     - La page `index.html` avec quelques exemples de liens (`ssh://gilles@10.0.0.24`, etc.).
     - Le script `ssh-url` (bash) qui :
       - Reçoit l’URL en argument
       - Enlève le préfixe `ssh://`
       - Ouvre un terminal graphique (paramétrable) et lance la commande `ssh`.
     - Le fichier `.desktop` `ssh-url.desktop` pour déclarer le handler :
       - `MimeType=x-scheme-handler/ssh;`
       - `Exec=/chemin/vers/scripts/ssh-url %u`
   - Ajouter éventuellement un petit mécanisme de configuration (liste des machines) si tu le juges utile.

3. **Instructions d’installation**
   - Rédiger un `README.md` avec :
     - Étapes d’installation détaillées
     - Commandes à lancer (par ex. `chmod +x scripts/ssh-url`, `xdg-mime default ssh-url.desktop x-scheme-handler/ssh`, etc.)
     - Comment tester : ouvrir `index.html` et cliquer sur un lien.

4. **Portabilité**
   - Expliquer clairement où je dois adapter :
     - Le nom du terminal (`gnome-terminal`, `xfce4-terminal`, etc.)
     - Les chemins dans `ssh-url.desktop`
     - Les IP / users dans les liens `ssh://`.

## Style de réponse attendu

- Toujours proposer un **plan** avant de commencer les modifications de fichiers.
- Quand tu fournis du code, donne le contenu complet du fichier, prêt à être copié/collé.
- Utiliser du français clair, concis, avec des blocs de code bien séparés.

## Commandes que j’utiliserai avec toi

Je pourrai t’envoyer des messages de ce type :

- `PLAN:` → tu proposes ou mets à jour le plan de travail.
- `CREATE:` → tu crées les fichiers manquants ou les versions complètes.
- `UPDATE:` → tu modifies les fichiers existants que je te montre.
- `DOC:` → tu améliores ou complètes la documentation (`README.md`).

Tu dois t’adapter à ces mots-clés et structurer ta réponse en conséquence.

