From 1ece6a3f81f15df3ebd552dea95a9c6e6d0c8a5b Mon Sep 17 00:00:00 2001 From: crschnick Date: Mon, 2 Feb 2026 23:15:51 +0000 Subject: [PATCH] Rework sudo handling --- .../io/xpipe/app/process/ScriptHelper.java | 57 ------------------- .../app/terminal/TerminalDockHubManager.java | 5 +- 2 files changed, 4 insertions(+), 58 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/process/ScriptHelper.java b/app/src/main/java/io/xpipe/app/process/ScriptHelper.java index 4ad55ba90..1484d0886 100644 --- a/app/src/main/java/io/xpipe/app/process/ScriptHelper.java +++ b/app/src/main/java/io/xpipe/app/process/ScriptHelper.java @@ -51,61 +51,4 @@ public class ScriptHelper { processControl.view().writeScriptFile(file, content); return file; } - - public static FilePath createTerminalPreparedAskpassScript( - SecretValue pass, ShellControl parent, boolean forceExecutable) throws Exception { - return createTerminalPreparedAskpassScript(pass != null ? List.of(pass) : List.of(), parent, forceExecutable); - } - - public static FilePath createTerminalPreparedAskpassScript( - List pass, ShellControl parent, boolean forceExecutable) throws Exception { - var scriptType = parent.getShellDialect(); - - // Fix for powershell as there are permission issues when executing a powershell askpass script - if (forceExecutable && ShellDialects.isPowershell(parent)) { - scriptType = parent.getOsType() == OsType.WINDOWS ? ShellDialects.CMD : ShellDialects.SH; - } - - return createTerminalPreparedAskpassScript(pass, parent, scriptType); - } - - private static FilePath createTerminalPreparedAskpassScript( - List pass, ShellControl parent, ShellDialect type) throws Exception { - var fileName = "xpipe-" + Math.abs(new Random().nextInt()); - var temp = parent.getSystemTemporaryDirectory(); - var fileBase = temp.join(fileName); - if (type != parent.getShellDialect()) { - try (var sub = parent.subShell(type).start()) { - var content = sub.getShellDialect() - .getAskpass() - .prepareFixedContent( - sub, - fileBase.toString(), - pass.stream() - .map(secretValue -> secretValue.getSecretValue()) - .toList()); - content = sub.getShellDialect().prepareScriptContent(sub, content); - return createExecScriptRaw( - sub, - sub.getSystemTemporaryDirectory() - .join(fileName + "." + sub.getShellDialect().getScriptFileEnding()), - content); - } - } else { - var content = parent.getShellDialect() - .getAskpass() - .prepareFixedContent( - parent, - fileBase.toString(), - pass.stream() - .map(secretValue -> secretValue.getSecretValue()) - .toList()); - content = parent.getShellDialect().prepareScriptContent(parent, content); - return createExecScriptRaw( - parent, - parent.getSystemTemporaryDirectory() - .join(fileName + "." + parent.getShellDialect().getScriptFileEnding()), - content); - } - } } diff --git a/app/src/main/java/io/xpipe/app/terminal/TerminalDockHubManager.java b/app/src/main/java/io/xpipe/app/terminal/TerminalDockHubManager.java index f509c6cae..0d136bb5f 100644 --- a/app/src/main/java/io/xpipe/app/terminal/TerminalDockHubManager.java +++ b/app/src/main/java/io/xpipe/app/terminal/TerminalDockHubManager.java @@ -94,7 +94,10 @@ public class TerminalDockHubManager { private final TerminalDockView dockModel = new TerminalDockView(rect -> { var term = AppPrefs.get().terminalType().getValue(); var adjust = term instanceof TrackableTerminalType t && t.getDockMode() != TerminalDockMode.BORDERLESS; - return adjust ? new Rect(rect.getX() - 9, rect.getY() - 1, rect.getW() + 16, rect.getH() + 9) : rect; + // Windows terminal has a tiny top bar in any scenario + var topAdjust = term instanceof WindowsTerminalType ? 1 : 0; + return adjust ? new Rect(rect.getX() - 9, rect.getY() - 1 - topAdjust, rect.getW() + 16, rect.getH() + 9 + topAdjust) : + new Rect(rect.getX(), rect.getY() - topAdjust, rect.getW(), rect.getH() + topAdjust); }); private final AppLayoutModel.QueueEntry queueEntry = new AppLayoutModel.QueueEntry( AppI18n.observable("toggleTerminalDock"), new LabelGraphic.IconGraphic("mdi2c-console"), () -> {