From effadc84fe975b3a294cb981186cc0ee4c6f124b Mon Sep 17 00:00:00 2001 From: rdavidek Date: Tue, 10 Mar 2026 20:38:12 +0100 Subject: [PATCH] embedded icon for linux --- src/main/java/cz/kamma/kfmanager/MainApp.java | 2 +- .../java/cz/kamma/kfmanager/ui/FilePanelTab.java | 14 +++++++++++--- .../java/cz/kamma/kfmanager/ui/MainWindow.java | 12 +++++++++++- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/main/java/cz/kamma/kfmanager/MainApp.java b/src/main/java/cz/kamma/kfmanager/MainApp.java index 999910a..0ceaecf 100644 --- a/src/main/java/cz/kamma/kfmanager/MainApp.java +++ b/src/main/java/cz/kamma/kfmanager/MainApp.java @@ -15,7 +15,7 @@ import java.io.InputStreamReader; */ public class MainApp { - public static final String APP_VERSION = "1.2.2"; + public static final String APP_VERSION = "1.2.3"; public enum OS { WINDOWS, LINUX, MACOS, UNKNOWN diff --git a/src/main/java/cz/kamma/kfmanager/ui/FilePanelTab.java b/src/main/java/cz/kamma/kfmanager/ui/FilePanelTab.java index 498a9dd..6db8b92 100644 --- a/src/main/java/cz/kamma/kfmanager/ui/FilePanelTab.java +++ b/src/main/java/cz/kamma/kfmanager/ui/FilePanelTab.java @@ -3103,11 +3103,20 @@ public class FilePanelTab extends JPanel { } private boolean isExecutableWithEmbeddedIcon(FileItem item, FileSpecificIcon.Type fileType) { - if (MainApp.CURRENT_OS != MainApp.OS.WINDOWS || item == null || fileType != FileSpecificIcon.Type.EXEC) { + if (item == null) { return false; } File file = item.getFile(); - return file != null && file.isFile() && file.exists(); + if (file == null || !file.isFile() || !file.exists()) { + return false; + } + if (MainApp.CURRENT_OS == MainApp.OS.WINDOWS) { + return fileType == FileSpecificIcon.Type.EXEC; + } + if (MainApp.CURRENT_OS == MainApp.OS.LINUX) { + return fileType == FileSpecificIcon.Type.EXEC || file.canExecute(); + } + return false; } private Icon getExecutableEmbeddedIcon(FileItem item) { @@ -3815,4 +3824,3 @@ public class FilePanelTab extends JPanel { } } } - diff --git a/src/main/java/cz/kamma/kfmanager/ui/MainWindow.java b/src/main/java/cz/kamma/kfmanager/ui/MainWindow.java index 20ade08..ad74eac 100644 --- a/src/main/java/cz/kamma/kfmanager/ui/MainWindow.java +++ b/src/main/java/cz/kamma/kfmanager/ui/MainWindow.java @@ -667,7 +667,17 @@ public class MainWindow extends JFrame { private Icon getToolbarShortcutIcon(File target) { FileSpecificIcon.Type fileType = FileSpecificIcon.getFileType(target.getName()); - if (MainApp.CURRENT_OS == MainApp.OS.WINDOWS && fileType == FileSpecificIcon.Type.EXEC && target.isFile()) { + boolean isExecutableWithEmbeddedIcon = false; + + if (target.isFile()) { + if (MainApp.CURRENT_OS == MainApp.OS.WINDOWS) { + isExecutableWithEmbeddedIcon = fileType == FileSpecificIcon.Type.EXEC; + } else if (MainApp.CURRENT_OS == MainApp.OS.LINUX) { + isExecutableWithEmbeddedIcon = fileType == FileSpecificIcon.Type.EXEC || target.canExecute(); + } + } + + if (isExecutableWithEmbeddedIcon) { try { Icon systemIcon = FileSystemView.getFileSystemView().getSystemIcon(target); if (systemIcon != null) {