- C# 100%
| AppLauncher | ||
| docs | ||
| solution | ||
| .gitignore | ||
| README.md | ||
AppLauncher
Application WPF (C# / .NET 10) qui affiche une grille d'applications et lance celles choisies.
Les applications sont découvertes dynamiquement dans un dossier apps/ (passable en argument
ou par défaut à côté de l'exécutable), avec un sous-dossier par application / script.
Les formats reconnus : .exe, .lnk, .ps1, .py, .bat, .cmd. L'affichage est trié
alphabétiquement.
Capture d'écran
La fenêtre affiche 20 applications découvertes dans le dossier apps/ : tuiles triées
alphabétiquement, icônes extraites des exécutables ou des fichiers icon.ico/icon.png,
et barre de défilement verticale à droite (visible ici, car la grille dépasse la hauteur
de la fenêtre).
Configuration
Chaque dossier peut contenir un config.toml facultatif :
name = "Bloc-Notes"
command = "notepad.exe"
icon = "C:\\Windows\\System32\\shell32.dll"
elevate = true
name: nom d'affichage (par défaut : nom du fichier exe/ps1/py)command: commande de lancement (par défaut : lancement direct du fichier)icon: chemin d'une icône ; par défaut l'icône de l'application, ou celle du programme qui lance le script (powershell, python, cmd)icon_index: index de l'icône à extraire d'un.exe/.dll(défaut : 0)elevate: lancer l'application en administrateur (défaut :false)
Formats d'icône supportés
| Format | Notes |
|---|---|
.ico |
Fichier multi-tailles : la plus grande image est sélectionnée (WPF décode mal les ICO multi-tailles, le fichier est donc parsé manuellement). Les entrées PNG et BMP internes sont prises en charge. |
.png, .jpg, .jpeg, .bmp, .gif, .tif, .tiff, .webp |
Décodés nativement par WPF (WIC) |
.exe, .dll, .lnk |
Première icône embarquée (ExtractIconEx), ou icon_index pour choisir une autre icône |
icon peut être écrit sans extension (icon = "icon" → cherche icon.ico,
icon.png, icon.webp, …). La valeur icon = "none" désactive l'icône.
Sans config.toml, le scanner cherche automatiquement dans le dossier :
icon.ico, icon.png, icon.webp, icon.gif, icon.jpg, app.ico,
favicon.ico, <nom-du-fichier>.ico, <nom-du-fichier>.png, puis toute autre
image présente.
Un bouton « Ouvrir le dossier apps » et un bouton « Actualiser » permettent d'ajouter des applications à chaud.
Défilement
La grille d'icônes est enveloppée dans un ScrollViewer en mode Auto : une barre de
défilement verticale apparaît automatiquement dès que la liste dépasse la hauteur visible de
la fenêtre, et disparaît quand toutes les icônes tiennent. Elle se met à jour au
redimensionnement de la fenêtre.
Deux vues
Deux boutons dans l'en-tête, « Grille » et « Liste », permettent de basculer l'affichage :
- Grille (par défaut) : les applications sont disposées en tuiles de 150 px sur
plusieurs colonnes (
WrapPanel). - Liste : une ligne par application, nom + fichier + type, empilées verticalement
(
StackPanel).
Le mode choisi est enregistré dans settings.toml (à côté de l'exécutable, dossier
%LOCALAPPDATA%\AppLauncher) sous la clé view = "grid" ou view = "list", et est
rechargé au démarrage.
Vue grille (bouton « Grille » actif) :
Vue liste (bouton « Liste » actif) :
Recherche
Une petite barre de recherche est intégrée dans l'en-tête, directement à droite de l'icône de loupe :
- La saisie filtre immédiatement la liste, sans bouton à presser.
- La recherche est insensible à la casse et matche le nom d'affichage, le nom du fichier ou le chemin du dossier de l'application.
- Le compteur en bas de fenêtre indique « N résultat(s) sur M pour « … » ».
- Le bouton
✕apparaît dès qu'une requête est saisie pour l'effacer ;Échapfait la même chose. - Les deux vues (grille et liste) sont filtrées de la même façon.
Élévation de privilèges
Une application peut être lancée en administrateur en ajoutant elevate = true dans son
config.toml :
name = "Panneau de config"
command = "config.bat"
elevate = true
Clés acceptées (toutes équivalentes) : elevate, elevated, run_as_admin, as_admin,
admin. Valeurs reconnues : true / 1 / yes / y / on pour activer,
false / 0 / no / n / off pour désactiver. Absent = pas d'élévation.
Fonctionnement :
- Le lancement passe par le verbe Shell
runas, ce qui déclenche la demande UAC Windows. Le fichier est ouvert avecUseShellExecute = true, donc le verbe fonctionne aussi bien pour un.exe, un.bat, un.ps1, un.pyou un.lnk. - Une application élevée affiche un badge orange « ↑ Admin » sous son nom dans la vue grille, et sur sa ligne dans la vue liste.
- Si l'utilisateur annule la demande UAC, le statut indique « Élévation refusée pour … — lancement annulé » au lieu d'une erreur brute.
- L'application elle-même n'a pas besoin d'être relancée en administrateur : seule la commande sélectionnée l'est.
Build
dotnet build solution/AppLauncher.sln -c Release
dotnet publish AppLauncher/AppLauncher.csproj -c Release -r win-x64 --no-restore -o dist
Les binaires ne sont pas dans le dépôt : ils sont distribués via les releases Forgejo.


