Compare commits

..

No commits in common. "1675396d12bdb9b59f485103f713989e170f3f23" and "bb1e9a6efbbc25dbb4a719883f84b31254626441" have entirely different histories.

3 changed files with 5 additions and 66 deletions

2
kf-manager.desktop Normal file → Executable file
View File

@ -3,7 +3,7 @@ Encoding=UTF-8
Version=1.0 Version=1.0
Type=Application Type=Application
Terminal=false Terminal=false
Exec=/home/kamma/jdk-21.0.9+10/bin/java -jar /home/kamma/projects/kf-manager/target/kf-manager-1.0-SNAPSHOT-jar-with-dependencies.jar Exec=java -jar /home/kamma/projects/kf-manager/target/kf-manager-1.0-SNAPSHOT-jar-with-dependencies.jar
Name=KF File Manager Name=KF File Manager
Icon=/home/kamma/projects/kf-manager/src/main/resources/icon.png Icon=/home/kamma/projects/kf-manager/src/main/resources/icon.png
StartupWMClass=cz-kamma-kfmanager-MainApp StartupWMClass=cz-kamma-kfmanager-MainApp

View File

@ -5,7 +5,6 @@ import cz.kamma.kfmanager.model.FileItem;
import java.io.*; import java.io.*;
import java.nio.file.*; import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.PosixFilePermission;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@ -186,14 +185,8 @@ public class FileOperations {
} }
try { try {
Files.setLastModifiedTime(target, Files.getLastModifiedTime(source)); Files.setLastModifiedTime(target, Files.getLastModifiedTime(source));
try {
Set<PosixFilePermission> permissions = Files.getPosixFilePermissions(source);
Files.setPosixFilePermissions(target, permissions);
} catch (UnsupportedOperationException ignore) {
// Not a POSIX filesystem
}
} catch (IOException e) { } catch (IOException e) {
// Ignore failure to set time or permissions on some filesystems // Ignore failure to set time on some filesystems (like network mounts)
} }
} }
@ -229,14 +222,6 @@ public class FileOperations {
while (true) { while (true) {
try { try {
Files.createDirectories(targetDir); Files.createDirectories(targetDir);
try {
Set<PosixFilePermission> permissions = Files.getPosixFilePermissions(dir);
Files.setPosixFilePermissions(targetDir, permissions);
} catch (UnsupportedOperationException ignore) {
} catch (IOException e) {
// Ignore permission set failures for directories too
}
if (!dir.toAbsolutePath().normalize().equals(effectiveSource)) { if (!dir.toAbsolutePath().normalize().equals(effectiveSource)) {
currentItem[0]++; currentItem[0]++;
if (callback != null) { if (callback != null) {

View File

@ -14,7 +14,6 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -2305,36 +2304,17 @@ public class MainWindow extends JFrame {
new ProcessBuilder("open", "-a", "Terminal", currentDir.getAbsolutePath()).directory(currentDir).start(); new ProcessBuilder("open", "-a", "Terminal", currentDir.getAbsolutePath()).directory(currentDir).start();
} else { } else {
// Linux - try common terminal emulators // Linux - try common terminal emulators
List<String> terminals = new ArrayList<>(); String[] terminals = {
// 1. Try $TERMINAL environment variable
String envTerminal = System.getenv("TERMINAL");
if (envTerminal != null && !envTerminal.isEmpty()) {
terminals.add(envTerminal);
}
// 2. Try xdg-terminal-exec (modern standard)
terminals.add("xdg-terminal-exec");
// 3. Common terminal emulators
terminals.addAll(Arrays.asList(
"x-terminal-emulator", "x-terminal-emulator",
"gnome-terminal", "gnome-terminal",
"konsole", "konsole",
"xfce4-terminal", "xfce4-terminal",
"alacritty",
"kitty",
"foot",
"wezterm",
"mate-terminal", "mate-terminal",
"terminator", "terminator",
"tilix", "tilix",
"qterminal", "qterminal",
"urxvt",
"st",
"xterm" "xterm"
)); };
boolean successfullyStarted = false; boolean successfullyStarted = false;
for (String terminal : terminals) { for (String terminal : terminals) {
@ -2351,24 +2331,6 @@ public class MainWindow extends JFrame {
args.add(shellCommand); args.add(shellCommand);
args.add("-i"); args.add("-i");
} }
} else if (terminal.equals("alacritty") || terminal.equals("foot")) {
args.add("--working-directory");
args.add(currentDir.getAbsolutePath());
if (shellCommand != null) {
args.add("-e");
args.add(shellCommand);
args.add("-i");
}
} else if (terminal.equals("kitty") || terminal.equals("wezterm")) {
// Kitty/Wezterm use 'start' or similar, but often just taking args
if (terminal.equals("kitty")) {
args.add("--directory");
args.add(currentDir.getAbsolutePath());
}
if (shellCommand != null) {
args.add(shellCommand);
args.add("-i");
}
} else if (terminal.equals("konsole") || terminal.equals("qterminal")) { } else if (terminal.equals("konsole") || terminal.equals("qterminal")) {
args.add("--workdir"); args.add("--workdir");
args.add(currentDir.getAbsolutePath()); args.add(currentDir.getAbsolutePath());
@ -2510,16 +2472,8 @@ public class MainWindow extends JFrame {
// Otherwise try running as a native process // Otherwise try running as a native process
List<String> cmdList = parseCommand(command); List<String> cmdList = parseCommand(command);
// Check if command contains shell metacharacters
boolean hasShellMeta = command.matches(".*[|&<>$!;*?].*");
try { try {
if (hasShellMeta && (MainApp.CURRENT_OS == MainApp.OS.LINUX || MainApp.CURRENT_OS == MainApp.OS.MACOS)) {
new ProcessBuilder("sh", "-c", command).directory(currentDir).start();
} else {
new ProcessBuilder(cmdList).directory(currentDir).start(); new ProcessBuilder(cmdList).directory(currentDir).start();
}
} catch (IOException ex) { } catch (IOException ex) {
// Fallback for different OS: try via shell // Fallback for different OS: try via shell
if (MainApp.CURRENT_OS == MainApp.OS.LINUX || MainApp.CURRENT_OS == MainApp.OS.MACOS) { if (MainApp.CURRENT_OS == MainApp.OS.LINUX || MainApp.CURRENT_OS == MainApp.OS.MACOS) {