Rework sudo handling

This commit is contained in:
crschnick
2026-02-02 23:15:51 +00:00
parent 1fe785e7dc
commit 1ece6a3f81
2 changed files with 4 additions and 58 deletions
@@ -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<SecretValue> 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<SecretValue> 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);
}
}
}
@@ -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"), () -> {