Launcher WPF d applications avec decouverte dynamique par dossier apps/
Find a file
2026-10-17 13:06:40 +02:00
AppLauncher Search bar inline in header, right of the magnifying glass icon 2026-10-17 13:06:40 +02:00
docs Search bar inline in header, right of the magnifying glass icon 2026-10-17 13:06:40 +02:00
solution AppLauncher WPF: launcher d'apps avec config TOML par dossier 2026-10-16 15:16:46 +02:00
.gitignore ScrollViewer vertical (Auto) + themed ScrollBar style 2026-10-16 21:59:48 +02:00
README.md Search bar inline in header, right of the magnifying glass icon 2026-10-17 13:06:40 +02:00

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

AppLauncher

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) :

AppLauncher - vue grille

Vue liste (bouton « Liste » actif) :

AppLauncher - vue liste

Recherche

Une petite barre de recherche est intégrée dans l'en-tête, directement à droite de l'icône de loupe :

AppLauncher - recherche

  • 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 ; Échap fait 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 avec UseShellExecute = true, donc le verbe fonctionne aussi bien pour un .exe, un .bat, un .ps1, un .py ou 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.