# Taskbar Launcher Taskbar Launcher is a small Windows tray launcher for folders, applications, scripts, files, and nested menus. ## Features - System tray launcher - Global hotkey, default `Ctrl+Alt+Space` - Search/filter in the launcher popup - Nested menus and drag/drop ordering in Settings - Per-item icon and display mode - Automatic icon selection from app/folder targets - Portable `config.json` - Backup/restore config - Optional Start with Windows shortcut - Windows light/dark theme support ## Project Layout ```text TaskbarLauncher/ App.xaml MainWindow.xaml Models/ Services/ Views/ Tools/ docs/ builds/ generated locally, ignored by Git ``` ## Build Requires the .NET 10 SDK on the developer machine. ```powershell dotnet build ``` ## Release Create the small framework-dependent release package: ```powershell .\Tools\New-TaskbarLauncherRelease.ps1 ``` Create a self-contained package that does not require users to install .NET: ```powershell .\Tools\New-TaskbarLauncherRelease.ps1 -SelfContained ``` Release zips are written to: ```text builds/releases/ ``` ## Config Files `config.json` is local runtime data and is ignored by Git. Keep your personal launcher menu there for testing. `config.example.json` is a public-safe sample config for documentation and reference. New users do not need to copy it; if `config.json` is missing, the app creates a clean starter config on first run. Personal test configs should stay in `config.json`; release packages do not include it unless the release script is run with `-IncludeCurrentConfig`. ## Versioning The app version is controlled in `TaskbarLauncher.csproj`. Recommended release flow: 1. Update `` in `TaskbarLauncher.csproj`. 2. Commit the change. 3. Run `.\Tools\New-TaskbarLauncherRelease.ps1`. 4. Tag the release, for example `v1.0.1`. 5. Upload the generated zip to Gitea Releases.