mirror of
https://github.com/xpipe-io/xpipe.git
synced 2026-05-04 03:40:32 +00:00
Rework sudo handling
This commit is contained in:
@@ -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"), () -> {
|
||||
|
||||
Reference in New Issue
Block a user