144 lines
4.0 KiB
Markdown
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)
|