embedded icon for linux

This commit is contained in:
rdavidek 2026-03-10 20:38:12 +01:00
parent 5841d45b4c
commit effadc84fe
3 changed files with 23 additions and 5 deletions

View File

@ -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

View File

@ -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 {
}
}
}

View File

@ -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) {