Intro
I’m a die-hard Windows guy. To begin with, I can’t live without OneNote — I’ve been a big fan of it for 10+ years (since its debut in Office 2003), including 5+ years on ThinkPad X201T with its Wacom-based digitizer stylus. But in the world of computer science, Windows is often a 2nd citizen to unix-ish platforms. Unwilling to give up the conveniences, I gradually came up with a setup that allows some unix-ness while staying “clean”.
File Organization
All below are placed under a single “root” folder. For me it’s usually a single NTFS partition, but it could be a folder in the system partition (e.g. my current lab PC). Of course you could always subst
(read: mount
or symlink) any folder to a partition and vice versa but I wouldn’t bother.
Whenever possible, I use BTSync v1.4 (version pinned because they’re steadily making the client ransomware) for synchronization across all my PCs. Dotfiles (currently only vim
) are managed with Git instead.
Essential:
/app
: Home of self-contained apps. Most of them do not depend on DLLs insystem32
, registry, or other Windows artifacts, which in turn means little/no need for “installer”.anaconda
,arduino
,dosbox
,git
,lua
,msys64
,octave
,texlive
,vagrant
…putty
,winscp
kmplayer
,inkscape
,fritzing
vim
/appdata
: Some apps (not limited to those in/app
) manage large blobs of data. Instead of having them stored in system partition which often gets wiped, I’d rather redirect them here (symbolic link when necessary).vagrant
(because box images are stored here)altium
,eagle
evernote
,onenote
(I mostly leaveonenote
alone now, but if I don’t I put it here)SteamLibrary
foobar2000
(kinda tricky — might be removed)
/bin
: Different from/app
, this is where I put various single-binary apps/utils and shell/batch scripts.ctags
,curl
,wget
massren
,jq
nssm
,sscom32
,streams
,hxd
,rapidee
/conf
: Configurations. BTSync’d. The most common usages are:- symbolically linked to app’s own config files/folders
- manually saved/loaded in app
/home
:~
but only for dotfiles. This can be done because some unix-ish tools (vim, ssh, bash, etc.) actually respect%HOME%
env var..ssh
.vim
,vimfiles
/lib
: Not every programming language hasnpm
. Plus even in the case of Javascript I sometimes have the need to work on libraries written by someone else.goroot
: forgo
-lang, which dumps everything hereMatLab
: because you always seem to need to copy individual scripts/functions around (so uncivilized!)
My data:
/incoming
: Downloads I’m too lazy to immediately categorize/share
: Large folders shared with others through BTSync/music
,/video
: as advertised/proj
,/school
: also as advertised/res
: Resources. BTSync’d. Usually PDFs that sum up to large sizes./book
/datasheet
/font
/ref
: References (e.g. tutorials, white papers, manuals, etc.)
/sketch
: Temporary workspaces. Some are mini-projects that never got to “complete” status but I still find useful.
Environment Variables
Hint: rapidee
is a decent GUI-based env manager.
HOME
:/home
GOROOT
:/lib/goroot
VAGRANT_HOME
:/appdata/vagrant
APATH
: Installers often modifyPATH
, which can mix up with my ownPATH
s. This variable essentially “refactors out” these paths. Use: prepend%APATH%;
toPATH
.
Dependencies
gVim
: latestpython
: 2.7git
: latest- official Windows
msysgit
installer- PATH: Use Git from the Windows Command Prompt
- CrLf: Checkout as-is, commit Unix
- GUI: Git Extensions (latest)
- official Windows
node
: latestgo
: latest
Some Tricks
Startup Tasks
Win+R
, shell:startup
Now you have access to the old good Startup
folder where you can create shortcuts to existing stuff.
Disable Windows Defender
Source: http://slashgenie.com/permanently-disable-windows-defender-in-windows-10/
gpedit.msc
(group policy):
Computer Configuration
/ Administrative Templates
/ Windows Components
/ Windows Defender
/ Turn off Windows Defender
EDIT: doesn’t seem to work…
CapsLock remap as IME switch
Using AHK:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CapsLock::#Space | |
+CapsLock::+#Space |
I know that many programmers like to have Ctrl on the home row. For me the muscle memory is too hard to correct, but before I came across this, I haven’t come up with anything useful to map to the “waste key”…