From 0704a4a93164c08e73fedba2f07a4aeee02c9b3f Mon Sep 17 00:00:00 2001 From: Nathan McRae Date: Mon, 20 Jan 2025 20:13:44 -0800 Subject: [PATCH] Use XDG_CONFIG_HOME --- .../numbersstation/MainController.java | 8 +++---- .../numbersstation/MainSettings.java | 21 +++++++++++++++---- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main/java/name/nathanmcrae/numbersstation/MainController.java b/src/main/java/name/nathanmcrae/numbersstation/MainController.java index 3a840e0..988a5ef 100644 --- a/src/main/java/name/nathanmcrae/numbersstation/MainController.java +++ b/src/main/java/name/nathanmcrae/numbersstation/MainController.java @@ -118,12 +118,10 @@ public class MainController implements Initializable { XmlMapper xmlMapper = new XmlMapper(); xmlMapper.registerModule(new JavaTimeModule()); 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)) { Files.createDirectories(directoryPath); } diff --git a/src/main/java/name/nathanmcrae/numbersstation/MainSettings.java b/src/main/java/name/nathanmcrae/numbersstation/MainSettings.java index 24b4415..f8aac36 100644 --- a/src/main/java/name/nathanmcrae/numbersstation/MainSettings.java +++ b/src/main/java/name/nathanmcrae/numbersstation/MainSettings.java @@ -25,6 +25,21 @@ public class MainSettings { 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 getStations() { return stations; } @@ -58,11 +73,9 @@ public class MainSettings { xmlMapper.registerModule(new JavaTimeModule()); xmlMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); try { - String userHome = System.getProperty("user.home"); - Path directoryPath = Paths.get(userHome, ".numbers-station"); - Path filePath = directoryPath.resolve("settings.xml"); + Path filePath = getSettingsFilePath(); + Path directoryPath = filePath.getParent(); - // Create the directory if it doesn't exist if (!Files.exists(directoryPath)) { Files.createDirectories(directoryPath); }