diff --git a/README.md b/README.md new file mode 100644 index 0000000..16fd71b --- /dev/null +++ b/README.md @@ -0,0 +1,103 @@ +# 🚀 runapp + +Un lanceur d'applications TUI (Terminal User Interface) ultra-rapide, intelligent et personnalisable, écrit en Rust. Conçu pour les utilisateurs de Linux (particulièrement Arch Linux) qui vivent dans leur terminal. + +![Rust](https://img.shields.io/badge/Rust-1.70%2B-orange?logo=rust) +![Linux](https://img.shields.io/badge/Platform-Linux-blue?logo=linux) +![License](https://img.shields.io/badge/License-MIT-green) + +## ✨ Fonctionnalités + +- **Recherche Floue (Fuzzy Search)** : Trouve tes apps instantanément. Tape `vsc` pour lancer Visual Studio Code. +- **Historique Intelligent (Frecency)** : Les applications que tu lances le plus souvent remontent automatiquement en haut de la liste. +- **Affichage des Icônes en Haute Qualité** : Supporte les SVG, PNG, WebP, AVIF, etc., directement dans le terminal (nécessite un terminal compatible comme Ghostty, Kitty ou WezTerm). +- **Support des Actions `.desktop`** : N'affiche pas seulement "Firefox", mais aussi "Firefox - New Private Window" si l'application le permet. +- **Applications Terminal** : Détecte les apps comme `htop` ou `bash` et les ouvre proprement dans ton émulateur de terminal configuré. +- **Modes Spéciaux** : + - `= 50 * 3.14` : Calculatrice instantanée (copie le résultat dans le presse-papier). + - `! bonjour` : Traduction via DeepL (ou ton traducteur préféré). + - `: reboot` : Commandes système (shutdown, reboot, sleep, lock, logout). +- **Liens et Fichiers** : Tape un chemin (`/home/...`) ou une URL (`youtube.com`) pour l'ouvrir directement avec `xdg-open`. +- **Mode Dmenu** : Utilisable dans tes scripts bash ! (Ex: `echo -e "opt1\nopt2" | runapp --dmenu`). +- **Configuration Ultra-Poussée** : Personnalise les couleurs, les alias, les URLs de recherche et de traduction via un simple fichier `config.toml`. + +## 🛠️ Prérequis + +Pour profiter de l'affichage des images dans le terminal, tu dois utiliser un émulateur de terminal moderne supportant les protocoles graphiques : +- [Ghostty](https://ghostty.org/) (Recommandé) +- [Kitty](https://sw.kovidgoyal.net/kitty/) +- [WezTerm](https://wezfurlong.org/wezterm/) + +*Note : Si ton terminal ne supporte pas les images, `runapp` fonctionnera parfaitement en mode texte pur, sans faire planter l'interface.* + +## 📦 Installation + +### Depuis les sources (Crates) + +```bash +git clone https://github.com/arthur-pbty/runapp.git +cd runapp +cargo build --release +``` +L'exécutable se trouvera dans `target/release/runapp`. Tu peux le copier dans ton `PATH` : +```bash +sudo cp target/release/runapp /usr/local/bin/ +``` + +## ⚙️ Configuration + +Au premier lancement, un fichier de configuration est généré automatiquement ici : +`~/.config/runapp/config.toml` + +Tu peux le modifier pour l'adapter à tes besoins : + +```toml +enable_calculator = true +enable_translation = true +enable_web_search = true +web_search_url = "https://duckduckgo.com/?q={}" +translation_url = "https://www.deepl.com/translator#auto/auto/{}" +terminal_emulator = "ghostty -e" +enable_system_commands = true + +[aliases] +update = "ghostty -e paru -Syu" +clean = "ghostty -e paru -Sc" + +[colors] +search_text = "white" +selection_bg = "blue" +selection_fg = "black" +``` + +## ⌨️ Utilisation + +### Lanceur classique +Lance `runapp` (idéalement bindé sur un raccourci clavier dans ton gestionnaire de fenêtres comme Hyprland, Sway ou i3). + +| Raccourci | Action | +|-----------|--------| +| `Touche` | Taper du texte pour filtrer | +| `↑` / `↓` | Naviguer dans la liste | +| `Entrée` | Lancer l'application ou l'action | +| `Échap` | Effacer le texte, ou quitter si vide | + +### Mode Script (Dmenu) +Tu peux utiliser `runapp` pour remplacer `dmenu` ou `rofi -dmenu` dans tes scripts : + +```bash +#!/bin/bash +CHOIX=$(echo -e "Éteindre\nRedémarrer\nMettre en veille" | runapp --dmenu) +echo "Tu as choisi : $CHOIX" +``` + +## 🧱 Stack Technique + +- **Langage** : Rust +- **Interface TUI** : [ratatui](https://github.com/ratatui-org/ratatui) & [crossterm](https://github.com/crossterm-rs/crossterm) +- **Images** : [ratatui-image](https://github.com/benjajaja/ratatui-image), [image](https://github.com/image-rs/image), [resvg](https://github.com/RazrFalcon/resvg) +- **Recherche** : [fuzzy-matcher](https://github.com/lotabout/fuzzy-matcher) + +## 📝 Licence + +Ce projet est sous licence MIT. Fais-en ce que tu veux ! \ No newline at end of file