Files
2026-03-25 16:22:13 +01:00

144 lines
4.0 KiB
Markdown

# YubiSwitch
> Basculez votre YubiKey entre Windows et WSL2 en un clic.
YubiSwitch est un petit utilitaire de bureau développé avec [Tauri](https://tauri.app) et Rust, conçu pour les développeurs qui utilisent WSL2 et ont besoin de partager leur YubiKey entre Windows et leur environnement Linux sans passer par la ligne de commande.
<img src="src-tauri/icons/app-icon.png" width="150" alt="YubiSwitch"/>
---
## Prérequis
Avant d'installer YubiSwitch, assurez-vous d'avoir les éléments suivants sur votre machine Windows :
**usbipd-win** — permet de partager des périphériques USB avec WSL2 :
```powershell
winget install usbipd
```
**WSL2 avec Ubuntu** — environnement Linux sous Windows :
```powershell
wsl --install
```
**Côté WSL2**, installez les outils YubiKey :
```bash
sudo apt update && sudo apt install -y yubikey-manager fido2-tools libfido2-dev
```
Ajoutez la règle udev pour accéder à la YubiKey sans sudo :
```bash
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="1050", MODE="0666", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/70-yubikey.rules
sudo udevadm control --reload-rules
sudo usermod -aG plugdev $USER
```
---
## Installation
Téléchargez la dernière version depuis la page [Releases](../../releases) :
```
YubiSwitch_x.x.x_x64-setup.exe
```
Double-cliquez sur le fichier `.exe` et suivez l'installateur. YubiSwitch s'installe pour l'utilisateur courant et crée un raccourci bureau.
---
## Utilisation
### Démarrage
YubiSwitch se lance automatiquement dans la barre des tâches (system tray). Cliquez sur l'icône pour ouvrir la fenêtre principale.
### Basculer la YubiKey
1. Branchez votre YubiKey sur votre PC
2. Ouvrez YubiSwitch depuis le tray
3. Cliquez sur le **toggle** pour basculer entre Windows et WSL2
4. L'état se met à jour automatiquement toutes les 3 secondes
### Démarrage automatique
Activez le toggle **Démarrage auto** en bas de la fenêtre pour que YubiSwitch se lance à chaque démarrage de Windows.
### Fermer l'application
Cliquer sur la croix réduit l'app dans le tray. Pour quitter complètement, faites un clic droit sur l'icône du tray → **Quitter**.
---
## Architecture technique
YubiSwitch est construit avec [Tauri 2](https://tauri.app), qui combine un backend Rust et un frontend web léger.
```
yubiswitch/
├── src/ # Frontend (TypeScript + HTML/CSS)
│ ├── main.ts # Logique UI, polling état YubiKey
│ ├── index.html # Interface principale
│ └── styles.css # Styles aux couleurs Enuxia
└── src-tauri/ # Backend (Rust)
└── src/
├── main.rs # Point d'entrée Tauri
├── lib.rs # Commandes Tauri, system tray, autostart
└── usbipd.rs # Intégration usbipd (list, attach, detach)
```
### Fonctionnement
Le backend Rust appelle `usbipd` en mode silencieux (`CREATE_NO_WINDOW`) pour lister et contrôler les périphériques USB. La YubiKey est identifiée par son VID Yubico (`1050`). Le frontend interroge le backend toutes les 3 secondes pour mettre à jour l'état affiché.
### Stack
| Composant | Technologie |
|---|---|
| Framework desktop | Tauri 2 |
| Backend | Rust |
| Frontend | TypeScript + HTML/CSS vanilla |
| USB sharing | usbipd-win |
| Autostart | tauri-plugin-autostart |
---
## Contribuer
Les contributions sont les bienvenues ! Pour contribuer :
1. Forkez le repo
2. Créez une branche : `git checkout -b feature/ma-feature`
3. Committez vos changements : `git commit -m 'feat: ma feature'`
4. Pushez : `git push origin feature/ma-feature`
5. Ouvrez une Pull Request
### Développement local
```powershell
# Cloner le repo
git clone https://gitea.enuxia.fr/enuxia/yubiswitch
cd yubiswitch
# Installer les dépendances
npm install
# Lancer en mode dev
npm run tauri dev
# Builder
npm run tauri build
```
**Prérequis développement :**
- [Rust](https://rustup.rs/) 1.70+
- [Node.js](https://nodejs.org/) 18+
- [usbipd-win](https://github.com/dorssel/usbipd-win)
---
## Licence
MIT © 2026 [Enuxia](https://enuxia.com)