--- src/ime-core/imi_options.cpp~ 2012-05-13 22:55:19.000000000 -0500 +++ src/ime-core/imi_options.cpp 2012-05-13 23:08:27.566965023 -0500 @@ -73,12 +73,15 @@ CSimplifiedChinesePolicy::loadResources( if (!m_user_data_dir.size()) { char path[256]; - const char *home = getenv("HOME"); - snprintf(path, - sizeof(path), - "%s/%s", - home, - SUNPINYIN_USERDATA_DIR_PREFIX); + const char *home = getenv("XDG_CONFIG_HOME"); + if (home == NULL) + snprintf(path, sizeof(path), + "%s/.config/%s", getenv("HOME"), + SUNPINYIN_USERDATA_DIR_PREFIX); + else + snprintf(path, sizeof(path), + "%s/%s", home, + SUNPINYIN_USERDATA_DIR_PREFIX); m_user_data_dir = path; } diff -uNr src/ime-core/imi_options.h src/ime-core/imi_options.h --- src/ime-core/imi_options.h 2010-09-22 13:14:35.883000000 +0800 +++ src/ime-core/imi_options.h 2010-09-22 13:15:20.760000002 +0800 @@ -50,7 +50,7 @@ #include "pinyin/shuangpin_seg.h" #ifndef SUNPINYIN_USERDATA_DIR_PREFIX -#define SUNPINYIN_USERDATA_DIR_PREFIX ".sunpinyin" +#define SUNPINYIN_USERDATA_DIR_PREFIX "sunpinyin" #endif struct CSimplifiedChinesePolicy : public IConfigurable