# SSH Launcher

Lanceur SSH et services via une extension GNOME Shell et une application GTK.
Permet d'accéder rapidement à vos machines depuis la barre GNOME.

## Fonctionnalités

- Icône dans la barre supérieure GNOME
- Popup avec liste des équipements et services
- Configuration via fichier YAML
- Support SSH, HTTP, HTTPS, VNC...
- Page HTML standalone alternative

## Architecture

```
┌─────────────────────────────────────────────────────────┐
│                    GNOME Shell                          │
│  ┌─────────────────────────────────────────────────┐   │
│  │ Extension (icône barre) ──► App GTK + WebKit    │   │
│  └─────────────────────────────────────────────────┘   │
│                         │                               │
│                         ▼                               │
│              config/equipements.yaml                    │
│                         │                               │
│                         ▼                               │
│              Interface HTML dynamique                   │
│                         │                               │
│                         ▼                               │
│              Clic ──► Handler système ──► Terminal/App  │
└─────────────────────────────────────────────────────────┘
```

## Structure du projet

```
ssh-web-launcher/
├── config/
│   └── equipements.yaml        # Configuration des machines
├── extension/
│   ├── metadata.json           # Métadonnées extension GNOME
│   ├── extension.js            # Code de l'extension
│   └── stylesheet.css          # Style de l'icône
├── app/
│   ├── ssh-launcher-gtk.py     # Application GTK4 + WebKit
│   └── ssh-launcher-gtk.desktop
├── scripts/
│   ├── ssh-url                 # Handler SSH
│   └── install.sh              # Script d'installation
├── desktop/
│   └── ssh-url.desktop         # Handler SSH .desktop
├── index.html                  # Page standalone
└── README.md
```

## Prérequis

- GNOME Shell 42+
- Python 3
- GTK3 et WebKit2 4.1

### Installation des dépendances (Debian/Ubuntu)

```bash
sudo apt install python3 python3-gi python3-yaml \
    gir1.2-gtk-3.0 gir1.2-webkit2-4.1
```

## Installation rapide

```bash
./scripts/install.sh
```

Le script :
1. Vérifie les dépendances
2. Configure les chemins
3. Installe le handler SSH
4. Installe l'extension GNOME Shell

### Activer l'extension

Après installation, redémarrez GNOME Shell (Alt+F2 → `r` → Entrée) puis :

```bash
gnome-extensions enable ssh-launcher@local
```

Ou utilisez l'application "Extensions" / "Extension Manager".

## Installation manuelle

### 1. Rendre les scripts exécutables

```bash
chmod +x scripts/ssh-url
chmod +x scripts/install.sh
chmod +x app/ssh-launcher-gtk.py
```

### 2. Installer le handler SSH

```bash
cp desktop/ssh-url.desktop ~/.local/share/applications/
xdg-mime default ssh-url.desktop x-scheme-handler/ssh
update-desktop-database ~/.local/share/applications/
```

### 3. Installer l'extension GNOME

```bash
mkdir -p ~/.local/share/gnome-shell/extensions/ssh-launcher@local
cp extension/* ~/.local/share/gnome-shell/extensions/ssh-launcher@local/
```

Redémarrez GNOME Shell et activez l'extension.

## Configuration

Éditez `config/equipements.yaml` pour ajouter vos machines :

```yaml
equipements:
  - nom: "Mon Serveur"
    ip: "192.168.1.100"
    categorie: "Serveurs"
    services:
      - nom: "SSH"
        icon: "utilities-terminal"
        url: "ssh://admin@192.168.1.100"
      - nom: "Web"
        icon: "web-browser"
        url: "https://192.168.1.100"
```

### Icônes disponibles

| Icône | Nom |
|-------|-----|
| 💻 | `utilities-terminal` |
| 🌐 | `web-browser` |
| ⚙️ | `applications-system` |
| 🖥️ | `preferences-desktop-remote-desktop` |
| 🔒 | `security-high` |
| 🏠 | `go-home` |
| 🖧 | `network-server` |

## Test

### Tester l'application GTK directement

```bash
python3 app/ssh-launcher-gtk.py
```

### Tester le handler SSH

```bash
./scripts/ssh-url "ssh://user@localhost"
```

### Tester la page standalone

```bash
firefox index.html
```

## Dépannage

### L'extension n'apparaît pas

1. Vérifiez que GNOME Shell est redémarré
2. Vérifiez l'activation :
   ```bash
   gnome-extensions list
   gnome-extensions enable ssh-launcher@local
   ```

### Erreur WebKit / écran noir

Si vous avez des erreurs GPU (GBM, DRM), l'application désactive automatiquement
l'accélération matérielle. Si le problème persiste, lancez avec :
```bash
WEBKIT_DISABLE_COMPOSITING_MODE=1 python3 app/ssh-launcher-gtk.py
```

### Le handler SSH ne fonctionne pas

```bash
xdg-mime query default x-scheme-handler/ssh
# Doit retourner : ssh-url.desktop
```

### Logs de l'extension

```bash
journalctl -f -o cat /usr/bin/gnome-shell
```

## Désinstallation

```bash
# Extension GNOME
rm -rf ~/.local/share/gnome-shell/extensions/ssh-launcher@local

# Applications
rm ~/.local/share/applications/ssh-url.desktop
rm ~/.local/share/applications/ssh-launcher-gtk.desktop
update-desktop-database ~/.local/share/applications/
```

## Utilisation standalone (sans extension)

La page `index.html` peut être utilisée indépendamment :

```bash
firefox index.html
```

Elle nécessite uniquement le handler SSH (`ssh-url.desktop`).

## Mini-apps

Le dossier `app/tools/` contient des petits outils autonomes comme `color-picker` : lancez-les via

```bash
python3 app/tools/color-picker/color_picker.py
```

Le script `run_color_picker.py` sert uniquement pour les essais côté navigateur (il démarre un mini-serveur local).

Le dashboard peut aussi démarrer ces scripts via la section `minitools` (voir `config/equipements.yaml`).

## Licence

Libre d'utilisation et de modification.
