<# .SYNOPSIS WinMate command line: install apps from the WinMate catalog. .DESCRIPTION Uses exactly the same engine as the scripts generated on the website. The app catalog is embedded in this file, nothing is downloaded from WinMate and nothing is sent anywhere. Only one administrator prompt is shown for all installers. .EXAMPLE .\winmate.ps1 -List -Search browser Lists catalog apps that match "browser". .EXAMPLE .\winmate.ps1 -Apps firefox,vlc,7zip Installs three apps with winget. .EXAMPLE .\winmate.ps1 -Bundle gaming -PackageManager scoop Installs the Gaming PC bundle with Scoop. .EXAMPLE .\winmate.ps1 -ProfilePath .\winmate-profile.json Installs a selection exported from the website. .EXAMPLE .\winmate.ps1 -Verify .\WinMate-Install.cmd Checks that a downloaded script contains the unmodified WinMate engine and lists its apps. .EXAMPLE .\winmate.ps1 -Logs Shows the most recent runs, their results, log files and undo scripts. .LINK https://github.com/baba537/WinMate #> [CmdletBinding()] param( [string[]]$Apps, [string[]]$Bundle, [string]$ProfilePath, [ValidateSet('winget', 'scoop', 'choco')][string]$PackageManager, [switch]$PinVersions, [switch]$NoPause, [string]$ExportScript, [switch]$List, [string]$Search, [switch]$Bundles, [switch]$Logs, [string]$Verify, [switch]$Version ) $ErrorActionPreference = 'Stop' $WinMateVersion = '2.3.0' $EngineSha256 = 'd3a662d54f9543910685884c9659132106302c97b64dcff686c121634a136322' $SiteUrl = 'https://winmate.baba537.workers.dev' $Catalog = @' {"apps":[{"id":"claude","name":"Claude","category":"ai","description":"Anthropic's Claude desktop app for writing, analysis, coding and research.","winget":["Anthropic.Claude"],"scoop":"extras/claude","choco":null,"noAdmin":false,"wv":{"Anthropic.Claude":"1.44121.2"},"cv":null},{"id":"chatgpt","name":"ChatGPT","category":"ai","description":"OpenAI's official ChatGPT desktop app with a quick-access shortcut.","winget":["msstore:9PLM9XGG6VKS"],"scoop":null,"choco":null,"noAdmin":false,"wv":{},"cv":null},{"id":"claude-code","name":"Claude Code","category":"ai","description":"Anthropic's agentic coding tool that works in your terminal and codebase.","winget":["Anthropic.ClaudeCode"],"scoop":"main/claude-code","choco":null,"noAdmin":false,"wv":{"Anthropic.ClaudeCode":"2.1.268"},"cv":null},{"id":"ollama","name":"Ollama","category":"ai","description":"Run large language models like Llama, Gemma and Mistral locally.","winget":["Ollama.Ollama"],"scoop":"main/ollama","choco":"ollama","noAdmin":false,"wv":{"Ollama.Ollama":"0.34.0"},"cv":"0.34.0"},{"id":"lm-studio","name":"LM Studio","category":"ai","description":"Discover, download and chat with local LLMs through a friendly interface.","winget":["ElementLabs.LMStudio"],"scoop":"extras/lmstudio","choco":null,"noAdmin":false,"wv":{"ElementLabs.LMStudio":"0.4.24+1"},"cv":null},{"id":"jan","name":"Jan","category":"ai","description":"Open-source ChatGPT alternative that runs 100% offline on your PC.","winget":["Jan.Jan"],"scoop":"extras/jan","choco":null,"noAdmin":false,"wv":{"Jan.Jan":"0.8.4"},"cv":null},{"id":"msty","name":"Msty","category":"ai","description":"Friendly app to chat with local and online AI models side by side.","winget":["CloudStack.Msty"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"CloudStack.Msty":"1.9.2"},"cv":null},{"id":"perplexity","name":"Perplexity","category":"ai","description":"AI-powered answer engine that cites its sources.","winget":["Perplexity.Perplexity"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Perplexity.Perplexity":"1.7.0"},"cv":null},{"id":"gpt4all","name":"GPT4All","category":"ai","description":"Run private, local AI chatbots on everyday hardware.","winget":["nomic.gpt4all"],"scoop":null,"choco":"gpt4all","noAdmin":false,"wv":{"nomic.gpt4all":"3.10.0"},"cv":"3.10.0"},{"id":"obs","name":"OBS Studio","category":"av","description":"Free open-source software for screen recording and live streaming.","winget":["OBSProject.OBSStudio"],"scoop":"extras/obs-studio","choco":"obs-studio","noAdmin":false,"wv":{"OBSProject.OBSStudio":"32.2.1"},"cv":"32.2.2"},{"id":"audacity","name":"Audacity","category":"av","description":"Free multi-track audio editor and recorder.","winget":["Audacity.Audacity"],"scoop":"extras/audacity","choco":"audacity","noAdmin":false,"wv":{"Audacity.Audacity":"4.0.0.262451524"},"cv":"3.7.9"},{"id":"sharex","name":"ShareX","category":"av","description":"Screenshot and screen recording tool with annotations, OCR and uploads.","winget":["ShareX.ShareX"],"scoop":"extras/sharex","choco":"sharex","noAdmin":false,"wv":{"ShareX.ShareX":"21.0.0"},"cv":"21.0.0"},{"id":"handbrake","name":"HandBrake","category":"av","description":"Open-source video transcoder to convert videos to MP4 or MKV with device presets.","winget":["HandBrake.HandBrake"],"scoop":"extras/handbrake","choco":"handbrake","noAdmin":false,"wv":{"HandBrake.HandBrake":"1.11.2"},"cv":"1.11.2"},{"id":"ffmpeg","name":"FFmpeg","category":"av","description":"The universal command-line toolkit for converting and processing audio and video.","winget":["Gyan.FFmpeg"],"scoop":"main/ffmpeg","choco":"ffmpeg","noAdmin":false,"wv":{"Gyan.FFmpeg":"9.0.1"},"cv":"9.0.1"},{"id":"kdenlive","name":"Kdenlive","category":"av","description":"Open-source video editor with multi-track timeline, effects and proxy editing.","winget":["KDE.Kdenlive"],"scoop":"extras/kdenlive","choco":"kdenlive","noAdmin":false,"wv":{"KDE.Kdenlive":"26.08.1"},"cv":"26.8.0"},{"id":"shotcut","name":"Shotcut","category":"av","description":"Free, open-source, cross-platform video editor.","winget":["Meltytech.Shotcut"],"scoop":"extras/shotcut","choco":"shotcut","noAdmin":false,"wv":{"Meltytech.Shotcut":"26.8.1"},"cv":"26.8.1"},{"id":"greenshot","name":"Greenshot","category":"av","description":"Lightweight screenshot tool with quick annotations and export options.","winget":["Greenshot.Greenshot"],"scoop":"extras/greenshot","choco":"greenshot","noAdmin":false,"wv":{"Greenshot.Greenshot":"1.3.315"},"cv":"1.3.315"},{"id":"mkvtoolnix","name":"MKVToolNix","category":"av","description":"Tools to create, edit and inspect Matroska (MKV) files.","winget":["MoritzBunkus.MKVToolNix"],"scoop":"extras/mkvtoolnix","choco":"mkvtoolnix","noAdmin":false,"wv":{"MoritzBunkus.MKVToolNix":"100.0.0"},"cv":"100.0.0"},{"id":"reaper","name":"REAPER","category":"av","description":"Fast, lightweight and affordable digital audio workstation (DAW).","winget":["Cockos.REAPER"],"scoop":"extras/reaper","choco":"reaper","noAdmin":false,"wv":{"Cockos.REAPER":"7.80"},"cv":"7.78.0"},{"id":"musescore","name":"MuseScore Studio","category":"av","description":"Free music notation software to compose, play back and print sheet music.","winget":["Musescore.Musescore"],"scoop":"extras/musescore","choco":"musescore","noAdmin":false,"wv":{"Musescore.Musescore":"4.7.5.260831071"},"cv":"4.7.5.260831071"},{"id":"voicemeeter","name":"Voicemeeter Banana","category":"av","description":"Virtual audio mixer to route, mix and process multiple audio sources.","winget":["VB-Audio.Voicemeeter.Banana"],"scoop":null,"choco":"voicemeeter-banana","noAdmin":false,"wv":{"VB-Audio.Voicemeeter.Banana":"2.1.2.2"},"cv":"2.1.2.2"},{"id":"screentogif","name":"ScreenToGif","category":"av","description":"Record your screen, webcam or sketches and save them as GIF or video.","winget":["NickeManarin.ScreenToGif"],"scoop":"extras/screentogif","choco":"screentogif","noAdmin":false,"wv":{"NickeManarin.ScreenToGif":"2.43.2"},"cv":"2.41.0"},{"id":"flameshot","name":"Flameshot","category":"av","description":"Screenshot tool with annotation directly in the capture overlay.","winget":["Flameshot.Flameshot"],"scoop":"extras/flameshot","choco":null,"noAdmin":false,"wv":{"Flameshot.Flameshot":"14.0.0"},"cv":null},{"id":"lmms","name":"LMMS","category":"av","description":"Free open-source music production software with synths, beat editor and piano roll.","winget":["LMMS.LMMS"],"scoop":"extras/lmms","choco":"lmms","noAdmin":false,"wv":{"LMMS.LMMS":"1.2.2"},"cv":"1.2.2.20210505"},{"id":"stream-deck","name":"Elgato Stream Deck","category":"av","description":"Software for the Elgato Stream Deck to control your stream, apps and smart home with one tap.","winget":["Elgato.StreamDeck"],"scoop":null,"choco":"streamdeck","noAdmin":false,"wv":{"Elgato.StreamDeck":"7.5.1.22901"},"cv":"7.5.1.22901"},{"id":"wave-link","name":"Elgato Wave Link","category":"av","description":"Elgato's audio mixer for Wave microphones with separate stream and monitor mixes.","winget":["Elgato.WaveLink"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Elgato.WaveLink":"3.2.10.4073"},"cv":null},{"id":"streamerbot","name":"Streamer.bot","category":"av","description":"Automation for Twitch, YouTube and OBS: alerts, commands and actions.","winget":["streamerbot.streamerbot"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"streamerbot.streamerbot":"1.0.7"},"cv":null},{"id":"ndi-tools","name":"NDI Tools","category":"av","description":"NDI tools to send video and audio between PCs and OBS over your network.","winget":["NDI.NDITools"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"NDI.NDITools":"6.3.2.0"},"cv":null},{"id":"openshot","name":"OpenShot","category":"av","description":"Easy-to-use open-source video editor for beginners.","winget":["OpenShot.OpenShot"],"scoop":"extras/openshot","choco":"openshot","noAdmin":false,"wv":{"OpenShot.OpenShot":"4.0.0"},"cv":"4.0.0"},{"id":"firefox","name":"Mozilla Firefox","category":"browsers","description":"Open-source browser by Mozilla with strong privacy protection and a huge add-on library.","winget":["Mozilla.Firefox"],"scoop":"extras/firefox","choco":"firefox","noAdmin":false,"wv":{"Mozilla.Firefox":"155.0.1"},"cv":"155.0.1"},{"id":"brave","name":"Brave","category":"browsers","description":"Chromium-based browser with built-in ad and tracker blocking.","winget":["Brave.Brave"],"scoop":"extras/brave","choco":"brave","noAdmin":false,"wv":{"Brave.Brave":"152.1.94.121"},"cv":"1.95.101"},{"id":"chrome","name":"Google Chrome","category":"browsers","description":"Google's browser with sync to a Google account and a large extension catalog.","winget":["Google.Chrome"],"scoop":"extras/googlechrome","choco":"googlechrome","noAdmin":false,"wv":{"Google.Chrome":"153.0.8010.37"},"cv":"153.0.8010.37"},{"id":"edge","name":"Microsoft Edge","category":"browsers","description":"Microsoft's Chromium-based browser that ships with Windows, with vertical tabs and Copilot.","winget":["Microsoft.Edge"],"scoop":null,"choco":"microsoft-edge","noAdmin":false,"wv":{"Microsoft.Edge":"153.0.4234.32"},"cv":"153.0.4234.32"},{"id":"vivaldi","name":"Vivaldi","category":"browsers","description":"Highly customizable Chromium browser with tab stacking, split view and built-in mail.","winget":["Vivaldi.Vivaldi"],"scoop":"extras/vivaldi","choco":"vivaldi","noAdmin":false,"wv":{"Vivaldi.Vivaldi":"8.2.4133.52"},"cv":"8.2.4133.52"},{"id":"librewolf","name":"LibreWolf","category":"browsers","description":"Privacy-hardened Firefox fork without telemetry and with uBlock Origin preinstalled.","winget":["LibreWolf.LibreWolf"],"scoop":"extras/librewolf","choco":"librewolf","noAdmin":false,"wv":{"LibreWolf.LibreWolf":"155.0.1-1"},"cv":"154.0.1.3"},{"id":"zen-browser","name":"Zen Browser","category":"browsers","description":"Calm, Firefox-based browser with vertical tabs, workspaces and split view.","winget":["Zen-Team.Zen-Browser"],"scoop":"extras/zen-browser","choco":null,"noAdmin":false,"wv":{"Zen-Team.Zen-Browser":"1.22.1b"},"cv":null},{"id":"tor-browser","name":"Tor Browser","category":"browsers","description":"Routes your traffic through the Tor network to protect anonymity and bypass censorship.","winget":["TorProject.TorBrowser"],"scoop":"extras/tor-browser","choco":"tor-browser","noAdmin":false,"wv":{"TorProject.TorBrowser":"15.0.22"},"cv":"15.0.22"},{"id":"mullvad-browser","name":"Mullvad Browser","category":"browsers","description":"Privacy browser developed with the Tor Project to minimize tracking and fingerprinting.","winget":["MullvadVPN.MullvadBrowser"],"scoop":"extras/mullvad-browser","choco":"mullvad-browser","noAdmin":false,"wv":{"MullvadVPN.MullvadBrowser":"15.0.21"},"cv":"15.0.21"},{"id":"floorp","name":"Floorp","category":"browsers","description":"Firefox-based browser with vertical tabs, workspaces and deep UI customization.","winget":["Ablaze.Floorp"],"scoop":"extras/floorp","choco":"floorp","noAdmin":false,"wv":{"Ablaze.Floorp":"12.16.4@153.0"},"cv":"12.17.2"},{"id":"ungoogled-chromium","name":"Ungoogled Chromium","category":"browsers","description":"Chromium without Google integration, for users who want Chrome compatibility without Google.","winget":["eloston.ungoogled-chromium"],"scoop":"extras/ungoogled-chromium","choco":"ungoogled-chromium","noAdmin":false,"wv":{"eloston.ungoogled-chromium":"151.0.7922.173"},"cv":"137.0.7151.681"},{"id":"waterfox","name":"Waterfox","category":"browsers","description":"Independent, privacy-focused Firefox-based browser without telemetry.","winget":["Waterfox.Waterfox"],"scoop":"extras/waterfox","choco":"waterfox","noAdmin":false,"wv":{"Waterfox.Waterfox":"6.7.2"},"cv":"26096.7.3"},{"id":"thorium","name":"Thorium","category":"browsers","description":"Performance-optimized Chromium fork with extra compiler optimizations (AVX2 build).","winget":["Alex313031.Thorium.AVX2"],"scoop":"extras/thorium","choco":"thorium","noAdmin":false,"wv":{"Alex313031.Thorium.AVX2":"138.0.7204.303"},"cv":"138.0.7204.303"},{"id":"opera","name":"Opera","category":"browsers","description":"Chromium browser with a free built-in VPN, ad blocker and messenger sidebar.","winget":["Opera.Opera"],"scoop":"extras/opera","choco":"opera","noAdmin":false,"wv":{"Opera.Opera":"135.0.5973.133"},"cv":"135.0.5973.133"},{"id":"opera-gx","name":"Opera GX","category":"browsers","description":"Gaming browser with CPU, RAM and network limiters plus Twitch and Discord integration.","winget":["Opera.OperaGX"],"scoop":"extras/opera-gx","choco":"opera-gx","noAdmin":false,"wv":{"Opera.OperaGX":"135.0.5973.135"},"cv":"134.0.5954.67"},{"id":"ripgrep","name":"ripgrep","category":"cli","description":"Extremely fast recursive search tool that respects .gitignore.","winget":["BurntSushi.ripgrep.MSVC"],"scoop":"main/ripgrep","choco":"ripgrep","noAdmin":false,"wv":{"BurntSushi.ripgrep.MSVC":"15.2.0"},"cv":"15.2.0"},{"id":"fzf","name":"fzf","category":"cli","description":"General-purpose command-line fuzzy finder.","winget":["junegunn.fzf"],"scoop":"main/fzf","choco":"fzf","noAdmin":false,"wv":{"junegunn.fzf":"0.74.4"},"cv":"0.74.3"},{"id":"bat","name":"bat","category":"cli","description":"A cat clone with syntax highlighting and Git integration.","winget":["sharkdp.bat"],"scoop":"main/bat","choco":"bat","noAdmin":false,"wv":{"sharkdp.bat":"0.26.1"},"cv":"0.26.1"},{"id":"fd","name":"fd","category":"cli","description":"Simple, fast and user-friendly alternative to find.","winget":["sharkdp.fd"],"scoop":"main/fd","choco":"fd","noAdmin":false,"wv":{"sharkdp.fd":"10.5.0"},"cv":"10.5.0"},{"id":"jq","name":"jq","category":"cli","description":"Lightweight command-line JSON processor.","winget":["jqlang.jq"],"scoop":"main/jq","choco":"jq","noAdmin":false,"wv":{"jqlang.jq":"1.8.2"},"cv":"1.8.1"},{"id":"zoxide","name":"zoxide","category":"cli","description":"Smarter cd command that jumps to frequently used directories.","winget":["ajeetdsouza.zoxide"],"scoop":"main/zoxide","choco":"zoxide","noAdmin":false,"wv":{"ajeetdsouza.zoxide":"0.10.0"},"cv":"0.9.2"},{"id":"eza","name":"eza","category":"cli","description":"Modern replacement for ls with colors, icons and Git status.","winget":["eza-community.eza"],"scoop":"main/eza","choco":"eza","noAdmin":false,"wv":{"eza-community.eza":"0.23.5"},"cv":"0.23.5"},{"id":"imagemagick","name":"ImageMagick","category":"cli","description":"Command-line suite to create, edit and convert images.","winget":["ImageMagick.ImageMagick"],"scoop":"main/imagemagick","choco":"imagemagick","noAdmin":false,"wv":{"ImageMagick.ImageMagick":"7.1.2.31"},"cv":"7.1.2.2500"},{"id":"curl","name":"curl","category":"cli","description":"Command-line tool for transferring data with URLs (latest version).","winget":["cURL.cURL"],"scoop":"main/curl","choco":"curl","noAdmin":false,"wv":{"cURL.cURL":"8.21.0.6"},"cv":"8.22.0"},{"id":"wget","name":"Wget","category":"cli","description":"Non-interactive command-line downloader for HTTP, HTTPS and FTP.","winget":["JernejSimoncic.Wget"],"scoop":"main/wget","choco":"wget","noAdmin":false,"wv":{"JernejSimoncic.Wget":"1.21.4"},"cv":"1.21.4"},{"id":"btop","name":"btop4win","category":"cli","description":"Beautiful resource monitor for CPU, memory, disks and network.","winget":["aristocratos.btop4win"],"scoop":"main/btop","choco":null,"noAdmin":false,"wv":{"aristocratos.btop4win":"1.0.5"},"cv":null},{"id":"yazi","name":"Yazi","category":"cli","description":"Fast terminal file manager with image previews.","winget":["sxyazi.yazi"],"scoop":"main/yazi","choco":"yazi","noAdmin":false,"wv":{"sxyazi.yazi":"26.9.1"},"cv":"26.9.1"},{"id":"gsudo","name":"gsudo","category":"cli","description":"sudo for Windows: run commands elevated from your current terminal.","winget":["gerardog.gsudo"],"scoop":"main/gsudo","choco":"gsudo","noAdmin":false,"wv":{"gerardog.gsudo":"2.6.1"},"cv":"2.6.1"},{"id":"fastfetch","name":"fastfetch","category":"cli","description":"Fast system information tool that displays specs in your terminal.","winget":["Fastfetch-cli.Fastfetch"],"scoop":"main/fastfetch","choco":"fastfetch","noAdmin":false,"wv":{"Fastfetch-cli.Fastfetch":"2.68.1"},"cv":"2.66.0"},{"id":"syncthing","name":"Syncthing","category":"cloud","description":"Continuous peer-to-peer file sync between your devices, no cloud required.","winget":["Syncthing.Syncthing"],"scoop":"main/syncthing","choco":"syncthing","noAdmin":false,"wv":{"Syncthing.Syncthing":"2.1.5"},"cv":"2.1.5"},{"id":"onedrive","name":"Microsoft OneDrive","category":"cloud","description":"Microsoft's cloud storage client, integrated with Windows and Microsoft 365.","winget":["Microsoft.OneDrive"],"scoop":null,"choco":"onedrive","noAdmin":false,"wv":{"Microsoft.OneDrive":"26.134.0713.0007"},"cv":"26.153.809.4"},{"id":"google-drive","name":"Google Drive","category":"cloud","description":"Sync files between your PC and Google Drive.","winget":["Google.GoogleDrive"],"scoop":null,"choco":"googledrive","noAdmin":false,"wv":{"Google.GoogleDrive":"130.0.2.0"},"cv":"130.0.2"},{"id":"dropbox","name":"Dropbox","category":"cloud","description":"Cloud storage with file sync, sharing and backup.","winget":["Dropbox.Dropbox"],"scoop":"nonportable/dropbox-np","choco":"dropbox","noAdmin":false,"wv":{"Dropbox.Dropbox":"262.4.3183"},"cv":"268.4.4124"},{"id":"nextcloud","name":"Nextcloud Desktop","category":"cloud","description":"Sync client for your self-hosted or managed Nextcloud server.","winget":["Nextcloud.NextcloudDesktop"],"scoop":"extras/nextcloud","choco":"nextcloud-client","noAdmin":false,"wv":{"Nextcloud.NextcloudDesktop":"34.0.3"},"cv":"34.0.3"},{"id":"proton-drive","name":"Proton Drive","category":"cloud","description":"End-to-end encrypted cloud storage from Proton.","winget":["Proton.ProtonDrive"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Proton.ProtonDrive":"3.0.7"},"cv":null},{"id":"localsend","name":"LocalSend","category":"cloud","description":"Share files with nearby devices over your local network, like AirDrop for everyone.","winget":["LocalSend.LocalSend"],"scoop":"extras/localsend","choco":"localsend","noAdmin":false,"wv":{"LocalSend.LocalSend":"1.18.2"},"cv":"1.18.2"},{"id":"rclone","name":"rclone","category":"cloud","description":"Command-line tool to sync files with 70+ cloud storage providers.","winget":["Rclone.Rclone"],"scoop":"main/rclone","choco":"rclone","noAdmin":false,"wv":{"Rclone.Rclone":"1.75.1"},"cv":"1.75.1"},{"id":"qbittorrent","name":"qBittorrent","category":"cloud","description":"Free, ad-free open-source BitTorrent client with built-in search.","winget":["qBittorrent.qBittorrent"],"scoop":"extras/qbittorrent","choco":"qbittorrent","noAdmin":false,"wv":{"qBittorrent.qBittorrent":"5.2.3"},"cv":"5.2.3"},{"id":"winscp","name":"WinSCP","category":"cloud","description":"Popular SFTP, SCP, FTP and S3 client for Windows with scripting.","winget":["WinSCP.WinSCP"],"scoop":"extras/winscp","choco":"winscp","noAdmin":false,"wv":{"WinSCP.WinSCP":"6.5.6"},"cv":"6.5.7"},{"id":"filezilla","name":"FileZilla","category":"cloud","description":"Free FTP, FTPS and SFTP client.","winget":[],"scoop":"extras/filezilla","choco":"filezilla","noAdmin":false,"wv":{},"cv":"3.71.1"},{"id":"jdownloader","name":"JDownloader 2","category":"cloud","description":"Download manager for file hosters, with link grabbing and auto-extraction.","winget":["AppWork.JDownloader"],"scoop":"versions/jdownloader","choco":"jdownloader","noAdmin":false,"wv":{"AppWork.JDownloader":"2.0"},"cv":"180482.0.0"},{"id":"mega","name":"MEGA Desktop App","category":"cloud","description":"Sync client for MEGA's end-to-end encrypted cloud storage.","winget":["Mega.MEGASync"],"scoop":"extras/megasync","choco":"megasync","noAdmin":false,"wv":{"Mega.MEGASync":"6.6.2.0"},"cv":"6.5.0.2"},{"id":"icloud","name":"iCloud","category":"cloud","description":"Access iCloud Drive, Photos, passwords and bookmarks on Windows.","winget":["msstore:9PKTQ5699M62"],"scoop":null,"choco":null,"noAdmin":false,"wv":{},"cv":null},{"id":"transmission","name":"Transmission","category":"cloud","description":"Simple, lightweight open-source BitTorrent client.","winget":["Transmission.Transmission"],"scoop":"extras/transmission","choco":"transmission","noAdmin":false,"wv":{"Transmission.Transmission":"4.1.3"},"cv":"4.1.3"},{"id":"deluge","name":"Deluge","category":"cloud","description":"Lightweight, plugin-based BitTorrent client.","winget":["DelugeTeam.Deluge"],"scoop":"extras/deluge","choco":"deluge","noAdmin":false,"wv":{"DelugeTeam.Deluge":"2.2.0"},"cv":"2.1.1"},{"id":"fdm","name":"Free Download Manager","category":"cloud","description":"Free download manager with acceleration, scheduling and torrent support.","winget":["SoftDeluxe.FreeDownloadManager"],"scoop":"extras/freedownloadmanager","choco":"freedownloadmanager","noAdmin":false,"wv":{"SoftDeluxe.FreeDownloadManager":"6.34.4.6974"},"cv":"6.29.1"},{"id":"discord","name":"Discord","category":"communication","description":"Voice, video and text chat for communities, gaming groups and friends.","winget":["Discord.Discord"],"scoop":"extras/discord","choco":"discord","noAdmin":false,"wv":{"Discord.Discord":"1.0.9257"},"cv":"1.0.9226"},{"id":"signal","name":"Signal","category":"communication","description":"End-to-end encrypted messenger for private chats and calls, fully open source.","winget":["OpenWhisperSystems.Signal"],"scoop":"extras/signal","choco":"signal","noAdmin":false,"wv":{"OpenWhisperSystems.Signal":"8.27.0"},"cv":"8.27.0"},{"id":"telegram","name":"Telegram Desktop","category":"communication","description":"Fast cloud-based messenger with large groups, channels, bots and multi-device sync.","winget":["Telegram.TelegramDesktop"],"scoop":"extras/telegram","choco":"telegram","noAdmin":false,"wv":{"Telegram.TelegramDesktop":"7.2.8"},"cv":"6.4.2"},{"id":"thunderbird","name":"Thunderbird","category":"communication","description":"Free email client by Mozilla with calendar, contacts and OpenPGP encryption.","winget":["Mozilla.Thunderbird"],"scoop":"extras/thunderbird","choco":"thunderbird","noAdmin":false,"wv":{"Mozilla.Thunderbird":"155.0.1"},"cv":"152.0.1"},{"id":"whatsapp","name":"WhatsApp","category":"communication","description":"Official WhatsApp desktop app for chats, calls and file sharing with your phone contacts.","winget":["msstore:9NKSQGP7F2NH"],"scoop":null,"choco":null,"noAdmin":false,"wv":{},"cv":null},{"id":"slack","name":"Slack","category":"communication","description":"Team messaging with channels, threads, huddles and thousands of integrations.","winget":["SlackTechnologies.Slack"],"scoop":"extras/slack","choco":"slack","noAdmin":false,"wv":{"SlackTechnologies.Slack":"4.52.155"},"cv":"4.52.155"},{"id":"teams","name":"Microsoft Teams","category":"communication","description":"Microsoft's workplace chat, meetings and calling app, integrated with Microsoft 365.","winget":["Microsoft.Teams"],"scoop":null,"choco":"microsoft-teams-new-bootstrapper","noAdmin":false,"wv":{"Microsoft.Teams":"26198.304.4946.9672"},"cv":"1.0.2508703"},{"id":"zoom","name":"Zoom Workplace","category":"communication","description":"Video meetings, webinars and team chat.","winget":["Zoom.Zoom"],"scoop":"extras/zoom","choco":"zoom","noAdmin":false,"wv":{"Zoom.Zoom":"7.1.46825"},"cv":"7.1.5.43453"},{"id":"element","name":"Element","category":"communication","description":"Secure, decentralized chat and calls built on the open Matrix protocol.","winget":["Element.Element"],"scoop":"extras/element","choco":"element-desktop","noAdmin":false,"wv":{"Element.Element":"1.12.27"},"cv":"1.12.27"},{"id":"proton-mail","name":"Proton Mail","category":"communication","description":"Desktop app for Proton Mail, the end-to-end encrypted email service from Switzerland.","winget":["Proton.ProtonMail"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Proton.ProtonMail":"1.14.0"},"cv":null},{"id":"mumble","name":"Mumble","category":"communication","description":"Open-source, low-latency, high-quality voice chat for gaming.","winget":["Mumble.Mumble.Client"],"scoop":"extras/mumble","choco":"mumble","noAdmin":false,"wv":{"Mumble.Mumble.Client":"1.5.915"},"cv":"1.5.735"},{"id":"teamspeak","name":"TeamSpeak","category":"communication","description":"Low-latency voice chat, popular with gaming clans and esports teams.","winget":["TeamSpeakSystems.TeamSpeakClient"],"scoop":"extras/teamspeak3","choco":"teamspeak","noAdmin":false,"wv":{"TeamSpeakSystems.TeamSpeakClient":"3.6.2"},"cv":"3.6.2"},{"id":"mattermost","name":"Mattermost","category":"communication","description":"Open-source, self-hostable team collaboration and messaging platform.","winget":["Mattermost.MattermostDesktop"],"scoop":"extras/mattermost","choco":"mattermost-desktop","noAdmin":false,"wv":{"Mattermost.MattermostDesktop":"6.3.0"},"cv":"6.0.1"},{"id":"vesktop","name":"Vesktop","category":"communication","description":"Alternative Discord desktop client with Vencord plugins and better screen sharing on Linux.","winget":["Vencord.Vesktop"],"scoop":"extras/vesktop","choco":null,"noAdmin":false,"wv":{"Vencord.Vesktop":"1.6.6"},"cv":null},{"id":"betterbird","name":"Betterbird","category":"communication","description":"Fine-tuned Thunderbird fork with extra features and bug fixes.","winget":["Betterbird.Betterbird"],"scoop":"extras/betterbird","choco":"betterbird","noAdmin":false,"wv":{"Betterbird.Betterbird":"153.2.0"},"cv":"153.2.0"},{"id":"chatterino","name":"Chatterino","category":"communication","description":"Fast, feature-rich Twitch chat client with tabs and emote support.","winget":["ChatterinoTeam.Chatterino"],"scoop":"extras/chatterino","choco":"chatterino","noAdmin":false,"wv":{"ChatterinoTeam.Chatterino":"2.5.5"},"cv":"2.5.5"},{"id":"ferdium","name":"Ferdium","category":"communication","description":"Combines WhatsApp, Slack, Telegram, Gmail and many more services in one app.","winget":["Ferdium.Ferdium"],"scoop":"extras/ferdium","choco":"ferdium","noAdmin":false,"wv":{"Ferdium.Ferdium":"7.2.3"},"cv":"7.2.3"},{"id":"viber","name":"Viber","category":"communication","description":"Messenger with free encrypted calls, group chats and communities.","winget":["Rakuten.Viber"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Rakuten.Viber":"28.8.0.0"},"cv":null},{"id":"windhawk","name":"Windhawk","category":"customization","description":"Mod platform to customize Windows: taskbar, Start menu, Explorer and more.","winget":["RamenSoftware.Windhawk"],"scoop":"extras/windhawk","choco":"windhawk","noAdmin":false,"wv":{"RamenSoftware.Windhawk":"1.7.3"},"cv":"1.7.3"},{"id":"translucenttb","name":"TranslucentTB","category":"customization","description":"Makes the Windows taskbar transparent or blurred.","winget":["CharlesMilette.TranslucentTB"],"scoop":"extras/translucenttb","choco":"translucenttb","noAdmin":false,"wv":{"CharlesMilette.TranslucentTB":"2026.1"},"cv":"2026.2.0"},{"id":"rainmeter","name":"Rainmeter","category":"customization","description":"Desktop customization with skins for system stats, clocks and widgets.","winget":["Rainmeter.Rainmeter"],"scoop":"extras/rainmeter","choco":"rainmeter","noAdmin":false,"wv":{"Rainmeter.Rainmeter":"4.5.26.3894"},"cv":"4.5.26"},{"id":"shutup10","name":"O&O ShutUp10++","category":"customization","description":"Free tool to disable Windows telemetry and privacy-invasive settings.","winget":["OO-Software.ShutUp10"],"scoop":"extras/shutup10","choco":"shutup10","noAdmin":false,"wv":{"OO-Software.ShutUp10":"3.5.1130"},"cv":"3.5.1130"},{"id":"lively","name":"Lively Wallpaper","category":"customization","description":"Animated and interactive live wallpapers for your desktop.","winget":["rocksdanister.LivelyWallpaper"],"scoop":"extras/lively","choco":"lively","noAdmin":false,"wv":{"rocksdanister.LivelyWallpaper":"2.2.1.0"},"cv":"2.2.1"},{"id":"nilesoft-shell","name":"Nilesoft Shell","category":"customization","description":"Replace and customize the Windows 11 right-click context menu.","winget":["Nilesoft.Shell"],"scoop":"extras/nilesoft-shell","choco":"nilesoft-shell","noAdmin":false,"wv":{"Nilesoft.Shell":"1.9.18"},"cv":"1.9.15"},{"id":"startallback","name":"StartAllBack","category":"customization","description":"Restores the classic Windows 10/7 taskbar and Start menu on Windows 11 (paid, free trial).","winget":["StartIsBack.StartAllBack"],"scoop":null,"choco":"startallback","noAdmin":false,"wv":{"StartIsBack.StartAllBack":"3.9.24"},"cv":"3.9.25"},{"id":"explorerpatcher","name":"ExplorerPatcher","category":"customization","description":"Brings back the Windows 10 taskbar, Start menu and Explorer on Windows 11.","winget":["valinet.ExplorerPatcher"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"valinet.ExplorerPatcher":"22631.5335.68.2"},"cv":null},{"id":"git","name":"Git","category":"devtools","description":"The standard distributed version control system, including Git Bash.","winget":["Git.Git"],"scoop":"main/git","choco":"git","noAdmin":false,"wv":{"Git.Git":"2.55.0.3"},"cv":"2.55.0.5"},{"id":"docker-desktop","name":"Docker Desktop","category":"devtools","description":"Build, run and share containers on Windows with WSL 2.","winget":["Docker.DockerDesktop"],"scoop":null,"choco":"docker-desktop","noAdmin":false,"wv":{"Docker.DockerDesktop":"4.91.0"},"cv":"4.90.0"},{"id":"github-cli","name":"GitHub CLI","category":"devtools","description":"GitHub on the command line: pull requests, issues, releases and Actions.","winget":["GitHub.cli"],"scoop":"main/gh","choco":"gh","noAdmin":false,"wv":{"GitHub.cli":"2.100.0"},"cv":"2.100.0"},{"id":"dbeaver","name":"DBeaver","category":"devtools","description":"Free universal database tool for MySQL, PostgreSQL, SQLite and many more.","winget":["DBeaver.DBeaver.Community"],"scoop":"extras/dbeaver","choco":"dbeaver","noAdmin":false,"wv":{"DBeaver.DBeaver.Community":"26.2.0"},"cv":"26.2.0"},{"id":"github-desktop","name":"GitHub Desktop","category":"devtools","description":"Simple GUI for Git and GitHub.","winget":["GitHub.GitHubDesktop"],"scoop":"extras/github","choco":"github-desktop","noAdmin":false,"wv":{"GitHub.GitHubDesktop":"3.6.5"},"cv":"3.6.5"},{"id":"lazygit","name":"lazygit","category":"devtools","description":"Simple terminal UI for Git commands.","winget":["JesseDuffield.lazygit"],"scoop":"extras/lazygit","choco":"lazygit","noAdmin":false,"wv":{"JesseDuffield.lazygit":"0.65.0"},"cv":"0.61.1"},{"id":"podman-desktop","name":"Podman Desktop","category":"devtools","description":"Open-source GUI for containers and Kubernetes, a Docker Desktop alternative.","winget":["RedHat.Podman-Desktop"],"scoop":"extras/podman-desktop","choco":"podman-desktop","noAdmin":false,"wv":{"RedHat.Podman-Desktop":"1.29.3"},"cv":"1.29.3"},{"id":"bruno","name":"Bruno","category":"devtools","description":"Open-source, offline-first API client that stores collections as files in Git.","winget":["Bruno.Bruno"],"scoop":"extras/bruno","choco":"bruno","noAdmin":false,"wv":{"Bruno.Bruno":"4.1.0"},"cv":"4.1.0"},{"id":"postman","name":"Postman","category":"devtools","description":"API platform for building, testing and documenting APIs.","winget":["Postman.Postman"],"scoop":"extras/postman","choco":"postman","noAdmin":false,"wv":{"Postman.Postman":"12.28.0"},"cv":"12.27.7"},{"id":"kubectl","name":"kubectl","category":"devtools","description":"Command-line tool to manage Kubernetes clusters.","winget":["Kubernetes.kubectl"],"scoop":"main/kubectl","choco":"kubernetes-cli","noAdmin":false,"wv":{"Kubernetes.kubectl":"1.37.0"},"cv":"1.37.0"},{"id":"terraform","name":"Terraform","category":"devtools","description":"Infrastructure as code tool to provision cloud resources.","winget":["Hashicorp.Terraform"],"scoop":"main/terraform","choco":"terraform","noAdmin":false,"wv":{"Hashicorp.Terraform":"1.16.2"},"cv":"1.16.2"},{"id":"aws-cli","name":"AWS CLI","category":"devtools","description":"Official command-line interface for Amazon Web Services.","winget":["Amazon.AWSCLI"],"scoop":"main/aws","choco":"awscli","noAdmin":false,"wv":{"Amazon.AWSCLI":"2.36.44"},"cv":"2.36.44"},{"id":"azure-cli","name":"Azure CLI","category":"devtools","description":"Official command-line interface for Microsoft Azure.","winget":["Microsoft.AzureCLI"],"scoop":"main/azure-cli","choco":"azure-cli","noAdmin":false,"wv":{"Microsoft.AzureCLI":"2.90.0"},"cv":"2.90.0"},{"id":"k9s","name":"k9s","category":"devtools","description":"Terminal UI to manage and observe Kubernetes clusters.","winget":["Derailed.k9s"],"scoop":"main/k9s","choco":"k9s","noAdmin":false,"wv":{"Derailed.k9s":"0.51.0"},"cv":"0.51.0"},{"id":"helm","name":"Helm","category":"devtools","description":"The package manager for Kubernetes.","winget":["Helm.Helm"],"scoop":"main/helm","choco":"kubernetes-helm","noAdmin":false,"wv":{"Helm.Helm":"4.3.0"},"cv":"4.1.4"},{"id":"insomnia","name":"Insomnia","category":"devtools","description":"Open-source API client for REST, GraphQL and gRPC.","winget":["Insomnia.Insomnia"],"scoop":"extras/insomnia","choco":"insomnia-rest-api-client","noAdmin":false,"wv":{"Insomnia.Insomnia":"13.2.0"},"cv":"2023.11.2"},{"id":"hoppscotch","name":"Hoppscotch","category":"devtools","description":"Open-source, lightweight API development ecosystem.","winget":["hoppscotch.Hoppscotch"],"scoop":"extras/hoppscotch","choco":null,"noAdmin":false,"wv":{"hoppscotch.Hoppscotch":"26.8.0-0"},"cv":null},{"id":"pgadmin","name":"pgAdmin 4","category":"devtools","description":"Official administration and development platform for PostgreSQL.","winget":["PostgreSQL.pgAdmin"],"scoop":"nonportable/pgadmin4-np","choco":"pgadmin4","noAdmin":false,"wv":{"PostgreSQL.pgAdmin":"9.17"},"cv":"9.17.0"},{"id":"heidisql","name":"HeidiSQL","category":"devtools","description":"Lightweight client for MariaDB, MySQL, SQL Server and PostgreSQL.","winget":["HeidiSQL.HeidiSQL"],"scoop":"extras/heidisql","choco":"heidisql","noAdmin":false,"wv":{"HeidiSQL.HeidiSQL":"12.21.0.7344"},"cv":"12.21.0"},{"id":"sqlitebrowser","name":"DB Browser for SQLite","category":"devtools","description":"Visual tool to create, design and edit SQLite database files.","winget":["DBBrowserForSQLite.DBBrowserForSQLite"],"scoop":"extras/sqlitebrowser","choco":"sqlitebrowser","noAdmin":false,"wv":{"DBBrowserForSQLite.DBBrowserForSQLite":"3.13.1"},"cv":"3.13.1"},{"id":"mongodb-compass","name":"MongoDB Compass","category":"devtools","description":"Official GUI to explore, query and analyze MongoDB data.","winget":["MongoDB.Compass.Full"],"scoop":"extras/mongodb-compass","choco":"mongodb-compass","noAdmin":false,"wv":{"MongoDB.Compass.Full":"1.50.0.0"},"cv":"1.49.11"},{"id":"ssms","name":"SQL Server Management Studio","category":"devtools","description":"Microsoft's tool to manage SQL Server and Azure SQL databases.","winget":["Microsoft.SQLServerManagementStudio.22"],"scoop":null,"choco":"sql-server-management-studio","noAdmin":false,"wv":{"Microsoft.SQLServerManagementStudio.22":"22.10.0"},"cv":"22.10.0"},{"id":"gitkraken","name":"GitKraken","category":"devtools","description":"Visual Git client with an intuitive commit graph.","winget":["Axosoft.GitKraken"],"scoop":"extras/gitkraken","choco":"gitkraken","noAdmin":false,"wv":{"Axosoft.GitKraken":"12.4.0"},"cv":"12.4.1"},{"id":"fork","name":"Fork","category":"devtools","description":"Fast and friendly Git client for Windows and macOS.","winget":["Fork.Fork"],"scoop":"extras/fork","choco":"git-fork","noAdmin":false,"wv":{"Fork.Fork":"2.21.0"},"cv":"2.22.0"},{"id":"tortoisegit","name":"TortoiseGit","category":"devtools","description":"Git integrated into the Windows Explorer context menu.","winget":["TortoiseGit.TortoiseGit"],"scoop":null,"choco":"tortoisegit","noAdmin":false,"wv":{"TortoiseGit.TortoiseGit":"2.19.1.0"},"cv":"2.19.1"},{"id":"freelens","name":"Freelens","category":"devtools","description":"Free open-source Kubernetes IDE, a community fork of Lens.","winget":["Freelensapp.Freelens"],"scoop":"extras/freelens","choco":"freelens","noAdmin":false,"wv":{"Freelensapp.Freelens":"1.10.3"},"cv":"1.10.3"},{"id":"vscode","name":"Visual Studio Code","category":"editors","description":"Free code editor by Microsoft with debugging, Git and a huge extension marketplace.","winget":["Microsoft.VisualStudioCode"],"scoop":"extras/vscode","choco":"vscode","noAdmin":false,"wv":{"Microsoft.VisualStudioCode":"1.137.0"},"cv":"1.137.0"},{"id":"visual-studio","name":"Visual Studio Community","category":"editors","description":"Microsoft's full IDE for C#, C++, .NET and game development (free Community edition).","winget":["Microsoft.VisualStudio.Community"],"scoop":null,"choco":"visualstudio2026community","noAdmin":false,"wv":{"Microsoft.VisualStudio.Community":"18.10.0"},"cv":"118.10.0"},{"id":"jetbrains-toolbox","name":"JetBrains Toolbox","category":"editors","description":"Install, update and manage all JetBrains IDEs from one app.","winget":["JetBrains.Toolbox"],"scoop":"extras/jetbrains-toolbox","choco":"jetbrainstoolbox","noAdmin":false,"wv":{"JetBrains.Toolbox":"3.7.2.0"},"cv":"3.7.2.87231"},{"id":"intellij","name":"IntelliJ IDEA","category":"editors","description":"JetBrains' IDE for Java and Kotlin development.","winget":["JetBrains.IntelliJIDEA.Community"],"scoop":"extras/idea","choco":"intellijidea-community","noAdmin":false,"wv":{"JetBrains.IntelliJIDEA.Community":"2025.2.6.2"},"cv":"2026.2.2"},{"id":"pycharm","name":"PyCharm","category":"editors","description":"JetBrains' Python IDE with smart code assistance, debugger and notebooks.","winget":["JetBrains.PyCharm.Community"],"scoop":"extras/pycharm","choco":"pycharm-community","noAdmin":false,"wv":{"JetBrains.PyCharm.Community":"2025.2.6.1"},"cv":"2025.3.0"},{"id":"neovim","name":"Neovim","category":"editors","description":"Hyperextensible Vim-based terminal text editor.","winget":["Neovim.Neovim"],"scoop":"main/neovim","choco":"neovim","noAdmin":false,"wv":{"Neovim.Neovim":"0.12.5"},"cv":"0.12.5"},{"id":"sublime-text","name":"Sublime Text","category":"editors","description":"Fast, sophisticated text editor for code and prose.","winget":["SublimeHQ.SublimeText.4"],"scoop":"extras/sublime-text","choco":"sublimetext4","noAdmin":false,"wv":{"SublimeHQ.SublimeText.4":"4.0.0.420000"},"cv":"4.0.0.420000"},{"id":"vscodium","name":"VSCodium","category":"editors","description":"Community build of VS Code without Microsoft telemetry.","winget":["VSCodium.VSCodium"],"scoop":"extras/vscodium","choco":"vscodium","noAdmin":false,"wv":{"VSCodium.VSCodium":"1.126.04524"},"cv":"1.135.6055"},{"id":"cursor","name":"Cursor","category":"editors","description":"AI-first code editor based on VS Code.","winget":["Anysphere.Cursor"],"scoop":"extras/cursor","choco":"cursoride","noAdmin":false,"wv":{"Anysphere.Cursor":"3.19.7"},"cv":"3.20.14"},{"id":"zed","name":"Zed","category":"editors","description":"High-performance, collaborative code editor written in Rust.","winget":["ZedIndustries.Zed"],"scoop":"extras/zed","choco":"zed","noAdmin":false,"wv":{"ZedIndustries.Zed":"1.19.2"},"cv":"1.2.1"},{"id":"webstorm","name":"WebStorm","category":"editors","description":"JetBrains' IDE for JavaScript, TypeScript and web development.","winget":["JetBrains.WebStorm"],"scoop":"extras/webstorm","choco":"webstorm","noAdmin":false,"wv":{"JetBrains.WebStorm":"2026.2.2"},"cv":"2026.2.2"},{"id":"rider","name":"Rider","category":"editors","description":"JetBrains' cross-platform .NET and game development IDE.","winget":["JetBrains.Rider"],"scoop":"extras/rider","choco":"jetbrains-rider","noAdmin":false,"wv":{"JetBrains.Rider":"2026.2.0.2"},"cv":"2026.2.1"},{"id":"clion","name":"CLion","category":"editors","description":"JetBrains' IDE for C and C++.","winget":["JetBrains.CLion"],"scoop":"extras/clion","choco":"clion-ide","noAdmin":false,"wv":{"JetBrains.CLion":"2026.2.1"},"cv":"2026.1.4"},{"id":"android-studio","name":"Android Studio","category":"editors","description":"Google's official IDE for Android app development.","winget":["Google.AndroidStudio"],"scoop":"extras/android-studio","choco":"androidstudio","noAdmin":false,"wv":{"Google.AndroidStudio":"2026.1.4.7"},"cv":"2025.2.3.9"},{"id":"helix","name":"Helix","category":"editors","description":"Modal terminal editor with built-in LSP and tree-sitter support.","winget":["Helix.Helix"],"scoop":"main/helix","choco":"helix","noAdmin":false,"wv":{"Helix.Helix":"25.07.1"},"cv":"25.7.1"},{"id":"windsurf","name":"Windsurf","category":"editors","description":"AI-powered code editor with agentic coding assistant.","winget":["Codeium.Windsurf"],"scoop":"extras/windsurf","choco":"windsurf","noAdmin":false,"wv":{"Codeium.Windsurf":"2.3.15"},"cv":"3.10.23"},{"id":"arduino-ide","name":"Arduino IDE","category":"editors","description":"Official IDE to program Arduino and compatible boards.","winget":["ArduinoSA.IDE.stable"],"scoop":"extras/arduino","choco":"arduino","noAdmin":false,"wv":{"ArduinoSA.IDE.stable":"2.3.10"},"cv":"2.3.10"},{"id":"7zip","name":"7-Zip","category":"files","description":"Free open-source file archiver with high compression for 7z, ZIP, RAR and more.","winget":["7zip.7zip"],"scoop":"main/7zip","choco":"7zip","noAdmin":false,"wv":{"7zip.7zip":"26.03"},"cv":"26.3.0"},{"id":"everything","name":"Everything","category":"files","description":"Finds files and folders by name instantly across all your NTFS drives.","winget":["voidtools.Everything"],"scoop":"extras/everything","choco":"everything","noAdmin":false,"wv":{"voidtools.Everything":"1.4.1.1032"},"cv":"1.4.11032"},{"id":"files","name":"Files","category":"files","description":"Modern file manager for Windows with tabs, dual pane and tags.","winget":["FilesCommunity.Files"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"FilesCommunity.Files":"4.2.0.0"},"cv":null},{"id":"nanazip","name":"NanaZip","category":"files","description":"Modern 7-Zip fork that integrates with the Windows 11 context menu.","winget":["M2Team.NanaZip"],"scoop":"main/nanazip","choco":"nanazip","noAdmin":false,"wv":{"M2Team.NanaZip":"7.0.1832.0"},"cv":"6.5.1800"},{"id":"wiztree","name":"WizTree","category":"files","description":"Extremely fast disk space analyzer that shows what fills your drives.","winget":["AntibodySoftware.WizTree"],"scoop":"extras/wiztree","choco":"wiztree","noAdmin":false,"wv":{"AntibodySoftware.WizTree":"4.32"},"cv":"4.32.0"},{"id":"quicklook","name":"QuickLook","category":"files","description":"Preview files instantly by pressing Space in Explorer, like on macOS.","winget":["QL-Win.QuickLook"],"scoop":"extras/quicklook","choco":null,"noAdmin":false,"wv":{"QL-Win.QuickLook":"4.5.0"},"cv":null},{"id":"peazip","name":"PeaZip","category":"files","description":"Free archiver supporting 200+ formats with encryption.","winget":["Giorgiotani.Peazip"],"scoop":"extras/peazip","choco":"peazip","noAdmin":false,"wv":{"Giorgiotani.Peazip":"11.2.0"},"cv":"11.2.0"},{"id":"totalcommander","name":"Total Commander","category":"files","description":"Legendary two-pane file manager with built-in FTP and archive handling.","winget":["Ghisler.TotalCommander"],"scoop":"extras/totalcommander","choco":"totalcommander","noAdmin":false,"wv":{"Ghisler.TotalCommander":"11.58"},"cv":"11.58.0"},{"id":"onecommander","name":"OneCommander","category":"files","description":"Modern two-pane file manager with column view and themes.","winget":["MilosParipovic.OneCommander"],"scoop":"extras/onecommander","choco":"onecommander","noAdmin":false,"wv":{"MilosParipovic.OneCommander":"3.108.0"},"cv":"3.108.0"},{"id":"bulk-rename","name":"Bulk Rename Utility","category":"files","description":"Rename many files at once using flexible rules.","winget":["TGRMNSoftware.BulkRenameUtility"],"scoop":"extras/bulk-rename-utility","choco":"bulkrenameutility","noAdmin":false,"wv":{"TGRMNSoftware.BulkRenameUtility":"4.1.0.1"},"cv":"4.1.0.1"},{"id":"windirstat","name":"WinDirStat","category":"files","description":"Disk usage statistics viewer with a colorful treemap.","winget":["WinDirStat.WinDirStat"],"scoop":"extras/windirstat","choco":"windirstat","noAdmin":false,"wv":{"WinDirStat.WinDirStat":"2.8.0"},"cv":"2.8.0"},{"id":"treesize","name":"TreeSize Free","category":"files","description":"Shows folder sizes to find out what's using your disk space.","winget":["JAMSoftware.TreeSize.Free"],"scoop":"extras/treesize-free","choco":"treesizefree","noAdmin":false,"wv":{"JAMSoftware.TreeSize.Free":"4.8.1.610"},"cv":"4.8.1.1"},{"id":"winrar","name":"WinRAR","category":"files","description":"Classic archive manager for RAR and ZIP files.","winget":["RARLab.WinRAR"],"scoop":"extras/winrar","choco":"winrar","noAdmin":false,"wv":{"RARLab.WinRAR":"7.23.0"},"cv":"7.23.0"},{"id":"steam","name":"Steam","category":"gaming","description":"Valve's PC gaming platform, store and launcher.","winget":["Valve.Steam"],"scoop":"versions/steam","choco":"steam","noAdmin":false,"wv":{"Valve.Steam":"2.10.91.91"},"cv":"3.10.91.91241028"},{"id":"playnite","name":"Playnite","category":"gaming","description":"Open-source library manager that unifies all your game launchers in one place.","winget":["Playnite.Playnite"],"scoop":"extras/playnite","choco":"playnite","noAdmin":false,"wv":{"Playnite.Playnite":"10.58"},"cv":"10.60.0"},{"id":"epic-games","name":"Epic Games Launcher","category":"gaming","description":"Launcher for the Epic Games Store, Fortnite and Unreal Engine \u2013 with free weekly games.","winget":["EpicGames.EpicGamesLauncher"],"scoop":null,"choco":"epicgameslauncher","noAdmin":false,"wv":{"EpicGames.EpicGamesLauncher":"1.3.193.0"},"cv":"1.3.193"},{"id":"gog-galaxy","name":"GOG Galaxy","category":"gaming","description":"GOG's DRM-free game launcher that can connect libraries from other platforms.","winget":["GOG.Galaxy"],"scoop":"games/goggalaxy","choco":"goggalaxy","noAdmin":false,"wv":{"GOG.Galaxy":"2.1.8.30"},"cv":"2.0.77.22"},{"id":"heroic","name":"Heroic Games Launcher","category":"gaming","description":"Open-source launcher for Epic Games, GOG and Amazon Prime Gaming libraries.","winget":["HeroicGamesLauncher.HeroicGamesLauncher"],"scoop":"games/heroic-games-launcher","choco":"heroic-games-launcher","noAdmin":false,"wv":{"HeroicGamesLauncher.HeroicGamesLauncher":"2.22.1"},"cv":"2.22.1"},{"id":"battle-net","name":"Battle.net","category":"gaming","description":"Blizzard's launcher for World of Warcraft, Diablo, Overwatch and Call of Duty.","winget":["Blizzard.BattleNet"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Blizzard.BattleNet":"1.19.3.3219"},"cv":null},{"id":"ea-app","name":"EA app","category":"gaming","description":"Electronic Arts' launcher for EA games and EA Play.","winget":["ElectronicArts.EADesktop"],"scoop":null,"choco":"ea-app","noAdmin":false,"wv":{"ElectronicArts.EADesktop":"13.788.2.6298"},"cv":"13.768.7.6285"},{"id":"ubisoft-connect","name":"Ubisoft Connect","category":"gaming","description":"Ubisoft's launcher for Assassin's Creed, Far Cry, Anno and more.","winget":["Ubisoft.Connect"],"scoop":null,"choco":"ubisoft-connect","noAdmin":false,"wv":{"Ubisoft.Connect":"173.1.0.13333"},"cv":"173.1.0.13333"},{"id":"xbox","name":"Xbox app","category":"gaming","description":"Microsoft's Xbox app for PC Game Pass, the Microsoft Store games and friends.","winget":["msstore:9MV0B5HZVK9Z"],"scoop":null,"choco":null,"noAdmin":false,"wv":{},"cv":null},{"id":"itch","name":"itch","category":"gaming","description":"Desktop app for itch.io to download and play indie games.","winget":["ItchIo.Itch"],"scoop":"games/itch","choco":"itch","noAdmin":false,"wv":{"ItchIo.Itch":"26.20.0"},"cv":"26.1.9.20241215"},{"id":"amazon-games","name":"Amazon Games","category":"gaming","description":"Launcher for Amazon Games and free Prime Gaming titles.","winget":["Amazon.Games"],"scoop":null,"choco":"amazongames","noAdmin":false,"wv":{"Amazon.Games":"3.0.9700.3"},"cv":"2.3.8425.2"},{"id":"minecraft","name":"Minecraft Launcher","category":"gaming","description":"Official launcher for Minecraft Java and Bedrock Edition.","winget":["Mojang.MinecraftLauncher"],"scoop":null,"choco":"minecraft-launcher","noAdmin":false,"wv":{"Mojang.MinecraftLauncher":"2.0.0.0"},"cv":"1.0.0.20241010"},{"id":"prism-launcher","name":"Prism Launcher","category":"gaming","description":"Open-source Minecraft launcher with multiple instances and easy mod management.","winget":["PrismLauncher.PrismLauncher"],"scoop":"games/prismlauncher","choco":"prismlauncher","noAdmin":false,"wv":{"PrismLauncher.PrismLauncher":"11.1.0"},"cv":"10.0.2"},{"id":"modrinth","name":"Modrinth App","category":"gaming","description":"Modrinth's Minecraft launcher for mods and modpacks.","winget":["Modrinth.ModrinthApp"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Modrinth.ModrinthApp":"0.20.5"},"cv":null},{"id":"curseforge","name":"CurseForge","category":"gaming","description":"Mod manager for Minecraft, World of Warcraft and other games.","winget":["Overwolf.CurseForge"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Overwolf.CurseForge":"0.220.1-9343"},"cv":null},{"id":"moonlight","name":"Moonlight","category":"gaming","description":"Open-source game streaming client for Sunshine and NVIDIA GameStream hosts.","winget":["MoonlightGameStreamingProject.Moonlight"],"scoop":"extras/moonlight","choco":"moonlight-qt","noAdmin":false,"wv":{"MoonlightGameStreamingProject.Moonlight":"6.1.0.0"},"cv":"6.1.0"},{"id":"sunshine","name":"Sunshine","category":"gaming","description":"Self-hosted game stream host for Moonlight clients.","winget":["LizardByte.Sunshine"],"scoop":"extras/sunshine","choco":"sunshine","noAdmin":false,"wv":{"LizardByte.Sunshine":"2026.906.222525"},"cv":"2025.118.151840"},{"id":"parsec","name":"Parsec","category":"gaming","description":"Low-latency remote desktop for gaming and couch co-op over the internet.","winget":["Parsec.Parsec"],"scoop":"extras/parsec","choco":"parsec","noAdmin":false,"wv":{"Parsec.Parsec":"150.104.1.0"},"cv":"20240209.00"},{"id":"ds4windows","name":"DS4Windows","category":"gaming","description":"Use PlayStation DualShock 4 and DualSense controllers on Windows as Xbox controllers.","winget":[],"scoop":"extras/ds4windows","choco":"ds4windows","noAdmin":false,"wv":{},"cv":"3.3.3"},{"id":"retroarch","name":"RetroArch","category":"gaming","description":"Frontend for emulators and game engines with a unified interface.","winget":["Libretro.RetroArch"],"scoop":"extras/retroarch","choco":"retroarch","noAdmin":false,"wv":{"Libretro.RetroArch":"1.22.2"},"cv":"1.22.2"},{"id":"dolphin","name":"Dolphin Emulator","category":"gaming","description":"GameCube and Wii emulator with HD rendering and netplay.","winget":["DolphinEmulator.Dolphin"],"scoop":"extras/dolphin","choco":"dolphin","noAdmin":false,"wv":{"DolphinEmulator.Dolphin":"5.0"},"cv":"2606.1.0"},{"id":"pcsx2","name":"PCSX2","category":"gaming","description":"Open-source PlayStation 2 emulator.","winget":["PCSX2Team.PCSX2"],"scoop":"games/pcsx2","choco":"pcsx2","noAdmin":false,"wv":{"PCSX2Team.PCSX2":"2.8.1"},"cv":"2.8.2"},{"id":"duckstation","name":"DuckStation","category":"gaming","description":"Fast and accurate PlayStation 1 emulator with enhancements.","winget":["Stenzek.DuckStation"],"scoop":"games/duckstation","choco":null,"noAdmin":false,"wv":{"Stenzek.DuckStation":"0.1.11752"},"cv":null},{"id":"ppsspp","name":"PPSSPP","category":"gaming","description":"Fast PlayStation Portable (PSP) emulator with HD upscaling.","winget":["PPSSPPTeam.PPSSPP"],"scoop":"games/ppsspp","choco":"ppsspp","noAdmin":false,"wv":{"PPSSPPTeam.PPSSPP":"1.20.4"},"cv":"1.20.4"},{"id":"melonds","name":"melonDS","category":"gaming","description":"Nintendo DS emulator with local wireless play and high-resolution rendering.","winget":["melonDS.melonDS"],"scoop":"games/melonds","choco":null,"noAdmin":false,"wv":{"melonDS.melonDS":"1.1"},"cv":null},{"id":"cemu","name":"Cemu","category":"gaming","description":"Open-source Wii U emulator.","winget":["Cemu.Cemu"],"scoop":"games/cemu","choco":"cemu","noAdmin":false,"wv":{"Cemu.Cemu":"2.6"},"cv":"2.6.0"},{"id":"mame","name":"MAME","category":"gaming","description":"The classic multi-system arcade machine emulator.","winget":["MAMEdev.MAME"],"scoop":"games/mame","choco":"mame","noAdmin":false,"wv":{"MAMEdev.MAME":"0.289"},"cv":"0.280.0"},{"id":"scummvm","name":"ScummVM","category":"gaming","description":"Play classic point-and-click adventure games on modern PCs.","winget":["ScummVM.ScummVM"],"scoop":"games/scummvm","choco":"scummvm","noAdmin":false,"wv":{"ScummVM.ScummVM":"2026.3.0"},"cv":"2026.3.0"},{"id":"gimp","name":"GIMP","category":"graphics","description":"Free and open-source image editor for photo retouching and graphic design.","winget":["GIMP.GIMP.3"],"scoop":"extras/gimp","choco":"gimp","noAdmin":false,"wv":{"GIMP.GIMP.3":"3.2.6.0"},"cv":"3.2.6"},{"id":"krita","name":"Krita","category":"graphics","description":"Professional open-source painting program for illustrators and concept artists.","winget":["KDE.Krita"],"scoop":"extras/krita","choco":"krita","noAdmin":false,"wv":{"KDE.Krita":"5.3.3.0"},"cv":"5.3.3"},{"id":"inkscape","name":"Inkscape","category":"graphics","description":"Open-source vector graphics editor working natively with SVG.","winget":["Inkscape.Inkscape"],"scoop":"extras/inkscape","choco":"inkscape","noAdmin":false,"wv":{"Inkscape.Inkscape":"1.4.4"},"cv":"1.4.4"},{"id":"blender","name":"Blender","category":"graphics","description":"Free open-source 3D suite for modeling, animation, rendering and video editing.","winget":["BlenderFoundation.Blender"],"scoop":"extras/blender","choco":"blender","noAdmin":false,"wv":{"BlenderFoundation.Blender":"5.2.1"},"cv":"5.2.1"},{"id":"paint-net","name":"Paint.NET","category":"graphics","description":"Image editor for Windows with layers, effects and plugins.","winget":["dotPDN.PaintDotNet"],"scoop":"extras/paint.net","choco":"paint.net","noAdmin":false,"wv":{"dotPDN.PaintDotNet":"5.1.12"},"cv":"5.1.12"},{"id":"darktable","name":"darktable","category":"graphics","description":"Open-source photography workflow app and RAW developer.","winget":["darktable.darktable"],"scoop":"extras/darktable","choco":"darktable","noAdmin":false,"wv":{"darktable.darktable":"5.6.1"},"cv":"5.4.1"},{"id":"figma","name":"Figma","category":"graphics","description":"Collaborative interface design and prototyping tool.","winget":["Figma.Figma"],"scoop":"extras/figma","choco":"figma","noAdmin":false,"wv":{"Figma.Figma":"126.9.7"},"cv":"116.12.2"},{"id":"irfanview","name":"IrfanView","category":"graphics","description":"Very fast and compact image viewer with batch conversion.","winget":["IrfanSkiljan.IrfanView"],"scoop":"extras/irfanview","choco":"irfanview","noAdmin":false,"wv":{"IrfanSkiljan.IrfanView":"4.75"},"cv":"4.75.0"},{"id":"imageglass","name":"ImageGlass","category":"graphics","description":"Fast, lightweight and modern image viewer supporting 80+ formats.","winget":["DuongDieuPhap.ImageGlass"],"scoop":"extras/imageglass","choco":"imageglass","noAdmin":false,"wv":{"DuongDieuPhap.ImageGlass":"10.0.906.0"},"cv":"9.5.0.515"},{"id":"rawtherapee","name":"RawTherapee","category":"graphics","description":"Free RAW photo processing with detailed tone and colour controls.","winget":["RawTherapee.RawTherapee"],"scoop":"extras/rawtherapee","choco":null,"noAdmin":false,"wv":{"RawTherapee.RawTherapee":"5.13"},"cv":null},{"id":"xnviewmp","name":"XnView MP","category":"graphics","description":"Image viewer, browser and batch converter supporting 500+ formats.","winget":["XnSoft.XnViewMP"],"scoop":"extras/xnviewmp","choco":"xnviewmp","noAdmin":false,"wv":{"XnSoft.XnViewMP":"1.11.6.0"},"cv":"1.11.6"},{"id":"upscayl","name":"Upscayl","category":"graphics","description":"Free AI image upscaler that runs locally on your GPU.","winget":["Upscayl.Upscayl"],"scoop":"extras/upscayl","choco":"upscayl","noAdmin":false,"wv":{"Upscayl.Upscayl":"2.15.0"},"cv":"2.15.0.20250804"},{"id":"canva","name":"Canva","category":"graphics","description":"Easy graphic design for social media posts, presentations and documents.","winget":["Canva.Canva"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Canva.Canva":"1.125.1"},"cv":null},{"id":"godot","name":"Godot Engine","category":"graphics","description":"Free and open-source 2D and 3D game engine.","winget":["GodotEngine.GodotEngine"],"scoop":"extras/godot","choco":"godot","noAdmin":false,"wv":{"GodotEngine.GodotEngine":"4.7.2"},"cv":"4.7.2"},{"id":"freecad","name":"FreeCAD","category":"graphics","description":"Open-source parametric 3D CAD modeler for engineering and product design.","winget":["FreeCAD.FreeCAD"],"scoop":"extras/freecad","choco":"freecad","noAdmin":false,"wv":{"FreeCAD.FreeCAD":"1.1.3"},"cv":"1.1.3.1"},{"id":"kicad","name":"KiCad","category":"graphics","description":"Open-source electronics design suite for schematics and PCB layout.","winget":["KiCad.KiCad"],"scoop":"extras/kicad","choco":"kicad","noAdmin":false,"wv":{"KiCad.KiCad":"10.0.6"},"cv":"10.0.6"},{"id":"orcaslicer","name":"OrcaSlicer","category":"graphics","description":"Open-source slicer for Bambu Lab, Prusa, Voron, Creality and more.","winget":["SoftFever.OrcaSlicer"],"scoop":"extras/orcaslicer","choco":"orcaslicer","noAdmin":false,"wv":{"SoftFever.OrcaSlicer":"2.4.2"},"cv":"2.4.2.1"},{"id":"prusaslicer","name":"PrusaSlicer","category":"graphics","description":"Feature-rich open-source 3D printing slicer by Prusa Research.","winget":["Prusa3D.PrusaSlicer"],"scoop":"extras/prusaslicer","choco":"prusaslicer","noAdmin":false,"wv":{"Prusa3D.PrusaSlicer":"2.9.6"},"cv":"2.9.6"},{"id":"bambu-studio","name":"Bambu Studio","category":"graphics","description":"Official slicer and printer control software for Bambu Lab 3D printers.","winget":["Bambulab.Bambustudio"],"scoop":"extras/bambu-studio","choco":"bambustudio","noAdmin":false,"wv":{"Bambulab.Bambustudio":"02.08.02.61"},"cv":"2.8.2.60"},{"id":"cura","name":"UltiMaker Cura","category":"graphics","description":"Popular 3D printing slicer for UltiMaker and many other printers.","winget":["Ultimaker.Cura"],"scoop":"extras/cura","choco":null,"noAdmin":false,"wv":{"Ultimaker.Cura":"5.13.0"},"cv":null},{"id":"unity-hub","name":"Unity Hub","category":"graphics","description":"Manages Unity Editor installations, modules and projects.","winget":["Unity.UnityHub"],"scoop":"nonportable/unity-hub-np","choco":"unity-hub","noAdmin":false,"wv":{"Unity.UnityHub":"3.21.2.65535"},"cv":"3.21.2"},{"id":"hwinfo","name":"HWiNFO","category":"hardware","description":"In-depth hardware information and real-time sensor monitoring.","winget":["REALiX.HWiNFO"],"scoop":"extras/hwinfo","choco":"hwinfo","noAdmin":false,"wv":{"REALiX.HWiNFO":"8.50"},"cv":"8.28.0"},{"id":"cpu-z","name":"CPU-Z","category":"hardware","description":"Shows detailed information about your CPU, motherboard and RAM.","winget":["CPUID.CPU-Z"],"scoop":"extras/cpu-z","choco":"cpu-z","noAdmin":false,"wv":{"CPUID.CPU-Z":"3.01"},"cv":"3.1.0"},{"id":"crystaldiskinfo","name":"CrystalDiskInfo","category":"hardware","description":"Checks the health and temperature of your HDDs and SSDs via S.M.A.R.T.","winget":["CrystalDewWorld.CrystalDiskInfo"],"scoop":"extras/crystaldiskinfo","choco":"crystaldiskinfo","noAdmin":false,"wv":{"CrystalDewWorld.CrystalDiskInfo":"9.9.2"},"cv":"9.9.2"},{"id":"gpu-z","name":"GPU-Z","category":"hardware","description":"Shows detailed information and sensor data for your graphics card.","winget":["TechPowerUp.GPU-Z"],"scoop":"extras/gpu-z","choco":"gpu-z","noAdmin":false,"wv":{"TechPowerUp.GPU-Z":"2.70.0"},"cv":"2.70.0"},{"id":"librehardwaremonitor","name":"Libre Hardware Monitor","category":"hardware","description":"Open-source monitor for temperatures, fan speeds, voltages and load.","winget":["LibreHardwareMonitor.LibreHardwareMonitor"],"scoop":"extras/librehardwaremonitor","choco":"librehardwaremonitor","noAdmin":false,"wv":{"LibreHardwareMonitor.LibreHardwareMonitor":"0.9.6"},"cv":"0.9.6"},{"id":"msi-afterburner","name":"MSI Afterburner","category":"hardware","description":"Graphics card overclocking, fan control and in-game FPS overlay.","winget":["Guru3D.Afterburner"],"scoop":"extras/msiafterburner","choco":"msiafterburner","noAdmin":false,"wv":{"Guru3D.Afterburner":"4.6.6"},"cv":"4.6.5.230429"},{"id":"hwmonitor","name":"HWMonitor","category":"hardware","description":"Monitors temperatures, voltages and fan speeds.","winget":["CPUID.HWMonitor"],"scoop":"extras/hwmonitor","choco":"hwmonitor","noAdmin":false,"wv":{"CPUID.HWMonitor":"1.67"},"cv":"1.67.0"},{"id":"crystaldiskmark","name":"CrystalDiskMark","category":"hardware","description":"Benchmarks the read and write speed of your drives.","winget":["CrystalDewWorld.CrystalDiskMark"],"scoop":"extras/crystaldiskmark","choco":"crystaldiskmark","noAdmin":false,"wv":{"CrystalDewWorld.CrystalDiskMark":"9.0.3"},"cv":"9.0.3"},{"id":"openrgb","name":"OpenRGB","category":"hardware","description":"Open-source RGB lighting control for devices from many vendors.","winget":["OpenRGB.OpenRGB"],"scoop":"extras/openrgb","choco":"openrgb","noAdmin":false,"wv":{"OpenRGB.OpenRGB":"1.0.0"},"cv":"1.0.0"},{"id":"fancontrol","name":"FanControl","category":"hardware","description":"Highly customizable fan speed control based on temperatures.","winget":["Rem0o.FanControl"],"scoop":"extras/fancontrol","choco":"fancontrol","noAdmin":false,"wv":{"Rem0o.FanControl":"277"},"cv":"277.0.0"},{"id":"ddu","name":"Display Driver Uninstaller","category":"hardware","description":"Completely removes graphics and audio drivers for a clean reinstall.","winget":["Wagnardsoft.DisplayDriverUninstaller"],"scoop":"extras/ddu","choco":"ddu","noAdmin":false,"wv":{"Wagnardsoft.DisplayDriverUninstaller":"18.1.5.3"},"cv":"18.1.5.4"},{"id":"nvidia-app","name":"NVIDIA App","category":"hardware","description":"NVIDIA's app for GeForce driver updates, game settings and recording.","winget":["msstore:XP8CLZL93F5Z4P"],"scoop":null,"choco":null,"noAdmin":false,"wv":{},"cv":null},{"id":"nvcleanstall","name":"NVCleanstall","category":"hardware","description":"Install NVIDIA drivers without bloat and telemetry.","winget":["TechPowerUp.NVCleanstall"],"scoop":"extras/nvcleanstall","choco":null,"noAdmin":false,"wv":{"TechPowerUp.NVCleanstall":"1.19.0"},"cv":null},{"id":"logitech-ghub","name":"Logitech G HUB","category":"hardware","description":"Configure Logitech G mice, keyboards, headsets and lighting.","winget":["Logitech.GHUB"],"scoop":null,"choco":"lghub","noAdmin":false,"wv":{"Logitech.GHUB":"2026.4.919028"},"cv":"2026.5.939708"},{"id":"signalrgb","name":"SignalRGB","category":"hardware","description":"Control and sync RGB lighting across brands with game integrations.","winget":["WhirlwindFX.SignalRgb"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"WhirlwindFX.SignalRgb":"2.5.74"},"cv":null},{"id":"corsair-icue","name":"Corsair iCUE","category":"hardware","description":"Control Corsair peripherals, RGB lighting, fans and cooling.","winget":["Corsair.iCUE.5"],"scoop":null,"choco":"icue","noAdmin":false,"wv":{"Corsair.iCUE.5":"5.49.34"},"cv":"5.24.57"},{"id":"steelseries-gg","name":"SteelSeries GG","category":"hardware","description":"Configure SteelSeries gear, with Sonar audio mixer and Moments clips.","winget":["SteelSeries.GG"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"SteelSeries.GG":"119.0.0"},"cv":null},{"id":"python","name":"Python 3","category":"languages","description":"The Python programming language, including pip and the py launcher.","winget":["Python.Python.3.14"],"scoop":"main/python","choco":"python","noAdmin":false,"wv":{"Python.Python.3.14":"3.14.7"},"cv":"3.14.7"},{"id":"nodejs","name":"Node.js LTS","category":"languages","description":"JavaScript runtime (Long Term Support version) including npm.","winget":["OpenJS.NodeJS.LTS"],"scoop":"main/nodejs-lts","choco":"nodejs-lts","noAdmin":false,"wv":{"OpenJS.NodeJS.LTS":"24.19.0"},"cv":"24.21.0"},{"id":"uv","name":"uv","category":"languages","description":"Extremely fast Python package and project manager written in Rust.","winget":["astral-sh.uv"],"scoop":"main/uv","choco":"uv","noAdmin":false,"wv":{"astral-sh.uv":"0.12.13"},"cv":"0.12.13"},{"id":"go","name":"Go","category":"languages","description":"Google's open-source programming language for simple, fast and reliable software.","winget":["GoLang.Go"],"scoop":"main/go","choco":"golang","noAdmin":false,"wv":{"GoLang.Go":"1.27.0"},"cv":"1.27.1"},{"id":"rust","name":"Rust (rustup)","category":"languages","description":"Rust toolchain installer (rustup) with cargo and rustc.","winget":["Rustlang.Rustup"],"scoop":"main/rustup","choco":"rustup.install","noAdmin":false,"wv":{"Rustlang.Rustup":"1.29.1"},"cv":"1.27.1"},{"id":"java-jdk","name":"Java JDK (Temurin 25)","category":"languages","description":"Java Development Kit (Eclipse Temurin 25 LTS) for building Java applications.","winget":["EclipseAdoptium.Temurin.25.JDK"],"scoop":"java/temurin25-jdk","choco":"temurin25","noAdmin":false,"wv":{"EclipseAdoptium.Temurin.25.JDK":"25.0.4.101"},"cv":"25.0.4.1"},{"id":"dotnet-sdk","name":".NET SDK 10","category":"languages","description":"The .NET 10 SDK to build apps with C#, F# and Visual Basic.","winget":["Microsoft.DotNet.SDK.10"],"scoop":"main/dotnet-sdk","choco":"dotnet-sdk","noAdmin":false,"wv":{"Microsoft.DotNet.SDK.10":"10.0.401"},"cv":"10.0.401"},{"id":"bun","name":"Bun","category":"languages","description":"Fast all-in-one JavaScript runtime, bundler, test runner and package manager.","winget":["Oven-sh.Bun"],"scoop":"main/bun","choco":"bun","noAdmin":false,"wv":{"Oven-sh.Bun":"1.4.2"},"cv":"1.4.2"},{"id":"pnpm","name":"pnpm","category":"languages","description":"Fast, disk-space-efficient package manager for Node.js.","winget":["pnpm.pnpm"],"scoop":"main/pnpm","choco":"pnpm","noAdmin":false,"wv":{"pnpm.pnpm":"12.4.1"},"cv":"12.4.1"},{"id":"deno","name":"Deno","category":"languages","description":"Secure JavaScript and TypeScript runtime with built-in tooling.","winget":["DenoLand.Deno"],"scoop":"main/deno","choco":"deno","noAdmin":false,"wv":{"DenoLand.Deno":"2.9.6"},"cv":"2.9.6"},{"id":"cmake","name":"CMake","category":"languages","description":"Cross-platform build system generator for C and C++ projects.","winget":["Kitware.CMake"],"scoop":"main/cmake","choco":"cmake","noAdmin":false,"wv":{"Kitware.CMake":"4.4.3"},"cv":"4.4.3"},{"id":"llvm","name":"LLVM / Clang","category":"languages","description":"LLVM compiler infrastructure with Clang, LLD and clang-format.","winget":["LLVM.LLVM"],"scoop":"main/llvm","choco":"llvm","noAdmin":false,"wv":{"LLVM.LLVM":"22.1.8"},"cv":"22.1.8"},{"id":"php","name":"PHP","category":"languages","description":"PHP scripting language for web development.","winget":["PHP.PHP.8.5"],"scoop":"main/php","choco":"php","noAdmin":false,"wv":{"PHP.PHP.8.5":"8.5.10"},"cv":"8.5.10"},{"id":"ruby","name":"Ruby","category":"languages","description":"Ruby programming language with MSYS2 DevKit for native gems.","winget":["RubyInstallerTeam.RubyWithDevKit.4.0"],"scoop":"main/ruby","choco":"ruby","noAdmin":false,"wv":{"RubyInstallerTeam.RubyWithDevKit.4.0":"4.0.6-1"},"cv":"3.4.10.1"},{"id":"yarn","name":"Yarn","category":"languages","description":"Reliable JavaScript package manager with workspaces.","winget":["Yarn.Yarn"],"scoop":"main/yarn","choco":"yarn","noAdmin":false,"wv":{"Yarn.Yarn":"1.22.22"},"cv":"1.22.22"},{"id":"mingw","name":"MinGW-w64 GCC (WinLibs)","category":"languages","description":"GCC compiler toolchain for Windows (MinGW-w64) to build C and C++ programs.","winget":["BrechtSanders.WinLibs.POSIX.UCRT"],"scoop":"main/mingw","choco":"mingw","noAdmin":false,"wv":{"BrechtSanders.WinLibs.POSIX.UCRT":"16.1.0-14.0.0-r4"},"cv":"16.1.0"},{"id":"android-platform-tools","name":"Android Platform Tools (adb)","category":"languages","description":"ADB and fastboot to communicate with Android devices.","winget":["Google.PlatformTools"],"scoop":"main/adb","choco":"adb","noAdmin":false,"wv":{"Google.PlatformTools":"37.0.1"},"cv":"37.0.0"},{"id":"strawberry-perl","name":"Strawberry Perl","category":"languages","description":"Perl environment for Windows including a compiler and common modules.","winget":["StrawberryPerl.StrawberryPerl"],"scoop":"main/perl","choco":"strawberryperl","noAdmin":false,"wv":{"StrawberryPerl.StrawberryPerl":"5.42.2.1"},"cv":"5.42.3.1"},{"id":"vlc","name":"VLC media player","category":"media","description":"Plays almost every audio and video format out of the box, no extra codecs needed.","winget":["VideoLAN.VLC"],"scoop":"extras/vlc","choco":"vlc","noAdmin":false,"wv":{"VideoLAN.VLC":"3.0.23"},"cv":"3.0.23"},{"id":"mpv","name":"mpv","category":"media","description":"Minimalist, scriptable media player with excellent video quality and hardware decoding.","winget":["shinchiro.mpv"],"scoop":"extras/mpv","choco":null,"noAdmin":false,"wv":{"shinchiro.mpv":"0.41.0"},"cv":null},{"id":"spotify","name":"Spotify","category":"media","description":"Music and podcast streaming with millions of songs and personalized playlists.","winget":["Spotify.Spotify"],"scoop":"extras/spotify","choco":"spotify","noAdmin":true,"wv":{"Spotify.Spotify":"1.3.0.277.g5441bb3e"},"cv":"1.2.99.317"},{"id":"kodi","name":"Kodi","category":"media","description":"Open-source home theater center for local media and streaming add-ons.","winget":["XBMCFoundation.Kodi"],"scoop":"extras/kodi","choco":"kodi","noAdmin":false,"wv":{"XBMCFoundation.Kodi":"21.3.0.0"},"cv":"21.3.0"},{"id":"jellyfin","name":"Jellyfin Media Player","category":"media","description":"Desktop client for Jellyfin, the free and open-source self-hosted media server.","winget":["Jellyfin.JellyfinMediaPlayer"],"scoop":"extras/jellyfin-media-player","choco":"jellyfin-media-player","noAdmin":false,"wv":{"Jellyfin.JellyfinMediaPlayer":"1.12.0"},"cv":"1.12.0"},{"id":"plex","name":"Plex","category":"media","description":"Stream movies, shows and music from your Plex Media Server or Plex's free catalog.","winget":["Plex.Plex"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Plex.Plex":"1.115.0"},"cv":null},{"id":"musicbee","name":"MusicBee","category":"media","description":"Music manager and player with auto-tagging, skins and device sync.","winget":["msstore:9P4CLT2RJ1RS"],"scoop":"extras/musicbee","choco":"musicbee","noAdmin":false,"wv":{},"cv":"3.6.9668"},{"id":"foobar2000","name":"foobar2000","category":"media","description":"Lightweight, highly customizable audio player for audiophiles.","winget":["PeterPawlowski.foobar2000"],"scoop":"extras/foobar2000","choco":"foobar2000","noAdmin":false,"wv":{"PeterPawlowski.foobar2000":"2.25.10"},"cv":"2.25.10"},{"id":"yt-dlp","name":"yt-dlp","category":"media","description":"Command-line tool to download video and audio from YouTube and thousands of sites.","winget":["yt-dlp.yt-dlp"],"scoop":"main/yt-dlp","choco":"yt-dlp","noAdmin":false,"wv":{"yt-dlp.yt-dlp":"2026.08.19"},"cv":"2026.8.19"},{"id":"mpc-hc","name":"MPC-HC","category":"media","description":"Lightweight classic media player for Windows, actively maintained by clsid2.","winget":["clsid2.mpc-hc"],"scoop":"extras/mpc-hc-fork","choco":"mpc-hc-clsid2","noAdmin":false,"wv":{"clsid2.mpc-hc":"2.8.1"},"cv":"2.8.1"},{"id":"klite","name":"K-Lite Codec Pack","category":"media","description":"Codec bundle that adds playback support for virtually all audio and video formats.","winget":["CodecGuide.K-LiteCodecPack.Standard"],"scoop":null,"choco":"k-litecodecpack-standard","noAdmin":false,"wv":{"CodecGuide.K-LiteCodecPack.Standard":"19.9.5"},"cv":"19.9.5"},{"id":"stremio","name":"Stremio","category":"media","description":"Media center that aggregates movies and series from add-ons in one interface.","winget":["Stremio.Stremio"],"scoop":"extras/stremio","choco":"stremio","noAdmin":false,"wv":{"Stremio.Stremio":"4.4.181"},"cv":"4.4.168"},{"id":"freetube","name":"FreeTube","category":"media","description":"Private YouTube client without ads or tracking, subscriptions stored locally.","winget":["FreeTube.FreeTube"],"scoop":"extras/freetube","choco":null,"noAdmin":false,"wv":{"FreeTube.FreeTube":"0.25.3"},"cv":null},{"id":"plexamp","name":"Plexamp","category":"media","description":"Beautiful music player for Plex libraries with sonic analysis and offline playback.","winget":["Plex.Plexamp"],"scoop":null,"choco":"plexamp","noAdmin":false,"wv":{"Plex.Plexamp":"4.50.6"},"cv":"4.12.3"},{"id":"aimp","name":"AIMP","category":"media","description":"Free audio player with great sound quality, equalizer and skins.","winget":["AIMP.AIMP"],"scoop":"extras/aimp","choco":"aimp","noAdmin":false,"wv":{"AIMP.AIMP":"5.10.2418"},"cv":"5.40.2716"},{"id":"tidal","name":"TIDAL","category":"media","description":"Hi-fi music streaming with lossless and high-resolution audio.","winget":["TIDALMusicAS.TIDAL"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"TIDALMusicAS.TIDAL":"2.43.2"},"cv":null},{"id":"mediainfo","name":"MediaInfo","category":"media","description":"Shows detailed technical information about video and audio files.","winget":["MediaArea.MediaInfo.GUI"],"scoop":"extras/mediainfo-gui","choco":"mediainfo","noAdmin":false,"wv":{"MediaArea.MediaInfo.GUI":"26.05"},"cv":"26.5.0"},{"id":"potplayer","name":"PotPlayer","category":"media","description":"Feature-packed media player with extensive codec support and 3D video playback.","winget":["Daum.PotPlayer"],"scoop":"extras/potplayer","choco":"potplayer","noAdmin":false,"wv":{"Daum.PotPlayer":"26.08.19.0"},"cv":"26.8.19"},{"id":"itunes","name":"iTunes","category":"media","description":"Apple's media player for your music library, iPhone backups and Apple Music.","winget":["Apple.iTunes"],"scoop":null,"choco":"itunes","noAdmin":false,"wv":{"Apple.iTunes":"12.13.11.1"},"cv":"12.13.11.1"},{"id":"obsidian","name":"Obsidian","category":"notes","description":"Local-first Markdown notes with backlinks, graph view and a big plugin ecosystem.","winget":["Obsidian.Obsidian"],"scoop":"extras/obsidian","choco":"obsidian","noAdmin":false,"wv":{"Obsidian.Obsidian":"1.13.7"},"cv":"1.13.7"},{"id":"notepadplusplus","name":"Notepad++","category":"notes","description":"Fast, free source code and text editor with syntax highlighting and plugins.","winget":["Notepad++.Notepad++"],"scoop":"extras/notepadplusplus","choco":"notepadplusplus","noAdmin":false,"wv":{"Notepad++.Notepad++":"8.9.8"},"cv":"8.9.8"},{"id":"notion","name":"Notion","category":"notes","description":"All-in-one workspace for notes, docs, wikis, databases and projects.","winget":["Notion.Notion"],"scoop":"extras/notion","choco":"notion","noAdmin":false,"wv":{"Notion.Notion":"7.33.0"},"cv":"7.33.0"},{"id":"joplin","name":"Joplin","category":"notes","description":"Open-source note-taking app with Markdown, end-to-end encryption and sync.","winget":["Joplin.Joplin"],"scoop":"extras/joplin","choco":"joplin","noAdmin":false,"wv":{"Joplin.Joplin":"3.7.18"},"cv":"3.7.18"},{"id":"logseq","name":"Logseq","category":"notes","description":"Privacy-first outliner and knowledge base with daily journals.","winget":["Logseq.Logseq"],"scoop":"extras/logseq","choco":"logseq","noAdmin":false,"wv":{"Logseq.Logseq":"2.0.1"},"cv":"0.10.15"},{"id":"anki","name":"Anki","category":"notes","description":"Smart flashcards with spaced repetition for learning anything.","winget":["Anki.Anki"],"scoop":"extras/anki","choco":"anki","noAdmin":false,"wv":{"Anki.Anki":"26.08.1"},"cv":"26.8.1"},{"id":"drawio","name":"draw.io","category":"notes","description":"Free diagram editor for flowcharts, network diagrams and UML \u2013 works offline.","winget":["JGraph.Draw"],"scoop":"extras/draw.io","choco":"drawio","noAdmin":false,"wv":{"JGraph.Draw":"31.4.5"},"cv":"31.4.5"},{"id":"typora","name":"Typora","category":"notes","description":"Minimal Markdown editor with live preview instead of a split view.","winget":["appmakes.Typora"],"scoop":"extras/typora","choco":"typora","noAdmin":false,"wv":{"appmakes.Typora":"1.14.10"},"cv":"1.14.10"},{"id":"todoist","name":"Todoist","category":"notes","description":"Popular to-do list and task manager that syncs across all devices.","winget":["Doist.Todoist"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Doist.Todoist":"9.30.0"},"cv":null},{"id":"ticktick","name":"TickTick","category":"notes","description":"To-do list with calendar, habit tracker and Pomodoro timer.","winget":["Appest.TickTick"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Appest.TickTick":"8.2.0.1"},"cv":null},{"id":"anytype","name":"Anytype","category":"notes","description":"Local-first, encrypted workspace for notes, tasks and databases.","winget":["AnyAssociation.Anytype"],"scoop":"extras/anytype","choco":"anytype","noAdmin":false,"wv":{"AnyAssociation.Anytype":"0.56.5"},"cv":"0.53.1"},{"id":"xournalpp","name":"Xournal++","category":"notes","description":"Handwritten notes and PDF annotation, ideal for pen tablets.","winget":["Xournal++.Xournal++"],"scoop":"extras/xournalpp","choco":"xournalplusplus","noAdmin":false,"wv":{"Xournal++.Xournal++":"1.3.7"},"cv":"1.3.0"},{"id":"evernote","name":"Evernote","category":"notes","description":"Classic note-taking app with web clipper, scanning and search.","winget":["Evernote.Evernote"],"scoop":null,"choco":"evernote","noAdmin":false,"wv":{"Evernote.Evernote":"11.33.5"},"cv":"11.33.5"},{"id":"libreoffice","name":"LibreOffice","category":"office","description":"Free, full-featured office suite with Writer, Calc, Impress and more.","winget":["TheDocumentFoundation.LibreOffice"],"scoop":"extras/libreoffice","choco":"libreoffice-fresh","noAdmin":false,"wv":{"TheDocumentFoundation.LibreOffice":"26.8.0.3"},"cv":"26.2.3"},{"id":"ms-office","name":"Microsoft 365 Apps","category":"office","description":"Word, Excel, PowerPoint, Outlook and more (Microsoft 365 subscription required).","winget":["Microsoft.Office"],"scoop":null,"choco":"office365business","noAdmin":false,"wv":{"Microsoft.Office":"16.0.20228.20124"},"cv":"20228.20124.0"},{"id":"onlyoffice","name":"ONLYOFFICE Desktop Editors","category":"office","description":"Free office suite with excellent Microsoft Office file compatibility.","winget":["ONLYOFFICE.DesktopEditors"],"scoop":"extras/onlyoffice-desktopeditors","choco":"onlyoffice","noAdmin":false,"wv":{"ONLYOFFICE.DesktopEditors":"9.4.0"},"cv":"9.4.0"},{"id":"sumatrapdf","name":"SumatraPDF","category":"office","description":"Tiny, fast reader for PDF, ePub, MOBI, XPS and comic books.","winget":["SumatraPDF.SumatraPDF"],"scoop":"extras/sumatrapdf","choco":"sumatrapdf","noAdmin":false,"wv":{"SumatraPDF.SumatraPDF":"3.6.1"},"cv":"3.6.1"},{"id":"pdf24","name":"PDF24 Creator","category":"office","description":"Free PDF toolbox to create, merge, split, compress and convert PDFs offline.","winget":["geeksoftwareGmbH.PDF24Creator"],"scoop":null,"choco":"pdf24","noAdmin":false,"wv":{"geeksoftwareGmbH.PDF24Creator":"11.30.1"},"cv":"11.30.1"},{"id":"adobe-reader","name":"Adobe Acrobat Reader","category":"office","description":"Adobe's free PDF viewer for reading, signing and commenting PDFs.","winget":["Adobe.Acrobat.Reader.64-bit"],"scoop":null,"choco":"adobereader","noAdmin":false,"wv":{"Adobe.Acrobat.Reader.64-bit":"26.002.21901"},"cv":"2026.2.21901"},{"id":"calibre","name":"calibre","category":"office","description":"E-book manager to organize, convert and send books to your e-reader.","winget":["calibre.calibre"],"scoop":"extras/calibre","choco":"calibre","noAdmin":false,"wv":{"calibre.calibre":"9.14.0"},"cv":"9.14.0"},{"id":"zotero","name":"Zotero","category":"office","description":"Free reference manager to collect, organize and cite research sources.","winget":["DigitalScholar.Zotero"],"scoop":"extras/zotero","choco":"zotero","noAdmin":false,"wv":{"DigitalScholar.Zotero":"10.0.2"},"cv":"9.0.6"},{"id":"naps2","name":"NAPS2","category":"office","description":"Scan documents to PDF with OCR, supporting WIA, TWAIN and network scanners.","winget":["Cyanfish.NAPS2"],"scoop":"extras/naps2","choco":"naps2","noAdmin":false,"wv":{"Cyanfish.NAPS2":"8.3.2"},"cv":"8.1.4"},{"id":"foxit-reader","name":"Foxit PDF Reader","category":"office","description":"Fast, lightweight PDF reader with annotation and form filling.","winget":["Foxit.FoxitReader"],"scoop":"extras/foxit-reader","choco":"foxitreader","noAdmin":false,"wv":{"Foxit.FoxitReader":"2026.2.0.39747"},"cv":"2026.2.0.39747"},{"id":"wps-office","name":"WPS Office","category":"office","description":"Free office suite compatible with Word, Excel and PowerPoint files.","winget":["Kingsoft.WPSOffice"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Kingsoft.WPSOffice":"12.2.0.23196"},"cv":null},{"id":"rustdesk","name":"RustDesk","category":"remote","description":"Open-source remote desktop software, self-hostable alternative to TeamViewer.","winget":[],"scoop":"extras/rustdesk","choco":"rustdesk","noAdmin":false,"wv":{},"cv":"1.4.9"},{"id":"anydesk","name":"AnyDesk","category":"remote","description":"Fast remote desktop software for support and remote work.","winget":["AnyDesk.AnyDesk"],"scoop":"extras/anydesk","choco":"anydesk","noAdmin":false,"wv":{"AnyDesk.AnyDesk":"9.7.15"},"cv":"9.7.15"},{"id":"windows-app","name":"Windows App (Remote Desktop)","category":"remote","description":"Microsoft's client for Remote Desktop, Azure Virtual Desktop, Windows 365 and Dev Box.","winget":["Microsoft.WindowsApp"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Microsoft.WindowsApp":"2.0.1314.0"},"cv":null},{"id":"teamviewer","name":"TeamViewer","category":"remote","description":"Widely used remote access and support software.","winget":["TeamViewer.TeamViewer"],"scoop":"extras/teamviewer","choco":"teamviewer","noAdmin":false,"wv":{"TeamViewer.TeamViewer":"15.81.6"},"cv":"15.81.6"},{"id":"mobaxterm","name":"MobaXterm","category":"remote","description":"All-in-one terminal with SSH, X11 server, SFTP browser and many network tools.","winget":["Mobatek.MobaXterm"],"scoop":"extras/mobaxterm","choco":"mobaxterm","noAdmin":false,"wv":{"Mobatek.MobaXterm":"26.5.0.5542"},"cv":"26.5.0"},{"id":"termius","name":"Termius","category":"remote","description":"Modern SSH and SFTP client with synced hosts, snippets and port forwarding.","winget":["Termius.Termius"],"scoop":"extras/termius","choco":"termius","noAdmin":false,"wv":{"Termius.Termius":"10.0.6"},"cv":"10.0.6"},{"id":"putty","name":"PuTTY","category":"remote","description":"Classic SSH and Telnet client for Windows.","winget":["PuTTY.PuTTY"],"scoop":"extras/putty","choco":"putty","noAdmin":false,"wv":{"PuTTY.PuTTY":"0.85.0.0"},"cv":"0.85.0"},{"id":"mremoteng","name":"mRemoteNG","category":"remote","description":"Tabbed multi-protocol remote connection manager for RDP, VNC, SSH and more.","winget":["mRemoteNG.mRemoteNG"],"scoop":"extras/mremoteng","choco":null,"noAdmin":false,"wv":{"mRemoteNG.mRemoteNG":"1.76.20.24615"},"cv":null},{"id":"realvnc-viewer","name":"RealVNC Viewer","category":"remote","description":"VNC client to connect to and control remote computers.","winget":["RealVNC.VNCViewer"],"scoop":"extras/vncviewer","choco":"vnc-viewer","noAdmin":false,"wv":{"RealVNC.VNCViewer":"7.15.1.18"},"cv":"8.5.0"},{"id":"chrome-remote-desktop","name":"Chrome Remote Desktop Host","category":"remote","description":"Host component to access this PC remotely via Chrome Remote Desktop.","winget":["Google.ChromeRemoteDesktopHost"],"scoop":null,"choco":"chrome-remote-desktop-host","noAdmin":false,"wv":{"Google.ChromeRemoteDesktopHost":"152.0.7977.9"},"cv":"152.0.7977.9"},{"id":"cyberduck","name":"Cyberduck","category":"remote","description":"Friendly file browser for SFTP, FTP, WebDAV, S3, Backblaze B2 and more.","winget":["Iterate.Cyberduck"],"scoop":"extras/cyberduck","choco":"cyberduck","noAdmin":false,"wv":{"Iterate.Cyberduck":"9.5.4.45528"},"cv":"9.5.4.45528"},{"id":"bitvise-ssh","name":"Bitvise SSH Client","category":"remote","description":"SSH client with SFTP, terminal, tunneling and graphical port forwarding.","winget":["Bitvise.SSH.Client"],"scoop":null,"choco":"bitvise-ssh-client","noAdmin":false,"wv":{"Bitvise.SSH.Client":"9.66"},"cv":"9.66.0"},{"id":"remote-desktop-manager","name":"Remote Desktop Manager","category":"remote","description":"Centralizes RDP, SSH, VNC and web connections plus credentials in one place.","winget":["Devolutions.RemoteDesktopManager"],"scoop":null,"choco":"rdm","noAdmin":false,"wv":{"Devolutions.RemoteDesktopManager":"2026.2.18.0"},"cv":"2026.2.19"},{"id":"winbox","name":"MikroTik WinBox","category":"remote","description":"Official configuration tool for MikroTik routers and switches.","winget":["Mikrotik.Winbox"],"scoop":"extras/winbox","choco":"winbox","noAdmin":false,"wv":{"Mikrotik.Winbox":"4.4"},"cv":"4.3.20260720"},{"id":"vcredist","name":"Visual C++ Redistributables (2005\u20132022)","category":"runtimes","description":"All Microsoft Visual C++ runtimes (2005\u20132022, x86 and x64) that many games and programs need.","winget":["Microsoft.VCRedist.2005.x86","Microsoft.VCRedist.2005.x64","Microsoft.VCRedist.2008.x86","Microsoft.VCRedist.2008.x64","Microsoft.VCRedist.2010.x86","Microsoft.VCRedist.2010.x64","Microsoft.VCRedist.2012.x86","Microsoft.VCRedist.2012.x64","Microsoft.VCRedist.2013.x86","Microsoft.VCRedist.2013.x64","Microsoft.VCRedist.2015+.x86","Microsoft.VCRedist.2015+.x64"],"scoop":"extras/vcredist-aio","choco":"vcredist-all","noAdmin":false,"wv":{"Microsoft.VCRedist.2005.x86":"8.0.61001","Microsoft.VCRedist.2005.x64":"8.0.61000","Microsoft.VCRedist.2008.x86":"9.0.30729.6161","Microsoft.VCRedist.2008.x64":"9.0.30729.6161","Microsoft.VCRedist.2010.x86":"10.0.40219","Microsoft.VCRedist.2010.x64":"10.0.40219","Microsoft.VCRedist.2012.x86":"11.0.61030.0","Microsoft.VCRedist.2012.x64":"11.0.61030.0","Microsoft.VCRedist.2013.x86":"12.0.40664.0","Microsoft.VCRedist.2013.x64":"12.0.40664.0","Microsoft.VCRedist.2015+.x86":"14.51.36247.0","Microsoft.VCRedist.2015+.x64":"14.51.36247.0"},"cv":"1.0.1"},{"id":"dotnet-desktop","name":".NET Desktop Runtime (8 & 10)","category":"runtimes","description":".NET 8 and .NET 10 Windows Desktop Runtimes required by many modern Windows apps.","winget":["Microsoft.DotNet.DesktopRuntime.8","Microsoft.DotNet.DesktopRuntime.10"],"scoop":"extras/windowsdesktop-runtime-lts","choco":"dotnet-desktopruntime","noAdmin":false,"wv":{"Microsoft.DotNet.DesktopRuntime.8":"8.0.31","Microsoft.DotNet.DesktopRuntime.10":"10.0.12"},"cv":"10.0.12"},{"id":"dotnet-framework","name":".NET Framework 4.8.1","category":"runtimes","description":".NET Framework 4.8.1 developer pack for older .NET applications.","winget":["Microsoft.DotNet.Framework.DeveloperPack_4"],"scoop":null,"choco":"netfx-4.8.1","noAdmin":false,"wv":{"Microsoft.DotNet.Framework.DeveloperPack_4":"4.8.1"},"cv":"4.8.1.20250219"},{"id":"directx","name":"DirectX End-User Runtime","category":"runtimes","description":"Legacy DirectX 9\u201311 components (D3DX, XAudio, XInput) needed by many older games.","winget":["Microsoft.DirectX"],"scoop":null,"choco":"directx","noAdmin":false,"wv":{"Microsoft.DirectX":"9.29.1974.0"},"cv":"9.29.1974.20210222"},{"id":"webview2","name":"Microsoft Edge WebView2 Runtime","category":"runtimes","description":"Runtime used by many apps to display web content (preinstalled on Windows 11).","winget":["Microsoft.EdgeWebView2Runtime"],"scoop":null,"choco":"webview2-runtime","noAdmin":false,"wv":{"Microsoft.EdgeWebView2Runtime":"152.0.4191.66"},"cv":"153.0.4234.32"},{"id":"java-runtime","name":"Java Runtime (Temurin 25 JRE)","category":"runtimes","description":"Java runtime (Eclipse Temurin 25 LTS) to run Java programs like Minecraft mods or tools.","winget":["EclipseAdoptium.Temurin.25.JRE"],"scoop":"java/temurin25-jre","choco":"temurin25jre","noAdmin":false,"wv":{"EclipseAdoptium.Temurin.25.JRE":"25.0.4.101"},"cv":"25.0.4.1"},{"id":"vulkan-rt","name":"Vulkan Runtime","category":"runtimes","description":"Vulkan graphics runtime and loader for games and emulators.","winget":["KhronosGroup.VulkanRT"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"KhronosGroup.VulkanRT":"1.4.357.0"},"cv":null},{"id":"openal","name":"OpenAL","category":"runtimes","description":"OpenAL audio runtime required by some older games.","winget":["CreativeTechnology.OpenAL"],"scoop":null,"choco":"openal","noAdmin":false,"wv":{"CreativeTechnology.OpenAL":"1.1"},"cv":"2.07.0.20170623"},{"id":"xna","name":"XNA Framework Redistributable","category":"runtimes","description":"XNA Framework 4.0 runtime needed by some indie games like Terraria and Stardew Valley (older versions).","winget":["Microsoft.XNARedist"],"scoop":null,"choco":"xna","noAdmin":false,"wv":{"Microsoft.XNARedist":"4.0.30901.0"},"cv":"4.0.20823.2021073101"},{"id":"bitwarden","name":"Bitwarden","category":"security","description":"Open-source password manager with free sync across all devices.","winget":["Bitwarden.Bitwarden"],"scoop":"extras/bitwarden","choco":"bitwarden","noAdmin":false,"wv":{"Bitwarden.Bitwarden":"2026.8.0"},"cv":"2026.8.0"},{"id":"keepassxc","name":"KeePassXC","category":"security","description":"Offline, open-source password manager that stores your vault in a local file.","winget":["KeePassXCTeam.KeePassXC"],"scoop":"extras/keepassxc","choco":"keepassxc","noAdmin":false,"wv":{"KeePassXCTeam.KeePassXC":"2.7.12"},"cv":"2.7.12"},{"id":"veracrypt","name":"VeraCrypt","category":"security","description":"Free open-source disk encryption for drives, partitions and containers.","winget":["IDRIX.VeraCrypt"],"scoop":null,"choco":"veracrypt","noAdmin":false,"wv":{"IDRIX.VeraCrypt":"1.26.29"},"cv":"1.26.29"},{"id":"proton-pass","name":"Proton Pass","category":"security","description":"End-to-end encrypted password manager with email aliases from Proton.","winget":["Proton.ProtonPass"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Proton.ProtonPass":"1.40.2"},"cv":null},{"id":"1password","name":"1Password","category":"security","description":"Popular password manager with passkeys, secure sharing and Watchtower alerts.","winget":["AgileBits.1Password"],"scoop":null,"choco":"1password","noAdmin":false,"wv":{"AgileBits.1Password":"8.12.36.40"},"cv":"8.12.36"},{"id":"cryptomator","name":"Cryptomator","category":"security","description":"Encrypts your cloud storage files client-side before upload.","winget":["Cryptomator.Cryptomator"],"scoop":"extras/cryptomator","choco":"cryptomator","noAdmin":false,"wv":{"Cryptomator.Cryptomator":"1.19.3"},"cv":"1.19.2"},{"id":"ente-auth","name":"Ente Auth","category":"security","description":"Open-source two-factor authenticator with end-to-end encrypted backups.","winget":["ente-io.auth-desktop"],"scoop":"extras/ente-auth","choco":null,"noAdmin":false,"wv":{"ente-io.auth-desktop":"4.4.25"},"cv":null},{"id":"gpg4win","name":"Gpg4win","category":"security","description":"GnuPG for Windows: encrypt and sign files and emails, with the Kleopatra GUI.","winget":["GnuPG.Gpg4win"],"scoop":"extras/gpg4win","choco":"gpg4win","noAdmin":false,"wv":{"GnuPG.Gpg4win":"5.1.0"},"cv":"5.1.0"},{"id":"keepass","name":"KeePass","category":"security","description":"The classic free, open-source offline password manager.","winget":["DominikReichl.KeePass"],"scoop":"extras/keepass","choco":"keepass","noAdmin":false,"wv":{"DominikReichl.KeePass":"2.61.1"},"cv":"2.61.1"},{"id":"malwarebytes","name":"Malwarebytes","category":"security","description":"Anti-malware scanner that detects threats traditional antivirus may miss.","winget":["Malwarebytes.Malwarebytes"],"scoop":null,"choco":"malwarebytes","noAdmin":false,"wv":{"Malwarebytes.Malwarebytes":"5.7.0.328"},"cv":"5.6.4.163"},{"id":"simplewall","name":"simplewall","category":"security","description":"Lightweight tool to control which apps may access the network (Windows Filtering Platform).","winget":["Henry++.simplewall"],"scoop":"extras/simplewall","choco":"simplewall","noAdmin":false,"wv":{"Henry++.simplewall":"3.8.7"},"cv":"3.8.7"},{"id":"portmaster","name":"Portmaster","category":"security","description":"Open-source application firewall that blocks trackers and shows all connections.","winget":["Safing.Portmaster"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Safing.Portmaster":"2.2.3"},"cv":null},{"id":"sandboxie","name":"Sandboxie Plus","category":"security","description":"Run programs in an isolated sandbox to protect your system.","winget":["Sandboxie.Plus"],"scoop":"nonportable/sandboxie-plus-np","choco":"sandboxie-plus","noAdmin":false,"wv":{"Sandboxie.Plus":"1.18.4"},"cv":"1.18.4"},{"id":"jellyfin-server","name":"Jellyfin Server","category":"selfhost","description":"Free, open-source media server for movies, shows and music without accounts or tracking.","winget":["Jellyfin.Server"],"scoop":"extras/jellyfin","choco":"jellyfin","noAdmin":false,"wv":{"Jellyfin.Server":"10.11.11"},"cv":"12.0.0"},{"id":"plex-server","name":"Plex Media Server","category":"selfhost","description":"Turn your PC into a media server and stream your library to every device.","winget":["Plex.PlexMediaServer"],"scoop":"main/plex-server","choco":"plexmediaserver","noAdmin":false,"wv":{"Plex.PlexMediaServer":"1.43.4.10903"},"cv":"1.43.4.10903"},{"id":"cloudflared","name":"cloudflared","category":"selfhost","description":"Cloudflare Tunnel client to expose local services securely without port forwarding.","winget":["Cloudflare.cloudflared"],"scoop":"main/cloudflared","choco":"cloudflared","noAdmin":false,"wv":{"Cloudflare.cloudflared":"2026.9.1"},"cv":"2026.9.1"},{"id":"restic","name":"restic","category":"selfhost","description":"Fast, secure command-line backup tool with deduplication.","winget":["restic.restic"],"scoop":"main/restic","choco":"restic","noAdmin":false,"wv":{"restic.restic":"0.19.1"},"cv":"0.19.1"},{"id":"kopia","name":"KopiaUI","category":"selfhost","description":"Fast, encrypted and deduplicated backups with a simple desktop UI.","winget":["Kopia.KopiaUI"],"scoop":"extras/kopiaui","choco":null,"noAdmin":false,"wv":{"Kopia.KopiaUI":"0.23.1"},"cv":null},{"id":"veeam-agent","name":"Veeam Agent for Windows (Free)","category":"selfhost","description":"Free image-based backup of your whole PC with bare-metal recovery.","winget":["Veeam.VeeamAgent"],"scoop":null,"choco":"veeam-agent","noAdmin":false,"wv":{"Veeam.VeeamAgent":"13.1.1.700"},"cv":"13.1.1.700"},{"id":"duplicati","name":"Duplicati","category":"selfhost","description":"Encrypted, incremental backups to cloud storage, NAS or external drives.","winget":["Duplicati.Duplicati"],"scoop":"extras/duplicati","choco":"duplicati","noAdmin":false,"wv":{"Duplicati.Duplicati":"2.4.0.0"},"cv":"2.4.0"},{"id":"windows-terminal","name":"Windows Terminal","category":"terminal","description":"Microsoft's modern terminal with tabs, panes and profiles for PowerShell, CMD and WSL.","winget":["Microsoft.WindowsTerminal"],"scoop":"extras/windows-terminal","choco":"microsoft-windows-terminal","noAdmin":false,"wv":{"Microsoft.WindowsTerminal":"1.24.11911.0"},"cv":"1.24.11911"},{"id":"powershell","name":"PowerShell 7","category":"terminal","description":"The latest cross-platform PowerShell (7.x), side by side with Windows PowerShell 5.1.","winget":["Microsoft.PowerShell"],"scoop":"main/pwsh","choco":"powershell-core","noAdmin":false,"wv":{"Microsoft.PowerShell":"7.6.6.0"},"cv":"7.6.6"},{"id":"wsl","name":"Windows Subsystem for Linux","category":"terminal","description":"Run Linux distributions like Ubuntu directly on Windows.","winget":["Microsoft.WSL"],"scoop":null,"choco":"wsl2","noAdmin":false,"wv":{"Microsoft.WSL":"2.7.13"},"cv":"2.7.14"},{"id":"oh-my-posh","name":"Oh My Posh","category":"terminal","description":"Prompt theme engine for PowerShell, Bash, Zsh and more.","winget":["JanDeDobbeleer.OhMyPosh"],"scoop":"main/oh-my-posh","choco":"oh-my-posh","noAdmin":false,"wv":{"JanDeDobbeleer.OhMyPosh":"31.3.0"},"cv":"31.3.0"},{"id":"starship","name":"Starship","category":"terminal","description":"Minimal, fast and customizable cross-shell prompt.","winget":["Starship.Starship"],"scoop":"main/starship","choco":"starship","noAdmin":false,"wv":{"Starship.Starship":"1.26.0"},"cv":"1.26.0"},{"id":"nushell","name":"Nushell","category":"terminal","description":"Modern shell that works with structured data instead of plain text.","winget":["Nushell.Nushell"],"scoop":"main/nu","choco":"nushell","noAdmin":false,"wv":{"Nushell.Nushell":"0.115.1"},"cv":"0.115.1"},{"id":"wezterm","name":"WezTerm","category":"terminal","description":"GPU-accelerated terminal and multiplexer configured with Lua.","winget":["wez.wezterm"],"scoop":"extras/wezterm","choco":"wezterm","noAdmin":false,"wv":{"wez.wezterm":"20240203-110809-5046fc22"},"cv":"20240203.110809.0"},{"id":"alacritty","name":"Alacritty","category":"terminal","description":"Fast, GPU-accelerated terminal emulator.","winget":["Alacritty.Alacritty"],"scoop":"extras/alacritty","choco":"alacritty","noAdmin":false,"wv":{"Alacritty.Alacritty":"0.17.0"},"cv":"0.17.0"},{"id":"tabby","name":"Tabby","category":"terminal","description":"Modern, highly configurable terminal with SSH and serial connection manager.","winget":["Eugeny.Tabby"],"scoop":"extras/tabby","choco":"tabby","noAdmin":false,"wv":{"Eugeny.Tabby":"1.0.235"},"cv":"1.0.235"},{"id":"warp","name":"Warp","category":"terminal","description":"Modern terminal with AI assistance, blocks and collaborative workflows.","winget":["Warp.Warp"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Warp.Warp":"v0.2026.09.02.08.27.stable_01"},"cv":null},{"id":"powertoys","name":"PowerToys","category":"utilities","description":"Microsoft's power-user utilities: FancyZones, PowerToys Run, Color Picker and more.","winget":["Microsoft.PowerToys"],"scoop":"extras/powertoys","choco":"powertoys","noAdmin":false,"wv":{"Microsoft.PowerToys":"0.101.2362.0"},"cv":"0.101.2362"},{"id":"autohotkey","name":"AutoHotkey","category":"utilities","description":"Scripting language to automate Windows with hotkeys, text expansion and macros.","winget":["AutoHotkey.AutoHotkey"],"scoop":"extras/autohotkey","choco":"autohotkey","noAdmin":false,"wv":{"AutoHotkey.AutoHotkey":"2.0.28"},"cv":"2.0.28"},{"id":"sysinternals","name":"Sysinternals Suite","category":"utilities","description":"Microsoft's collection of advanced troubleshooting tools like Process Explorer and Procmon.","winget":["Microsoft.Sysinternals.Suite"],"scoop":"extras/sysinternals","choco":"sysinternals","noAdmin":false,"wv":{"Microsoft.Sysinternals.Suite":"2026-07-09"},"cv":"2026.9.10"},{"id":"flow-launcher","name":"Flow Launcher","category":"utilities","description":"Fast app and file launcher for Windows with plugins.","winget":["Flow-Launcher.Flow-Launcher"],"scoop":"extras/flow-launcher","choco":"flow-launcher","noAdmin":false,"wv":{"Flow-Launcher.Flow-Launcher":"2.1.3"},"cv":"2.1.3"},{"id":"ditto","name":"Ditto","category":"utilities","description":"Clipboard manager that remembers everything you copy.","winget":["Ditto.Ditto"],"scoop":"extras/ditto","choco":"ditto","noAdmin":false,"wv":{"Ditto.Ditto":"3.25.113.0"},"cv":"3.25.113"},{"id":"eartrumpet","name":"EarTrumpet","category":"utilities","description":"Better per-app volume control in the Windows taskbar.","winget":["File-New-Project.EarTrumpet"],"scoop":"extras/eartrumpet","choco":"eartrumpet","noAdmin":false,"wv":{"File-New-Project.EarTrumpet":"2.3.0.0"},"cv":"2.3.0"},{"id":"twinkle-tray","name":"Twinkle Tray","category":"utilities","description":"Adjust the brightness of external monitors from the system tray.","winget":["xanderfrangos.twinkletray"],"scoop":"extras/twinkle-tray","choco":"twinkle-tray","noAdmin":false,"wv":{"xanderfrangos.twinkletray":"1.17.2"},"cv":"1.17.2"},{"id":"system-informer","name":"System Informer","category":"utilities","description":"Detailed process monitor and task manager, the successor of Process Hacker.","winget":["WinsiderSS.SystemInformer"],"scoop":"extras/systeminformer","choco":"systeminformer","noAdmin":false,"wv":{"WinsiderSS.SystemInformer":"4.0.26241.138"},"cv":"3.2.25011"},{"id":"autoruns","name":"Autoruns","category":"utilities","description":"Shows and controls every program that starts automatically with Windows.","winget":["Microsoft.Sysinternals.Autoruns"],"scoop":null,"choco":"autoruns","noAdmin":false,"wv":{"Microsoft.Sysinternals.Autoruns":"14.3"},"cv":"14.11.0"},{"id":"revo-uninstaller","name":"Revo Uninstaller","category":"utilities","description":"Uninstaller that also removes leftover files and registry entries.","winget":["RevoUninstaller.RevoUninstaller"],"scoop":"extras/revouninstaller","choco":"revo-uninstaller","noAdmin":false,"wv":{"RevoUninstaller.RevoUninstaller":"2.1.7"},"cv":"2.4.5"},{"id":"bcuninstaller","name":"Bulk Crap Uninstaller","category":"utilities","description":"Free bulk uninstaller that removes many programs at once, including leftovers.","winget":["Klocman.BulkCrapUninstaller"],"scoop":"extras/bulk-crap-uninstaller","choco":"bulk-crap-uninstaller","noAdmin":false,"wv":{"Klocman.BulkCrapUninstaller":"6.2"},"cv":"6.3.0"},{"id":"rufus","name":"Rufus","category":"utilities","description":"Create bootable USB drives from Windows and Linux ISO images.","winget":["Rufus.Rufus"],"scoop":"extras/rufus","choco":"rufus","noAdmin":false,"wv":{"Rufus.Rufus":"4.15"},"cv":"4.15.0"},{"id":"ventoy","name":"Ventoy","category":"utilities","description":"Put many ISO files on one USB stick and boot any of them.","winget":["Ventoy.Ventoy"],"scoop":"extras/ventoy","choco":"ventoy","noAdmin":false,"wv":{"Ventoy.Ventoy":"1.1.17"},"cv":"1.1.17"},{"id":"etcher","name":"balenaEtcher","category":"utilities","description":"Writes OS images to SD cards and USB drives with verification.","winget":["Balena.Etcher"],"scoop":"extras/etcher","choco":"etcher","noAdmin":false,"wv":{"Balena.Etcher":"2.1.6"},"cv":"2.1.6"},{"id":"flux","name":"f.lux","category":"utilities","description":"Adapts your screen color to the time of day to reduce eye strain.","winget":["flux.flux"],"scoop":"main/flux","choco":"f.lux","noAdmin":false,"wv":{"flux.flux":"4.141"},"cv":"4.141.0"},{"id":"kde-connect","name":"KDE Connect","category":"utilities","description":"Connect your Android phone to your PC: notifications, clipboard, files and remote input.","winget":["KDE.KDEConnect"],"scoop":"extras/kdeconnect","choco":"kdeconnect-kde","noAdmin":false,"wv":{"KDE.KDEConnect":"26.08.1"},"cv":"25.8.3"},{"id":"fluent-search","name":"Fluent Search","category":"utilities","description":"Search apps, files, browser tabs and settings from one fast search bar.","winget":["BlastApps.FluentSearch"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"BlastApps.FluentSearch":"1.0.1.4"},"cv":null},{"id":"bleachbit","name":"BleachBit","category":"utilities","description":"Open-source cleaner that frees disk space and removes traces.","winget":["BleachBit.BleachBit"],"scoop":"extras/bleachbit","choco":"bleachbit","noAdmin":false,"wv":{"BleachBit.BleachBit":"6.0.4"},"cv":"6.0.4"},{"id":"virtualbox","name":"VirtualBox","category":"virtualization","description":"Free open-source virtualization to run other operating systems in VMs.","winget":["Oracle.VirtualBox"],"scoop":"nonportable/virtualbox-np","choco":"virtualbox","noAdmin":false,"wv":{"Oracle.VirtualBox":"7.2.16"},"cv":"7.2.16"},{"id":"qemu","name":"QEMU","category":"virtualization","description":"Open-source machine emulator and virtualizer.","winget":["SoftwareFreedomConservancy.QEMU"],"scoop":"main/qemu","choco":"qemu","noAdmin":false,"wv":{"SoftwareFreedomConservancy.QEMU":"11.1.0"},"cv":"2026.8.11"},{"id":"vagrant","name":"Vagrant","category":"virtualization","description":"Tool to build and manage reproducible virtual development environments.","winget":["Hashicorp.Vagrant"],"scoop":"main/vagrant","choco":"vagrant","noAdmin":false,"wv":{"Hashicorp.Vagrant":"2.4.9"},"cv":"2.4.9"},{"id":"proton-vpn","name":"Proton VPN","category":"vpn","description":"Swiss VPN with a strict no-logs policy and a free plan.","winget":["Proton.ProtonVPN"],"scoop":null,"choco":"protonvpn","noAdmin":false,"wv":{"Proton.ProtonVPN":"5.1.8"},"cv":"4.1.13"},{"id":"mullvad-vpn","name":"Mullvad VPN","category":"vpn","description":"Privacy-focused VPN that requires no email or personal data to sign up.","winget":["MullvadVPN.MullvadVPN"],"scoop":"nonportable/mullvadvpn-np","choco":"mullvad-app","noAdmin":false,"wv":{"MullvadVPN.MullvadVPN":"2026.4"},"cv":"2026.5.0"},{"id":"tailscale","name":"Tailscale","category":"vpn","description":"Zero-config mesh VPN based on WireGuard that connects all your devices.","winget":["Tailscale.Tailscale"],"scoop":"extras/tailscale","choco":"tailscale","noAdmin":false,"wv":{"Tailscale.Tailscale":"1.102.4"},"cv":"1.98.8"},{"id":"wireguard","name":"WireGuard","category":"vpn","description":"Official client for the fast, modern and simple WireGuard VPN protocol.","winget":["WireGuard.WireGuard"],"scoop":"nonportable/wireguard-np","choco":"wireguard","noAdmin":false,"wv":{"WireGuard.WireGuard":"1.1"},"cv":"1.1.0"},{"id":"openvpn","name":"OpenVPN Connect","category":"vpn","description":"Official OpenVPN client to connect to OpenVPN servers and Access Server.","winget":["OpenVPNTechnologies.OpenVPNConnect"],"scoop":null,"choco":"openvpn-connect","noAdmin":false,"wv":{"OpenVPNTechnologies.OpenVPNConnect":"3.9.0"},"cv":"3.9.0"},{"id":"cloudflare-warp","name":"Cloudflare WARP","category":"vpn","description":"Cloudflare's free 1.1.1.1 app for faster, more private DNS and WARP encryption.","winget":["Cloudflare.Warp"],"scoop":null,"choco":"warp","noAdmin":false,"wv":{"Cloudflare.Warp":"26.7.1376.0"},"cv":"2026.7.1376"},{"id":"zerotier","name":"ZeroTier One","category":"vpn","description":"Create virtual networks that connect devices anywhere as if on the same LAN.","winget":["ZeroTier.ZeroTierOne"],"scoop":null,"choco":"zerotier-one","noAdmin":false,"wv":{"ZeroTier.ZeroTierOne":"1.16.2"},"cv":"1.16.2"},{"id":"netbird","name":"NetBird","category":"vpn","description":"Open-source WireGuard mesh VPN with SSO and access controls, self-hostable.","winget":["Netbird.Netbird"],"scoop":"extras/netbird","choco":"netbird","noAdmin":false,"wv":{"Netbird.Netbird":"0.78.1"},"cv":"0.78.1"},{"id":"windscribe","name":"Windscribe","category":"vpn","description":"VPN with a generous free plan and built-in ad and tracker blocking.","winget":["Windscribe.Windscribe"],"scoop":null,"choco":"windscribe","noAdmin":false,"wv":{"Windscribe.Windscribe":"2.24.13"},"cv":"2.24.13"},{"id":"nordvpn","name":"NordVPN","category":"vpn","description":"Popular VPN service with fast servers, threat protection and meshnet.","winget":["NordSecurity.NordVPN"],"scoop":null,"choco":"nordvpn","noAdmin":false,"wv":{"NordSecurity.NordVPN":"8.11.1.0"},"cv":"8.11.1"},{"id":"surfshark","name":"Surfshark","category":"vpn","description":"VPN with unlimited devices, ad blocking and a no-logs policy.","winget":["Surfshark.Surfshark"],"scoop":null,"choco":null,"noAdmin":false,"wv":{"Surfshark.Surfshark":"6.18.0.999"},"cv":null},{"id":"wireshark","name":"Wireshark","category":"vpn","description":"The world's most popular network protocol analyzer.","winget":["WiresharkFoundation.Wireshark"],"scoop":"extras/wireshark","choco":"wireshark","noAdmin":false,"wv":{"WiresharkFoundation.Wireshark":"4.6.8"},"cv":"4.6.8"},{"id":"nmap","name":"Nmap","category":"vpn","description":"Network scanner for host discovery, port scanning and security audits.","winget":["Insecure.Nmap"],"scoop":"main/nmap","choco":"nmap","noAdmin":false,"wv":{"Insecure.Nmap":"7.80"},"cv":"7.991.0"},{"id":"angry-ip-scanner","name":"Angry IP Scanner","category":"vpn","description":"Fast open-source IP and port scanner for your network.","winget":["angryziber.AngryIPScanner"],"scoop":null,"choco":"angryip","noAdmin":false,"wv":{"angryziber.AngryIPScanner":"3.10.0"},"cv":"3.10.0"},{"id":"advanced-ip-scanner","name":"Advanced IP Scanner","category":"vpn","description":"Fast free network scanner that finds all devices on your local network.","winget":["Famatech.AdvancedIPScanner"],"scoop":"extras/advanced-ip-scanner","choco":"advanced-ip-scanner","noAdmin":false,"wv":{"Famatech.AdvancedIPScanner":"2.5.4594.1"},"cv":"2.5.4594.1"}],"bundles":[{"id":"essentials","name":"Essentials","apps":["firefox","7zip","vlc","sumatrapdf","vcredist","dotnet-desktop"],"extra":["notepadplusplus","powertoys","everything","sharex","bitwarden"]},{"id":"runtimes","name":"Runtimes","apps":["vcredist","dotnet-desktop","dotnet-framework","directx","webview2"],"extra":["java-runtime","xna","openal","vulkan-rt"]},{"id":"office","name":"Office & Study","apps":["libreoffice","sumatrapdf","thunderbird"],"extra":["obsidian","anki","zotero","pdf24","drawio","xournalpp","naps2"]},{"id":"homeoffice","name":"Home Office","apps":["ms-office","teams","zoom","onedrive"],"extra":["slack","adobe-reader","windows-app","greenshot","powertoys","1password"]},{"id":"privacy","name":"Privacy","apps":["librewolf","signal","bitwarden","veracrypt"],"extra":["mullvad-browser","proton-vpn","keepassxc","ente-auth","cryptomator","shutup10","simplewall","portmaster"]},{"id":"gaming","name":"Gaming PC","apps":["steam","discord","vcredist","directx","dotnet-desktop"],"extra":["epic-games","gog-galaxy","ea-app","ubisoft-connect","battle-net","xbox","xna","openal","msi-afterburner","hwinfo"]},{"id":"retro","name":"Retro Gaming","apps":["retroarch","ds4windows","vulkan-rt"],"extra":["mame","dolphin","pcsx2","duckstation","ppsspp","cemu","melonds","scummvm","playnite"]},{"id":"streamer","name":"Streamer","apps":["obs","discord","voicemeeter"],"extra":["streamerbot","stream-deck","wave-link","chatterino","ndi-tools","sharex","audacity","handbrake"]},{"id":"creator","name":"Creator","apps":["gimp","krita","inkscape","audacity"],"extra":["darktable","paint-net","upscayl","blender","kdenlive","shotcut","handbrake","ffmpeg"]},{"id":"media","name":"Media Center","apps":["vlc","spotify","kodi"],"extra":["plex","jellyfin","stremio","mpc-hc","klite","mediainfo","freetube"]},{"id":"developer","name":"Developer","apps":["vscode","git","windows-terminal","powershell"],"extra":["github-cli","wsl","nodejs","python","uv","docker-desktop","bruno","dbeaver","powertoys","7zip"]},{"id":"webdev","name":"Web Developer","apps":["vscode","git","nodejs","chrome"],"extra":["github-desktop","pnpm","bun","firefox","docker-desktop","bruno","figma"]},{"id":"ai","name":"AI Lab","apps":["ollama","lm-studio","python"],"extra":["jan","chatgpt","claude","claude-code","uv","vscode","git"]},{"id":"sysadmin","name":"Server Admin","apps":["windows-terminal","powershell","winscp","windows-app"],"extra":["termius","putty","mobaxterm","bitvise-ssh","remote-desktop-manager","wireguard","tailscale","nmap","wireshark","angry-ip-scanner","winbox"]},{"id":"homeserver","name":"Homeserver","apps":["jellyfin-server","syncthing","tailscale","docker-desktop"],"extra":["plex-server","nextcloud","qbittorrent","cloudflared","duplicati","kopia","rclone","winscp","putty","ventoy","rufus","advanced-ip-scanner"]},{"id":"pcrepair","name":"PC Repair","apps":["hwinfo","crystaldiskinfo","sysinternals","malwarebytes"],"extra":["crystaldiskmark","cpu-z","gpu-z","autoruns","bcuninstaller","ddu","wiztree","everything","rufus","ventoy","veeam-agent"]}]} '@ | ConvertFrom-Json $EngineText = @' # --------------------------------------------------------------------------- # WinMate engine 2.3.0 # Identical in every generated script. Verify it with: winmate.ps1 -Verify # Source: https://github.com/baba537/WinMate/blob/main/src/ps/engine.ps1 # --------------------------------------------------------------------------- $ErrorActionPreference = 'Continue' $ProgressPreference = 'SilentlyContinue' try { [Console]::OutputEncoding = [Text.Encoding]::UTF8 } catch {} try { [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor 3072 } catch {} if (-not $Mode) { $Mode = 'install' } if (-not $RunId) { $RunId = Get-Date -Format 'yyyyMMdd-HHmmss' } $Self = $MyInvocation.MyCommand.ScriptBlock $DataDir = Join-Path $env:LOCALAPPDATA 'WinMate' $LogDir = Join-Path $DataDir 'logs' New-Item -ItemType Directory -Force -Path $LogDir, (Join-Path $DataDir 'runs') -ErrorAction SilentlyContinue | Out-Null $LogFile = Join-Path $LogDir $(if ($Phase) { "$RunId-$Phase.log" } else { "$RunId.log" }) $ModeVerb = @{ install = 'Installing'; uninstall = 'Removing' }[$Mode] function Write-Step([string]$Text) { Write-Host ''; Write-Host "==> $Text" -ForegroundColor Cyan } function Write-Info([string]$Text) { Write-Host " $Text" -ForegroundColor DarkGray } function Test-IsAdmin { $id = [Security.Principal.WindowsIdentity]::GetCurrent() (New-Object Security.Principal.WindowsPrincipal $id).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) } function Test-PendingReboot { foreach ($key in @('HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending', 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired')) { if (Test-Path $key) { return $true } } return $false } function Update-SessionPath { $machine = [Environment]::GetEnvironmentVariable('Path', 'Machine') $user = [Environment]::GetEnvironmentVariable('Path', 'User') $env:Path = (@($machine, $user) | Where-Object { $_ }) -join ';' } function New-Result($App, [string]$Status, $Code, $Detail) { [pscustomobject]@{ Name = $App.Name; Id = $App.Id; Status = $Status; Code = $Code; Detail = $Detail } } # --- winget ----------------------------------------------------------------- function Get-WingetPath { $cmd = Get-Command winget.exe -ErrorAction SilentlyContinue if ($cmd) { return $cmd.Source } # App Installer is present on every Windows 10/11 but may not be registered yet on a fresh install. try { Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe -ErrorAction Stop; Start-Sleep -Seconds 3 } catch {} $cmd = Get-Command winget.exe -ErrorAction SilentlyContinue if ($cmd) { return $cmd.Source } # Elevated sessions of another account do not have the per-user alias; use the package directly. $exe = Get-ChildItem "$env:ProgramFiles\WindowsApps\Microsoft.DesktopAppInstaller_*_x64__8wekyb3d8bbwe\winget.exe" -ErrorAction SilentlyContinue | Sort-Object FullName -Descending | Select-Object -First 1 if ($exe) { return $exe.FullName } return $null } function Initialize-Winget { $script:Winget = Get-WingetPath if (-not $script:Winget) { Write-Host '' Write-Host 'winget (App Installer) was not found on this PC.' -ForegroundColor Red Write-Host 'Install or update "App Installer" from the Microsoft Store, then run this script again.' -ForegroundColor Yellow Write-Host 'https://aka.ms/getwinget' -ForegroundColor Yellow try { Start-Process 'ms-windows-store://pdp/?ProductId=9NBLGGH4NNS1' } catch {} return $false } $script:WingetExtra = @() try { $v = (& $script:Winget --version) -replace '[^\d\.]', '' if ([version]$v -ge [version]'1.4') { $script:WingetExtra = @('--disable-interactivity') } } catch {} return $true } function Test-WingetInstalled($App) { $extra = $script:WingetExtra & $script:Winget list --id $App.Id --exact --accept-source-agreements @extra 2>&1 | Out-Null return $LASTEXITCODE -eq 0 } function Invoke-WingetApp($App) { $source = if ($App.Source) { $App.Source } else { 'winget' } $action = $Mode $wasInstalled = $false if ($Mode -eq 'install') { $wasInstalled = Test-WingetInstalled $App } $wargs = @($action, '--id', $App.Id, '--exact', '--source', $source, '--silent', '--accept-source-agreements') if ($action -ne 'uninstall') { $wargs += '--accept-package-agreements' } if ($action -eq 'install' -and $App.Version) { $wargs += @('--version', $App.Version) } $wargs += $script:WingetExtra # Start-Process keeps winget's live progress output in the console and returns the real exit code. # winget verifies the SHA-256 hash of every installer against its manifest before running it. $code = (Start-Process -FilePath $script:Winget -ArgumentList $wargs -NoNewWindow -Wait -PassThru).ExitCode switch ($code) { 0 { if ($Mode -eq 'install') { if ($wasInstalled) { return 'updated' } else { return 'installed' } } return 'removed' } -1978335189 { return 'uptodate' } # APPINSTALLER_CLI_ERROR_UPDATE_NOT_APPLICABLE -1978335135 { return 'uptodate' } # APPINSTALLER_CLI_ERROR_PACKAGE_ALREADY_INSTALLED -1978334967 { if ($wasInstalled) { return 'reboot-updated' } else { return 'reboot' } } # ..._REBOOT_REQUIRED_TO_FINISH -1978334966 { if ($wasInstalled) { return 'reboot-updated' } else { return 'reboot' } } # ..._REBOOT_REQUIRED_FOR_INSTALL 3010 { if ($wasInstalled) { return 'reboot-updated' } else { return 'reboot' } } 1641 { if ($wasInstalled) { return 'reboot-updated' } else { return 'reboot' } } -1978335212 { if ($Mode -eq 'install') { return 'failed:-1978335212' } else { return 'notinstalled' } } # no package found default { return "failed:$code" } } } # --- Scoop ------------------------------------------------------------------ function Initialize-Scoop { if (-not (Get-Command scoop -ErrorAction SilentlyContinue)) { if ($Mode -ne 'install') { Write-Info 'Scoop is not installed.'; return $false } Write-Step 'Installing Scoop' $policy = Get-ExecutionPolicy -Scope CurrentUser if ($policy -in @('Restricted', 'Undefined', 'AllSigned')) { try { Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force -ErrorAction Stop } catch {} } $installer = Invoke-RestMethod -Uri 'https://get.scoop.sh' if (Test-IsAdmin) { & ([scriptblock]::Create($installer)) -RunAsAdmin | Out-Host } else { & ([scriptblock]::Create($installer)) | Out-Host } $env:Path = "$env:USERPROFILE\scoop\shims;$env:Path" } if (-not (Get-Command scoop -ErrorAction SilentlyContinue)) { Write-Host 'Scoop could not be installed. See https://scoop.sh' -ForegroundColor Red return $false } if ($Mode -eq 'uninstall') { return $true } if ($Buckets.Count -gt 0 -and -not (Get-Command git -ErrorAction SilentlyContinue)) { Write-Step 'Installing Git (needed for Scoop buckets)' scoop install main/git | Out-Host } $known = @(scoop bucket list | ForEach-Object { if ($_.Name) { $_.Name } else { "$_" } }) foreach ($bucket in $Buckets) { if ($known -notcontains $bucket) { Write-Step "Adding Scoop bucket '$bucket'"; scoop bucket add $bucket | Out-Host } } return $true } function Test-ScoopInstalled($App) { $prefix = scoop prefix ($App.Id.Split('/')[-1]) 6>$null 2>$null return [bool]($prefix -and (Test-Path "$prefix")) } function Invoke-ScoopApp($App) { $short = $App.Id.Split('/')[-1] $present = Test-ScoopInstalled $App switch ($Mode) { 'install' { if ($present) { return 'uptodate' } scoop install $App.Id | Out-Host if (Test-ScoopInstalled $App) { return 'installed' } else { return 'failed:scoop' } } 'uninstall' { if (-not $present) { return 'notinstalled' } scoop uninstall $short | Out-Host if (Test-ScoopInstalled $App) { return 'failed:scoop' } else { return 'removed' } } } } # --- Chocolatey ------------------------------------------------------------- function Initialize-Choco { if (-not (Get-Command choco -ErrorAction SilentlyContinue)) { if ($Mode -ne 'install') { Write-Info 'Chocolatey is not installed.'; return $false } Write-Step 'Installing Chocolatey' Set-ExecutionPolicy Bypass -Scope Process -Force Invoke-Expression ((New-Object Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) | Out-Host Update-SessionPath $env:Path += ";$env:ALLUSERSPROFILE\chocolatey\bin" } if (-not (Get-Command choco -ErrorAction SilentlyContinue)) { Write-Host 'Chocolatey could not be installed. See https://chocolatey.org/install' -ForegroundColor Red return $false } return $true } function Test-ChocoInstalled($App) { $local = @(choco list $App.Id --exact --limit-output 2>$null) return $local.Count -gt 0 -and "$($local[0])" -like "$($App.Id)|*" } function Invoke-ChocoApp($App) { $wasInstalled = Test-ChocoInstalled $App if ($Mode -eq 'install' -and $wasInstalled) { return 'uptodate' } if ($Mode -ne 'install' -and -not $wasInstalled) { return 'notinstalled' } $cargs = @($Mode, $App.Id, '-y', '--no-progress') if ($Mode -eq 'install' -and $App.Version) { $cargs += "--version=$($App.Version)" } choco @cargs | Out-Host $code = $LASTEXITCODE if ($code -in @(1641, 3010)) { return 'reboot' } if ($code -ne 0) { return "failed:$code" } return @{ install = 'installed'; uninstall = 'removed' }[$Mode] } # --- Shared ----------------------------------------------------------------- function Invoke-AppList($List) { $results = @() $i = 0 foreach ($app in $List) { $i++ Write-Step "[$i/$(@($List).Count)] $ModeVerb $($app.Name)" $status = 'failed' for ($attempt = 1; $attempt -le 2; $attempt++) { try { $status = switch ($PackageManager) { 'winget' { Invoke-WingetApp $app } 'scoop' { Invoke-ScoopApp $app } 'choco' { Invoke-ChocoApp $app } } } catch { $status = "failed:$($_.Exception.Message)" } if ($status -notlike 'failed*' -or $status -eq 'failed:-1978335212') { break } # no retry when the package does not exist if ($attempt -eq 1) { Write-Info 'Retrying once...'; Start-Sleep -Seconds 3 } } $code = if ($status -like 'failed:*') { $status.Substring(7) } else { $null } $results += New-Result $app ($status -replace ':.*$', '') $code $null } return $results } function ConvertTo-PsLiteral([string]$Value) { "'" + ($Value -replace "'", "''") + "'" } function New-ScriptText([string]$NewMode, $List) { # Rebuilds this script with a different configuration (used for the undo script). $lines = @( ' # >>> config', " `$PackageManager = $(ConvertTo-PsLiteral $PackageManager)", " `$Mode = $(ConvertTo-PsLiteral $NewMode)", " `$Buckets = @($((@($Buckets) | ForEach-Object { ConvertTo-PsLiteral $_ }) -join ', '))", ' $Apps = @(' ) foreach ($a in $List) { $parts = @("Name = $(ConvertTo-PsLiteral $a.Name)", "Id = $(ConvertTo-PsLiteral $a.Id)") if ($a.Source) { $parts += "Source = $(ConvertTo-PsLiteral $a.Source)" } if ($a.NoAdmin) { $parts += 'NoAdmin = $true' } $lines += " @{ $($parts -join '; ') }" } $lines += @(' )', ' # <<< config') $config = $lines -join "`n" # Replace only the first (real) config block; the same markers appear as text in this function. $pattern = New-Object Text.RegularExpressions.Regex '(?s)[ \t]*# >>> config.*?# <<< config' $inner = $pattern.Replace($Self.ToString(), [Text.RegularExpressions.MatchEvaluator] { param($m) $config }, 1) return "# WinMate undo script - generated $(Get-Date -Format s) for run $RunId`n& {" + $inner + "}`n" } function Save-RunRecord($Results) { $record = [ordered]@{ id = $RunId; date = (Get-Date).ToString('s'); packageManager = $PackageManager mode = $Mode; log = $LogFile; results = @($Results) } $file = Join-Path $DataDir "runs\$RunId.json" ConvertTo-Json -InputObject $record -Depth 4 | Set-Content -Path $file -Encoding UTF8 if ($Mode -ne 'install') { return $null } # Only apps that were not installed before this run go into the undo script. $new = @($Results | Where-Object { $_.Status -in @('installed', 'reboot') } | ForEach-Object { $_.Id }) if (-not $new.Count) { return $null } $undoApps = @($Apps | Where-Object { $new -contains $_.Id }) $undo = Join-Path $DataDir "runs\$RunId-undo.ps1" [IO.File]::WriteAllText($undo, (New-ScriptText 'uninstall' $undoApps), (New-Object Text.UTF8Encoding $true)) return $undo } function New-PhaseScript([string]$Phase, [string]$ResultFile) { $file = Join-Path $env:TEMP ("winmate-" + [guid]::NewGuid().ToString('N') + '.ps1') $body = "& {" + $Self.ToString() + "} -Phase '$Phase' -ResultFile '$ResultFile' -RunId '$RunId'" [IO.File]::WriteAllText($file, $body, (New-Object Text.UTF8Encoding $true)) return $file } function Read-PhaseResult([string]$ResultFile, $List) { if (Test-Path $ResultFile) { $data = @(Get-Content $ResultFile -Raw -Encoding UTF8 | ConvertFrom-Json) Remove-Item $ResultFile -Force -ErrorAction SilentlyContinue return $data } return @($List | ForEach-Object { New-Result $_ 'failed' 'no result' $null }) } function Invoke-ElevatedPhase($List) { $resultFile = Join-Path $env:TEMP ("winmate-" + [guid]::NewGuid().ToString('N') + '.json') $file = New-PhaseScript 'admin' $resultFile Write-Step 'Requesting administrator rights once for all installers' Write-Info 'Confirm the Windows prompt. Progress continues in the new administrator window.' try { $p = Start-Process -FilePath 'powershell.exe' -Verb RunAs -Wait -PassThru ` -ArgumentList @('-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', "`"$file`"") } catch { Remove-Item $file -Force -ErrorAction SilentlyContinue Write-Warning 'Administrator rights were not granted. Continuing without them; some installers may ask on their own.' if ($PackageManager -eq 'choco') { return @($List | ForEach-Object { New-Result $_ 'failed' 'admin required' $null }) } return Invoke-AppList $List } Remove-Item $file -Force -ErrorAction SilentlyContinue return Read-PhaseResult $resultFile $List } function Invoke-LimitedPhase($List) { # A few installers (e.g. Spotify) refuse to run as administrator. # From an elevated session, start them as the signed-in user via a one-time scheduled task. $resultFile = Join-Path $env:TEMP ("winmate-" + [guid]::NewGuid().ToString('N') + '.json') $file = New-PhaseScript 'user' $resultFile $task = 'WinMate-' + [guid]::NewGuid().ToString('N') Write-Step 'Handling apps that must not run as administrator' try { $user = [Security.Principal.WindowsIdentity]::GetCurrent().Name $action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument "-NoProfile -ExecutionPolicy Bypass -File `"$file`"" $principal = New-ScheduledTaskPrincipal -UserId $user -LogonType Interactive -RunLevel Limited Register-ScheduledTask -TaskName $task -Action $action -Principal $principal -Force | Out-Null Start-ScheduledTask -TaskName $task $waited = 0 while (-not (Test-Path $resultFile) -and $waited -lt 3600) { Start-Sleep -Seconds 2; $waited += 2 $state = (Get-ScheduledTask -TaskName $task -ErrorAction SilentlyContinue).State if ($waited -gt 10 -and $state -ne 'Running') { break } } } catch { Write-Warning "Could not start the non-admin task: $($_.Exception.Message)" } finally { Unregister-ScheduledTask -TaskName $task -Confirm:$false -ErrorAction SilentlyContinue Remove-Item $file -Force -ErrorAction SilentlyContinue } return Read-PhaseResult $resultFile $List } function Initialize-PackageManager { switch ($PackageManager) { 'winget' { return Initialize-Winget } 'scoop' { return Initialize-Scoop } 'choco' { return Initialize-Choco } } } function Write-Summary($Results) { Write-Host '' Write-Host '==================== Summary ====================' -ForegroundColor Cyan foreach ($r in $Results) { switch ($r.Status) { 'installed' { Write-Host " [OK] $($r.Name) installed" -ForegroundColor Green } 'updated' { Write-Host " [OK] $($r.Name) updated" -ForegroundColor Green } 'removed' { Write-Host " [OK] $($r.Name) removed" -ForegroundColor Green } 'uptodate' { Write-Host " [OK] $($r.Name) already up to date" -ForegroundColor Green } 'notinstalled' { Write-Host " [SKIPPED] $($r.Name) is not installed" -ForegroundColor DarkGray } { $_ -like 'reboot*' } { Write-Host " [REBOOT] $($r.Name) needs a restart to finish" -ForegroundColor Yellow } default { Write-Host " [FAILED] $($r.Name) (code: $($r.Code))" -ForegroundColor Red } } } } # --- Phases started by the main script -------------------------------------- if ($Phase -eq 'selftest') { # Used by tools/test_script.py: writes the undo script for all apps without installing anything. [IO.File]::WriteAllText($ResultFile, (New-ScriptText 'uninstall' $Apps), (New-Object Text.UTF8Encoding $false)) return } if ($Phase) { try { Start-Transcript -Path $LogFile -Append | Out-Null } catch {} try { $Host.UI.RawUI.WindowTitle = "WinMate - $ModeVerb ($Phase)" } catch {} $list = if ($Phase -eq 'user') { @($Apps | Where-Object { $_.NoAdmin }) } else { @($Apps | Where-Object { -not $_.NoAdmin }) } $results = @() if (Initialize-PackageManager) { $results = Invoke-AppList $list } else { $results = @($list | ForEach-Object { New-Result $_ 'failed' 'package manager missing' $null }) } ConvertTo-Json -InputObject @($results) -Depth 3 | Set-Content -Path $ResultFile -Encoding UTF8 try { Stop-Transcript | Out-Null } catch {} return } # --- Main ------------------------------------------------------------------- try { $Host.UI.RawUI.WindowTitle = 'WinMate' } catch {} try { Start-Transcript -Path $LogFile -Append | Out-Null } catch {} Write-Host '' Write-Host ' W I N M A T E 2.3.0' -ForegroundColor Cyan Write-Host " $ModeVerb $(@($Apps).Count) app(s) with $PackageManager" -ForegroundColor Gray Write-Host ' https://winmate.baba537.workers.dev' -ForegroundColor DarkGray $results = @() $isAdmin = Test-IsAdmin if (Test-PendingReboot) { Write-Warning 'Windows has a pending restart. Some installers may fail until you restart.' } $adminApps = @($Apps | Where-Object { -not $_.NoAdmin }) $userApps = @($Apps | Where-Object { $_.NoAdmin }) if ($PackageManager -eq 'scoop') { if (Initialize-Scoop) { $results += Invoke-AppList $Apps } else { $results += @($Apps | ForEach-Object { New-Result $_ 'failed' 'scoop missing' $null }) } } else { if ($PackageManager -eq 'winget' -and -not (Initialize-Winget)) { $results += @($Apps | ForEach-Object { New-Result $_ 'failed' 'winget missing' $null }) $adminApps = @(); $userApps = @() } if ($adminApps.Count -gt 0) { if ($isAdmin) { if (Initialize-PackageManager) { $results += Invoke-AppList $adminApps } else { $results += @($adminApps | ForEach-Object { New-Result $_ 'failed' 'package manager missing' $null }) } } else { $results += Invoke-ElevatedPhase $adminApps } } if ($userApps.Count -gt 0) { if ($isAdmin) { $results += Invoke-LimitedPhase $userApps } else { $results += Invoke-AppList $userApps } } } Write-Summary $results $failed = @($results | Where-Object { $_.Status -eq 'failed' }) $needsReboot = @($results | Where-Object { $_.Status -like 'reboot*' }).Count -gt 0 Write-Host '' $ok = @($results).Count - $failed.Count Write-Host " $ok of $(@($results).Count) finished successfully." -ForegroundColor $(if ($failed.Count) { 'Yellow' } else { 'Green' }) if ($failed.Count) { Write-Host ' Run the script again to retry the failed apps.' -ForegroundColor DarkGray } $undo = $null try { $undo = Save-RunRecord $results } catch { Write-Warning "Could not save the run record: $($_.Exception.Message)" } Write-Host " Log: $LogFile" -ForegroundColor DarkGray if ($undo) { Write-Host ' To uninstall the apps this run added:' -ForegroundColor DarkGray Write-Host " powershell -ExecutionPolicy Bypass -File `"$undo`"" -ForegroundColor DarkGray } try { Stop-Transcript | Out-Null } catch {} if (-not $NoPause) { Write-Host '' if ($needsReboot) { $answer = Read-Host ' Some apps need a restart. Restart Windows now? (y/N)' if ($answer -match '^(y|j)') { Restart-Computer -Force } } else { Read-Host ' Press Enter to close' | Out-Null } } elseif ($needsReboot) { Write-Host ' Restart Windows to finish the installation.' -ForegroundColor Yellow } '@ function Get-Sha256Hex([string]$Text) { $sha = [Security.Cryptography.SHA256]::Create() ($sha.ComputeHash([Text.Encoding]::UTF8.GetBytes($Text)) | ForEach-Object { $_.ToString('x2') }) -join '' } function ConvertTo-PsLiteral([string]$Value) { "'" + ($Value -replace "'", "''") + "'" } # Line endings may change when the file is checked out or downloaded; the hash is defined over LF. $EngineText = $EngineText.Replace("`r`n", "`n").TrimEnd() if ((Get-Sha256Hex $EngineText) -ne $EngineSha256) { Write-Host 'The embedded WinMate engine does not match its SHA-256 hash. This file was modified.' -ForegroundColor Red exit 3 } if ($Version) { Write-Host "WinMate $WinMateVersion" Write-Host "Engine SHA-256: $EngineSha256" exit 0 } # --- Verify a downloaded script --------------------------------------------------- if ($Verify) { $text = (Get-Content -LiteralPath $Verify -Raw -Encoding UTF8).Replace("`r`n", "`n") $engine = [regex]::Match($text, '(?s)\n[ \t]*# >>> engine\n(.*?)\n[ \t]*# <<< engine') if (-not $engine.Success) { Write-Host 'No WinMate engine block found in this file.' -ForegroundColor Red exit 2 } $hash = Get-Sha256Hex $engine.Groups[1].Value.TrimEnd() $header = [regex]::Match($text, '#\s+WinMate (\S+)') Write-Host "File: $Verify" if ($header.Success) { Write-Host "Generated by: WinMate $($header.Groups[1].Value)" } Write-Host "Engine in file: $hash" Write-Host "Engine of $($WinMateVersion.PadRight(9)): $EngineSha256" $config = [regex]::Match($text, '(?s)# >>> config\n(.*?)\n[ \t]*# <<< config') if ($config.Success) { Write-Host '' Write-Host 'Configuration (this is what the script will do):' -ForegroundColor Cyan Write-Host $config.Groups[1].Value } Write-Host '' if ($hash -eq $EngineSha256) { Write-Host 'OK - the engine is the unmodified WinMate engine.' -ForegroundColor Green exit 0 } Write-Host 'MISMATCH - the engine differs from this WinMate version.' -ForegroundColor Red Write-Host 'Either the script was modified, or it was generated by another WinMate version.' -ForegroundColor Yellow Write-Host 'Compare with the engine hash published in that version''s GitHub release.' -ForegroundColor Yellow exit 1 } # --- Run history ------------------------------------------------------------------- if ($Logs) { $runDir = Join-Path $env:LOCALAPPDATA 'WinMate\runs' $runs = @(Get-ChildItem -Path $runDir -Filter '*.json' -ErrorAction SilentlyContinue | Sort-Object Name -Descending) if (-not $runs.Count) { Write-Host "No runs recorded yet ($runDir)."; exit 0 } $records = @($runs | Select-Object -First 15 | ForEach-Object { Get-Content $_.FullName -Raw -Encoding UTF8 | ConvertFrom-Json }) $records | ForEach-Object { [pscustomobject]@{ Run = $_.id; Mode = $_.mode; Manager = $_.packageManager Apps = @($_.results).Count; Failed = @($_.results | Where-Object { $_.Status -eq 'failed' }).Count } } | Format-Table -AutoSize $latest = $records[0] Write-Host "Latest run $($latest.id):" -ForegroundColor Cyan $latest.results | Format-Table Name, Id, Status, Code, Detail -AutoSize Write-Host "Log file: $($latest.log)" $undo = Join-Path $runDir "$($latest.id)-undo.ps1" if (Test-Path $undo) { Write-Host "Undo script: $undo" } exit 0 } # --- Catalog browsing -------------------------------------------------------------- if ($List -or $Search) { $items = @($Catalog.apps) if ($Search) { $items = @($items | Where-Object { "$($_.id) $($_.name) $($_.category) $($_.description)" -like "*$Search*" }) } $items | Select-Object @{ n = 'Id'; e = { $_.id } }, @{ n = 'Name'; e = { $_.name } }, @{ n = 'Category'; e = { $_.category } }, @{ n = 'winget'; e = { [bool]$_.winget } }, @{ n = 'Scoop'; e = { [bool]$_.scoop } }, @{ n = 'Chocolatey'; e = { [bool]$_.choco } } | Format-Table -AutoSize Write-Host "$($items.Count) app(s). Install with: .\winmate.ps1 -Apps ," exit 0 } if ($Bundles) { $Catalog.bundles | Select-Object @{ n = 'Id'; e = { $_.id } }, @{ n = 'Name'; e = { $_.name } }, @{ n = 'Apps'; e = { $_.apps -join ', ' } } | Format-Table -Wrap -AutoSize exit 0 } # --- Resolve the selection --------------------------------------------------------- $byId = @{} foreach ($a in $Catalog.apps) { $byId[$a.id] = $a } $selected = New-Object System.Collections.Generic.List[string] function Add-Id([string]$Id) { $Id = $Id.Trim(); if ($Id -and -not $selected.Contains($Id)) { $selected.Add($Id) } } function Get-BundleApps([string]$Id) { $b = @($Catalog.bundles | Where-Object { $_.id -eq $Id }) if (-not $b.Count) { throw "Unknown bundle '$Id'. Use -Bundles to list them." } return @($b[0].apps) } $pm = $PackageManager if ($ProfilePath) { $profileData = Get-Content -LiteralPath $ProfilePath -Raw -Encoding UTF8 | ConvertFrom-Json if (-not $pm -and $profileData.pm) { $pm = $profileData.pm } foreach ($id in @($profileData.manual)) { if ($id) { Add-Id $id } } foreach ($b in @($profileData.bundles)) { if ($b) { foreach ($id in Get-BundleApps $b) { if (@($profileData.excluded) -notcontains $id) { Add-Id $id } } } } } foreach ($b in @($Bundle)) { if ($b) { foreach ($id in Get-BundleApps $b) { Add-Id $id } } } foreach ($a in @($Apps)) { if ($a) { foreach ($id in $a -split ',') { Add-Id $id } } } if (-not $pm) { $pm = 'winget' } if (-not $selected.Count) { Write-Host 'Nothing selected. Use -Apps, -Bundle or -ProfilePath. Try -List, -Bundles or Get-Help .\winmate.ps1 -Examples.' -ForegroundColor Yellow exit 1 } $unknown = @($selected | Where-Object { -not $byId.ContainsKey($_) }) if ($unknown.Count) { foreach ($u in $unknown) { $hint = @($Catalog.apps.id | Where-Object { $_ -like "*$u*" } | Select-Object -First 5) -join ', ' Write-Host "Unknown app '$u'.$(if ($hint) { " Did you mean: $hint" })" -ForegroundColor Red } exit 1 } # Runtimes first, so apps that depend on them install cleanly. $ordered = @($selected | Where-Object { $byId[$_].category -eq 'runtimes' }) + @($selected | Where-Object { $byId[$_].category -ne 'runtimes' }) $entries = @() $buckets = @() $skipped = @() foreach ($id in $ordered) { $app = $byId[$id] switch ($pm) { 'winget' { if (-not $app.winget) { $skipped += $app.name; continue } $ids = @($app.winget) foreach ($wid in $ids) { $store = $wid.StartsWith('msstore:') $name = if ($ids.Count -gt 1) { "$($app.name -replace '\s*\(.*\)$', '') - $wid" } else { $app.name } $parts = @("Name = $(ConvertTo-PsLiteral $name)", "Id = $(ConvertTo-PsLiteral $(if ($store) { $wid.Substring(8) } else { $wid }))") if ($store) { $parts += "Source = 'msstore'" } if ($app.noAdmin) { $parts += 'NoAdmin = $true' } if ($PinVersions -and $app.wv -and $app.wv.$wid) { $parts += "Version = $(ConvertTo-PsLiteral $app.wv.$wid)" } $entries += " @{ $($parts -join '; ') }" } } 'scoop' { if (-not $app.scoop) { $skipped += $app.name; continue } $bucket = $app.scoop.Split('/')[0] if ($bucket -ne 'main' -and $buckets -notcontains $bucket) { $buckets += $bucket } $entries += " @{ Name = $(ConvertTo-PsLiteral $app.name); Id = $(ConvertTo-PsLiteral $app.scoop) }" } 'choco' { if (-not $app.choco) { $skipped += $app.name; continue } $parts = @("Name = $(ConvertTo-PsLiteral $app.name)", "Id = $(ConvertTo-PsLiteral $app.choco)") if ($PinVersions -and $app.cv) { $parts += "Version = $(ConvertTo-PsLiteral $app.cv)" } $entries += " @{ $($parts -join '; ') }" } } } if ($skipped.Count) { Write-Host "Not available for ${pm}, skipped: $($skipped -join ', ')" -ForegroundColor Yellow } if (-not $entries.Count) { Write-Host "None of the selected apps is available for $pm." -ForegroundColor Red; exit 1 } $lines = @( '# ============================================================================', "# WinMate $WinMateVersion install script - $SiteUrl", "# Generated $(Get-Date -Format 'yyyy-MM-dd') by winmate.ps1 - $($entries.Count) package(s) with $pm", "# Engine SHA-256: $EngineSha256", "# Verify: winmate.ps1 -Verify Details: $SiteUrl/security/", '# ============================================================================', '& {', ' param([string]$Phase, [string]$ResultFile, [switch]$NoPause, [string]$RunId)', ' # >>> config', " `$PackageManager = $(ConvertTo-PsLiteral $pm)", " `$Mode = 'install'", " `$Buckets = @($(($buckets | ForEach-Object { ConvertTo-PsLiteral $_ }) -join ', '))", ' $Apps = @(' ) + $entries + @( ' )', ' # <<< config', ' # >>> engine', $EngineText, ' # <<< engine', '}' ) $scriptText = ($lines -join "`n") + "`n" if ($ExportScript) { [IO.File]::WriteAllText($ExportScript, $scriptText, (New-Object Text.UTF8Encoding $true)) Write-Host "Saved $ExportScript" exit 0 } $run = $scriptText.TrimEnd() + $(if ($NoPause) { ' -NoPause' } else { '' }) & ([ScriptBlock]::Create($run))