From 2a433857254d4960d37b5985240250b75f85837a Mon Sep 17 00:00:00 2001 From: mrrpmeowfurry Date: Thu, 11 Jun 2026 21:56:32 +0700 Subject: [PATCH 1/2] fix: createFileOnDesktop on Linux --- .../com/pryzmm/splitself/file/DesktopFileUtil.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/pryzmm/splitself/file/DesktopFileUtil.java b/src/main/java/com/pryzmm/splitself/file/DesktopFileUtil.java index c92271e..b1d5519 100644 --- a/src/main/java/com/pryzmm/splitself/file/DesktopFileUtil.java +++ b/src/main/java/com/pryzmm/splitself/file/DesktopFileUtil.java @@ -9,11 +9,22 @@ import java.nio.file.StandardCopyOption; public class DesktopFileUtil { - public static void createFileOnDesktop(String fileName, String content) { + // getHomeDirectory() return user's Desktop on Windows + // but on UNIX/Linux it will return user's home directory + + // https://stackoverflow.com/questions/570401/in-java-under-windows-how-do-i-find-a-redirected-desktop-folder#comment10308923_570536 File desktop = FileSystemView.getFileSystemView().getHomeDirectory(); File file = new File(desktop, fileName); + if (System.getProperty("os.name").toLowerCase().contains("win")) { + desktop = desktop; + } else { + // os isn't win put Desktop + desktop = new File(desktop, "Desktop"); + } + + SplitSelf.LOGGER.info("file: " + desktop); try { if (!file.exists()) { boolean created = file.createNewFile(); From 4cba039a4685fd9ca7f9bb88cfc38ed28e718b62 Mon Sep 17 00:00:00 2001 From: mrrpmeowfurry Date: Thu, 11 Jun 2026 21:59:22 +0700 Subject: [PATCH 2/2] fix: it'd be better to have a helper to getDesktopDirectory --- .../splitself/file/DesktopFileUtil.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/pryzmm/splitself/file/DesktopFileUtil.java b/src/main/java/com/pryzmm/splitself/file/DesktopFileUtil.java index b1d5519..0e8f158 100644 --- a/src/main/java/com/pryzmm/splitself/file/DesktopFileUtil.java +++ b/src/main/java/com/pryzmm/splitself/file/DesktopFileUtil.java @@ -9,22 +9,24 @@ import java.nio.file.StandardCopyOption; public class DesktopFileUtil { - public static void createFileOnDesktop(String fileName, String content) { + private static File getDesktopDirectory() { // getHomeDirectory() return user's Desktop on Windows // but on UNIX/Linux it will return user's home directory // https://stackoverflow.com/questions/570401/in-java-under-windows-how-do-i-find-a-redirected-desktop-folder#comment10308923_570536 - File desktop = FileSystemView.getFileSystemView().getHomeDirectory(); - File file = new File(desktop, fileName); + File home = FileSystemView.getFileSystemView().getHomeDirectory(); if (System.getProperty("os.name").toLowerCase().contains("win")) { - desktop = desktop; - } else { - // os isn't win put Desktop - desktop = new File(desktop, "Desktop"); + return home; } - SplitSelf.LOGGER.info("file: " + desktop); + return new File(home, "Desktop"); + } + + public static void createFileOnDesktop(String fileName, String content) { + File desktop = getDesktopDirectory(); + File file = new File(desktop, fileName); + try { if (!file.exists()) { boolean created = file.createNewFile(); @@ -44,7 +46,7 @@ public static void createFileOnDesktop(String fileName, String content) { public static void cloneFileToDesktop(Identifier identifier) { String resourcePath = "assets/" + identifier.getNamespace() + "/" + identifier.getPath(); - Path destination = FileSystemView.getFileSystemView().getHomeDirectory().toPath().resolve(Path.of(identifier.getPath()).getFileName()); + Path destination = getDesktopDirectory().toPath().resolve(Path.of(identifier.getPath()).getFileName()); try (InputStream in = DesktopFileUtil.class.getClassLoader().getResourceAsStream(resourcePath)) { if (in == null) throw new IOException("Resource not found: " + resourcePath); Files.copy(in, destination, StandardCopyOption.REPLACE_EXISTING);