Ticket #6664: xdg-base-dirs.patch

File xdg-base-dirs.patch, 2.5 KB (added by bastiK, 8 years ago)
  • src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java

     
    367367        });
    368368    }
    369369
     370    private boolean dotPrefDirExists() {
     371        return new File(System.getProperty("user.home"), ".josm").exists();
     372    }
     373
    370374    @Override
    371375    public File getDefaultCacheDirectory() {
    372         return new File(Main.pref.getUserDataDirectory(), "cache");
     376        if (dotPrefDirExists()) {
     377            return new File(System.getProperty("user.home") + File.separator
     378                    + ".josm" + File.separator + "cache");
     379        } else {
     380            String xdgCacheDir = System.getenv("XDG_CACHE_HOME");
     381            if (xdgCacheDir != null && !xdgCacheDir.isEmpty()) {
     382                return new File(xdgCacheDir, "JOSM");
     383            } else {
     384                return new File(System.getProperty("user.home") + File.separator +
     385                        ".cache" + File.separator + "JOSM");
     386            }
     387        }
    373388    }
    374389
    375390    @Override
    376391    public File getDefaultPrefDirectory() {
    377         return new File(System.getProperty("user.home"), ".josm");
     392        if (dotPrefDirExists()) {
     393            return new File(System.getProperty("user.home"), ".josm");
     394        } else {
     395            String xdgConfigDir = System.getenv("XDG_CONFIG_HOME");
     396            if (xdgConfigDir != null && !xdgConfigDir.isEmpty()) {
     397                return new File(xdgConfigDir, "JOSM");
     398            } else {
     399                return new File(System.getProperty("user.home") + File.separator +
     400                        ".config" + File.separator + "JOSM");
     401            }
     402        }
    378403    }
    379404
    380405    @Override
    381406    public File getDefaultUserDataDirectory() {
    382         // Use preferences directory by default
    383         return Main.pref.getPreferencesDirectory();
     407        if (dotPrefDirExists()) {
     408            return new File(System.getProperty("user.home"), ".josm");
     409        } else {
     410            String xdgDataDir = System.getenv("XDG_DATA_HOME");
     411            if (xdgDataDir != null && !xdgDataDir.isEmpty()) {
     412                return new File(xdgDataDir, "JOSM");
     413            } else {
     414                return new File(System.getProperty("user.home") + File.separator +
     415                        ".local" + File.separator + "share" + File.separator + "JOSM");
     416            }
     417        }
    384418    }
    385419
    386420}