diff --git a/app/src/main/java/io/xpipe/app/action/ActionJacksonMapper.java b/app/src/main/java/io/xpipe/app/action/ActionJacksonMapper.java index ca2c3b31f..6508a5dbb 100644 --- a/app/src/main/java/io/xpipe/app/action/ActionJacksonMapper.java +++ b/app/src/main/java/io/xpipe/app/action/ActionJacksonMapper.java @@ -14,9 +14,6 @@ import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.ObjectNode; import java.util.ArrayList; -import java.util.Map; -import java.util.SequencedCollection; -import java.util.SequencedSet; public class ActionJacksonMapper { diff --git a/app/src/main/java/io/xpipe/app/beacon/AppBeaconCache.java b/app/src/main/java/io/xpipe/app/beacon/AppBeaconCache.java index e579b7493..9452e6c72 100644 --- a/app/src/main/java/io/xpipe/app/beacon/AppBeaconCache.java +++ b/app/src/main/java/io/xpipe/app/beacon/AppBeaconCache.java @@ -1,6 +1,5 @@ package io.xpipe.app.beacon; -import io.xpipe.app.ext.DataStore; import io.xpipe.app.ext.ShellStore; import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.beacon.BeaconClientException; diff --git a/app/src/main/java/io/xpipe/app/beacon/impl/AskpassExchangeImpl.java b/app/src/main/java/io/xpipe/app/beacon/impl/AskpassExchangeImpl.java index c904b7520..b93140725 100644 --- a/app/src/main/java/io/xpipe/app/beacon/impl/AskpassExchangeImpl.java +++ b/app/src/main/java/io/xpipe/app/beacon/impl/AskpassExchangeImpl.java @@ -1,7 +1,6 @@ package io.xpipe.app.beacon.impl; import io.xpipe.app.core.AppLayoutModel; -import io.xpipe.app.issue.ErrorEvent; import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.terminal.TerminalView; import io.xpipe.app.util.*; diff --git a/app/src/main/java/io/xpipe/app/beacon/impl/DaemonModeExchangeImpl.java b/app/src/main/java/io/xpipe/app/beacon/impl/DaemonModeExchangeImpl.java index e0f63b2a2..d27564f9c 100644 --- a/app/src/main/java/io/xpipe/app/beacon/impl/DaemonModeExchangeImpl.java +++ b/app/src/main/java/io/xpipe/app/beacon/impl/DaemonModeExchangeImpl.java @@ -22,7 +22,7 @@ public class DaemonModeExchangeImpl extends DaemonModeExchange { OperationMode.switchToSyncIfPossible(mode); return DaemonModeExchange.Response.builder() - .usedMode(OperationMode.map(OperationMode.get())) + .usedMode(msg.getMode()) .build(); } diff --git a/app/src/main/java/io/xpipe/app/beacon/mcp/AppMcpServer.java b/app/src/main/java/io/xpipe/app/beacon/mcp/AppMcpServer.java index 501e17c64..7d2194b7b 100644 --- a/app/src/main/java/io/xpipe/app/beacon/mcp/AppMcpServer.java +++ b/app/src/main/java/io/xpipe/app/beacon/mcp/AppMcpServer.java @@ -9,10 +9,6 @@ import io.modelcontextprotocol.spec.McpSchema; import io.xpipe.app.core.AppProperties; import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.prefs.AppPrefs; -import io.xpipe.app.storage.DataStorage; -import io.xpipe.app.storage.DataStoreCategory; -import io.xpipe.app.storage.DataStoreEntry; -import io.xpipe.app.storage.StorageListener; import io.xpipe.app.util.ThreadHelper; import lombok.SneakyThrows; import lombok.Value; @@ -178,8 +174,6 @@ public class AppMcpServer { } else { transportProvider.doOther(exchange); } - } finally { - exchange.close(); } } }; diff --git a/app/src/main/java/io/xpipe/app/beacon/mcp/HttpStreamableServerTransportProvider.java b/app/src/main/java/io/xpipe/app/beacon/mcp/HttpStreamableServerTransportProvider.java index fc1a2aa95..18e17bf63 100644 --- a/app/src/main/java/io/xpipe/app/beacon/mcp/HttpStreamableServerTransportProvider.java +++ b/app/src/main/java/io/xpipe/app/beacon/mcp/HttpStreamableServerTransportProvider.java @@ -312,9 +312,7 @@ public class HttpStreamableServerTransportProvider implements McpStreamableServe return; } - McpSchema.InitializeRequest initializeRequest = objectMapper.convertValue(jsonrpcRequest.params(), - new TypeReference() { - }); + McpSchema.InitializeRequest initializeRequest = objectMapper.convertValue(jsonrpcRequest.params(), new TypeReference<>() {}); McpStreamableServerSession.McpStreamableServerSessionInit init = this.sessionFactory .startSession(initializeRequest); this.sessions.put(init.session().getId(), init.session()); diff --git a/app/src/main/java/io/xpipe/app/beacon/mcp/McpResources.java b/app/src/main/java/io/xpipe/app/beacon/mcp/McpResources.java index c86ad3648..536686071 100644 --- a/app/src/main/java/io/xpipe/app/beacon/mcp/McpResources.java +++ b/app/src/main/java/io/xpipe/app/beacon/mcp/McpResources.java @@ -5,8 +5,6 @@ import com.fasterxml.jackson.databind.JsonNode; import io.modelcontextprotocol.server.McpServerFeatures; import io.modelcontextprotocol.spec.McpSchema; import io.xpipe.app.storage.DataStorage; -import io.xpipe.beacon.BeaconClientException; -import io.xpipe.beacon.api.CategoryInfoExchange; import io.xpipe.core.JacksonMapper; import io.xpipe.core.StorePath; import lombok.Builder; @@ -15,7 +13,6 @@ import lombok.Value; import lombok.extern.jackson.Jacksonized; import org.apache.commons.lang3.ClassUtils; -import java.io.IOException; import java.time.Instant; import java.util.*; import java.util.stream.Collectors; @@ -72,7 +69,7 @@ public final class McpResources { JsonNode config; } - public static McpServerFeatures.SyncResourceSpecification connections() throws IOException { + public static McpServerFeatures.SyncResourceSpecification connections() { McpSchema.Annotations annotations = new McpSchema.Annotations(List.of(McpSchema.Role.ASSISTANT), 1.0); var resource = McpSchema.Resource.builder() .uri("xpipe://connections") @@ -115,7 +112,7 @@ public final class McpResources { } - public static McpServerFeatures.SyncResourceSpecification categories() throws IOException { + public static McpServerFeatures.SyncResourceSpecification categories() { McpSchema.Annotations annotations = new McpSchema.Annotations(List.of(McpSchema.Role.ASSISTANT), 0.3); var resource = McpSchema.Resource.builder() .uri("xpipe://categories") diff --git a/app/src/main/java/io/xpipe/app/beacon/mcp/McpToolHandler.java b/app/src/main/java/io/xpipe/app/beacon/mcp/McpToolHandler.java index fd7ae82f8..e094a631b 100644 --- a/app/src/main/java/io/xpipe/app/beacon/mcp/McpToolHandler.java +++ b/app/src/main/java/io/xpipe/app/beacon/mcp/McpToolHandler.java @@ -34,7 +34,7 @@ public interface McpToolHandler extends BiFunction getOptionalStringArgument(String key) throws BeaconClientException { + public Optional getOptionalStringArgument(String key) { var o = request.arguments().get(key); if (o == null) { return Optional.empty(); @@ -60,7 +60,7 @@ public interface McpToolHandler extends BiFunction getOptionalBooleanArgument(String key) throws BeaconClientException { + public Optional getOptionalBooleanArgument(String key) { var o = request.arguments().get(key); if (o == null) { return Optional.empty(); diff --git a/app/src/main/java/io/xpipe/app/beacon/mcp/McpTools.java b/app/src/main/java/io/xpipe/app/beacon/mcp/McpTools.java index fc95e8e15..2e3a3b2c4 100644 --- a/app/src/main/java/io/xpipe/app/beacon/mcp/McpTools.java +++ b/app/src/main/java/io/xpipe/app/beacon/mcp/McpTools.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.databind.node.JsonNodeFactory; import io.modelcontextprotocol.server.McpServerFeatures; import io.modelcontextprotocol.spec.McpSchema; import io.xpipe.app.beacon.AppBeaconServer; -import io.xpipe.app.beacon.BlobManager; import io.xpipe.app.core.AppExtensionManager; import io.xpipe.app.ext.ConnectionFileSystem; import io.xpipe.app.ext.FileEntry; @@ -12,23 +11,18 @@ import io.xpipe.app.ext.SingletonSessionStore; import io.xpipe.app.process.ShellControl; import io.xpipe.app.process.TerminalInitScriptConfig; import io.xpipe.app.process.WorkingDirectoryFunction; -import io.xpipe.app.storage.DataStorage; import io.xpipe.app.storage.DataStorageQuery; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.CommandDialog; -import io.xpipe.app.util.CommandSupport; import io.xpipe.app.util.ScriptHelper; import io.xpipe.beacon.BeaconClientException; import io.xpipe.core.FileInfo; import io.xpipe.core.FilePath; import io.xpipe.core.JacksonMapper; -import io.xpipe.core.ModuleLayerLoader; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.LinkedHashMap; -import java.util.UUID; import java.util.regex.Pattern; public final class McpTools { diff --git a/app/src/main/java/io/xpipe/app/browser/BrowserAbstractSessionModel.java b/app/src/main/java/io/xpipe/app/browser/BrowserAbstractSessionModel.java index c11465482..52de16916 100644 --- a/app/src/main/java/io/xpipe/app/browser/BrowserAbstractSessionModel.java +++ b/app/src/main/java/io/xpipe/app/browser/BrowserAbstractSessionModel.java @@ -32,7 +32,7 @@ public class BrowserAbstractSessionModel { } public void openSync(T e, BooleanProperty externalBusy) throws Exception { - try (var b = new BooleanScope(externalBusy != null ? externalBusy : new SimpleBooleanProperty()).start()) { + try (var ignored = new BooleanScope(externalBusy != null ? externalBusy : new SimpleBooleanProperty()).start()) { e.init(); // Prevent multiple calls from interfering with each other synchronized (this) { diff --git a/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionModel.java b/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionModel.java index 5e519f629..74076668c 100644 --- a/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionModel.java +++ b/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionModel.java @@ -89,7 +89,7 @@ public class BrowserFileChooserSessionModel extends BrowserAbstractSessionModel< ThreadHelper.runFailableAsync(() -> { BrowserFileSystemTabModel model; - try (var b = new BooleanScope(externalBusy != null ? externalBusy : new SimpleBooleanProperty()).start()) { + try (var ignored = new BooleanScope(externalBusy != null ? externalBusy : new SimpleBooleanProperty()).start()) { model = new BrowserFileSystemTabModel(this, store, selectionMode); model.init(); // Prevent multiple calls from interfering with each other diff --git a/app/src/main/java/io/xpipe/app/browser/BrowserFullSessionModel.java b/app/src/main/java/io/xpipe/app/browser/BrowserFullSessionModel.java index 2e63d6eae..9fa60da9e 100644 --- a/app/src/main/java/io/xpipe/app/browser/BrowserFullSessionModel.java +++ b/app/src/main/java/io/xpipe/app/browser/BrowserFullSessionModel.java @@ -221,8 +221,8 @@ public class BrowserFullSessionModel extends BrowserAbstractSessionModel { + case OsType.Windows ignored -> { var shell = LocalShell.getLocalPowershell(); if (shell.isEmpty()) { return; @@ -50,7 +50,7 @@ public class OpenFileNativeDetailsActionProvider implements BrowserActionProvide // So let's keep one process running shell.get().command(content).notComplex().execute(); } - case OsType.Linux linux -> { + case OsType.Linux ignored -> { var dbus = String.format( """ dbus-send --session --print-reply --dest=org.freedesktop.FileManager1 --type=method_call /org/freedesktop/FileManager1 org.freedesktop.FileManager1.ShowItemProperties array:string:"file://%s" string:"" @@ -69,7 +69,7 @@ public class OpenFileNativeDetailsActionProvider implements BrowserActionProvide : e.getParent())) .execute(); } - case OsType.MacOs macOs -> { + case OsType.MacOs ignored -> { sc.osascriptCommand(String.format( """ set fileEntry to (POSIX file "%s") as text diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserClipboard.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserClipboard.java index 4faecb639..361039c4c 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserClipboard.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserClipboard.java @@ -7,7 +7,6 @@ import io.xpipe.app.util.GlobalClipboard; import io.xpipe.app.util.GlobalObjectProperty; import javafx.beans.property.Property; -import javafx.beans.property.SimpleObjectProperty; import javafx.scene.input.ClipboardContent; import javafx.scene.input.DataFormat; import javafx.scene.input.Dragboard; diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileListComp.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileListComp.java index 2b859ea93..d47aba5fd 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileListComp.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileListComp.java @@ -37,7 +37,6 @@ import static javafx.scene.control.TableColumn.SortType.ASCENDING; public final class BrowserFileListComp extends SimpleComp { - private static final PseudoClass HIDDEN = PseudoClass.getPseudoClass("hidden"); private static final PseudoClass EMPTY = PseudoClass.getPseudoClass("empty"); private static final PseudoClass FILE = PseudoClass.getPseudoClass("file"); private static final PseudoClass FOLDER = PseudoClass.getPseudoClass("folder"); diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileSystemHistory.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileSystemHistory.java index 6889aa6ce..0d9603e41 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileSystemHistory.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileSystemHistory.java @@ -58,10 +58,6 @@ public final class BrowserFileSystemHistory { cursor.set(history.size() - 1); } - public FilePath back() { - return back(1); - } - public FilePath back(int i) { if (!canGoBack.get()) { return null; diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileSystemTabModel.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileSystemTabModel.java index 9ad25d2e3..43f9dc208 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileSystemTabModel.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileSystemTabModel.java @@ -25,15 +25,12 @@ import io.xpipe.core.FileKind; import io.xpipe.core.FilePath; import io.xpipe.core.OsType; -import javafx.beans.Observable; import javafx.beans.binding.Bindings; import javafx.beans.property.*; -import javafx.beans.value.ObservableDoubleValue; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; -import javafx.scene.control.SelectionMode; import lombok.Getter; import lombok.NonNull; diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileTransferOperation.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileTransferOperation.java index 71db170ac..03e8393f2 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileTransferOperation.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileTransferOperation.java @@ -17,7 +17,6 @@ import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.time.Duration; -import java.time.Instant; import java.util.LinkedHashMap; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -318,7 +317,6 @@ public class BrowserFileTransferOperation { var targetFs = target.getFileSystem().createTransferOptimizedFileSystem(); try { - var start = Instant.now(); AtomicLong transferred = new AtomicLong(); for (var e : flatFiles.entrySet()) { if (cancelled()) { @@ -355,8 +353,7 @@ public class BrowserFileTransferOperation { targetFile, targetFs, transferred, - totalSize, - start); + totalSize); } } } finally { @@ -377,8 +374,7 @@ public class BrowserFileTransferOperation { FilePath targetFile, FileSystem targetFs, AtomicLong transferred, - AtomicLong totalSize, - Instant start) + AtomicLong totalSize) throws Exception { if (cancelled()) { return; diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserStatusBarComp.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserStatusBarComp.java index 3a4cbac17..b563e96e9 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserStatusBarComp.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserStatusBarComp.java @@ -21,8 +21,6 @@ import javafx.scene.layout.Region; import lombok.EqualsAndHashCode; import lombok.Value; -import java.time.Duration; -import java.time.temporal.ChronoUnit; import java.util.List; @Value diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserTransferProgress.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserTransferProgress.java index 3bebd8703..840a9a464 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserTransferProgress.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserTransferProgress.java @@ -4,7 +4,6 @@ import lombok.Value; import java.time.Duration; import java.time.Instant; -import java.time.temporal.ChronoUnit; import java.util.List; @Value diff --git a/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconDirectoryType.java b/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconDirectoryType.java index 990ece51c..e17752ed2 100644 --- a/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconDirectoryType.java +++ b/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconDirectoryType.java @@ -20,13 +20,6 @@ public abstract class BrowserIconDirectoryType { private static final List ALL = new ArrayList<>(); - public static synchronized BrowserIconDirectoryType byId(String id) { - return ALL.stream() - .filter(fileType -> fileType.getId().equals(id)) - .findAny() - .orElseThrow(); - } - public static synchronized void loadDefinitions() { ALL.add(new BrowserIconDirectoryType() { diff --git a/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconVariant.java b/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconVariant.java index 4df99cc60..50bd7cf5c 100644 --- a/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconVariant.java +++ b/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconVariant.java @@ -7,10 +7,6 @@ public class BrowserIconVariant { private final String lightIcon; private final String darkIcon; - public BrowserIconVariant(String icon) { - this(icon, icon); - } - public BrowserIconVariant(String lightIcon, String darkIcon) { this.lightIcon = lightIcon; this.darkIcon = darkIcon; diff --git a/app/src/main/java/io/xpipe/app/browser/menu/BrowserMenuBranchProvider.java b/app/src/main/java/io/xpipe/app/browser/menu/BrowserMenuBranchProvider.java index 6d14cc2f0..757cffda0 100644 --- a/app/src/main/java/io/xpipe/app/browser/menu/BrowserMenuBranchProvider.java +++ b/app/src/main/java/io/xpipe/app/browser/menu/BrowserMenuBranchProvider.java @@ -2,13 +2,10 @@ package io.xpipe.app.browser.menu; import io.xpipe.app.browser.file.BrowserEntry; import io.xpipe.app.browser.file.BrowserFileSystemTabModel; -import io.xpipe.app.util.LicenseProvider; import javafx.scene.control.Menu; import javafx.scene.control.MenuItem; -import org.kordamp.ikonli.javafx.FontIcon; - import java.util.List; public interface BrowserMenuBranchProvider extends BrowserMenuItemProvider { diff --git a/app/src/main/java/io/xpipe/app/browser/menu/BrowserMenuLeafProvider.java b/app/src/main/java/io/xpipe/app/browser/menu/BrowserMenuLeafProvider.java index 8800e53a1..22228dd0c 100644 --- a/app/src/main/java/io/xpipe/app/browser/menu/BrowserMenuLeafProvider.java +++ b/app/src/main/java/io/xpipe/app/browser/menu/BrowserMenuLeafProvider.java @@ -9,8 +9,6 @@ import io.xpipe.app.browser.file.BrowserFileSystemTabModel; import io.xpipe.app.comp.base.TooltipHelper; import io.xpipe.app.hub.action.StoreAction; import io.xpipe.app.storage.DataStoreEntryRef; -import io.xpipe.app.util.BindingsHelper; -import io.xpipe.app.util.LicenseProvider; import javafx.scene.control.Button; import javafx.scene.control.MenuItem; @@ -19,7 +17,6 @@ import javafx.scene.input.KeyEvent; import javafx.scene.layout.Region; import lombok.SneakyThrows; -import org.kordamp.ikonli.javafx.FontIcon; import java.util.List; diff --git a/app/src/main/java/io/xpipe/app/browser/menu/MultiExecuteMenuProvider.java b/app/src/main/java/io/xpipe/app/browser/menu/MultiExecuteMenuProvider.java index 2b8f81741..dd548994e 100644 --- a/app/src/main/java/io/xpipe/app/browser/menu/MultiExecuteMenuProvider.java +++ b/app/src/main/java/io/xpipe/app/browser/menu/MultiExecuteMenuProvider.java @@ -16,7 +16,7 @@ import java.util.List; public abstract class MultiExecuteMenuProvider implements BrowserMenuBranchProvider { protected abstract CommandBuilder createCommand( - ShellControl sc, BrowserFileSystemTabModel model, BrowserEntry entry) throws Exception; + ShellControl sc, BrowserFileSystemTabModel model, BrowserEntry entry); @Override public List getBranchingActions( diff --git a/app/src/main/java/io/xpipe/app/browser/menu/impl/BrowseInNativeManagerMenuProvider.java b/app/src/main/java/io/xpipe/app/browser/menu/impl/BrowseInNativeManagerMenuProvider.java index d0dfee5b0..213176cf3 100644 --- a/app/src/main/java/io/xpipe/app/browser/menu/impl/BrowseInNativeManagerMenuProvider.java +++ b/app/src/main/java/io/xpipe/app/browser/menu/impl/BrowseInNativeManagerMenuProvider.java @@ -33,9 +33,9 @@ public class BrowseInNativeManagerMenuProvider implements BrowserMenuLeafProvide @Override public ObservableValue getName(BrowserFileSystemTabModel model, List entries) { return switch (OsType.getLocal()) { - case OsType.Windows windows -> AppI18n.observable("browseInWindowsExplorer"); - case OsType.Linux linux -> AppI18n.observable("browseInDefaultFileManager"); - case OsType.MacOs macOs -> AppI18n.observable("browseInFinder"); + case OsType.Windows ignored -> AppI18n.observable("browseInWindowsExplorer"); + case OsType.Linux ignored -> AppI18n.observable("browseInDefaultFileManager"); + case OsType.MacOs ignored -> AppI18n.observable("browseInFinder"); }; } } diff --git a/app/src/main/java/io/xpipe/app/browser/menu/impl/RunFileMenuProvider.java b/app/src/main/java/io/xpipe/app/browser/menu/impl/RunFileMenuProvider.java index 787c7be91..96a2bde14 100644 --- a/app/src/main/java/io/xpipe/app/browser/menu/impl/RunFileMenuProvider.java +++ b/app/src/main/java/io/xpipe/app/browser/menu/impl/RunFileMenuProvider.java @@ -73,7 +73,7 @@ public class RunFileMenuProvider extends MultiExecuteMenuProvider { return entries.stream().allMatch(entry -> isExecutable(entry.getRawFileEntry())); } - protected CommandBuilder createCommand(ShellControl sc, BrowserFileSystemTabModel model, BrowserEntry entry) throws Exception { + protected CommandBuilder createCommand(ShellControl sc, BrowserFileSystemTabModel model, BrowserEntry entry) { return CommandBuilder.of() .add(sc.getShellDialect() .runScriptCommand(sc, entry.getRawFileEntry().getPath().toString())); diff --git a/app/src/main/java/io/xpipe/app/comp/Comp.java b/app/src/main/java/io/xpipe/app/comp/Comp.java index ebab1c94a..89d35967d 100644 --- a/app/src/main/java/io/xpipe/app/comp/Comp.java +++ b/app/src/main/java/io/xpipe/app/comp/Comp.java @@ -24,7 +24,6 @@ import atlantafx.base.controls.Spacer; import java.util.ArrayList; import java.util.List; -import java.util.function.Function; import java.util.function.Supplier; public abstract class Comp> { @@ -72,12 +71,6 @@ public abstract class Comp> { return of(() -> new Separator(Orientation.VERTICAL)); } - @SuppressWarnings("unchecked") - public static , OR extends Region> Comp> derive( - Comp comp, Function r) { - return of(() -> r.apply((IR) comp.createRegion())); - } - @SuppressWarnings("unchecked") public > T apply(Augment augment) { if (augments == null) { diff --git a/app/src/main/java/io/xpipe/app/comp/base/ButtonComp.java b/app/src/main/java/io/xpipe/app/comp/base/ButtonComp.java index 4d0bf5798..f5eddfaba 100644 --- a/app/src/main/java/io/xpipe/app/comp/base/ButtonComp.java +++ b/app/src/main/java/io/xpipe/app/comp/base/ButtonComp.java @@ -6,7 +6,6 @@ import io.xpipe.app.comp.SimpleCompStructure; import io.xpipe.app.util.LabelGraphic; import io.xpipe.app.util.PlatformThread; -import javafx.beans.property.ReadOnlyDoubleWrapper; import javafx.beans.property.ReadOnlyIntegerWrapper; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.value.ObservableValue; diff --git a/app/src/main/java/io/xpipe/app/comp/base/ComboTextFieldComp.java b/app/src/main/java/io/xpipe/app/comp/base/ComboTextFieldComp.java index 0e6f78e28..65312598b 100644 --- a/app/src/main/java/io/xpipe/app/comp/base/ComboTextFieldComp.java +++ b/app/src/main/java/io/xpipe/app/comp/base/ComboTextFieldComp.java @@ -4,12 +4,10 @@ import io.xpipe.app.comp.Comp; import io.xpipe.app.comp.CompStructure; import io.xpipe.app.comp.SimpleCompStructure; import io.xpipe.app.util.PlatformThread; -import io.xpipe.core.FilePath; import javafx.application.Platform; import javafx.beans.property.Property; import javafx.beans.value.ObservableValue; -import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.control.ComboBox; import javafx.scene.control.ListCell; @@ -18,7 +16,6 @@ import javafx.scene.input.KeyEvent; import lombok.Setter; -import java.util.List; import java.util.Objects; import java.util.function.Supplier; diff --git a/app/src/main/java/io/xpipe/app/comp/base/FontIconComp.java b/app/src/main/java/io/xpipe/app/comp/base/FontIconComp.java index 685c2a776..16a2d26fe 100644 --- a/app/src/main/java/io/xpipe/app/comp/base/FontIconComp.java +++ b/app/src/main/java/io/xpipe/app/comp/base/FontIconComp.java @@ -4,7 +4,6 @@ import io.xpipe.app.comp.Comp; import io.xpipe.app.comp.CompStructure; import io.xpipe.app.util.PlatformThread; -import javafx.beans.property.SimpleStringProperty; import javafx.beans.value.ObservableValue; import javafx.scene.layout.StackPane; @@ -17,10 +16,6 @@ public class FontIconComp extends Comp { private final ObservableValue icon; - public FontIconComp(String icon) { - this.icon = new SimpleStringProperty(icon); - } - @Override public FontIconComp.Structure createBase() { var fi = new FontIcon(); diff --git a/app/src/main/java/io/xpipe/app/comp/base/IntroComp.java b/app/src/main/java/io/xpipe/app/comp/base/IntroComp.java index c15c4c25d..8419ac9dd 100644 --- a/app/src/main/java/io/xpipe/app/comp/base/IntroComp.java +++ b/app/src/main/java/io/xpipe/app/comp/base/IntroComp.java @@ -7,8 +7,6 @@ import io.xpipe.app.util.LabelGraphic; import io.xpipe.core.OsType; import javafx.beans.property.ReadOnlyIntegerWrapper; -import javafx.css.Size; -import javafx.css.SizeUnits; import javafx.geometry.Pos; import javafx.scene.control.Label; import javafx.scene.layout.HBox; diff --git a/app/src/main/java/io/xpipe/app/comp/base/PopupMenuButtonComp.java b/app/src/main/java/io/xpipe/app/comp/base/PopupMenuButtonComp.java deleted file mode 100644 index 3e4db03c3..000000000 --- a/app/src/main/java/io/xpipe/app/comp/base/PopupMenuButtonComp.java +++ /dev/null @@ -1,58 +0,0 @@ -package io.xpipe.app.comp.base; - -import io.xpipe.app.comp.Comp; -import io.xpipe.app.comp.SimpleComp; -import io.xpipe.app.core.AppFontSizes; - -import javafx.beans.value.ObservableValue; -import javafx.scene.control.Button; -import javafx.scene.layout.Region; - -import atlantafx.base.controls.Popover; -import atlantafx.base.theme.Styles; - -public class PopupMenuButtonComp extends SimpleComp { - - private final ObservableValue name; - private final Comp content; - private final boolean lazy; - - public PopupMenuButtonComp(ObservableValue name, Comp content, boolean lazy) { - this.name = name; - this.content = content; - this.lazy = lazy; - } - - @Override - protected Region createSimple() { - var popover = new Popover(); - if (!lazy) { - popover.setContentNode(content.createRegion()); - } - popover.setCloseButtonEnabled(false); - popover.setHeaderAlwaysVisible(false); - popover.setDetachable(true); - AppFontSizes.xs(popover.getContentNode()); - - var extendedDescription = new Button(); - extendedDescription.textProperty().bind(name); - extendedDescription.setMinWidth(Region.USE_PREF_SIZE); - extendedDescription.getStyleClass().add(Styles.BUTTON_OUTLINED); - extendedDescription.getStyleClass().add(Styles.ACCENT); - extendedDescription.getStyleClass().add("long-description"); - extendedDescription.setOnAction(e -> { - if (popover.isShowing()) { - e.consume(); - return; - } - - if (lazy) { - popover.setContentNode(content.createRegion()); - } - - popover.show(extendedDescription); - e.consume(); - }); - return extendedDescription; - } -} diff --git a/app/src/main/java/io/xpipe/app/comp/base/ToolbarComp.java b/app/src/main/java/io/xpipe/app/comp/base/ToolbarComp.java deleted file mode 100644 index 8c14689c1..000000000 --- a/app/src/main/java/io/xpipe/app/comp/base/ToolbarComp.java +++ /dev/null @@ -1,41 +0,0 @@ -package io.xpipe.app.comp.base; - -import io.xpipe.app.comp.Comp; -import io.xpipe.app.comp.CompStructure; -import io.xpipe.app.comp.SimpleCompStructure; -import io.xpipe.app.util.PlatformThread; - -import javafx.beans.binding.Bindings; -import javafx.collections.FXCollections; -import javafx.collections.ListChangeListener; -import javafx.collections.ObservableList; -import javafx.scene.control.ToolBar; - -import java.util.List; - -public class ToolbarComp extends Comp> { - - private final ObservableList> entries; - - public ToolbarComp(List> comps) { - entries = FXCollections.observableArrayList(List.copyOf(comps)); - } - - public ToolbarComp(ObservableList> entries) { - this.entries = PlatformThread.sync(entries); - } - - @Override - public CompStructure createBase() { - var b = new ToolBar(); - b.getStyleClass().add("horizontal-comp"); - entries.addListener((ListChangeListener>) c -> { - b.getItems().setAll(c.getList().stream().map(Comp::createRegion).toList()); - }); - for (var entry : entries) { - b.getItems().add(entry.createRegion()); - } - b.visibleProperty().bind(Bindings.isNotEmpty(entries)); - return new SimpleCompStructure<>(b); - } -} diff --git a/app/src/main/java/io/xpipe/app/core/AppFontSizes.java b/app/src/main/java/io/xpipe/app/core/AppFontSizes.java index 3645b8f05..15a181b0b 100644 --- a/app/src/main/java/io/xpipe/app/core/AppFontSizes.java +++ b/app/src/main/java/io/xpipe/app/core/AppFontSizes.java @@ -88,9 +88,9 @@ public class AppFontSizes { public static AppFontSizes forOs(AppFontSizes windows, AppFontSizes linux, AppFontSizes mac) { return switch (OsType.getLocal()) { - case OsType.Linux linux1 -> linux; - case OsType.MacOs macOs -> mac; - case OsType.Windows windows1 -> windows; + case OsType.Linux ignored -> linux; + case OsType.MacOs ignored -> mac; + case OsType.Windows ignored -> windows; }; } diff --git a/app/src/main/java/io/xpipe/app/core/AppI18n.java b/app/src/main/java/io/xpipe/app/core/AppI18n.java index 8b4a1e2de..6ef37d40f 100644 --- a/app/src/main/java/io/xpipe/app/core/AppI18n.java +++ b/app/src/main/java/io/xpipe/app/core/AppI18n.java @@ -11,7 +11,6 @@ import io.xpipe.app.util.PlatformThread; import javafx.beans.binding.Bindings; import javafx.beans.property.Property; -import javafx.beans.property.SimpleObjectProperty; import javafx.beans.value.ObservableValue; import java.util.*; diff --git a/app/src/main/java/io/xpipe/app/core/AppInstallation.java b/app/src/main/java/io/xpipe/app/core/AppInstallation.java index 1818029d8..86e532315 100644 --- a/app/src/main/java/io/xpipe/app/core/AppInstallation.java +++ b/app/src/main/java/io/xpipe/app/core/AppInstallation.java @@ -45,13 +45,13 @@ public abstract class AppInstallation { private static Path determineDefaultInstallationBasePath(boolean stage) { return switch (OsType.getLocal()) { - case OsType.Linux linux -> { + case OsType.Linux ignored -> { yield Path.of(stage ? "/opt/xpipe-ptb" : "/opt/xpipe"); } - case OsType.MacOs macOs -> { + case OsType.MacOs ignored -> { yield Path.of(stage ? "/Applications/XPipe PTB.app" : "/Applications/XPipe.app"); } - case OsType.Windows windows -> { + case OsType.Windows ignored -> { var pg = AppLocations.getWindows().getProgramFiles(); var systemPath = pg.resolve(stage ? "XPipe PTB" : "XPipe"); if (Files.exists(systemPath)) { @@ -99,13 +99,13 @@ public abstract class AppInstallation { private static Path getInstallationBasePathForDaemonExecutable(Path executable) { // Resolve root path of installation relative to executable in a JPackage installation return switch (OsType.getLocal()) { - case OsType.Linux linux -> { + case OsType.Linux ignored -> { yield executable.getParent().getParent(); } - case OsType.MacOs macOs -> { + case OsType.MacOs ignored -> { yield executable.getParent().getParent().getParent(); } - case OsType.Windows windows -> { + case OsType.Windows ignored -> { yield executable.getParent(); } }; @@ -114,10 +114,10 @@ public abstract class AppInstallation { private static Path getInstallationBasePathForJavaExecutable(Path executable) { // Resolve root path of installation relative to executable in a JPackage installation return switch (OsType.getLocal()) { - case OsType.Linux linux -> { + case OsType.Linux ignored -> { yield executable.getParent().getParent().getParent().getParent(); } - case OsType.MacOs macOs -> { + case OsType.MacOs ignored -> { yield executable .getParent() .getParent() @@ -126,7 +126,7 @@ public abstract class AppInstallation { .getParent() .getParent(); } - case OsType.Windows windows -> { + case OsType.Windows ignored -> { yield executable.getParent().getParent(); } }; diff --git a/app/src/main/java/io/xpipe/app/core/AppLogs.java b/app/src/main/java/io/xpipe/app/core/AppLogs.java index 1e57bf506..2dc7dd15d 100644 --- a/app/src/main/java/io/xpipe/app/core/AppLogs.java +++ b/app/src/main/java/io/xpipe/app/core/AppLogs.java @@ -6,7 +6,6 @@ import io.xpipe.core.Deobfuscator; import lombok.Getter; import org.apache.commons.io.FileUtils; -import org.apache.commons.io.FilenameUtils; import org.slf4j.ILoggerFactory; import org.slf4j.IMarkerFactory; import org.slf4j.Logger; @@ -362,7 +361,6 @@ public class AppLogs { @Override protected void handleNormalizedLoggingCall( Level level, Marker marker, String msg, Object[] arguments, Throwable throwable) { - var formatted = msg; if (arguments != null) { for (var arg : arguments) { msg = msg.replaceFirst("\\{}", Objects.toString(arg)); diff --git a/app/src/main/java/io/xpipe/app/core/AppMacros.java b/app/src/main/java/io/xpipe/app/core/AppMacros.java deleted file mode 100644 index eae5ee9e8..000000000 --- a/app/src/main/java/io/xpipe/app/core/AppMacros.java +++ /dev/null @@ -1,18 +0,0 @@ -package io.xpipe.app.core; - -public class AppMacros { - - private static AppMacros INSTANCE; - - public static void init() { - INSTANCE = new AppMacros(); - } - - public static AppMacros get() { - return INSTANCE; - } - - public boolean isMacroSelectionModeEnabled() { - return true; - } -} diff --git a/app/src/main/java/io/xpipe/app/core/AppResources.java b/app/src/main/java/io/xpipe/app/core/AppResources.java index 397eeccf2..bb46fd257 100644 --- a/app/src/main/java/io/xpipe/app/core/AppResources.java +++ b/app/src/main/java/io/xpipe/app/core/AppResources.java @@ -80,16 +80,6 @@ public class AppResources { withResource(module, file, con); } - public static void withResourceInLayer( - String module, String file, ModuleLayer layer, FailableConsumer con) { - try (var fs = FileSystems.newFileSystem(URI.create("module:/" + module), Map.of("layer", layer))) { - var f = fs.getPath(module.replace('.', '/') + "/resources/" + file); - con.accept(f); - } catch (IOException e) { - ErrorEventFactory.fromThrowable(e).omitted(true).build().handle(); - } - } - private static void withResource(String module, String file, FailableConsumer con) { var path = module.startsWith("io.xpipe") ? module.replace('.', '/') + "/resources/" + file : file; try { diff --git a/app/src/main/java/io/xpipe/app/core/AppRestart.java b/app/src/main/java/io/xpipe/app/core/AppRestart.java index 50f38ccec..b63b11938 100644 --- a/app/src/main/java/io/xpipe/app/core/AppRestart.java +++ b/app/src/main/java/io/xpipe/app/core/AppRestart.java @@ -1,7 +1,6 @@ package io.xpipe.app.core; import io.xpipe.app.core.mode.OperationMode; -import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.process.ShellDialect; import io.xpipe.app.process.ShellDialects; import io.xpipe.app.util.LocalShell; @@ -72,7 +71,7 @@ public class AppRestart { } public static String getBackgroundRestartCommand() { - return getBackgroundRestartCommand(ProcessControlProvider.get().getEffectiveLocalDialect()); + return getBackgroundRestartCommand(LocalShell.getDialect()); } public static String getTerminalRestartCommand(ShellDialect dialect) { @@ -88,7 +87,7 @@ public class AppRestart { } public static String getTerminalRestartCommand() { - return getTerminalRestartCommand(ProcessControlProvider.get().getEffectiveLocalDialect()); + return getTerminalRestartCommand(LocalShell.getDialect()); } public static void restart() { diff --git a/app/src/main/java/io/xpipe/app/core/AppTheme.java b/app/src/main/java/io/xpipe/app/core/AppTheme.java index b91eb8642..a2d268f4b 100644 --- a/app/src/main/java/io/xpipe/app/core/AppTheme.java +++ b/app/src/main/java/io/xpipe/app/core/AppTheme.java @@ -293,10 +293,6 @@ public class AppTheme { Application.setUserAgentStylesheet(Styles.toDataURI(builder.toString())); } - public List getAdditionalStylesheets() { - return List.of(); - } - @Override public ObservableValue toTranslatedString() { return new SimpleStringProperty(name); @@ -470,17 +466,17 @@ public class AppTheme { static Theme getDefaultLightTheme() { return switch (OsType.getLocal()) { - case OsType.Windows windows -> PRIMER_LIGHT; - case OsType.Linux linux -> PRIMER_LIGHT; - case OsType.MacOs macOs -> CUPERTINO_LIGHT; + case OsType.Windows ignored -> PRIMER_LIGHT; + case OsType.Linux ignored -> PRIMER_LIGHT; + case OsType.MacOs ignored -> CUPERTINO_LIGHT; }; } static Theme getDefaultDarkTheme() { return switch (OsType.getLocal()) { - case OsType.Windows windows -> PRIMER_DARK; - case OsType.Linux linux -> PRIMER_DARK; - case OsType.MacOs macOs -> CUPERTINO_DARK; + case OsType.Windows ignored -> PRIMER_DARK; + case OsType.Linux ignored -> PRIMER_DARK; + case OsType.MacOs ignored -> CUPERTINO_DARK; }; } diff --git a/app/src/main/java/io/xpipe/app/core/AppTrayIcon.java b/app/src/main/java/io/xpipe/app/core/AppTrayIcon.java index 0f72a4fd2..ea431acb5 100644 --- a/app/src/main/java/io/xpipe/app/core/AppTrayIcon.java +++ b/app/src/main/java/io/xpipe/app/core/AppTrayIcon.java @@ -21,9 +21,9 @@ public class AppTrayIcon { var image = switch (OsType.getLocal()) { - case OsType.Windows windows -> "img/logo/full/logo_16x16.png"; - case OsType.Linux linux -> "img/logo/full/logo_24x24.png"; - case OsType.MacOs macOs -> "img/logo/padded/logo_24x24.png"; + case OsType.Windows ignored -> "img/logo/full/logo_16x16.png"; + case OsType.Linux ignored -> "img/logo/full/logo_24x24.png"; + case OsType.MacOs ignored -> "img/logo/padded/logo_24x24.png"; }; var url = AppResources.getResourceURL(AppResources.XPIPE_MODULE, image).orElseThrow(); @@ -68,14 +68,6 @@ public class AppTrayIcon { } } - public static boolean isSupported() { - return Desktop.isDesktopSupported() && SystemTray.isSupported(); - } - - public final TrayIcon getAwtTrayIcon() { - return trayIcon; - } - private void ensureSystemTraySupported() { if (!SystemTray.isSupported()) { throw new UnsupportedOperationException( diff --git a/app/src/main/java/io/xpipe/app/core/check/AppCertutilCheck.java b/app/src/main/java/io/xpipe/app/core/check/AppCertutilCheck.java index 1faedc625..06eaa5bf9 100644 --- a/app/src/main/java/io/xpipe/app/core/check/AppCertutilCheck.java +++ b/app/src/main/java/io/xpipe/app/core/check/AppCertutilCheck.java @@ -1,8 +1,8 @@ package io.xpipe.app.core.check; -import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.process.ShellDialects; +import io.xpipe.app.util.LocalShell; import io.xpipe.core.OsType; import java.util.concurrent.TimeUnit; @@ -30,7 +30,7 @@ public class AppCertutilCheck { return; } - if (ProcessControlProvider.get().getEffectiveLocalDialect() != ShellDialects.CMD) { + if (LocalShell.getDialect() != ShellDialects.CMD) { return; } diff --git a/app/src/main/java/io/xpipe/app/core/check/AppShellCheck.java b/app/src/main/java/io/xpipe/app/core/check/AppShellCheck.java index 58d780151..8eb442e08 100644 --- a/app/src/main/java/io/xpipe/app/core/check/AppShellCheck.java +++ b/app/src/main/java/io/xpipe/app/core/check/AppShellCheck.java @@ -7,7 +7,7 @@ public class AppShellCheck { public static void check() throws Exception { var checker = switch (OsType.getLocal()) { - case OsType.Linux linux -> + case OsType.Linux ignored -> new AppShellChecker() { @Override @@ -25,7 +25,7 @@ public class AppShellCheck { return false; } }; - case OsType.MacOs macOs -> + case OsType.MacOs ignored -> new AppShellChecker() { @Override @@ -51,7 +51,7 @@ public class AppShellCheck { return false; } }; - case OsType.Windows windows -> + case OsType.Windows ignored -> new AppShellChecker() { @Override diff --git a/app/src/main/java/io/xpipe/app/core/check/AppShellChecker.java b/app/src/main/java/io/xpipe/app/core/check/AppShellChecker.java index 95edc26e5..b85a3371c 100644 --- a/app/src/main/java/io/xpipe/app/core/check/AppShellChecker.java +++ b/app/src/main/java/io/xpipe/app/core/check/AppShellChecker.java @@ -76,7 +76,7 @@ public abstract class AppShellChecker { %s """ .formatted( - ProcessControlProvider.get().getEffectiveLocalDialect().getDisplayName(), + LocalShell.getDialect().getDisplayName(), modifyOutput(output), listReasons(), fallback); diff --git a/app/src/main/java/io/xpipe/app/core/mode/BaseMode.java b/app/src/main/java/io/xpipe/app/core/mode/BaseMode.java index 9bf4a78e1..b8606edff 100644 --- a/app/src/main/java/io/xpipe/app/core/mode/BaseMode.java +++ b/app/src/main/java/io/xpipe/app/core/mode/BaseMode.java @@ -175,6 +175,7 @@ public class BaseMode extends OperationMode { public void finalTeardown() throws Exception { TrackEvent.withInfo("Base mode shutdown started").build(); AbstractAction.reset(); + AppMcpServer.reset(); DataStorage.reset(); DataStorageSyncHandler.getInstance().reset(); SshLocalBridge.reset(); @@ -195,6 +196,7 @@ public class BaseMode extends OperationMode { AppDataLock.unlock(); BlobManager.reset(); FileBridge.reset(); + AppFileWatcher.reset(); GlobalTimer.reset(); TrackEvent.info("Base mode shutdown finished"); } diff --git a/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java b/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java index 122b8617a..011b013fd 100644 --- a/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java +++ b/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java @@ -50,22 +50,6 @@ public abstract class OperationMode { }; } - public static XPipeDaemonMode map(OperationMode mode) { - if (mode == BACKGROUND) { - return XPipeDaemonMode.BACKGROUND; - } - - if (mode == TRAY) { - return XPipeDaemonMode.TRAY; - } - - if (mode == GUI) { - return XPipeDaemonMode.GUI; - } - - return null; - } - public static void externalShutdown() { // If we used System.exit(), we don't want to do this if (OperationMode.isInShutdown()) { diff --git a/app/src/main/java/io/xpipe/app/core/window/AppMainWindow.java b/app/src/main/java/io/xpipe/app/core/window/AppMainWindow.java index edd8ab362..b86c98fcf 100644 --- a/app/src/main/java/io/xpipe/app/core/window/AppMainWindow.java +++ b/app/src/main/java/io/xpipe/app/core/window/AppMainWindow.java @@ -9,6 +9,7 @@ import io.xpipe.app.issue.TrackEvent; import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.prefs.CloseBehaviourDialog; import io.xpipe.app.update.AppDistributionType; +import io.xpipe.app.util.NativeWinWindowControl; import io.xpipe.app.util.PlatformThread; import io.xpipe.app.util.ThreadHelper; import io.xpipe.core.OsType; @@ -101,7 +102,7 @@ public class AppMainWindow { content.prefHeightProperty().bind(scene.heightProperty()); scene.setFill(Color.TRANSPARENT); - ModifiedStage.prepareStage(stage); + AppModifiedStage.prepareStage(stage); stage.setScene(scene); if (AppPrefs.get() != null) { stage.opacityProperty().bind(PlatformThread.sync(AppPrefs.get().windowOpacity())); diff --git a/app/src/main/java/io/xpipe/app/core/window/ModifiedStage.java b/app/src/main/java/io/xpipe/app/core/window/AppModifiedStage.java similarity index 95% rename from app/src/main/java/io/xpipe/app/core/window/ModifiedStage.java rename to app/src/main/java/io/xpipe/app/core/window/AppModifiedStage.java index 572ad56fc..357046920 100644 --- a/app/src/main/java/io/xpipe/app/core/window/ModifiedStage.java +++ b/app/src/main/java/io/xpipe/app/core/window/AppModifiedStage.java @@ -2,6 +2,8 @@ package io.xpipe.app.core.window; import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.prefs.AppPrefs; +import io.xpipe.app.util.NativeMacOsWindowControl; +import io.xpipe.app.util.NativeWinWindowControl; import io.xpipe.app.util.PlatformThread; import io.xpipe.core.OsType; @@ -18,7 +20,7 @@ import javafx.util.Duration; import lombok.SneakyThrows; import org.apache.commons.lang3.SystemUtils; -public class ModifiedStage extends Stage { +public class AppModifiedStage extends Stage { public static boolean mergeFrame() { return SystemUtils.IS_OS_WINDOWS_10 || SystemUtils.IS_OS_WINDOWS_11 || SystemUtils.IS_OS_MAC; @@ -76,8 +78,8 @@ public class ModifiedStage extends Stage { try { switch (OsType.getLocal()) { - case OsType.Linux linux -> {} - case OsType.MacOs macOs -> { + case OsType.Linux ignored -> {} + case OsType.MacOs ignored -> { var ctrl = new NativeMacOsWindowControl(stage); var seamlessFrame = AppMainWindow.getInstance() != null && AppMainWindow.getInstance().getStage() == stage @@ -96,7 +98,7 @@ public class ModifiedStage extends Stage { .pseudoClassStateChanged( PseudoClass.getPseudoClass("separate-frame"), !seamlessFrameApplied); } - case OsType.Windows windows -> { + case OsType.Windows ignored -> { var ctrl = new NativeWinWindowControl(stage); ctrl.setWindowAttribute( NativeWinWindowControl.DmwaWindowAttribute.DWMWA_USE_IMMERSIVE_DARK_MODE.get(), diff --git a/app/src/main/java/io/xpipe/app/core/window/AppWindowBounds.java b/app/src/main/java/io/xpipe/app/core/window/AppWindowBounds.java index 25fef1027..f13000b19 100644 --- a/app/src/main/java/io/xpipe/app/core/window/AppWindowBounds.java +++ b/app/src/main/java/io/xpipe/app/core/window/AppWindowBounds.java @@ -1,6 +1,5 @@ package io.xpipe.app.core.window; -import io.xpipe.app.core.App; import io.xpipe.core.OsType; import javafx.geometry.Rectangle2D; @@ -52,29 +51,6 @@ public class AppWindowBounds { }); } - public static Stage centerStage() { - var stage = new Stage() { - @Override - public void centerOnScreen() { - if (App.getApp() == null) { - super.centerOnScreen(); - return; - } - - var stage = App.getApp().getStage(); - this.setX(stage.getX() + stage.getWidth() / 2 - this.getWidth() / 2); - this.setY(stage.getY() + stage.getHeight() / 2 - this.getHeight() / 2); - clampWindow(this).ifPresent(rectangle2D -> { - this.setX(rectangle2D.getMinX()); - this.setY(rectangle2D.getMinY()); - this.setWidth(rectangle2D.getWidth()); - this.setHeight(rectangle2D.getHeight()); - }); - } - }; - return stage; - } - public static Optional clampWindow(Stage stage) { if (!areNumbersValid(stage.getWidth(), stage.getHeight())) { return Optional.empty(); diff --git a/app/src/main/java/io/xpipe/app/core/window/AppWindowHelper.java b/app/src/main/java/io/xpipe/app/core/window/AppWindowHelper.java index 51514bb6c..065dc2996 100644 --- a/app/src/main/java/io/xpipe/app/core/window/AppWindowHelper.java +++ b/app/src/main/java/io/xpipe/app/core/window/AppWindowHelper.java @@ -51,9 +51,9 @@ public class AppWindowHelper { AppResources.with(AppResources.XPIPE_MODULE, dir, path -> { var size = switch (OsType.getLocal()) { - case OsType.Linux linux -> 128; - case OsType.MacOs macOs -> 128; - case OsType.Windows windows -> 32; + case OsType.Linux ignored -> 128; + case OsType.MacOs ignored -> 128; + case OsType.Windows ignored -> 32; }; stage.getIcons().add(AppImages.loadImage(path.resolve("logo_" + size + "x" + size + ".png"))); }); @@ -128,7 +128,7 @@ public class AppWindowHelper { } alert.getDialogPane().getScene().setFill(Color.TRANSPARENT); var stage = (Stage) alert.getDialogPane().getScene().getWindow(); - ModifiedStage.prepareStage(stage); + AppModifiedStage.prepareStage(stage); addIcons(stage); setupStylesheets(alert.getDialogPane().getScene()); return alert; diff --git a/app/src/main/java/io/xpipe/app/ext/FileSystem.java b/app/src/main/java/io/xpipe/app/ext/FileSystem.java index 803a245d0..c8c9ba294 100644 --- a/app/src/main/java/io/xpipe/app/ext/FileSystem.java +++ b/app/src/main/java/io/xpipe/app/ext/FileSystem.java @@ -7,7 +7,6 @@ import io.xpipe.core.FilePath; import java.io.Closeable; import java.io.InputStream; import java.io.OutputStream; -import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.stream.Stream; diff --git a/app/src/main/java/io/xpipe/app/ext/GuiDialog.java b/app/src/main/java/io/xpipe/app/ext/GuiDialog.java index 87122a57e..099887c2a 100644 --- a/app/src/main/java/io/xpipe/app/ext/GuiDialog.java +++ b/app/src/main/java/io/xpipe/app/ext/GuiDialog.java @@ -1,7 +1,6 @@ package io.xpipe.app.ext; import io.xpipe.app.comp.Comp; -import io.xpipe.app.util.SimpleValidator; import io.xpipe.app.util.Validator; import lombok.AllArgsConstructor; @@ -13,9 +12,4 @@ public class GuiDialog { Comp comp; Validator validator; - - public GuiDialog(Comp comp) { - this.comp = comp; - this.validator = new SimpleValidator(); - } } diff --git a/app/src/main/java/io/xpipe/app/ext/HostAddress.java b/app/src/main/java/io/xpipe/app/ext/HostAddress.java index 9ba23ff02..e440fb639 100644 --- a/app/src/main/java/io/xpipe/app/ext/HostAddress.java +++ b/app/src/main/java/io/xpipe/app/ext/HostAddress.java @@ -1,8 +1,8 @@ package io.xpipe.app.ext; import lombok.EqualsAndHashCode; +import lombok.Getter; import lombok.NonNull; -import lombok.Value; import java.util.List; @@ -30,6 +30,7 @@ public class HostAddress { } private final String value; + @Getter private final List available; private HostAddress(String value, List available) {this.value = value; @@ -57,7 +58,4 @@ public class HostAddress { return value; } - public List getAvailable() { - return available; - } } diff --git a/app/src/main/java/io/xpipe/app/ext/HostAddressChoiceComp.java b/app/src/main/java/io/xpipe/app/ext/HostAddressChoiceComp.java index 94cad4f9e..440ccba41 100644 --- a/app/src/main/java/io/xpipe/app/ext/HostAddressChoiceComp.java +++ b/app/src/main/java/io/xpipe/app/ext/HostAddressChoiceComp.java @@ -6,13 +6,7 @@ import io.xpipe.app.comp.Comp; import io.xpipe.app.comp.CompStructure; import io.xpipe.app.comp.SimpleCompStructure; import io.xpipe.app.comp.base.*; -import io.xpipe.app.hub.comp.StoreChoicePopover; -import io.xpipe.app.storage.DataStoreEntryRef; -import io.xpipe.app.util.DerivedObservableList; -import javafx.application.Platform; -import javafx.beans.binding.Bindings; import javafx.beans.property.ObjectProperty; -import javafx.beans.property.Property; import javafx.beans.property.SimpleStringProperty; import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; @@ -20,10 +14,7 @@ import javafx.css.PseudoClass; import javafx.scene.control.Label; import javafx.scene.control.ListCell; import javafx.scene.control.skin.ComboBoxListViewSkin; -import javafx.scene.input.MouseButton; -import javafx.scene.input.MouseEvent; import javafx.scene.layout.HBox; -import javafx.scene.text.TextAlignment; import org.kordamp.ikonli.javafx.FontIcon; import java.util.ArrayList; diff --git a/app/src/main/java/io/xpipe/app/ext/InternalCacheDataStore.java b/app/src/main/java/io/xpipe/app/ext/InternalCacheDataStore.java index d1a21d52b..fbe6f5eac 100644 --- a/app/src/main/java/io/xpipe/app/ext/InternalCacheDataStore.java +++ b/app/src/main/java/io/xpipe/app/ext/InternalCacheDataStore.java @@ -2,18 +2,12 @@ package io.xpipe.app.ext; import io.xpipe.app.storage.DataStateHandler; -import java.util.function.Supplier; - public interface InternalCacheDataStore extends DataStore { default T getCache(String key, Class c, T def) { return DataStateHandler.get().getCache(this, key, c, () -> def); } - default T getOrCompute(String key, Class c, Supplier def) { - return DataStateHandler.get().getCache(this, key, c, def); - } - default void setCache(String key, Object val) { DataStateHandler.get().putCache(this, key, val); } diff --git a/app/src/main/java/io/xpipe/app/ext/ProcessControlProvider.java b/app/src/main/java/io/xpipe/app/ext/ProcessControlProvider.java index 20a50ee39..da618a483 100644 --- a/app/src/main/java/io/xpipe/app/ext/ProcessControlProvider.java +++ b/app/src/main/java/io/xpipe/app/ext/ProcessControlProvider.java @@ -2,7 +2,6 @@ package io.xpipe.app.ext; import io.xpipe.app.browser.BrowserFullSessionModel; import io.xpipe.app.browser.BrowserStoreSessionTab; -import io.xpipe.app.comp.Comp; import io.xpipe.app.comp.base.ModalOverlay; import io.xpipe.app.process.CommandBuilder; import io.xpipe.app.process.CommandControl; diff --git a/app/src/main/java/io/xpipe/app/ext/SetupProvider.java b/app/src/main/java/io/xpipe/app/ext/SetupProvider.java index a470adfc6..a5c20380b 100644 --- a/app/src/main/java/io/xpipe/app/ext/SetupProvider.java +++ b/app/src/main/java/io/xpipe/app/ext/SetupProvider.java @@ -30,7 +30,7 @@ public interface SetupProvider { LabelGraphic getGraphic(); - boolean checkInstalled() throws Exception; + boolean checkInstalled(); void execute() throws Exception; diff --git a/app/src/main/java/io/xpipe/app/ext/SetupToolActionProvider.java b/app/src/main/java/io/xpipe/app/ext/SetupToolActionProvider.java index 1b1d4d5b4..d6906a439 100644 --- a/app/src/main/java/io/xpipe/app/ext/SetupToolActionProvider.java +++ b/app/src/main/java/io/xpipe/app/ext/SetupToolActionProvider.java @@ -2,12 +2,8 @@ package io.xpipe.app.ext; import io.xpipe.app.action.AbstractAction; import io.xpipe.app.action.ActionProvider; -import io.xpipe.app.comp.base.ModalOverlay; -import io.xpipe.app.core.window.AppDialog; import io.xpipe.app.issue.ErrorEventFactory; -import io.xpipe.app.process.ShellScript; import io.xpipe.app.storage.DataStorage; -import io.xpipe.app.storage.DataStoreEntry; import lombok.SneakyThrows; import lombok.experimental.SuperBuilder; import lombok.extern.jackson.Jacksonized; @@ -30,7 +26,7 @@ public class SetupToolActionProvider implements ActionProvider { @Override @SneakyThrows - public void executeImpl() throws Exception { + public void executeImpl() { var provider = SetupProvider.byId(type); if (provider.isEmpty()) { throw ErrorEventFactory.expected(new IllegalArgumentException("Setup action not found: " + type)); diff --git a/app/src/main/java/io/xpipe/app/ext/ShellStore.java b/app/src/main/java/io/xpipe/app/ext/ShellStore.java index b4de295bd..89eaecf01 100644 --- a/app/src/main/java/io/xpipe/app/ext/ShellStore.java +++ b/app/src/main/java/io/xpipe/app/ext/ShellStore.java @@ -82,7 +82,7 @@ public interface ShellStore extends DataStore, FileSystemStore, ValidatableStore @Override default void validate() throws Exception { - try (var sc = tempControl().start()) {} + try (var ignored = tempControl().start()) {} } default ShellControl standaloneControl() throws Exception { diff --git a/app/src/main/java/io/xpipe/app/hub/action/impl/HostAddressSwitchBranchProvider.java b/app/src/main/java/io/xpipe/app/hub/action/impl/HostAddressSwitchBranchProvider.java index aa97af0d6..cab9d1211 100644 --- a/app/src/main/java/io/xpipe/app/hub/action/impl/HostAddressSwitchBranchProvider.java +++ b/app/src/main/java/io/xpipe/app/hub/action/impl/HostAddressSwitchBranchProvider.java @@ -1,21 +1,17 @@ package io.xpipe.app.hub.action.impl; -import io.xpipe.app.action.AbstractAction; import io.xpipe.app.core.AppI18n; -import io.xpipe.app.ext.DataStore; import io.xpipe.app.ext.HostAddressSwitchStore; import io.xpipe.app.hub.action.HubBranchProvider; import io.xpipe.app.hub.action.HubLeafProvider; import io.xpipe.app.hub.action.HubMenuItemProvider; import io.xpipe.app.hub.action.StoreActionCategory; -import io.xpipe.app.storage.DataStorage; import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.app.util.LabelGraphic; import javafx.beans.property.ReadOnlyStringWrapper; import javafx.beans.value.ObservableValue; import java.util.List; -import java.util.function.Supplier; import java.util.stream.Collectors; public class HostAddressSwitchBranchProvider implements HubBranchProvider { diff --git a/app/src/main/java/io/xpipe/app/hub/comp/OsLogoComp.java b/app/src/main/java/io/xpipe/app/hub/comp/OsLogoComp.java index c404e9e83..3fb55e87c 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/OsLogoComp.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/OsLogoComp.java @@ -8,7 +8,6 @@ import io.xpipe.app.process.SystemState; import io.xpipe.core.FilePath; import javafx.beans.binding.Bindings; -import javafx.beans.property.SimpleObjectProperty; import javafx.beans.value.ObservableValue; import javafx.scene.layout.Region; @@ -24,10 +23,6 @@ public class OsLogoComp extends SimpleComp { private final StoreEntryWrapper wrapper; private final ObservableValue state; - public OsLogoComp(StoreEntryWrapper wrapper) { - this(wrapper, new SimpleObjectProperty<>(SystemStateComp.State.SUCCESS)); - } - public OsLogoComp(StoreEntryWrapper wrapper, ObservableValue state) { this.wrapper = wrapper; this.state = state; diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreCategoryWrapper.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreCategoryWrapper.java index 5cfbb2c8e..36115ea25 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreCategoryWrapper.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreCategoryWrapper.java @@ -235,8 +235,4 @@ public class StoreCategoryWrapper { public Property nameProperty() { return name; } - - public Property lastAccessProperty() { - return lastAccess; - } } diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreChoiceComp.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreChoiceComp.java index 4d6eb857e..595fb6ade 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreChoiceComp.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreChoiceComp.java @@ -5,35 +5,24 @@ import io.xpipe.app.comp.SimpleComp; import io.xpipe.app.comp.base.*; import io.xpipe.app.core.AppFontSizes; import io.xpipe.app.core.AppI18n; -import io.xpipe.app.core.window.AppDialog; import io.xpipe.app.ext.DataStore; import io.xpipe.app.ext.LocalStore; import io.xpipe.app.ext.ShellStore; import io.xpipe.app.storage.DataStorage; import io.xpipe.app.storage.DataStoreEntry; import io.xpipe.app.storage.DataStoreEntryRef; -import io.xpipe.app.util.BindingsHelper; -import io.xpipe.app.util.DataStoreCategoryChoiceComp; -import io.xpipe.app.util.LabelGraphic; import javafx.beans.binding.Bindings; import javafx.beans.property.*; -import javafx.collections.ListChangeListener; import javafx.geometry.Insets; import javafx.geometry.Pos; -import javafx.scene.control.MenuButton; import javafx.scene.input.MouseButton; import javafx.scene.layout.Region; import javafx.scene.layout.StackPane; -import javafx.scene.layout.VBox; -import atlantafx.base.controls.Popover; -import atlantafx.base.theme.Styles; import lombok.RequiredArgsConstructor; import org.kordamp.ikonli.javafx.FontIcon; -import java.util.List; -import java.util.Set; import java.util.function.Predicate; @RequiredArgsConstructor diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreChoicePopover.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreChoicePopover.java index e780bad53..fa78e2821 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreChoicePopover.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreChoicePopover.java @@ -4,7 +4,6 @@ import atlantafx.base.controls.Popover; import atlantafx.base.theme.Styles; import io.xpipe.app.comp.Comp; import io.xpipe.app.comp.base.*; -import io.xpipe.app.core.AppFont; import io.xpipe.app.core.AppFontSizes; import io.xpipe.app.core.AppI18n; import io.xpipe.app.core.window.AppDialog; @@ -27,7 +26,6 @@ import javafx.scene.Node; import javafx.scene.control.MenuButton; import javafx.scene.layout.Region; import javafx.scene.layout.VBox; -import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; import org.kordamp.ikonli.javafx.FontIcon; diff --git a/app/src/main/java/io/xpipe/app/icon/SystemIconManager.java b/app/src/main/java/io/xpipe/app/icon/SystemIconManager.java index 3c2c9e91a..ea30fdc12 100644 --- a/app/src/main/java/io/xpipe/app/icon/SystemIconManager.java +++ b/app/src/main/java/io/xpipe/app/icon/SystemIconManager.java @@ -6,7 +6,6 @@ import io.xpipe.app.core.AppProperties; import io.xpipe.app.ext.ValidationException; import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.prefs.AppPrefs; -import io.xpipe.app.prefs.SupportedLocale; import io.xpipe.app.storage.DataStorage; import java.nio.file.Files; @@ -56,10 +55,6 @@ public class SystemIconManager { return all; } - public static Map getSources() { - return LOADED; - } - public static Set getIcons() { return ICONS; } diff --git a/app/src/main/java/io/xpipe/app/icon/SystemIconSource.java b/app/src/main/java/io/xpipe/app/icon/SystemIconSource.java index 4f0331859..9766730cc 100644 --- a/app/src/main/java/io/xpipe/app/icon/SystemIconSource.java +++ b/app/src/main/java/io/xpipe/app/icon/SystemIconSource.java @@ -42,7 +42,7 @@ public interface SystemIconSource { } @Override - public void refresh() throws Exception {} + public void refresh() {} @Override public Path getPath() { @@ -65,7 +65,7 @@ public interface SystemIconSource { } @Override - public void open() throws Exception { + public void open() { if (Files.exists(path)) { DesktopHelper.browsePathLocal(path); } @@ -154,5 +154,5 @@ public interface SystemIconSource { String getDescription(); - void open() throws Exception; + void open(); } diff --git a/app/src/main/java/io/xpipe/app/issue/EventHandler.java b/app/src/main/java/io/xpipe/app/issue/EventHandler.java index 5601ec7c3..bd92e54f5 100644 --- a/app/src/main/java/io/xpipe/app/issue/EventHandler.java +++ b/app/src/main/java/io/xpipe/app/issue/EventHandler.java @@ -6,10 +6,6 @@ public abstract class EventHandler { private static EventHandler INSTANCE; - public static void set(EventHandler handler) { - INSTANCE = handler; - } - private static void init() { if (INSTANCE == null) { INSTANCE = ServiceLoader.load(EventHandler.class).findFirst().orElseThrow(); diff --git a/app/src/main/java/io/xpipe/app/prefs/AboutCategory.java b/app/src/main/java/io/xpipe/app/prefs/AboutCategory.java index 4de4928f5..30bc1bc8d 100644 --- a/app/src/main/java/io/xpipe/app/prefs/AboutCategory.java +++ b/app/src/main/java/io/xpipe/app/prefs/AboutCategory.java @@ -15,8 +15,6 @@ import javafx.beans.property.SimpleStringProperty; import javafx.geometry.Insets; import atlantafx.base.theme.Styles; -import javafx.scene.layout.Background; -import javafx.scene.paint.Color; import java.util.List; diff --git a/app/src/main/java/io/xpipe/app/prefs/ApiCategory.java b/app/src/main/java/io/xpipe/app/prefs/ApiCategory.java index 9f2d88198..3eb4f6b7a 100644 --- a/app/src/main/java/io/xpipe/app/prefs/ApiCategory.java +++ b/app/src/main/java/io/xpipe/app/prefs/ApiCategory.java @@ -2,18 +2,12 @@ package io.xpipe.app.prefs; import io.xpipe.app.beacon.AppBeaconServer; import io.xpipe.app.comp.Comp; -import io.xpipe.app.comp.base.ButtonComp; import io.xpipe.app.comp.base.TextAreaComp; import io.xpipe.app.comp.base.TextFieldComp; -import io.xpipe.app.core.AppI18n; import io.xpipe.app.core.AppProperties; -import io.xpipe.app.util.DocumentationLink; import io.xpipe.app.util.LabelGraphic; import io.xpipe.app.util.OptionsBuilder; import javafx.beans.binding.Bindings; -import javafx.beans.property.ReadOnlyBooleanWrapper; -import javafx.beans.property.ReadOnlyObjectWrapper; -import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleStringProperty; public class ApiCategory extends AppPrefsCategory { diff --git a/app/src/main/java/io/xpipe/app/prefs/AppPrefs.java b/app/src/main/java/io/xpipe/app/prefs/AppPrefs.java index cfab21d03..424ebbce5 100644 --- a/app/src/main/java/io/xpipe/app/prefs/AppPrefs.java +++ b/app/src/main/java/io/xpipe/app/prefs/AppPrefs.java @@ -362,10 +362,6 @@ public class AppPrefs { public ObservableBooleanValue pinLocalMachineOnStartup() { return pinLocalMachineOnStartup; } - - private final BooleanProperty confirmDeletions = - mapLocal(new GlobalBooleanProperty(true), "confirmDeletions", Boolean.class, false); - @Getter private final List categories; @@ -407,7 +403,7 @@ public class AppPrefs { this.selectedCategory = new GlobalObjectProperty<>(categories.getFirst()); } - public static void initLocal() throws Exception { + public static void initLocal() { INSTANCE = new AppPrefs(); PrefsProvider.getAll().forEach(prov -> prov.addPrefs(INSTANCE.extensionHandler)); INSTANCE.loadLocal(); @@ -556,10 +552,6 @@ public class AppPrefs { return automaticallyCheckForUpdates; } - public ReadOnlyBooleanProperty confirmDeletions() { - return confirmDeletions; - } - public ObservableValue terminalType() { return terminalType; } diff --git a/app/src/main/java/io/xpipe/app/prefs/AppPrefsStorageHandler.java b/app/src/main/java/io/xpipe/app/prefs/AppPrefsStorageHandler.java index 00cac6840..13681d998 100644 --- a/app/src/main/java/io/xpipe/app/prefs/AppPrefsStorageHandler.java +++ b/app/src/main/java/io/xpipe/app/prefs/AppPrefsStorageHandler.java @@ -159,8 +159,4 @@ public class AppPrefsStorageHandler { return defaultObject; } } - - public boolean clear() { - return FileUtils.deleteQuietly(file.toFile()); - } } diff --git a/app/src/main/java/io/xpipe/app/prefs/ExternalEditorType.java b/app/src/main/java/io/xpipe/app/prefs/ExternalEditorType.java index a35683917..9f2d6f476 100644 --- a/app/src/main/java/io/xpipe/app/prefs/ExternalEditorType.java +++ b/app/src/main/java/io/xpipe/app/prefs/ExternalEditorType.java @@ -5,7 +5,6 @@ import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.process.CommandBuilder; import io.xpipe.app.process.ShellScript; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.LocalShell; import io.xpipe.app.util.WindowsRegistry; import io.xpipe.core.OsType; diff --git a/app/src/main/java/io/xpipe/app/prefs/FileBrowserCategory.java b/app/src/main/java/io/xpipe/app/prefs/FileBrowserCategory.java index 172b94696..ada3c7545 100644 --- a/app/src/main/java/io/xpipe/app/prefs/FileBrowserCategory.java +++ b/app/src/main/java/io/xpipe/app/prefs/FileBrowserCategory.java @@ -2,7 +2,6 @@ package io.xpipe.app.prefs; import io.xpipe.app.comp.Comp; import io.xpipe.app.comp.base.ContextualFileReferenceChoiceComp; -import io.xpipe.app.comp.base.TextFieldComp; import io.xpipe.app.storage.DataStorage; import io.xpipe.app.util.LabelGraphic; import io.xpipe.app.util.OptionsBuilder; diff --git a/app/src/main/java/io/xpipe/app/prefs/PasswordManagerCategory.java b/app/src/main/java/io/xpipe/app/prefs/PasswordManagerCategory.java index a94377dca..1a54f737d 100644 --- a/app/src/main/java/io/xpipe/app/prefs/PasswordManagerCategory.java +++ b/app/src/main/java/io/xpipe/app/prefs/PasswordManagerCategory.java @@ -2,22 +2,18 @@ package io.xpipe.app.prefs; import io.xpipe.app.comp.Comp; import io.xpipe.app.comp.base.ButtonComp; -import io.xpipe.app.comp.base.HorizontalComp; import io.xpipe.app.core.AppI18n; import io.xpipe.app.pwman.PasswordManager; import io.xpipe.app.util.*; import javafx.beans.binding.Bindings; import javafx.beans.property.SimpleStringProperty; -import javafx.geometry.Pos; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; import javafx.scene.layout.Region; import org.kordamp.ikonli.javafx.FontIcon; -import java.util.List; - public class PasswordManagerCategory extends AppPrefsCategory { @Override diff --git a/app/src/main/java/io/xpipe/app/prefs/TerminalCategory.java b/app/src/main/java/io/xpipe/app/prefs/TerminalCategory.java index d02bce82d..822a0699a 100644 --- a/app/src/main/java/io/xpipe/app/prefs/TerminalCategory.java +++ b/app/src/main/java/io/xpipe/app/prefs/TerminalCategory.java @@ -30,7 +30,6 @@ import javafx.scene.paint.Color; import org.kordamp.ikonli.javafx.FontIcon; import java.util.List; -import java.util.UUID; public class TerminalCategory extends AppPrefsCategory { diff --git a/app/src/main/java/io/xpipe/app/prefs/TroubleshootCategory.java b/app/src/main/java/io/xpipe/app/prefs/TroubleshootCategory.java index 3ff583341..adf2b62a6 100644 --- a/app/src/main/java/io/xpipe/app/prefs/TroubleshootCategory.java +++ b/app/src/main/java/io/xpipe/app/prefs/TroubleshootCategory.java @@ -14,10 +14,8 @@ import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.issue.UserReportComp; import io.xpipe.app.process.ShellScript; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.update.AppDistributionType; import io.xpipe.app.util.*; -import io.xpipe.core.FilePath; import io.xpipe.core.OsType; import com.sun.management.HotSpotDiagnosticMXBean; diff --git a/app/src/main/java/io/xpipe/app/prefs/UpdateCheckComp.java b/app/src/main/java/io/xpipe/app/prefs/UpdateCheckComp.java index 216e42c73..2447b7b06 100644 --- a/app/src/main/java/io/xpipe/app/prefs/UpdateCheckComp.java +++ b/app/src/main/java/io/xpipe/app/prefs/UpdateCheckComp.java @@ -10,9 +10,7 @@ import io.xpipe.app.util.ThreadHelper; import javafx.beans.binding.Bindings; import javafx.beans.value.ObservableValue; -import javafx.scene.layout.Background; import javafx.scene.layout.Region; -import javafx.scene.paint.Color; public class UpdateCheckComp extends SimpleComp { diff --git a/app/src/main/java/io/xpipe/app/prefs/WorkspaceCreationDialog.java b/app/src/main/java/io/xpipe/app/prefs/WorkspaceCreationDialog.java index 514e73bbb..c348fb115 100644 --- a/app/src/main/java/io/xpipe/app/prefs/WorkspaceCreationDialog.java +++ b/app/src/main/java/io/xpipe/app/prefs/WorkspaceCreationDialog.java @@ -44,7 +44,7 @@ public class WorkspaceCreationDialog { var shortcutName = name.get(); var file = switch (OsType.getLocal()) { - case OsType.Windows w -> { + case OsType.Windows ignored -> { var exec = AppInstallation.ofCurrent().getDaemonExecutablePath().toString(); yield DesktopShortcuts.create( exec, diff --git a/app/src/main/java/io/xpipe/app/process/ProcessOutputException.java b/app/src/main/java/io/xpipe/app/process/ProcessOutputException.java index 135cd414f..e08a2ff87 100644 --- a/app/src/main/java/io/xpipe/app/process/ProcessOutputException.java +++ b/app/src/main/java/io/xpipe/app/process/ProcessOutputException.java @@ -64,8 +64,4 @@ public class ProcessOutputException extends Exception { || exitCode == CommandControl.INTERNAL_ERROR_EXIT_CODE || exitCode == CommandControl.ELEVATION_FAILED_EXIT_CODE; } - - public boolean isKill() { - return exitCode == CommandControl.START_FAILED_EXIT_CODE; - } } diff --git a/app/src/main/java/io/xpipe/app/process/ShellControl.java b/app/src/main/java/io/xpipe/app/process/ShellControl.java index d560c4ff8..d011a0375 100644 --- a/app/src/main/java/io/xpipe/app/process/ShellControl.java +++ b/app/src/main/java/io/xpipe/app/process/ShellControl.java @@ -35,8 +35,6 @@ public interface ShellControl extends ProcessControl { void writeLine(String line, boolean log) throws IOException; - void write(byte[] b) throws IOException; - void setSubShellActive(boolean active); boolean isSubShellActive(); @@ -82,8 +80,6 @@ public interface ShellControl extends ProcessControl { ShellControl withSourceStore(DataStore store); - List getTerminalInitCommands(); - ParentSystemAccess getParentSystemAccess(); void setParentSystemAccess(ParentSystemAccess access); @@ -96,8 +92,6 @@ public interface ShellControl extends ProcessControl { return true; } - ShellControl getMachineRootSession() throws Exception; - String getOsName(); ReentrantLock getLock(); diff --git a/app/src/main/java/io/xpipe/app/process/ShellLaunchCommand.java b/app/src/main/java/io/xpipe/app/process/ShellLaunchCommand.java index a6c1e9b3b..40cd4d947 100644 --- a/app/src/main/java/io/xpipe/app/process/ShellLaunchCommand.java +++ b/app/src/main/java/io/xpipe/app/process/ShellLaunchCommand.java @@ -16,5 +16,4 @@ public interface ShellLaunchCommand { List loginCommand(OsType.Any os); - List openCommand(); } diff --git a/app/src/main/java/io/xpipe/app/process/ShellStoreState.java b/app/src/main/java/io/xpipe/app/process/ShellStoreState.java index d466891f0..55394cf27 100644 --- a/app/src/main/java/io/xpipe/app/process/ShellStoreState.java +++ b/app/src/main/java/io/xpipe/app/process/ShellStoreState.java @@ -23,10 +23,6 @@ public class ShellStoreState extends DataStoreState implements SystemState { ShellTtyState ttyState; Boolean running; - public boolean isRunning() { - return running != null ? running : false; - } - @Override public DataStoreState mergeCopy(DataStoreState newer) { var shellStoreState = (ShellStoreState) newer; diff --git a/app/src/main/java/io/xpipe/app/process/WrapperShellControl.java b/app/src/main/java/io/xpipe/app/process/WrapperShellControl.java index a744e38ce..9522ef906 100644 --- a/app/src/main/java/io/xpipe/app/process/WrapperShellControl.java +++ b/app/src/main/java/io/xpipe/app/process/WrapperShellControl.java @@ -91,11 +91,6 @@ public class WrapperShellControl implements ShellControl { return parent.withSourceStore(store); } - @Override - public List getTerminalInitCommands() { - return parent.getTerminalInitCommands(); - } - @Override public ParentSystemAccess getParentSystemAccess() { return parent.getParentSystemAccess(); @@ -116,11 +111,6 @@ public class WrapperShellControl implements ShellControl { return parent.isLocal(); } - @Override - public ShellControl getMachineRootSession() throws Exception { - return parent.getMachineRootSession(); - } - @Override public String getOsName() { return parent.getOsName(); @@ -247,11 +237,6 @@ public class WrapperShellControl implements ShellControl { parent.writeLine(line, log); } - @Override - public void write(byte[] b) throws IOException { - parent.write(b); - } - @Override public void setSubShellActive(boolean active) { parent.setSubShellActive(active); diff --git a/app/src/main/java/io/xpipe/app/pwman/BitwardenPasswordManager.java b/app/src/main/java/io/xpipe/app/pwman/BitwardenPasswordManager.java index cc00a8099..871665755 100644 --- a/app/src/main/java/io/xpipe/app/pwman/BitwardenPasswordManager.java +++ b/app/src/main/java/io/xpipe/app/pwman/BitwardenPasswordManager.java @@ -6,7 +6,6 @@ import io.xpipe.app.process.CommandBuilder; import io.xpipe.app.process.ShellControl; import io.xpipe.app.process.ShellScript; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.*; import io.xpipe.core.InPlaceSecretValue; import io.xpipe.core.JacksonMapper; diff --git a/app/src/main/java/io/xpipe/app/pwman/DashlanePasswordManager.java b/app/src/main/java/io/xpipe/app/pwman/DashlanePasswordManager.java index fc645f47e..9c26ee044 100644 --- a/app/src/main/java/io/xpipe/app/pwman/DashlanePasswordManager.java +++ b/app/src/main/java/io/xpipe/app/pwman/DashlanePasswordManager.java @@ -6,7 +6,6 @@ import io.xpipe.app.process.CommandBuilder; import io.xpipe.app.process.ShellControl; import io.xpipe.app.process.ShellScript; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.CommandSupport; import io.xpipe.core.InPlaceSecretValue; import io.xpipe.core.JacksonMapper; diff --git a/app/src/main/java/io/xpipe/app/pwman/KeePassXcPasswordManager.java b/app/src/main/java/io/xpipe/app/pwman/KeePassXcPasswordManager.java index 419a4dfc4..27452fe5f 100644 --- a/app/src/main/java/io/xpipe/app/pwman/KeePassXcPasswordManager.java +++ b/app/src/main/java/io/xpipe/app/pwman/KeePassXcPasswordManager.java @@ -158,18 +158,18 @@ public class KeePassXcPasswordManager implements PasswordManager { Optional found = switch (OsType.getLocal()) { - case OsType.Linux linux -> { + case OsType.Linux ignored -> { var paths = List.of( Path.of("/usr/bin/keepassxc-proxy"), Path.of("/usr/local/bin/keepassxc-proxy"), Path.of("/snap/keepassxc/current/usr/bin/keepassxc-proxy")); yield paths.stream().filter(path -> Files.exists(path)).findFirst(); } - case OsType.MacOs macOs -> { + case OsType.MacOs ignored -> { var paths = List.of(Path.of("/Applications/KeePassXC.app/Contents/MacOS/keepassxc-proxy")); yield paths.stream().filter(path -> Files.exists(path)).findFirst(); } - case OsType.Windows windows -> { + case OsType.Windows ignored -> { try { var foundKey = WindowsRegistry.local() .findKeyForEqualValueMatchRecursive( diff --git a/app/src/main/java/io/xpipe/app/pwman/KeeperPasswordManager.java b/app/src/main/java/io/xpipe/app/pwman/KeeperPasswordManager.java index 85f8559c9..e535cd4f4 100644 --- a/app/src/main/java/io/xpipe/app/pwman/KeeperPasswordManager.java +++ b/app/src/main/java/io/xpipe/app/pwman/KeeperPasswordManager.java @@ -4,7 +4,6 @@ import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.process.*; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.CommandSupport; import io.xpipe.app.util.SecretManager; import io.xpipe.app.util.SecretRetrievalStrategy; diff --git a/app/src/main/java/io/xpipe/app/pwman/LastpassPasswordManager.java b/app/src/main/java/io/xpipe/app/pwman/LastpassPasswordManager.java index 576378686..3f4eae047 100644 --- a/app/src/main/java/io/xpipe/app/pwman/LastpassPasswordManager.java +++ b/app/src/main/java/io/xpipe/app/pwman/LastpassPasswordManager.java @@ -6,7 +6,6 @@ import io.xpipe.app.process.CommandBuilder; import io.xpipe.app.process.ShellControl; import io.xpipe.app.process.ShellScript; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.*; import io.xpipe.core.InPlaceSecretValue; import io.xpipe.core.JacksonMapper; diff --git a/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java b/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java index 402c9d413..fef930dac 100644 --- a/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java +++ b/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java @@ -2,7 +2,6 @@ package io.xpipe.app.storage; import io.xpipe.app.ext.*; import io.xpipe.app.icon.SystemIconManager; -import io.xpipe.app.icon.SystemIconSourceData; import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.util.ThreadHelper; import io.xpipe.core.JacksonMapper; diff --git a/app/src/main/java/io/xpipe/app/storage/DataStoreEntryUserScope.java b/app/src/main/java/io/xpipe/app/storage/DataStoreEntryUserScope.java deleted file mode 100644 index 5c108c794..000000000 --- a/app/src/main/java/io/xpipe/app/storage/DataStoreEntryUserScope.java +++ /dev/null @@ -1,6 +0,0 @@ -package io.xpipe.app.storage; - -public enum DataStoreEntryUserScope { - PER_USER, - SHARED -} diff --git a/app/src/main/java/io/xpipe/app/terminal/CmdTerminalType.java b/app/src/main/java/io/xpipe/app/terminal/CmdTerminalType.java index 205a58621..42ccda904 100644 --- a/app/src/main/java/io/xpipe/app/terminal/CmdTerminalType.java +++ b/app/src/main/java/io/xpipe/app/terminal/CmdTerminalType.java @@ -1,9 +1,9 @@ package io.xpipe.app.terminal; -import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.prefs.ExternalApplicationType; import io.xpipe.app.process.CommandBuilder; import io.xpipe.app.process.ShellDialects; +import io.xpipe.app.util.LocalShell; public class CmdTerminalType implements ExternalApplicationType.PathApplication, ExternalTerminalType, TrackableTerminalType { @@ -20,7 +20,7 @@ public class CmdTerminalType @Override public int getProcessHierarchyOffset() { - var powershell = ShellDialects.isPowershell(ProcessControlProvider.get().getEffectiveLocalDialect()); + var powershell = ShellDialects.isPowershell(LocalShell.getDialect()); return powershell ? 0 : -1; } diff --git a/app/src/main/java/io/xpipe/app/terminal/ConfigFileTerminalPrompt.java b/app/src/main/java/io/xpipe/app/terminal/ConfigFileTerminalPrompt.java index 7db8f7754..2d9ebfa87 100644 --- a/app/src/main/java/io/xpipe/app/terminal/ConfigFileTerminalPrompt.java +++ b/app/src/main/java/io/xpipe/app/terminal/ConfigFileTerminalPrompt.java @@ -46,10 +46,6 @@ public abstract class ConfigFileTerminalPrompt implements TerminalPrompt { protected String configuration; - protected void prepareCustomConfigFile(ShellControl sc, FilePath file) throws Exception { - sc.view().writeTextFile(file, configuration); - } - @Override public ShellTerminalInitCommand terminalCommand() throws Exception { return new ShellTerminalInitCommand() { diff --git a/app/src/main/java/io/xpipe/app/terminal/ExternalTerminalType.java b/app/src/main/java/io/xpipe/app/terminal/ExternalTerminalType.java index 2f83fffcc..b8fac70d3 100644 --- a/app/src/main/java/io/xpipe/app/terminal/ExternalTerminalType.java +++ b/app/src/main/java/io/xpipe/app/terminal/ExternalTerminalType.java @@ -1,13 +1,13 @@ package io.xpipe.app.terminal; import io.xpipe.app.ext.PrefsChoiceValue; -import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.prefs.ExternalApplicationType; import io.xpipe.app.process.CommandBuilder; import io.xpipe.app.process.ShellDialects; import io.xpipe.app.process.TerminalInitFunction; import io.xpipe.app.update.AppDistributionType; +import io.xpipe.app.util.LocalShell; import io.xpipe.core.OsType; import lombok.Getter; @@ -71,17 +71,17 @@ public interface ExternalTerminalType extends PrefsChoiceValue { // Fallback to an available default switch (OsType.getLocal()) { - case OsType.Linux linux -> { + case OsType.Linux ignored -> { // This should not be termius or wave as all others take precedence var def = determineDefault(null); // If there's no other terminal available, use a fallback which won't work return def != TERMIUS && def != WaveTerminalType.WAVE_LINUX ? def : XTERM; } - case OsType.MacOs macOs -> { + case OsType.MacOs ignored -> { return MACOS_TERMINAL; } - case OsType.Windows windows -> { - return ProcessControlProvider.get().getEffectiveLocalDialect() == ShellDialects.CMD ? CMD : POWERSHELL; + case OsType.Windows ignored -> { + return LocalShell.getDialect() == ShellDialects.CMD ? CMD : POWERSHELL; } } } @@ -515,7 +515,7 @@ public interface ExternalTerminalType extends PrefsChoiceValue { @Override public int getProcessHierarchyOffset() { - return ProcessControlProvider.get().getEffectiveLocalDialect() == ShellDialects.BASH ? 0 : 1; + return LocalShell.getDialect() == ShellDialects.BASH ? 0 : 1; } @Override @@ -626,7 +626,7 @@ public interface ExternalTerminalType extends PrefsChoiceValue { static ExternalTerminalType determineDefault(ExternalTerminalType existing) { // Check for incompatibility with fallback shell if (ExternalTerminalType.CMD.equals(existing) - && ProcessControlProvider.get().getEffectiveLocalDialect() != ShellDialects.CMD) { + && LocalShell.getDialect() != ShellDialects.CMD) { return ExternalTerminalType.POWERSHELL; } @@ -648,7 +648,7 @@ public interface ExternalTerminalType extends PrefsChoiceValue { // Check if detection failed for some reason if (r == null) { var def = OsType.getLocal() == OsType.WINDOWS - ? (ProcessControlProvider.get().getEffectiveLocalDialect() == ShellDialects.CMD + ? (LocalShell.getDialect() == ShellDialects.CMD ? ExternalTerminalType.CMD : ExternalTerminalType.POWERSHELL) : OsType.getLocal() == OsType.MACOS ? ExternalTerminalType.MACOS_TERMINAL : null; diff --git a/app/src/main/java/io/xpipe/app/terminal/KittyTerminalType.java b/app/src/main/java/io/xpipe/app/terminal/KittyTerminalType.java index 8023b1d66..d397ef507 100644 --- a/app/src/main/java/io/xpipe/app/terminal/KittyTerminalType.java +++ b/app/src/main/java/io/xpipe/app/terminal/KittyTerminalType.java @@ -1,7 +1,6 @@ package io.xpipe.app.terminal; import io.xpipe.app.core.AppInstallation; -import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.prefs.ExternalApplicationType; import io.xpipe.app.process.CommandBuilder; @@ -99,7 +98,7 @@ public interface KittyTerminalType extends ExternalTerminalType, TrackableTermin @Override public int getProcessHierarchyOffset() { - return ProcessControlProvider.get().getEffectiveLocalDialect() == ShellDialects.BASH ? 0 : 1; + return LocalShell.getDialect() == ShellDialects.BASH ? 0 : 1; } public boolean isAvailable() { @@ -160,7 +159,7 @@ public interface KittyTerminalType extends ExternalTerminalType, TrackableTermin @Override public int getProcessHierarchyOffset() { - return ProcessControlProvider.get().getEffectiveLocalDialect() == ShellDialects.ZSH ? 1 : 0; + return LocalShell.getDialect() == ShellDialects.ZSH ? 1 : 0; } @Override diff --git a/app/src/main/java/io/xpipe/app/terminal/PowerShellTerminalType.java b/app/src/main/java/io/xpipe/app/terminal/PowerShellTerminalType.java index c92073c83..d64d232b7 100644 --- a/app/src/main/java/io/xpipe/app/terminal/PowerShellTerminalType.java +++ b/app/src/main/java/io/xpipe/app/terminal/PowerShellTerminalType.java @@ -1,9 +1,9 @@ package io.xpipe.app.terminal; -import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.prefs.ExternalApplicationType; import io.xpipe.app.process.CommandBuilder; import io.xpipe.app.process.ShellDialects; +import io.xpipe.app.util.LocalShell; import java.nio.charset.StandardCharsets; import java.util.Base64; @@ -27,7 +27,7 @@ public class PowerShellTerminalType implements ExternalApplicationType.PathAppli @Override public int getProcessHierarchyOffset() { - var powershell = ShellDialects.isPowershell(ProcessControlProvider.get().getEffectiveLocalDialect()); + var powershell = ShellDialects.isPowershell(LocalShell.getDialect()); return powershell ? -1 : 0; } diff --git a/app/src/main/java/io/xpipe/app/terminal/SecureCrtTerminalType.java b/app/src/main/java/io/xpipe/app/terminal/SecureCrtTerminalType.java index c2ade6b8c..73a814aaf 100644 --- a/app/src/main/java/io/xpipe/app/terminal/SecureCrtTerminalType.java +++ b/app/src/main/java/io/xpipe/app/terminal/SecureCrtTerminalType.java @@ -56,19 +56,17 @@ public class SecureCrtTerminalType implements ExternalApplicationType.WindowsTyp @Override public void launch(TerminalLaunchConfiguration configuration) throws Exception { - try (var sc = LocalShell.getShell()) { - SshLocalBridge.init(); - var b = SshLocalBridge.get(); - var command = CommandBuilder.of() - .add("/T") - .add("/SSH2", "/ACCEPTHOSTKEYS", "/I") - .addFile(b.getIdentityKey().toString()) - .add("/P", "" + b.getPort()) - .add("/L") - .addQuoted(b.getUser()) - .add("localhost"); - launch(command); - } + SshLocalBridge.init(); + var b = SshLocalBridge.get(); + var command = CommandBuilder.of() + .add("/T") + .add("/SSH2", "/ACCEPTHOSTKEYS", "/I") + .addFile(b.getIdentityKey().toString()) + .add("/P", "" + b.getPort()) + .add("/L") + .addQuoted(b.getUser()) + .add("localhost"); + launch(command); } @Override diff --git a/app/src/main/java/io/xpipe/app/terminal/TerminalLaunch.java b/app/src/main/java/io/xpipe/app/terminal/TerminalLaunch.java index c19b3bc2f..e1c5679e6 100644 --- a/app/src/main/java/io/xpipe/app/terminal/TerminalLaunch.java +++ b/app/src/main/java/io/xpipe/app/terminal/TerminalLaunch.java @@ -17,7 +17,6 @@ import lombok.Builder; import lombok.Value; import java.util.UUID; -import java.util.function.Function; @Value @Builder @@ -61,7 +60,7 @@ public class TerminalLaunch { l.launch(); } - public TerminalLaunchBuilder localScript(ShellScript script) throws Exception { + public TerminalLaunchBuilder localScript(ShellScript script) { var c = LocalShell.getShell().command(script); return command(c); } diff --git a/app/src/main/java/io/xpipe/app/terminal/TerminalLaunchConfiguration.java b/app/src/main/java/io/xpipe/app/terminal/TerminalLaunchConfiguration.java index fea49a69b..d40fe87cb 100644 --- a/app/src/main/java/io/xpipe/app/terminal/TerminalLaunchConfiguration.java +++ b/app/src/main/java/io/xpipe/app/terminal/TerminalLaunchConfiguration.java @@ -2,7 +2,6 @@ package io.xpipe.app.terminal; import io.xpipe.app.core.AppInstallation; import io.xpipe.app.core.AppProperties; -import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.process.CommandBuilder; @@ -56,7 +55,7 @@ public class TerminalLaunchConfiguration { var color = entry != null ? DataStorage.get().getEffectiveColor(entry) : null; if (!AppPrefs.get().enableTerminalLogging().get()) { - var d = ProcessControlProvider.get().getEffectiveLocalDialect(); + var d = LocalShell.getDialect(); var launcherScript = d.terminalLauncherScript(request, adjustedTitle, alwaysPromptRestart); var config = new TerminalLaunchConfiguration( entry != null ? color : null, adjustedTitle, cleanTitle, preferTabs, launcherScript, d); diff --git a/app/src/main/java/io/xpipe/app/terminal/TerminalLauncher.java b/app/src/main/java/io/xpipe/app/terminal/TerminalLauncher.java index 2c65b1cb4..a0ba01816 100644 --- a/app/src/main/java/io/xpipe/app/terminal/TerminalLauncher.java +++ b/app/src/main/java/io/xpipe/app/terminal/TerminalLauncher.java @@ -1,8 +1,6 @@ package io.xpipe.app.terminal; -import io.xpipe.app.core.AppI18n; import io.xpipe.app.core.AppInstallation; -import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.process.*; @@ -164,9 +162,9 @@ public class TerminalLauncher { } var changedDialect = - config.getScriptDialect() != ProcessControlProvider.get().getEffectiveLocalDialect(); + config.getScriptDialect() != LocalShell.getDialect(); config = config.withScript( - ProcessControlProvider.get().getEffectiveLocalDialect(), + LocalShell.getDialect(), getTerminalRegisterCommand(request) + "\n" + (changedDialect ? config.getDialectLaunchCommand().buildSimple() @@ -265,7 +263,7 @@ public class TerminalLauncher { "XPipe", false, fullLocalCommand, - ProcessControlProvider.get().getEffectiveLocalDialect())); + LocalShell.getDialect())); } else { var multiplexerCommand = multiplexer .get() @@ -283,7 +281,7 @@ public class TerminalLauncher { "XPipe", false, fullLocalCommand, - ProcessControlProvider.get().getEffectiveLocalDialect())); + LocalShell.getDialect())); } } @@ -305,6 +303,6 @@ public class TerminalLauncher { proxyControl.get().start(); var fullLocalCommand = getTerminalRegisterCommand(request) + "\n" + launchCommand; return Optional.ofNullable(launchConfiguration.withScript( - ProcessControlProvider.get().getEffectiveLocalDialect(), fullLocalCommand)); + LocalShell.getDialect(), fullLocalCommand)); } } diff --git a/app/src/main/java/io/xpipe/app/terminal/TerminalLauncherManager.java b/app/src/main/java/io/xpipe/app/terminal/TerminalLauncherManager.java index 3ff8bf226..7f33af22e 100644 --- a/app/src/main/java/io/xpipe/app/terminal/TerminalLauncherManager.java +++ b/app/src/main/java/io/xpipe/app/terminal/TerminalLauncherManager.java @@ -124,7 +124,7 @@ public class TerminalLauncherManager { .tag("request", request.toString()) .handle(); try (var sc = LocalShell.getShell().start()) { - var defaultShell = ProcessControlProvider.get().getEffectiveLocalDialect(); + var defaultShell = LocalShell.getDialect(); var shellExec = defaultShell.getExecutableName(); var script = ScriptHelper.createExecScript(sc, shellExec); return Path.of(script.toString()); diff --git a/app/src/main/java/io/xpipe/app/terminal/TerminalMultiplexer.java b/app/src/main/java/io/xpipe/app/terminal/TerminalMultiplexer.java index 0b43316c9..5d1f36ee3 100644 --- a/app/src/main/java/io/xpipe/app/terminal/TerminalMultiplexer.java +++ b/app/src/main/java/io/xpipe/app/terminal/TerminalMultiplexer.java @@ -20,8 +20,6 @@ public interface TerminalMultiplexer { return l; } - default void checkComplete() {} - String getDocsLink(); void checkSupported(ShellControl sc) throws Exception; diff --git a/app/src/main/java/io/xpipe/app/terminal/TerminalView.java b/app/src/main/java/io/xpipe/app/terminal/TerminalView.java index 9a481a4c6..e78eedc5e 100644 --- a/app/src/main/java/io/xpipe/app/terminal/TerminalView.java +++ b/app/src/main/java/io/xpipe/app/terminal/TerminalView.java @@ -1,6 +1,6 @@ package io.xpipe.app.terminal; -import io.xpipe.app.core.window.NativeWinWindowControl; +import io.xpipe.app.util.NativeWinWindowControl; import io.xpipe.app.issue.TrackEvent; import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.prefs.ExternalApplicationType; @@ -143,9 +143,9 @@ public class TerminalView { private Optional createTerminalSession(ProcessHandle terminalProcess) { return switch (OsType.getLocal()) { - case OsType.Linux linux -> Optional.of(new TerminalSession(terminalProcess)); - case OsType.MacOs macOs -> Optional.of(new TerminalSession(terminalProcess)); - case OsType.Windows windows -> { + case OsType.Linux ignored -> Optional.of(new TerminalSession(terminalProcess)); + case OsType.MacOs ignored -> Optional.of(new TerminalSession(terminalProcess)); + case OsType.Windows ignored -> { var controls = NativeWinWindowControl.byPid(terminalProcess.pid()); if (controls.isEmpty()) { yield Optional.empty(); diff --git a/app/src/main/java/io/xpipe/app/terminal/TermiusTerminalType.java b/app/src/main/java/io/xpipe/app/terminal/TermiusTerminalType.java index 97529fac8..3126849f9 100644 --- a/app/src/main/java/io/xpipe/app/terminal/TermiusTerminalType.java +++ b/app/src/main/java/io/xpipe/app/terminal/TermiusTerminalType.java @@ -31,13 +31,13 @@ public class TermiusTerminalType implements ExternalTerminalType { public boolean isAvailable() { try (var sc = LocalShell.getShell()) { return switch (OsType.getLocal()) { - case OsType.Linux linux -> { + case OsType.Linux ignored -> { yield Files.exists(Path.of("/opt/Termius")); } - case OsType.MacOs macOs -> { + case OsType.MacOs ignored -> { yield Files.exists(Path.of("/Applications/Termius.app")); } - case OsType.Windows windows -> { + case OsType.Windows ignored -> { var r = WindowsRegistry.local() .readStringValueIfPresent(WindowsRegistry.HKEY_CURRENT_USER, "SOFTWARE\\Classes\\termius"); yield r.isPresent(); diff --git a/app/src/main/java/io/xpipe/app/terminal/WindowsTerminalSession.java b/app/src/main/java/io/xpipe/app/terminal/WindowsTerminalSession.java index acf0be7d3..51ba1454d 100644 --- a/app/src/main/java/io/xpipe/app/terminal/WindowsTerminalSession.java +++ b/app/src/main/java/io/xpipe/app/terminal/WindowsTerminalSession.java @@ -1,6 +1,6 @@ package io.xpipe.app.terminal; -import io.xpipe.app.core.window.NativeWinWindowControl; +import io.xpipe.app.util.NativeWinWindowControl; import io.xpipe.app.util.Rect; import lombok.AccessLevel; diff --git a/app/src/main/java/io/xpipe/app/terminal/XShellTerminalType.java b/app/src/main/java/io/xpipe/app/terminal/XShellTerminalType.java index 8f36928d5..8795e8b8d 100644 --- a/app/src/main/java/io/xpipe/app/terminal/XShellTerminalType.java +++ b/app/src/main/java/io/xpipe/app/terminal/XShellTerminalType.java @@ -8,7 +8,6 @@ import io.xpipe.app.core.AppI18n; import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.prefs.ExternalApplicationType; import io.xpipe.app.process.CommandBuilder; -import io.xpipe.app.util.LocalShell; import io.xpipe.app.util.SshLocalBridge; import io.xpipe.app.util.WindowsRegistry; @@ -68,15 +67,13 @@ public class XShellTerminalType implements ExternalApplicationType.WindowsType, return; } - try (var sc = LocalShell.getShell()) { - var b = SshLocalBridge.get(); - var keyName = b.getIdentityKey().getFileName().toString(); - var command = CommandBuilder.of() - .add("-url") - .addQuoted("ssh://" + b.getUser() + "@localhost:" + b.getPort()) - .add("-i", keyName); - launch(command); - } + var b = SshLocalBridge.get(); + var keyName = b.getIdentityKey().getFileName().toString(); + var command = CommandBuilder.of() + .add("-url") + .addQuoted("ssh://" + b.getUser() + "@localhost:" + b.getPort()) + .add("-i", keyName); + launch(command); } private boolean showInfo() { diff --git a/app/src/main/java/io/xpipe/app/update/AppInstaller.java b/app/src/main/java/io/xpipe/app/update/AppInstaller.java index fb4ccd42b..a31c36eef 100644 --- a/app/src/main/java/io/xpipe/app/update/AppInstaller.java +++ b/app/src/main/java/io/xpipe/app/update/AppInstaller.java @@ -4,15 +4,11 @@ import io.xpipe.app.core.AppInstallation; import io.xpipe.app.core.AppLogs; import io.xpipe.app.core.AppRestart; import io.xpipe.app.core.mode.OperationMode; -import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.process.ShellDialects; import io.xpipe.app.process.ShellScript; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.LocalShell; import io.xpipe.app.util.ScriptHelper; -import io.xpipe.app.util.ThreadHelper; -import io.xpipe.core.FailableRunnable; import io.xpipe.core.FilePath; import io.xpipe.core.OsType; @@ -70,7 +66,7 @@ public class AppInstaller { FilePath.of(logsDir, "installer_" + file.getFileName().toString() + ".log"); var systemWide = isSystemWide(); var cmdScript = - ProcessControlProvider.get().getEffectiveLocalDialect() == ShellDialects.CMD + LocalShell.getDialect() == ShellDialects.CMD && !systemWide; var command = cmdScript ? getCmdCommand(file.toString(), logFile.toString()) diff --git a/app/src/main/java/io/xpipe/app/update/AppRelease.java b/app/src/main/java/io/xpipe/app/update/AppRelease.java index 36b4286cc..9bdcea799 100644 --- a/app/src/main/java/io/xpipe/app/update/AppRelease.java +++ b/app/src/main/java/io/xpipe/app/update/AppRelease.java @@ -12,9 +12,9 @@ public class AppRelease { var type = AppInstaller.getSuitablePlatformAsset(); var os = switch (OsType.getLocal()) { - case OsType.Linux linux -> "linux"; - case OsType.MacOs macOs -> "macos"; - case OsType.Windows windows -> "windows"; + case OsType.Linux ignored -> "linux"; + case OsType.MacOs ignored -> "macos"; + case OsType.Windows ignored -> "windows"; }; var arch = AppProperties.get().getArch(); var name = "xpipe-installer-%s-%s.%s".formatted(os, arch, type.getExtension()); diff --git a/app/src/main/java/io/xpipe/app/update/ChocoUpdater.java b/app/src/main/java/io/xpipe/app/update/ChocoUpdater.java index e54efeee4..f1d27434f 100644 --- a/app/src/main/java/io/xpipe/app/update/ChocoUpdater.java +++ b/app/src/main/java/io/xpipe/app/update/ChocoUpdater.java @@ -11,7 +11,6 @@ import io.xpipe.app.process.CommandBuilder; import io.xpipe.app.process.ShellDialects; import io.xpipe.app.process.ShellScript; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.Hyperlinks; import io.xpipe.app.util.LocalShell; diff --git a/app/src/main/java/io/xpipe/app/update/CommandUpdater.java b/app/src/main/java/io/xpipe/app/update/CommandUpdater.java index d6fb51fe4..969695d49 100644 --- a/app/src/main/java/io/xpipe/app/update/CommandUpdater.java +++ b/app/src/main/java/io/xpipe/app/update/CommandUpdater.java @@ -6,7 +6,6 @@ import io.xpipe.app.core.mode.OperationMode; import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.process.ShellScript; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.Hyperlinks; import java.util.ArrayList; diff --git a/app/src/main/java/io/xpipe/app/update/WingetUpdater.java b/app/src/main/java/io/xpipe/app/update/WingetUpdater.java index e775b7c0d..c0b6418da 100644 --- a/app/src/main/java/io/xpipe/app/update/WingetUpdater.java +++ b/app/src/main/java/io/xpipe/app/update/WingetUpdater.java @@ -10,7 +10,6 @@ import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.process.CommandBuilder; import io.xpipe.app.process.ShellScript; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.Hyperlinks; import io.xpipe.app.util.LocalShell; diff --git a/app/src/main/java/io/xpipe/app/util/AppJacksonModule.java b/app/src/main/java/io/xpipe/app/util/AppJacksonModule.java index e1c6cdd89..ca49f64b1 100644 --- a/app/src/main/java/io/xpipe/app/util/AppJacksonModule.java +++ b/app/src/main/java/io/xpipe/app/util/AppJacksonModule.java @@ -26,7 +26,6 @@ import com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.type.SimpleType; -import lombok.val; import java.io.CharArrayReader; import java.io.IOException; diff --git a/app/src/main/java/io/xpipe/app/util/DataStoreFormatter.java b/app/src/main/java/io/xpipe/app/util/DataStoreFormatter.java index cb2ac5021..93cec524f 100644 --- a/app/src/main/java/io/xpipe/app/util/DataStoreFormatter.java +++ b/app/src/main/java/io/xpipe/app/util/DataStoreFormatter.java @@ -39,11 +39,6 @@ public class DataStoreFormatter { return name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase(); } - public static String split(String left, String separator, String right, int length) { - var half = (length / 2) - separator.length(); - return cut(left, half) + separator + cut(right, length - half); - } - public static String cut(String input, int length) { if (input == null) { return ""; diff --git a/app/src/main/java/io/xpipe/app/util/DesktopHelper.java b/app/src/main/java/io/xpipe/app/util/DesktopHelper.java index c48367fac..50386574b 100644 --- a/app/src/main/java/io/xpipe/app/util/DesktopHelper.java +++ b/app/src/main/java/io/xpipe/app/util/DesktopHelper.java @@ -96,9 +96,8 @@ public class DesktopHelper { } public static void browsePathRemote(ShellControl sc, FilePath path, FileKind kind) throws Exception { - var d = sc.getShellDialect(); switch (sc.getOsType()) { - case OsType.Windows windows -> { + case OsType.Windows ignored -> { // Explorer does not support single quotes, so use normal quotes if (kind == FileKind.DIRECTORY) { sc.command(CommandBuilder.of().add("explorer").addQuoted(path.toString())) @@ -108,7 +107,7 @@ public class DesktopHelper { .execute(); } } - case OsType.Linux linux -> { + case OsType.Linux ignored -> { var action = kind == FileKind.DIRECTORY ? "org.freedesktop.FileManager1.ShowFolders" : "org.freedesktop.FileManager1.ShowItems"; @@ -127,15 +126,15 @@ public class DesktopHelper { .addFile(kind == FileKind.DIRECTORY ? path : path.getParent())) .execute(); } - case OsType.MacOs macOs -> { + case OsType.MacOs ignored -> { sc.command(CommandBuilder.of() .add("open") .addIf(kind == FileKind.DIRECTORY, "-R") .addFile(path)) .execute(); } - case OsType.Bsd bsd -> {} - case OsType.Solaris solaris -> {} + case OsType.Bsd ignored -> {} + case OsType.Solaris ignored -> {} } } diff --git a/app/src/main/java/io/xpipe/app/util/DocumentationLink.java b/app/src/main/java/io/xpipe/app/util/DocumentationLink.java index 1f55b9e41..5922a9208 100644 --- a/app/src/main/java/io/xpipe/app/util/DocumentationLink.java +++ b/app/src/main/java/io/xpipe/app/util/DocumentationLink.java @@ -3,7 +3,6 @@ package io.xpipe.app.util; import io.xpipe.app.core.AppProperties; public enum DocumentationLink { - INDEX(""), API("api"), TTY("troubleshoot/tty"), WINDOWS_SSH("guide/ssh#windows-ssh-servers"), diff --git a/app/src/main/java/io/xpipe/app/util/FileBridge.java b/app/src/main/java/io/xpipe/app/util/FileBridge.java index 0cdd8645f..81d42a17d 100644 --- a/app/src/main/java/io/xpipe/app/util/FileBridge.java +++ b/app/src/main/java/io/xpipe/app/util/FileBridge.java @@ -5,11 +5,9 @@ import io.xpipe.app.browser.file.BrowserFileOutput; import io.xpipe.app.core.AppFileWatcher; import io.xpipe.app.issue.ErrorEventFactory; import io.xpipe.app.issue.TrackEvent; -import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.process.OsFileSystem; import io.xpipe.core.FailableFunction; import io.xpipe.core.FailableSupplier; -import io.xpipe.core.OsType; import lombok.Getter; import org.apache.commons.io.FileUtils; diff --git a/app/src/main/java/io/xpipe/app/util/FileOpener.java b/app/src/main/java/io/xpipe/app/util/FileOpener.java index 68851091c..7655bbe59 100644 --- a/app/src/main/java/io/xpipe/app/util/FileOpener.java +++ b/app/src/main/java/io/xpipe/app/util/FileOpener.java @@ -46,7 +46,7 @@ public class FileOpener { public static void openWithAnyApplication(String localFile) { try { switch (OsType.getLocal()) { - case OsType.Windows windows -> { + case OsType.Windows ignored -> { // See https://learn.microsoft.com/en-us/windows/win32/api/shellapi/ns-shellapi-shellexecuteinfoa var struct = new ShellAPI.SHELLEXECUTEINFO(); struct.fMask = 0x100 | 0xC; @@ -59,10 +59,10 @@ public class FileOpener { // var cmd = CommandBuilder.of().add("rundll32.exe", "shell32.dll,OpenAs_RunDLL", localFile); // LocalShell.getShell().executeSimpleCommand(cmd); } - case OsType.Linux linux -> { + case OsType.Linux ignored -> { throw new UnsupportedOperationException(); } - case OsType.MacOs macOs -> { + case OsType.MacOs ignored -> { throw new UnsupportedOperationException(); } } diff --git a/app/src/main/java/io/xpipe/app/util/FileReference.java b/app/src/main/java/io/xpipe/app/util/FileReference.java index 2d200f1d8..4c2bba08e 100644 --- a/app/src/main/java/io/xpipe/app/util/FileReference.java +++ b/app/src/main/java/io/xpipe/app/util/FileReference.java @@ -1,8 +1,6 @@ package io.xpipe.app.util; import io.xpipe.app.ext.FileSystemStore; -import io.xpipe.app.ext.LocalStore; -import io.xpipe.app.storage.DataStorage; import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.core.FilePath; @@ -10,8 +8,6 @@ import lombok.Value; import lombok.experimental.SuperBuilder; import lombok.extern.jackson.Jacksonized; -import java.nio.file.Path; - /** * Represents a file located on a file system. */ @@ -27,16 +23,4 @@ public class FileReference { this.fileSystem = fileSystem; this.path = path; } - - public static FileReference local(Path p) { - return new FileReference(DataStorage.get().local().ref(), FilePath.of(p.toString())); - } - - public static FileReference local(FilePath p) { - return new FileReference(DataStorage.get().local().ref(), p); - } - - public boolean isLocal() { - return fileSystem.getStore() instanceof LocalStore; - } } diff --git a/app/src/main/java/io/xpipe/app/util/GlobalBooleanProperty.java b/app/src/main/java/io/xpipe/app/util/GlobalBooleanProperty.java index c0e4067ae..30b854de6 100644 --- a/app/src/main/java/io/xpipe/app/util/GlobalBooleanProperty.java +++ b/app/src/main/java/io/xpipe/app/util/GlobalBooleanProperty.java @@ -2,7 +2,6 @@ package io.xpipe.app.util; import javafx.beans.InvalidationListener; import javafx.beans.property.SimpleBooleanProperty; -import javafx.beans.property.SimpleObjectProperty; import javafx.beans.value.ChangeListener; public class GlobalBooleanProperty extends SimpleBooleanProperty { diff --git a/app/src/main/java/io/xpipe/app/util/GlobalDoubleProperty.java b/app/src/main/java/io/xpipe/app/util/GlobalDoubleProperty.java index aa0808277..d6db068c1 100644 --- a/app/src/main/java/io/xpipe/app/util/GlobalDoubleProperty.java +++ b/app/src/main/java/io/xpipe/app/util/GlobalDoubleProperty.java @@ -1,7 +1,6 @@ package io.xpipe.app.util; import javafx.beans.InvalidationListener; -import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleDoubleProperty; import javafx.beans.value.ChangeListener; diff --git a/app/src/main/java/io/xpipe/app/util/GlobalStringProperty.java b/app/src/main/java/io/xpipe/app/util/GlobalStringProperty.java index d428b442e..faa1e2b27 100644 --- a/app/src/main/java/io/xpipe/app/util/GlobalStringProperty.java +++ b/app/src/main/java/io/xpipe/app/util/GlobalStringProperty.java @@ -1,7 +1,6 @@ package io.xpipe.app.util; import javafx.beans.InvalidationListener; -import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.value.ChangeListener; diff --git a/app/src/main/java/io/xpipe/app/util/HostHelper.java b/app/src/main/java/io/xpipe/app/util/HostHelper.java index 4dc63dde3..414742038 100644 --- a/app/src/main/java/io/xpipe/app/util/HostHelper.java +++ b/app/src/main/java/io/xpipe/app/util/HostHelper.java @@ -2,7 +2,6 @@ package io.xpipe.app.util; import java.io.IOException; import java.net.Inet4Address; -import java.net.InetAddress; import java.net.ServerSocket; import java.util.Locale; @@ -37,7 +36,7 @@ public class HostHelper { } public static boolean isLocalNetworkAddress(String host) { - Inet4Address inet4Address = null; + Inet4Address inet4Address; try { inet4Address = Inet4Address.ofLiteral(host); } catch (IllegalArgumentException ignored) { diff --git a/app/src/main/java/io/xpipe/app/util/HumanReadableFormat.java b/app/src/main/java/io/xpipe/app/util/HumanReadableFormat.java index 3ade1fcfa..7bab66b1f 100644 --- a/app/src/main/java/io/xpipe/app/util/HumanReadableFormat.java +++ b/app/src/main/java/io/xpipe/app/util/HumanReadableFormat.java @@ -8,14 +8,12 @@ import java.time.Duration; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.time.temporal.WeekFields; import java.util.Objects; public final class HumanReadableFormat { public static final DateTimeFormatter DAY_MONTH_YEAR = DateTimeFormatter.ofPattern("d LLL yyyy"); public static final DateTimeFormatter DAY_MONTH = DateTimeFormatter.ofPattern("d LLL"); - public static final DateTimeFormatter DAY_OF_WEEK = DateTimeFormatter.ofPattern("EEE"); public static final DateTimeFormatter HOUR_MINUTE = DateTimeFormatter.ofPattern("HH:mm"); public static String byteCount(long bytes) { diff --git a/app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java b/app/src/main/java/io/xpipe/app/util/NativeMacOsWindowControl.java similarity index 95% rename from app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java rename to app/src/main/java/io/xpipe/app/util/NativeMacOsWindowControl.java index 6937d5dcb..2f8b69b03 100644 --- a/app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java +++ b/app/src/main/java/io/xpipe/app/util/NativeMacOsWindowControl.java @@ -1,8 +1,7 @@ -package io.xpipe.app.core.window; +package io.xpipe.app.util; import io.xpipe.app.core.AppProperties; import io.xpipe.app.issue.ErrorEventFactory; -import io.xpipe.app.util.NativeBridge; import javafx.stage.Window; diff --git a/app/src/main/java/io/xpipe/app/core/window/NativeWinWindowControl.java b/app/src/main/java/io/xpipe/app/util/NativeWinWindowControl.java similarity index 98% rename from app/src/main/java/io/xpipe/app/core/window/NativeWinWindowControl.java rename to app/src/main/java/io/xpipe/app/util/NativeWinWindowControl.java index 3252a45fe..6d912bcd0 100644 --- a/app/src/main/java/io/xpipe/app/core/window/NativeWinWindowControl.java +++ b/app/src/main/java/io/xpipe/app/util/NativeWinWindowControl.java @@ -1,6 +1,4 @@ -package io.xpipe.app.core.window; - -import io.xpipe.app.util.Rect; +package io.xpipe.app.util; import javafx.stage.Window; diff --git a/app/src/main/java/io/xpipe/app/util/NodeHelper.java b/app/src/main/java/io/xpipe/app/util/NodeHelper.java index d2476d9dc..5cd42fd91 100644 --- a/app/src/main/java/io/xpipe/app/util/NodeHelper.java +++ b/app/src/main/java/io/xpipe/app/util/NodeHelper.java @@ -2,14 +2,8 @@ package io.xpipe.app.util; import javafx.scene.Node; -import java.util.Set; - public class NodeHelper { - public static boolean isParent(Set parent, Object child) { - return parent.stream().anyMatch(node -> isParent(node, child)); - } - public static boolean isParent(Node parent, Object child) { if (child == null) { return false; diff --git a/app/src/main/java/io/xpipe/app/util/PlatformInit.java b/app/src/main/java/io/xpipe/app/util/PlatformInit.java index ef1e38866..e0bfd3be2 100644 --- a/app/src/main/java/io/xpipe/app/util/PlatformInit.java +++ b/app/src/main/java/io/xpipe/app/util/PlatformInit.java @@ -2,7 +2,7 @@ package io.xpipe.app.util; import io.xpipe.app.core.*; import io.xpipe.app.core.check.AppGpuCheck; -import io.xpipe.app.core.window.ModifiedStage; +import io.xpipe.app.core.window.AppModifiedStage; import io.xpipe.app.issue.TrackEvent; import io.xpipe.core.OsType; @@ -74,7 +74,7 @@ public class PlatformInit { try { TrackEvent.info("Platform init started"); - ModifiedStage.init(); + AppModifiedStage.init(); PlatformState.initPlatformOrThrow(); AppGpuCheck.check(); AppFont.init(); diff --git a/app/src/main/java/io/xpipe/app/util/PlatformState.java b/app/src/main/java/io/xpipe/app/util/PlatformState.java index e29d35c81..9a537d340 100644 --- a/app/src/main/java/io/xpipe/app/util/PlatformState.java +++ b/app/src/main/java/io/xpipe/app/util/PlatformState.java @@ -111,10 +111,10 @@ public enum PlatformState { var i = Math.min(300, Math.max(25, s)); var value = i + "%"; switch (OsType.getLocal()) { - case OsType.Linux linux -> { + case OsType.Linux ignored -> { System.setProperty("glass.gtk.uiScale", value); } - case OsType.Windows windows -> { + case OsType.Windows ignored -> { System.setProperty("glass.win.uiScale", value); } default -> {} diff --git a/app/src/main/java/io/xpipe/app/util/ProgressScope.java b/app/src/main/java/io/xpipe/app/util/ProgressScope.java deleted file mode 100644 index 7e9b2bdde..000000000 --- a/app/src/main/java/io/xpipe/app/util/ProgressScope.java +++ /dev/null @@ -1,63 +0,0 @@ -package io.xpipe.app.util; - -import javafx.beans.property.BooleanProperty; -import javafx.beans.property.DoubleProperty; -import javafx.beans.property.SimpleBooleanProperty; - -public class ProgressScope implements AutoCloseable { - - private final DoubleProperty prop; - private BooleanProperty active = new SimpleBooleanProperty(); - private boolean forcePlatform; - - public ProgressScope(DoubleProperty prop) { - this.prop = prop; - } - - public ProgressScope withActive(BooleanProperty active) { - this.active = active; - return this; - } - - public ProgressScope forcePlatform() { - this.forcePlatform = true; - return this; - } - - public ProgressScope start() { - if (forcePlatform) { - PlatformThread.runLaterIfNeeded(() -> { - prop.setValue(0.0); - active.setValue(true); - }); - } else { - prop.setValue(0.0); - active.setValue(true); - } - - return this; - } - - public void set(double val) { - if (forcePlatform) { - PlatformThread.runLaterIfNeeded(() -> { - prop.set(val); - }); - } else { - prop.set(val); - } - } - - @Override - public void close() { - if (forcePlatform) { - PlatformThread.runLaterIfNeeded(() -> { - prop.setValue(-1.0); - active.setValue(false); - }); - } else { - prop.setValue(-1.0); - active.setValue(false); - } - } -} diff --git a/app/src/main/java/io/xpipe/app/util/RdpConfig.java b/app/src/main/java/io/xpipe/app/util/RdpConfig.java index 2c4ce89ec..762d2148a 100644 --- a/app/src/main/java/io/xpipe/app/util/RdpConfig.java +++ b/app/src/main/java/io/xpipe/app/util/RdpConfig.java @@ -71,12 +71,6 @@ public class RdpConfig { .collect(Collectors.joining("\n")); } - public RdpConfig withRemoved(String key) { - var map = new LinkedHashMap<>(content); - map.remove(key); - return new RdpConfig(map); - } - public Optional get(String key) { return Optional.ofNullable(content.get(key)); } diff --git a/app/src/main/java/io/xpipe/app/util/SshLocalBridge.java b/app/src/main/java/io/xpipe/app/util/SshLocalBridge.java index 7eaa2af21..d84e51ff7 100644 --- a/app/src/main/java/io/xpipe/app/util/SshLocalBridge.java +++ b/app/src/main/java/io/xpipe/app/util/SshLocalBridge.java @@ -51,10 +51,6 @@ public class SshLocalBridge { return "127.0.0.1"; } - public Path getPubHostKey() { - return directory.resolve(getName() + "_host_key.pub"); - } - public Path getHostKey() { return directory.resolve(getName() + "_host_key"); } diff --git a/app/src/main/java/io/xpipe/app/vnc/ExternalVncClient.java b/app/src/main/java/io/xpipe/app/vnc/ExternalVncClient.java index 2092c01ee..9c4f0cd17 100644 --- a/app/src/main/java/io/xpipe/app/vnc/ExternalVncClient.java +++ b/app/src/main/java/io/xpipe/app/vnc/ExternalVncClient.java @@ -32,17 +32,17 @@ public interface ExternalVncClient { var l = new ArrayList>(); l.add(InternalVncClient.class); switch (OsType.getLocal()) { - case OsType.Linux linux -> { + case OsType.Linux ignored -> { l.add(RemminaVncClient.class); l.add(TigerVncClient.Linux.class); l.add(RealVncClient.Linux.class); } - case OsType.MacOs macOs -> { + case OsType.MacOs ignored -> { l.add(ScreenSharingVncClient.class); l.add(TigerVncClient.MacOs.class); l.add(RealVncClient.MacOs.class); } - case OsType.Windows windows -> { + case OsType.Windows ignored -> { l.add(TigerVncClient.Windows.class); l.add(RealVncClient.Windows.class); l.add(TightVncClient.class); diff --git a/app/src/main/java/io/xpipe/app/vnc/VncCategory.java b/app/src/main/java/io/xpipe/app/vnc/VncCategory.java index 0a2c75920..f79bfc4eb 100644 --- a/app/src/main/java/io/xpipe/app/vnc/VncCategory.java +++ b/app/src/main/java/io/xpipe/app/vnc/VncCategory.java @@ -7,7 +7,6 @@ import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.prefs.AppPrefsCategory; import io.xpipe.app.util.*; -import javafx.beans.binding.Bindings; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; import javafx.scene.layout.Region; diff --git a/beacon/src/main/java/io/xpipe/beacon/BeaconServer.java b/beacon/src/main/java/io/xpipe/beacon/BeaconServer.java index 0df9a050d..b185bcf1f 100644 --- a/beacon/src/main/java/io/xpipe/beacon/BeaconServer.java +++ b/beacon/src/main/java/io/xpipe/beacon/BeaconServer.java @@ -4,15 +4,10 @@ import io.xpipe.beacon.api.DaemonStopExchange; import lombok.SneakyThrows; -import java.io.BufferedReader; -import java.io.InputStreamReader; import java.net.Inet4Address; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; -import java.nio.file.Path; -import java.util.List; -import java.util.Optional; public class BeaconServer { diff --git a/core/src/main/java/io/xpipe/core/AesSecretValue.java b/core/src/main/java/io/xpipe/core/AesSecretValue.java index 15c1ac84c..258343d41 100644 --- a/core/src/main/java/io/xpipe/core/AesSecretValue.java +++ b/core/src/main/java/io/xpipe/core/AesSecretValue.java @@ -37,10 +37,6 @@ public abstract class AesSecretValue extends EncryptedSecretValue { return nonce; } - protected String getAlgorithm() { - return "AES/GCM/NoPadding"; - } - protected abstract SecretKey getSecretKey(); @Override diff --git a/core/src/main/java/io/xpipe/core/Deobfuscator.java b/core/src/main/java/io/xpipe/core/Deobfuscator.java index 97eaba51e..5560d0bc3 100644 --- a/core/src/main/java/io/xpipe/core/Deobfuscator.java +++ b/core/src/main/java/io/xpipe/core/Deobfuscator.java @@ -4,50 +4,9 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; public class Deobfuscator { - public static void deobfuscate(Throwable throwable) { - if (!System.getenv().containsKey("XPIPE_MAPPING")) { - return; - } - - String deobf = deobfuscateToString(throwable); - - try { - // "at package.class.method(source.java:123)" - Pattern tracePattern = Pattern.compile("\\s*at\\s+([\\w.$_]+)\\.([\\w$_]+)\\((.*):(\\d+)\\)(\\n|\\r\\n)"); - Matcher traceMatcher = tracePattern.matcher(deobf); - List stackTrace = new ArrayList<>(); - while (traceMatcher.find()) { - String className = traceMatcher.group(1); - String methodName = traceMatcher.group(2); - String sourceFile = traceMatcher.group(3); - int lineNum = Integer.parseInt(traceMatcher.group(4)); - stackTrace.add(new StackTraceElement(className, methodName, sourceFile, lineNum)); - } - - throwable.setStackTrace(stackTrace.toArray(StackTraceElement[]::new)); - - // Also deobfuscate any other exceptions - if (throwable.getCause() != null && throwable.getCause() != throwable) { - deobfuscate(throwable.getCause()); - } - for (Throwable suppressed : throwable.getSuppressed()) { - if (suppressed != throwable) { - deobfuscate(suppressed); - } - } - } catch (Throwable ex) { - System.err.println("Deobfuscation failed"); - ex.printStackTrace(); - } - } - public static String deobfuscateToString(Throwable t) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); @@ -60,7 +19,7 @@ public class Deobfuscator { return stackTrace; } - var file = Files.createTempFile("xpipe_stracktrace", null); + var file = Files.createTempFile("xpipe_stacktrace", null); Files.writeString(file, stackTrace); var proc = new ProcessBuilder( "retrace." + (OsType.getLocal() == OsType.WINDOWS ? "bat" : "sh"), diff --git a/core/src/main/java/io/xpipe/core/JacksonMapper.java b/core/src/main/java/io/xpipe/core/JacksonMapper.java index 1fdf48628..0ed19bda1 100644 --- a/core/src/main/java/io/xpipe/core/JacksonMapper.java +++ b/core/src/main/java/io/xpipe/core/JacksonMapper.java @@ -3,7 +3,6 @@ package io.xpipe.core; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.jsontype.TypeSerializer; @@ -48,12 +47,6 @@ public class JacksonMapper { .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)); } - public static T parse(String s, Class c) throws JsonProcessingException { - var mapper = getDefault(); - var tree = mapper.readTree(s); - return mapper.treeToValue(tree, c); - } - public static synchronized void configure(Consumer mapper) { mapper.accept(INSTANCE); } diff --git a/ext/base/src/main/java/io/xpipe/ext/base/identity/SshIdentityStrategy.java b/ext/base/src/main/java/io/xpipe/ext/base/identity/SshIdentityStrategy.java index ba82e735f..edf534a44 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/identity/SshIdentityStrategy.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/identity/SshIdentityStrategy.java @@ -385,9 +385,9 @@ public interface SshIdentityStrategy { public static String getDefaultSharedLibrary() { var file = switch (OsType.getLocal()) { - case OsType.Linux linux -> "/usr/local/lib/libykcs11.so"; - case OsType.MacOs macOs -> "/usr/local/lib/libykcs11.dylib"; - case OsType.Windows windows -> { + case OsType.Linux ignored -> "/usr/local/lib/libykcs11.so"; + case OsType.MacOs ignored -> "/usr/local/lib/libykcs11.dylib"; + case OsType.Windows ignored -> { var x64 = "C:\\Program Files\\Yubico\\Yubico PIV Tool\\bin\\libykcs11.dll"; yield x64; } @@ -398,11 +398,11 @@ public interface SshIdentityStrategy { private String getFile(ShellControl parent) throws Exception { var file = switch (parent.getOsType()) { - case OsType.Linux linux -> "/usr/local/lib/libykcs11.so"; - case OsType.Bsd bsd -> "/usr/local/lib/libykcs11.so"; - case OsType.Solaris solaris -> "/usr/local/lib/libykcs11.so"; - case OsType.MacOs macOs -> "/usr/local/lib/libykcs11.dylib"; - case OsType.Windows windows -> { + case OsType.Linux ignored -> "/usr/local/lib/libykcs11.so"; + case OsType.Bsd ignored -> "/usr/local/lib/libykcs11.so"; + case OsType.Solaris ignored -> "/usr/local/lib/libykcs11.so"; + case OsType.MacOs ignored -> "/usr/local/lib/libykcs11.dylib"; + case OsType.Windows ignored -> { var x64 = "C:\\Program Files\\Yubico\\Yubico PIV Tool\\bin\\libykcs11.dll"; if (parent.getShellDialect() .directoryExists(parent, x64) diff --git a/ext/base/src/main/java/io/xpipe/ext/base/script/RunTerminalScriptActionProvider.java b/ext/base/src/main/java/io/xpipe/ext/base/script/RunTerminalScriptActionProvider.java index e59255fb3..7414874b6 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/script/RunTerminalScriptActionProvider.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/script/RunTerminalScriptActionProvider.java @@ -5,7 +5,6 @@ import io.xpipe.app.ext.ShellStore; import io.xpipe.app.hub.action.StoreAction; import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import lombok.experimental.SuperBuilder; import lombok.extern.jackson.Jacksonized; diff --git a/ext/base/src/main/java/io/xpipe/ext/base/script/ScriptTargetType.java b/ext/base/src/main/java/io/xpipe/ext/base/script/ScriptTargetType.java deleted file mode 100644 index 95404bab8..000000000 --- a/ext/base/src/main/java/io/xpipe/ext/base/script/ScriptTargetType.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.xpipe.ext.base.script; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public enum ScriptTargetType { - @JsonProperty("shellInit") - SHELL_INIT, - @JsonProperty("shellSession") - SHELL_SESSION, - @JsonProperty("file") - FILE -} diff --git a/ext/base/src/main/java/io/xpipe/ext/base/store/ShellStoreProvider.java b/ext/base/src/main/java/io/xpipe/ext/base/store/ShellStoreProvider.java index 4d31953fd..91ca15858 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/store/ShellStoreProvider.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/store/ShellStoreProvider.java @@ -7,10 +7,8 @@ import io.xpipe.app.hub.comp.OsLogoComp; import io.xpipe.app.hub.comp.StoreEntryWrapper; import io.xpipe.app.hub.comp.StoreSection; import io.xpipe.app.hub.comp.SystemStateComp; -import io.xpipe.app.storage.DataStorage; import io.xpipe.app.storage.DataStoreEntry; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.terminal.TerminalPromptManager; import io.xpipe.app.util.StoreStateFormat; import io.xpipe.core.FailableRunnable; diff --git a/ext/system/src/main/java/io/xpipe/ext/system/incus/IncusContainerConsoleActionProvider.java b/ext/system/src/main/java/io/xpipe/ext/system/incus/IncusContainerConsoleActionProvider.java index 53d20cf0c..2d958066e 100644 --- a/ext/system/src/main/java/io/xpipe/ext/system/incus/IncusContainerConsoleActionProvider.java +++ b/ext/system/src/main/java/io/xpipe/ext/system/incus/IncusContainerConsoleActionProvider.java @@ -6,7 +6,6 @@ import io.xpipe.app.hub.action.HubLeafProvider; import io.xpipe.app.hub.action.StoreAction; import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.LabelGraphic; import javafx.beans.value.ObservableValue; diff --git a/ext/system/src/main/java/io/xpipe/ext/system/incus/IncusContainerEditConfigActionProvider.java b/ext/system/src/main/java/io/xpipe/ext/system/incus/IncusContainerEditConfigActionProvider.java index b77a35af7..334e551a5 100644 --- a/ext/system/src/main/java/io/xpipe/ext/system/incus/IncusContainerEditConfigActionProvider.java +++ b/ext/system/src/main/java/io/xpipe/ext/system/incus/IncusContainerEditConfigActionProvider.java @@ -6,7 +6,6 @@ import io.xpipe.app.hub.action.HubLeafProvider; import io.xpipe.app.hub.action.StoreAction; import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.LabelGraphic; import javafx.beans.value.ObservableValue; diff --git a/ext/system/src/main/java/io/xpipe/ext/system/lxd/LxdContainerConsoleActionProvider.java b/ext/system/src/main/java/io/xpipe/ext/system/lxd/LxdContainerConsoleActionProvider.java index 8715e21fd..9331a1ee5 100644 --- a/ext/system/src/main/java/io/xpipe/ext/system/lxd/LxdContainerConsoleActionProvider.java +++ b/ext/system/src/main/java/io/xpipe/ext/system/lxd/LxdContainerConsoleActionProvider.java @@ -6,7 +6,6 @@ import io.xpipe.app.hub.action.HubLeafProvider; import io.xpipe.app.hub.action.StoreAction; import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.LabelGraphic; import javafx.beans.value.ObservableValue; diff --git a/ext/system/src/main/java/io/xpipe/ext/system/lxd/LxdContainerEditConfigActionProvider.java b/ext/system/src/main/java/io/xpipe/ext/system/lxd/LxdContainerEditConfigActionProvider.java index 3864c8247..723a15cc7 100644 --- a/ext/system/src/main/java/io/xpipe/ext/system/lxd/LxdContainerEditConfigActionProvider.java +++ b/ext/system/src/main/java/io/xpipe/ext/system/lxd/LxdContainerEditConfigActionProvider.java @@ -6,7 +6,6 @@ import io.xpipe.app.hub.action.HubLeafProvider; import io.xpipe.app.hub.action.StoreAction; import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.LabelGraphic; import javafx.beans.value.ObservableValue; diff --git a/ext/system/src/main/java/io/xpipe/ext/system/podman/PodmanContainerAttachActionProvider.java b/ext/system/src/main/java/io/xpipe/ext/system/podman/PodmanContainerAttachActionProvider.java index 0b50c8bd2..c7df00263 100644 --- a/ext/system/src/main/java/io/xpipe/ext/system/podman/PodmanContainerAttachActionProvider.java +++ b/ext/system/src/main/java/io/xpipe/ext/system/podman/PodmanContainerAttachActionProvider.java @@ -5,7 +5,6 @@ import io.xpipe.app.hub.action.HubLeafProvider; import io.xpipe.app.hub.action.StoreAction; import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.LabelGraphic; import javafx.beans.value.ObservableValue; diff --git a/ext/system/src/main/java/io/xpipe/ext/system/podman/PodmanContainerLogsActionProvider.java b/ext/system/src/main/java/io/xpipe/ext/system/podman/PodmanContainerLogsActionProvider.java index 9b258d55c..060891d0f 100644 --- a/ext/system/src/main/java/io/xpipe/ext/system/podman/PodmanContainerLogsActionProvider.java +++ b/ext/system/src/main/java/io/xpipe/ext/system/podman/PodmanContainerLogsActionProvider.java @@ -6,7 +6,6 @@ import io.xpipe.app.hub.action.HubLeafProvider; import io.xpipe.app.hub.action.StoreAction; import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.app.terminal.TerminalLaunch; -import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.LabelGraphic; import javafx.beans.value.ObservableValue;