Use XDG_CONFIG_HOME

This commit is contained in:
Nathan McRae 2025-01-20 20:13:44 -08:00
parent 837b08c4cb
commit 0704a4a931
2 changed files with 20 additions and 9 deletions

View File

@ -118,12 +118,10 @@ public class MainController implements Initializable {
XmlMapper xmlMapper = new XmlMapper(); XmlMapper xmlMapper = new XmlMapper();
xmlMapper.registerModule(new JavaTimeModule()); xmlMapper.registerModule(new JavaTimeModule());
String userHome = System.getProperty("user.home"); String userHome = System.getProperty("user.home");
// TODO: XDG
Path directoryPath = Paths.get(userHome, ".numbers-station");
Path filePath = directoryPath.resolve("settings.xml");
try {
// Create the directory if it doesn't exist Path filePath = MainSettings.getSettingsFilePath();
Path directoryPath = filePath.getParent();
try {
if (!Files.exists(directoryPath)) { if (!Files.exists(directoryPath)) {
Files.createDirectories(directoryPath); Files.createDirectories(directoryPath);
} }

View File

@ -25,6 +25,21 @@ public class MainSettings {
stations.add(new StationSettings("Station 1")); stations.add(new StationSettings("Station 1"));
} }
public static Path getSettingsFilePath() {
String configHome = System.getenv("XDG_CONFIG_HOME");
Path directoryPath;
Path filePath;
if (configHome != null && !configHome.isEmpty()) {
directoryPath = Paths.get(configHome, "numbers-station");
} else {
String userHome = System.getProperty("user.home");
directoryPath = Paths.get(userHome, ".config", "numbers-station");
}
return directoryPath.resolve("main-settings.xml");
}
public ArrayList<StationSettings> getStations() { public ArrayList<StationSettings> getStations() {
return stations; return stations;
} }
@ -58,11 +73,9 @@ public class MainSettings {
xmlMapper.registerModule(new JavaTimeModule()); xmlMapper.registerModule(new JavaTimeModule());
xmlMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); xmlMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
try { try {
String userHome = System.getProperty("user.home"); Path filePath = getSettingsFilePath();
Path directoryPath = Paths.get(userHome, ".numbers-station"); Path directoryPath = filePath.getParent();
Path filePath = directoryPath.resolve("settings.xml");
// Create the directory if it doesn't exist
if (!Files.exists(directoryPath)) { if (!Files.exists(directoryPath)) {
Files.createDirectories(directoryPath); Files.createDirectories(directoryPath);
} }