# 🚀 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 !