This works fine for Windows 11, where Windows Terminal and winget are already included.
- Google Drive (no scoop/winget)
- install Scoop itself (non admin PowerShell):
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserirm get.scoop.sh | iex
- git gud:
scoop install git - add buckets:
scoop bucket add extras,scoop bucket add sysinternals,scoop bucket add versions - get the goods:
scoop install sharpkeys wincompose clink neovim bat less fd ripgrep keepassxc autoruns systeminformer-nightly eartrumpet mpv.net paint.net screentogif shutup10 oh-my-posh git-aliases fzf psfzf zlocation win32yank - software with auto-updates (VS Code, Spotify, PowerToys, Windows Terminal) is better not installed via scoop
- for things that require admin, e.g. OpenVPN:
scoop install sudosudo scoop install openvpnyes, sudo in PowerShell \o/
- remaining stuff with winget:
foreach ($app in @("HermannSchinagl.LinkShellExtension")) { winget install -s winget %app }
Since scoop is using pwsh internally, you will get errors about running pwsh processes.
To fix this, start a Windows PowerShell (powershell.exe) session in Windows Terminal and do scoop update pwsh there (see ScoopInstaller/Main#3572 (comment)).
Similar problem for Windows Terminal: here, closing all Windows Terminal instances,
starting conhost (legacy Windows command prompt), and running
scoop update windows-terminal there is the solution.
sudo scoop clean -a # delete old app versions
scoop cache rm * # clear scoop cache- Git -
winget install -s winget git/scoop install git - clone dotfiles once for Windows (later again for WSL)
- in Windows home (
C:\Users\<user>) git clone ssh://yogan@zogan.de/~yogan/git/priv/env
- in Windows home (
- SharpKeys -
winget install -s winget sharpkeys/scoop install sharpkeys- map
<CapsLock>→<Ctrl> - swap
<Esc>↔<~> - note: PowerToyes has a Keyboard Manager, but that one needs to be running for the mappings to work, and generally does not work for some elevated stuff, like win logon; SharpKeys does some registry stuff that is lower level and works better
- map
- WinCompose -
winget install -s winget wincompose/scoop install wincompose- symlink
WinCompose.XComposeto.XComposein%userprofile%(details how to symlink are at the top ofWinCompose.XComposeitself) - use a env clone in Windows for this; do not link to env within WSL!
- symlink
Link Shell
Extension -
winget install -s winget HermannSchinagl.LinkShellExtension - to create symlinks, hardlinks, junctions,
etc.
clink - winget install -s winget chrisant996.Clink -
readline/history for cmd.exe
- symlink
env/clink/settingstoC:\Users\<USERNAME>\AppData\Local\clink\ - create hardlink to
env/.inputrcinC:\Users\<USERNAME>\ - rename hardlinked
.inputrcto_inputrc
winget install -s winget powershellto install a recent PowerShell- prompt and keybindings (incl. ^W/^U etc.) are all in
Profile.ps1 - follow instructions in
env/PowerShell/Profile.ps1 ^Rrequiresfzf, which is not available via winget- either use
chocoif available, or - grab the zipfile from the GitHub releases
- unzip to e.g.
C:\Program Files\Fzf - add that to
$PATH(system env vars)
- unzip to e.g.
- either use
- NanaZip 7zip clone with Win11 integration
- O&O ShutUp10++ -
winget install shutup10++(available from cmd/PS withshutup10after installation)
disable a lot of the dubious privacy-violating stuff of Windows 10/11 - System Informer has replaced Process Explorer and Process Hacker for me
- TCPView -
choco install tcpview - Autoruns -
choco install AutoRuns - EarTrumpet -
winget install -s winget eartrumpet
nice replacement for Windows volume control/mixer (directly shows controls and current volume level of applications) - Rufus create bootable USB drives from
.isoimages (like withddon Linux)choco install rufus(note:rufus.execan be found inC:\ProgramData\chocolatey\bin, it does not get added to the start menu automatically by choco)
- Spotify (winget borken, use installer)
- Toastify (no winget, use installer) - global keyboard shortcuts and notifications
- mpv.net -
winget install -s winget mpv.net
- SumatraPDF -
choco install sumatrapdf - Paint.NET -
choco install paint.net - ScreenToGif -
winget install -s winget ScreenToGif - also see tools/graphics page
choco install vim- create hardlink to
env/.vimrcin$HOME(c:/user/foo/) - rename hardlinked
.vimrcto_vimrc - make junction of
env/.vim/toc:\Program Files\vim\ - rename
.vimtovimfiles(remove old one there)
See Windows Subsystem for Linux (WSL).
To enable working with both Linux (WSL) and Windows programs on the files in my git repositories, they have to be cloned to a Windows path. Cloning and other git operations can be done straight from a WSL shell with WSL git.
cd winhome
git clone ssh://zogan.de/~yogan/git/priv/env
git clone ssh://zogan.de/~yogan/git/priv/docs
cd ; ln -s winhome/env ; ln -s winhome/docs- xclip-xsel-WSL provides
xclipandxselin WSL so that you can access the Windows clipboard from the command line
winget install -s winget vscode- enable settings sync (pick everything except UI state), log in via GitHub
- A good starting point for setting up a dev environment on Windows is Windows development environment on Microsoft Docs.
- SoCraTes 2016 Windows Tools Session Notes
The
Windows Package Manager
was announced at MS Build 2020 and is currently in preview. It could potentially
replace Chocolatey in the long run. On Windows 10 Insider, winget is already
available. For stable Windows 10, the quickest way to get it is to grab the
latest release from GitHub
(it's part of AppInstaller, so download the
Microsoft.DesktopAppInstaller_GIBBERISH.appxbundle thingy and run that,
it's fine).
For winget
usage information, just call winget without any arguments. There is search
and install, as you would expect, but currently there does not seem to be an
update.
- install Chocolatey as described (from Admin
cmdorPowerShell) chocoshould be in%PATH%after installation- ProTip™: use
whichnpm package (npm install -g which)
- ProTip™: use
- Run all future
chococommands as admin choco feature enable -n=allowGlobalConfirmation
It makes sense to always use an elevated (Admin) cmd or PowerShell to work
with choco (as we are installing software, this is perfectly fine.)
To install something new:
choco search foochoco install foo
List and upgrade locally installed packages.
choco list -lchoco upgrade all
- evaluate Boxstarter (see blog post by jsfraz: Setting Up a Windows Machine in a Reproducible Way)