{"id":15203000,"url":"https://github.com/farhanmustar/windows-config","last_synced_at":"2026-02-09T09:04:44.073Z","repository":{"id":45765639,"uuid":"306889658","full_name":"farhanmustar/windows-config","owner":"farhanmustar","description":"Collection of configuration files for Microsoft Windows development.","archived":false,"fork":false,"pushed_at":"2025-11-21T23:07:05.000Z","size":86,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-11-22T00:21:47.604Z","etag":null,"topics":["choco","chocolatey","powershell","powershell-core","putty","vim","windows-10","windows-terminal"],"latest_commit_sha":null,"homepage":"","language":"AutoHotkey","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/farhanmustar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-10-24T13:29:01.000Z","updated_at":"2025-11-21T23:07:09.000Z","dependencies_parsed_at":"2023-01-31T10:01:07.068Z","dependency_job_id":"1cccbd4e-4fe5-4ed5-8b08-717addbad235","html_url":"https://github.com/farhanmustar/windows-config","commit_stats":{"total_commits":122,"total_committers":1,"mean_commits":122.0,"dds":0.0,"last_synced_commit":"c2800da1a7b9491fde44fef1842d988c9e0a9905"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/farhanmustar/windows-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/farhanmustar%2Fwindows-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/farhanmustar%2Fwindows-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/farhanmustar%2Fwindows-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/farhanmustar%2Fwindows-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/farhanmustar","download_url":"https://codeload.github.com/farhanmustar/windows-config/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/farhanmustar%2Fwindows-config/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29260426,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-09T04:11:57.159Z","status":"ssl_error","status_checked_at":"2026-02-09T04:11:56.117Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["choco","chocolatey","powershell","powershell-core","putty","vim","windows-10","windows-terminal"],"created_at":"2024-09-28T04:21:40.652Z","updated_at":"2026-02-09T09:04:44.067Z","avatar_url":"https://github.com/farhanmustar.png","language":"AutoHotkey","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Windows configuration guide\nMake sure all run in admin powershell\n\n## Chocolatey Package Manager\nInstall chocolatey from [chocolatey.org](https://chocolatey.org/install).\n```powershell\nSet-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))\n```\n\n## Recommended Package to Install\ninstall all other software using chocolatey\n```powershell\nchoco install `\npostman `\nfree-download-manager `\npsutils `\nwezterm `\nrclone `\nvcxsrv `\nfilezilla dbeaver 7zip `\nadvanced-ip-scanner wireshark `\nlibreoffice notepadplusplus `\npaint.net inkscape `\nvlc `\ngit `\nflameshot `\npowertoys `\ncpu-z hwmonitor wiztree `\n-y\n```\n\n### Note on sudo\n```sudo``` keyword is available after installing psutils, which is included in the above install command.\nUsers can now install using chocolatey without admin enabled powershell as shown below.\n```powershell\nsudo choco install \u003csoftware_name\u003e\n```\n\n## Install scoop\nSome application not available in chocolatey, we can use scoop instead.  \nInstall command\n```powershell\niwr -useb get.scoop.sh | iex\nscoop bucket add extras\n```\n\n# WSL configuration\n## Install default (ubuntu) distribution\n```powershell\nwsl --install\n```\n## Configure wsl to not add path to host windows bin.\n* start wsl\n* copy file from ```wsl/wsl.conf``` to ```/etc/wsl.conf```\n* shutdown wsl to allow it to reload config.\n```powershell\nwsl --shutdown\n```\n## Passthrough host cmd in wsl\n```bash\nsudo ln -sT /mnt/c/Windows/explorer.exe /usr/bin/explorer\nsudo ln -sT /mnt/c/Windows/System32/wsl.exe /usr/bin/wsl\nsudo ln -sT /mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe /usr/bin/powershell\nsudo ln -sT /mnt/c/Windows/System32/clip.exe /usr/bin/clip\n```\n## Execute powershell from wsl bash\nAdd following to bash_alias.\n```bash\nalias pwsh='powershell -Command'\n```\nThis allow for executing powershell cmd such as chocolatey install\n```bash\npwsh sudo choco install ...\npwsh Get-VM\npwsh \"iwr -useb get.scoop.sh | iex\"  # pipe need to be in quote \n```\n## Install build-essential\n```bash\nsudo apt install build-essential\n```\n## Fix ls color for windows files.\n* copy this into `~/.bashrc`.\n```bash\nexport LS_COLORS=\"$(echo $LS_COLORS)ow=01;34:\"\n```\n## Install wsl utils\n```bash\nsudo apt install wslu\n```\n\n# Configure Hyper-V\nHyper-V is not turn on by default. Enable it:\n* Search and start \"Turn Window features on or off\"\n* Tick Hyper-V option.\n* !make sure do not use dynamic or expanding hard disk. it will keep growing without shrinking.\n\n### Hyper-V disk management\n* To successfully shrink the disk, we need to zeroout all deleted items. on linux run.\n```bash\nsudo fstrim -v /\n```\n* Alternatively if still not working, create large file of zeros then delete them.\n```bash\nsudo dd if=/dev/zero of=/tmp/zero.file bs=1M # stop when you run out of space. this does not take host disk space.\nsudo rm /tmp/zero.file\n```\n* Shrink the vhdx using following powershell cmdlet.\n```powershell\nOptimize-VHD -Path c:\\test\\dynamic.vhdx -Mode Full\n```\n* do not use `Resize-VHD`, this will corrupt your partition table.\n    * to recover incase you corrupt it, do following.\n        * boot using live gparted image.\n        * open terminal and use `testdisk`.\n        * properly select the partition type and try write the partition back.\n        * double check the `/etc/fstab` for partition uuid. (get partion uuid using gparted). (by right no change)\n\n### Optional Workflow Note\nConfigure new virtual switch (default switch need to use dhcp for internet and external network)\n* Open Hyper-V Manager after reboot.\n* Add new virtual switch (Internal) and named is as \"192.168.5.1\"\n* Search and start \"View network connections\".\n* Configure new vEthernet(192.168.5.1) with static ip of 192.168.5.1.\n\nWhen adding new virtual machine \n* Suffix it name with default ip such as 192.168.5.2\n* Add new network adapter and connect to \"192.168.5.1\" switch.\n* Start virtual machine and configure the adapter to be the assigned ip.\n\n## Configure Keyboard Shortcut.\n* Note: if app delay start when pressing shortcut, open menu and search for background apps. Then disable all except used one.\n\n## Configure dotfiles inside wsl\nClone dotfiles repo at https://github.com/farhanmustar/dotfiles.git.\n```bash\ngit clone https://github.com/farhanmustar/dotfiles.git\n```\n\n## Configure Keyboard Mapping\nTo remap \u003ckbd\u003ecaps_lock\u003c/kbd\u003e key to \u003ckbd\u003eesc\u003c/kbd\u003e key and \u003ckbd\u003escroll_lock\u003c/kbd\u003e key to \u003ckbd\u003ecaps_lock\u003c/kbd\u003e key. \n  - Double click ```keyboard_remap/remap_caps_lock_to_escape_scroll_lock_to_caps_lock.reg``` and accept importing the register\n\nTo restore back the keyboard layout maping to default value\n  - Double click ```keyboard_remap/default_keyboard_remap.reg``` and accept importing the register\n\n## Configure Browser\ninstall extension\n  - vimmium c\n      - configure search to accept js regex\n  - dark reader\n      - configure dark reader shortcut to ctrl+shift+d\n  - js error notify\n  - free download manager for chrome\n\n# Install Tiling Window Management (Komorebi)\n```bash\nscoop install komorebi\nscoop install autohotkey\n```\n* Set environment variable `KOMOREBI_CONFIG_HOME` to `~/.config/komorebi` (in full windows path)\n* Copy autohotkey script from `.config/komorebi` into `KOMOREBI_CONFIG_HOME` path.\n* Create link to following bash script and set `Ctrl + Alt + s` to execute it.\n```bash\nkomorebic.exe start\n```\n\n# Alternatively Software\n\n#### Gimp instead of Paint.net\n```powershell\nchoco install gimp -y\n```\nor gimp with photoshop-like plugin.\n```powershell\nchoco install photogimp -y\n```\n\n#### Chrome instead of Edge\n```powershell\nchoco install googlechrome -y\n```\n\n#### Virtualbox instead of Hyper-V\n```powershell\nchoco install virtualbox -y --params \"/ExtensionPack\"\n```\n\n# Extra Note\n\u003c!-- TODO: need to migrate this to wsl --\u003e \n\n## PlatformIO Development\nNeed to use pip to install only. Refer to python section to install pip.\n```\npip install platformio\n```\n\n## PCB Circuit Design\nDownload easyeda manually, for now no package on chocolatey.\n```powershell\nchoco install kicad -y\n```\nBuild in board should be enough, But if required can try to search at [snapeda.com](https://www.snapeda.com/kicad/).\nMaybe add other library:-\n[SparkFun](https://github.com/sparkfun/SparkFun-KiCad-Libraries.git)\n[Digi-Key](https://github.com/Digi-Key/digikey-kicad-library.git)\n\n## 3D CAD Editing\n```powershell\nchoco install freecad -y\n```\n\n## PC Gaming\n```powershell\nchoco install origin steam epicgameslauncher ds4windows -y\n```\n\n## Latex Editor\nCurrently not working, need to install manually.\nMiktex have mpm as its package manager can explore that.\n```powershell\nchoco install miktex --params '\"/Set:essential\"' -y\n```\n\n## Media Software\n\n### Webcam and Screen Recording\n```powershell\nchoco install obs-studio -y\n```\n```powershell\nchoco install screentogif -y\n```\n\n### Audio Editing\n```powershell\nchoco install audacity -y\n```\n\n### Video Editing\n```powershell\nchoco install kdenlive -y\n```\n\n### On-screen keyboard display\n```powershell\nchoco install keycastow -y\n```\n\n## Hard Disk Health Monitor and Benchmark Tools\n```powershell\nchoco install crystaldiskmark crystaldiskinfo -y\n```\n\n## Iso editing tools\n```powershell\nwinget install anyburn rufus\n```\n\n## VNC client\n```powershell\nwinget install tigervnc\n```\non ubuntu to run vnc server do this\n```bash\nsudo apt install x11vnc\nsudo -u guiuser bash -c \"x11vnc -forever -nopw -display :0\"\n# default port 5900\n```\n\n## Proxy connection\n* Using tinyproxy installed on ubuntu (wsl)\n```bash\nsudo apt install tinyproxy\n```\n* Tinyproxy default to use port 8888 and listend to all interface so no need to configure.\n* Wsl does not have systemd so we manually run tinyproxy.\n```bash\nsudo tinyproxy -d\n```\n* Port forward the port 8888 to remote server using `-R 8888:localhost:8888`\n* On the remote server we have to configure env variable to use the proxy.\n```bash\nexport http_proxy=\"http://localhost:8888/\"\nexport ftp_proxy=\"http://localhost:8888/\"\n```\n* For `apt`, it will not use proxy set by env. Instead add the following config.\n* edit `/etc/apt/apt.conf.d/99proxy.conf`\n```bash\nAcquire::http::Proxy \"http://localhost:8888\";\nAcquire::https::Proxy \"http://localhost:8888\";\n```\n\n# TODO\n\n## Explore Powershell Galery\nPowershell got its own build in module manager. Need to explore, as for now the package available is very limited.\n```\nhttps://www.powershellgallery.com/packages\n```\n\n## Explore Windows Package Manager\nWindows package manager.\n```\nhttps://docs.microsoft.com/en-gb/windows/package-manager/\n```\n\n# Abandon Note\nNote that are not relevant anymore.\n\n## Powershell Core Configuration\nChange Powershell tab completion behaviour and set ```ls``` alias to ```get-childitemcolorformatwide```\n\ncopy ```./PowerShell/profile.ps1``` to ```~/Documents/PowerShell/profile.ps1```\n\nset script execution policy to remotesigned\n```powershell\nSet-ExecutionPolicy remotesigned\n```\n\n## Install Scripts\ncopy content of ```./scripts``` to ```/ProgramData/Chocolatey/bin```\n\n## Recommended Package to Install\ninstall all other software using chocolatey\n```powershell\nchoco install `\npsutils get-childitemcolor `\npowershell-core `\nmicrosoft-windows-terminal `\nneovim universal-ctags git rclone `\nripgrep grep less which wget rsync watchexec fd tac findutils `\nputty.install vcxsrv `\n--install-arguments='\"ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1\"' `\n--params \"/NoGuiHereIntegration /NoShellHereIntegration\" `\n--ignore-checksums -y\n```\n\n### Note on watchexec\nFor now there is no watch replacement in windows.\nwatchexec is almost similar to watch, but only execute command if got file change.\nExemple: execute ```node index.js``` if file change in current directory.\n```\nwatchexec -- node .\\index.js\n```\nTIPS: for nodejs use ```console.clear()``` inside index.js to clear console log before print new stuff.\n\n## Configure NeoVim\nTo ensure consistent configuration path with linux,\n* set XDG_CONFIG_HOME to ```C:\\Users\\\u003cusername\u003e\\.config``` in user env variable.\n\nTo use Nightly NeoVim.\n```powershell\nchoco update neovim --pre\n```\n\n### Share clipboard with remote server through ssh with putty\n* On server, install xclip. For example, in ubuntu:\n```bash\napt install xclip\n```\n* Run the ```vcxsrv``` on host machine.\n* Set ```DISPLAY``` environment variable to ```localhost:10.0```\n```bash\nexport DISPLAY=localhost:10.0\n```\n* Test xserver forwarding working by using ```xclock```\n```bash\nxclock\n```\n\n## Configure Keyboard Shortcut.\nConfigure putty shortcut to be \u003c!-- ctrl + alt + r --\u003e \u003ckbd\u003ectrl\u003c/kbd\u003e + \u003ckbd\u003ealt\u003c/kbd\u003e + \u003ckbd\u003er\u003c/kbd\u003e\n\nConfigure windows terminal shortcut to be \u003c!-- ctrl + alt + t --\u003e \u003ckbd\u003ectrl\u003c/kbd\u003e + \u003ckbd\u003ealt\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e\n\n* open run \u003c!-- window + r --\u003e \u003ckbd\u003ewindow\u003c/kbd\u003e + \u003ckbd\u003er\u003c/kbd\u003e\n* run this ```shell:AppsFolder```\n* create shortcut for windows terminal at ```C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs```\n* right click properties and add keyboard shortcut.\n\n## Configure Putty\nputty use register to store settings. Double click on ```./putty/putty.reg``` then accept importing the register.\n\nconfigure shortcut for pagent to pass private key,   \njust add path of the key in quote after the pagent url.\n\nconfigure Xlaunch. then save the config to document folder. (xserver.xlaunch)\n\n## Configure Vim\nClone dotfiles repo at https://github.com/farhanmustar/dotfiles.git.\nRun vim and run ```:PlugInstall``` to install all plugins.\n```\ngit clone https://github.com/farhanmustar/dotfiles.git\n```\n\n## Configure Windows Terminal\ncopy paste settings from ```./windows-terminal/settings.json``` to terminal settings.\n\n## Openssl Tools\n```powershell\nchoco install openssl openssl-wizard -y\n```\n\n## Android  Development\n```powershell\nchoco install androidstudio -y\n```\nAdd set ANDROID_HOME path to the sdk path.\nAdd set JAVA_HOME path to ```C:\\Program Files\\Android\\Android Studio\\jre```\nAdd ```C:\\Program Files\\Android\\Android Studio\\jre\\bin``` to Path env variable.\nAdd sdk/tools, sdk/tools/bin and sdk/platform-tools to Path env variable.\n\n## Nodejs Development\n```powershell\nchoco install nodejs -y\n```\nbasic tools used to build pkg manually.\n```powershell\nsudo npm install -g windows-build-tools\n```\n\n## Python 2.x Development\n```powershell\nchoco install python2 -y\n```\n\nRemove python alias.\nwindows did that to auto start windows store when use python keyword.why!!!\n* Go to start menu and search ```manage app execution aliases```\n* Disable alias for python and python 3.\n\n## PHP Development\n```powershell\nchoco install composer -y\n```\n\n## Arduino Development\n```powershell\nchoco install arduino arduino-cli -y\n```\n\n## Use pageant for powershell openssh ssh-agent.\nInstall wsl-ssh-pageant to allow use of pageant as ssh auth. (required scoop package manager)\n```\nscoop install wsl-ssh-pageant\n```\ncopy ssh-pageant.bat script and added to path.\ncopy script from ```./scripts/ssh-pageant.bat``` to ```/ProgramData/Chocolatey/bin```\nset env variable SSH_AUTH_SOCK to ssh-pageant.\n```\nSSH_AUTH_SOCK=\\\\.\\pipe\\ssh-pageant\n```\nHow to use.\n* start Pageant.\n* run ```ssh-pageant``` command from terminal.\n* use ```ssh``` command as usual.\n\n\n## Use pageant for git ssh auth\nconfigure git to use ssh key from putty. (git use windows credential manager for http/s)\n\u003enote that thare is bug to add new server to known host in terminal. need to manually ssh using putty and accept in gui.\n\nSet env variable GIT_SSH to plink.exe path. hint: use ```which plink``` to display its path.\n```\nGIT_SSH=C:\\ProgramData\\chocolatey\\bin\\PLINK.EXE\n```\n\n## Use pass pagent as ssh-agent to wsl from windows host.\nFollow similar step to use pagent in powershell ssh-agent.\nThen in wsl add environment variable in .bashrc\n```bash\nexport SSH_AUTH_SOCK=/mnt/c/ssh-agent.sock\n```\n\n\n# Experimental (winget)\n* Microsoft added winget which is a build in package manager preloaded with windows.\n* Noticed this is more like semi auto as the permission popup still require user input.\n```powershell\nwinget install wez.wezterm `\nfamatech.advancedipscanner `\nmicrosoft.powertoys `\nlogitech.options `\n7zip.7zip `\nflameshot.flameshot `\nnotepad++ `\nchocolatey `\nlibreoffice `\nvideolan.vlc `\ninkscape.inkscape `\nmozilla.firefox `\nnickemanarin.screentogif `\ndotpdnllc.paintdotnet `\nAntibodySoftware.WizTree `\nkde.kdenlive `\nobsproject.obsstudio `\ntechpowerup.gpu-z `\ntechpowerup.gpu-z `\nlars-berger.GlazeWM `\nCPUID.HWMonitor `\n--disable-interactivity \n```\n## Extra\n```powershell\nwinget install `\npostman.postman `\nhandbrake.handbrake `\nmulaRahul.Keyviz `\n--disable-interactivity \n```\n# TODO:\npencil project ui design\ngravit designer\n\n# Hyper-V for Windows Home\nhttps://github.com/proviq/AccountManagement/releases\nhttps://www.makeuseof.com/install-hyper-v-windows-11-home/\n```bat\npushd \"%~dp0\"\ndir /b %SystemRoot%\\servicing\\Packages\\*Hyper-V*.mum \u003ehyper-v.txt\nfor /f %%i in ('findstr /i . hyper-v.txt 2^\u003enul') do dism /online /norestart /add-package:\"%SystemRoot%\\servicing\\Packages\\%%i\"\ndel hyper-v.txt\nDism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL\npause\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffarhanmustar%2Fwindows-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffarhanmustar%2Fwindows-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffarhanmustar%2Fwindows-config/lists"}