%AppData%: Use it.

2012

Dear developers of cross-platform software, I love your software, but there is one thing about Windows you need to learn:

On Linux, application data goes in folders in your home directory. These folders are named after an application and preceded by a period. On Linux, folder names which start with periods are hidden. I don’t see hidden folders, so I don’t see all the config files. I am happy.

On Windows, application data goes in the %AppData% folder, or for large data files, the %LocalAppData% folder. These folders are hidden by default. Config files don’t clutter up my home directory. I am happy.

Here’s the problem: on Windows, application data does not go in the home directory in folders named after applications and preceded by periods. On Windows, folder names which start with periods are not hidden by default. Furthermore, the home directory is not the appropriate place for config files. I see lots of dot-folders cluttering up my home directory. I am unhappy.

In my crusade to put things where they are supposed to go, I have learned a couple things:

  • Some applications have config files which let you change where they put their config files. Others use environment variables. I will list the modifications necessary to fix certain applications below. If you have a fix for an application I haven’t listed, please tell me in the comments and I’ll add it.
  • Some applications are beyond help. In this case, you can hide the files yourself from a command prompt with the following command:
    attrib +S +H "file or folder to hide"

Android SDK

Set an environment variable named ANDROID_SDK_HOME with the value C:\Users\USERNAME\AppData\Local and move the .android folder from your home directory to the local appdata directory. If there are any .ini files in the .android\avd folder, open those and check for any paths that need to be updated.

Netbeans

The newest version of Netbeans finally uses AppData! For older versions, open C:\Program Files\Netbeans\etc\netbeans.conf in a text editor with admin rights (the actual directory may depend on your version of Netbeans). Change the value of netbeans_default_userdir and add a -J-Duser.home property to netbeans_default_options like so:

# ${HOME} will be replaced by JVM user.home system property
netbeans_default_userdir="${HOME}/AppData/Roaming/Netbeans"
 
# Options used by NetBeans launcher by default, can be overridden by explicit
# command line switches:
netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true -J-Duser.home=C:/Users/USERNAME/AppData/Roaming/Netbeans"
# Note that a default -Xmx is selected for you automatically.
. . .