This commit is contained in:
crschnick
2025-04-19 11:58:32 +00:00
parent cc4f9751fd
commit 9538f1d234
39 changed files with 357 additions and 172 deletions

View File

@@ -143,7 +143,6 @@ public class BrowserFileChooserSessionComp extends ModalOverlayContentComp {
var vertical = new VerticalComp(List.of(bookmarkTopBar, bookmarksContainer)).styleClass("left");
var splitPane = new LeftSplitPaneComp(vertical, stack)
.withInitialWidth(AppLayoutModel.get().getSavedState().getBrowserConnectionsWidth())
.styleClass("background")
.apply(struc -> {
struc.getLeft().setMinWidth(200);
struc.getLeft().setMaxWidth(500);

View File

@@ -14,6 +14,7 @@ import io.xpipe.core.util.FailableFunction;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import lombok.Getter;
@@ -40,8 +41,10 @@ public class BrowserFileChooserSessionModel extends BrowserAbstractSessionModel<
return;
}
var l = DerivedObservableList.wrap(fileSelection, true);
l.bindContent(newValue.getFileList().getSelection());
fileSelection.setAll(newValue.getFileList().getSelection());
newValue.getFileList().getSelection().addListener((ListChangeListener<? super BrowserEntry>) c -> {
fileSelection.setAll(newValue.getFileList().getSelection());
});
});
}

View File

@@ -8,6 +8,7 @@ import io.xpipe.app.core.AppI18n;
import io.xpipe.app.prefs.AppPrefs;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.util.DerivedObservableList;
import io.xpipe.app.util.DocumentationLink;
import io.xpipe.app.util.LabelGraphic;
import io.xpipe.app.util.ThreadHelper;
@@ -113,15 +114,26 @@ public class BrowserHistoryTabComp extends SimpleComp {
}
private Comp<?> createEmptyDisplay() {
var intro = new IntroComp(
var docs = new IntroComp(
"browserWelcomeDocs",
new LabelGraphic.IconGraphic("mdi2b-book-open-variant"));
docs.setButtonAction(() -> {
DocumentationLink.INDEX.open();
});
docs.setButtonDefault(true);
var open = new IntroComp(
"browserWelcomeEmpty",
new LabelGraphic.CompGraphic(PrettyImageHelper.ofSpecificFixedSize("graphics/Hips.svg", 100, 122)));
intro.setButtonAction(() -> {
open.setButtonAction(() -> {
BrowserFullSessionModel.DEFAULT.openFileSystemAsync(
DataStorage.get().local().ref(), null, null);
});
intro.setButtonDefault(true);
return intro;
var v = new VerticalComp(List.of(docs, open));
v.spacing(70);
v.apply(struc -> struc.get().setAlignment(Pos.CENTER));
return v;
}
private Comp<?> entryButton(BrowserHistorySavedState.Entry e, BooleanProperty disable) {

View File

@@ -97,7 +97,7 @@ public class StoreIdentitiesIntroComp extends SimpleComp {
fi.setIconSize(80);
var img = new StackPane(fi);
img.setPrefWidth(100);
img.setPrefHeight(150);
img.setPrefHeight(120);
var text = new VBox(title, importDesc);
text.setSpacing(5);
text.setAlignment(Pos.CENTER_LEFT);

View File

@@ -14,6 +14,7 @@ import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
public class StoreQuickAccessButtonComp extends Comp<CompStructure<Button>> {
@@ -83,13 +84,17 @@ public class StoreQuickAccessButtonComp extends Comp<CompStructure<Button>> {
public CompStructure<Button> createBase() {
var button = new IconButtonComp("mdi2c-chevron-double-right");
button.apply(struc -> {
AtomicReference<ContextMenu> menu = new AtomicReference<>();
struc.get().setOnAction(event -> {
var cm = createMenu();
if (cm == null) {
if (menu.get() == null) {
menu.set(createMenu());
}
if (menu.get() == null) {
return;
}
ContextMenuHelper.toggleShow(cm, struc.get(), Side.RIGHT);
ContextMenuHelper.toggleShow(menu.get(), struc.get(), Side.RIGHT);
event.consume();
});
});

View File

@@ -0,0 +1,42 @@
package io.xpipe.app.core;
import io.xpipe.app.comp.base.ModalButton;
import io.xpipe.app.comp.base.ModalOverlay;
import io.xpipe.app.comp.base.ScrollComp;
import io.xpipe.app.core.window.AppDialog;
import io.xpipe.app.prefs.AppearanceCategory;
import io.xpipe.app.prefs.EditorCategory;
import io.xpipe.app.prefs.TerminalCategory;
import io.xpipe.app.util.OptionsBuilder;
import javafx.geometry.Insets;
import javafx.scene.layout.Region;
public class AppConfigurationDialog {
public static void showIfNeeded() {
if (!AppProperties.get().isInitialLaunch()) {
// return;
}
var options = new OptionsBuilder()
.sub(AppearanceCategory.languageChoice())
.sub(AppearanceCategory.themeChoice())
.sub(TerminalCategory.terminalChoice())
.sub(EditorCategory.editorChoice())
.buildComp();
options.styleClass("initial-setup");
options.styleClass("prefs-container");
var scroll = new ScrollComp(options);
scroll.apply(struc -> {
struc.get().prefHeightProperty().bind(((Region) struc.get().getContent()).heightProperty());
});
scroll.minWidth(650);
scroll.prefWidth(650);
var modal = ModalOverlay.of("initialSetup", scroll);
modal.addButton(ModalButton.ok());
AppDialog.show(modal);
}
}

View File

@@ -105,6 +105,7 @@ public class AppGreetingsDialog {
AppDialog.showAndWait(modal);
if (!AppCache.getBoolean("legalAccepted", false)) {
AppProperties.get().resetInitialLaunch();
OperationMode.halt(1);
}
}

View File

@@ -165,6 +165,10 @@ public class AppProperties {
.orElse(null);
}
public void resetInitialLaunch() {
AppCache.clear("lastBuildId");
}
private static boolean isJUnitTest() {
for (StackTraceElement element : Thread.currentThread().getStackTrace()) {
if (element.getClassName().startsWith("org.junit.")) {

View File

@@ -153,6 +153,8 @@ public class BaseMode extends OperationMode {
ActionProvider.initProviders();
DataStoreProviders.init();
AppConfigurationDialog.showIfNeeded();
TrackEvent.info("Finished base components initialization");
initialized = true;
}

View File

@@ -16,6 +16,7 @@ import io.xpipe.app.util.PlatformState;
import io.xpipe.app.util.PlatformThread;
import io.xpipe.core.process.ShellScript;
import javafx.application.Platform;
import javafx.beans.property.*;
import javafx.beans.value.ObservableBooleanValue;
import javafx.beans.value.ObservableDoubleValue;
@@ -629,11 +630,18 @@ public class AppPrefs {
public void selectCategory(String id) {
AppLayoutModel.get().selectSettings();
var found = categories.stream()
.filter(appPrefsCategory -> appPrefsCategory.getId().equals(id))
.findFirst();
found.ifPresent(appPrefsCategory -> {
selectedCategory.setValue(appPrefsCategory);
// This is ugly but required to give the layout time when first navigating to the settings menu
// Otherwise, our calculated position is off if the settings were not open before
Platform.runLater(() -> {
Platform.runLater(() -> {
var found = categories.stream()
.filter(appPrefsCategory -> appPrefsCategory.getId().equals(id))
.findFirst();
found.ifPresent(appPrefsCategory -> {
selectedCategory.setValue(appPrefsCategory);
});
});
});
}

View File

@@ -40,14 +40,14 @@ public class AppearanceCategory extends AppPrefsCategory {
return new OptionsBuilder()
.addTitle("uiOptions")
.sub(new OptionsBuilder()
.pref(prefs.language)
.addComp(languageChoice(), prefs.language)
.pref(prefs.theme)
.addComp(themeChoice(), prefs.theme)
.sub(languageChoice())
.sub(themeChoice())
.pref(prefs.performanceMode)
.addToggle(prefs.performanceMode)
.pref(prefs.uiScale)
.addComp(new IntFieldComp(prefs.uiScale).maxWidth(100), prefs.uiScale)
.addComp(new IntFieldComp(prefs.uiScale).maxWidth(100).apply(struc -> {
struc.get().setPromptText("100");
}), prefs.uiScale)
.hide(new SimpleBooleanProperty(OsType.getLocal() == OsType.MACOS))
.pref(prefs.useSystemFont)
.addToggle(prefs.useSystemFont)
@@ -70,7 +70,7 @@ public class AppearanceCategory extends AppPrefsCategory {
.buildComp();
}
private Comp<?> themeChoice() {
public static OptionsBuilder themeChoice() {
var prefs = AppPrefs.get();
var c = ChoiceComp.ofTranslatable(prefs.theme, AppTheme.Theme.ALL, false)
.styleClass("theme-switcher");
@@ -100,14 +100,16 @@ public class AppearanceCategory extends AppPrefsCategory {
return cell.get();
});
});
c.minWidth(getCompWidth() / 2.0);
return c;
c.minWidth(600 / 2.0);
return new OptionsBuilder()
.pref(prefs.theme)
.addComp(c, prefs.theme);
}
private Comp<?> languageChoice() {
public static OptionsBuilder languageChoice() {
var prefs = AppPrefs.get();
var c = ChoiceComp.ofTranslatable(prefs.language, Arrays.asList(SupportedLocale.values()), false);
c.prefWidth(getCompWidth() / 2);
c.prefWidth(600 / 2);
c.hgrow();
var visit = new ButtonComp(AppI18n.observable("translate"), new FontIcon("mdi2w-web"), () -> {
Hyperlinks.open(Hyperlinks.TRANSLATE);
@@ -116,6 +118,8 @@ public class AppearanceCategory extends AppPrefsCategory {
struc.get().setAlignment(Pos.CENTER_LEFT);
struc.get().setSpacing(10);
});
return h;
return new OptionsBuilder()
.pref(prefs.language)
.addComp(h, prefs.language);
}
}

View File

@@ -1,10 +1,7 @@
package io.xpipe.app.prefs;
import io.xpipe.app.comp.Comp;
import io.xpipe.app.comp.base.ButtonComp;
import io.xpipe.app.comp.base.ChoiceComp;
import io.xpipe.app.comp.base.StackComp;
import io.xpipe.app.comp.base.TextFieldComp;
import io.xpipe.app.comp.base.*;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.ext.PrefsChoiceValue;
import io.xpipe.app.util.FileOpener;
@@ -27,32 +24,37 @@ public class EditorCategory extends AppPrefsCategory {
@Override
protected Comp<?> create() {
var prefs = AppPrefs.get();
var terminalTest = new StackComp(
List.of(new ButtonComp(AppI18n.observable("test"), new FontIcon("mdi2p-play"), () -> {
ThreadHelper.runFailableAsync(() -> {
var editor = AppPrefs.get().externalEditor().getValue();
if (editor != null) {
FileOpener.openReadOnlyString("Test");
}
});
})))
.padding(new Insets(15, 0, 0, 0))
.apply(struc -> struc.get().setAlignment(Pos.CENTER_LEFT));
return new OptionsBuilder()
.addTitle("editorConfiguration")
.sub(new OptionsBuilder()
.nameAndDescription("editorProgram")
.addComp(ChoiceComp.ofTranslatable(
prefs.externalEditor, PrefsChoiceValue.getSupported(ExternalEditorType.class), false))
.nameAndDescription("customEditorCommand")
.addComp(new TextFieldComp(prefs.customEditorCommand, true)
.apply(struc -> struc.get().setPromptText("myeditor $FILE")))
.hide(prefs.externalEditor.isNotEqualTo(ExternalEditorType.CUSTOM))
.addComp(terminalTest)
.nameAndDescription("customEditorCommandInTerminal")
.addToggle(prefs.customEditorCommandInTerminal)
.hide(prefs.externalEditor.isNotEqualTo(ExternalEditorType.CUSTOM)))
.sub(editorChoice())
.buildComp();
}
public static OptionsBuilder editorChoice() {
var prefs = AppPrefs.get();
var editorTest = new ButtonComp(AppI18n.observable("test"), new FontIcon("mdi2p-play"), () -> {
ThreadHelper.runFailableAsync(() -> {
var editor = AppPrefs.get().externalEditor().getValue();
if (editor != null) {
FileOpener.openReadOnlyString("If you can read this, the editor integration is working");
}
});
})
.padding(new Insets(6, 11, 6, 5))
.apply(struc -> struc.get().setAlignment(Pos.CENTER_LEFT));
var builder = new OptionsBuilder()
.nameAndDescription("editorProgram")
.addComp(ChoiceComp.ofTranslatable(
prefs.externalEditor, PrefsChoiceValue.getSupported(ExternalEditorType.class), false).prefWidth(300))
.nameAndDescription("customEditorCommand")
.addComp(new TextFieldComp(prefs.customEditorCommand, true)
.apply(struc -> struc.get().setPromptText("myeditor $FILE")))
.hide(prefs.externalEditor.isNotEqualTo(ExternalEditorType.CUSTOM))
.addComp(editorTest)
.nameAndDescription("customEditorCommandInTerminal")
.addToggle(prefs.customEditorCommandInTerminal)
.hide(prefs.externalEditor.isNotEqualTo(ExternalEditorType.CUSTOM));
return builder;
}
}

View File

@@ -54,6 +54,7 @@ public class SyncCategory extends AppPrefsCategory {
.apply(struc -> struc.get().setAlignment(Pos.CENTER_LEFT));
var remoteRepo = new TextFieldComp(prefs.storageGitRemote).hgrow();
remoteRepo.disable(prefs.enableGitStorage.not());
var helpButton = new ButtonComp(AppI18n.observable("help"), new FontIcon("mdi2h-help-circle-outline"), () -> {
DocumentationLink.SYNC.open();
});
@@ -68,7 +69,6 @@ public class SyncCategory extends AppPrefsCategory {
.addToggle(prefs.enableGitStorage)
.pref(prefs.storageGitRemote)
.addComp(remoteRow, prefs.storageGitRemote)
.disable(prefs.enableGitStorage.not())
.addComp(testRow)
.disable(prefs.storageGitRemote.isNull().or(prefs.enableGitStorage.not()))
.addComp(prefs.getCustomComp("gitVaultIdentityStrategy"))

View File

@@ -61,7 +61,7 @@ public class TerminalCategory extends AppPrefsCategory {
.sub(terminalPrompt())
.sub(terminalProxy())
.sub(terminalMultiplexer())
.sub(terminalInitScript())
// .sub(terminalInitScript())
.sub(new OptionsBuilder()
.pref(prefs.clearTerminalOnInit)
.addToggle(prefs.clearTerminalOnInit)
@@ -71,7 +71,7 @@ public class TerminalCategory extends AppPrefsCategory {
.buildComp();
}
private OptionsBuilder terminalChoice() {
public static OptionsBuilder terminalChoice() {
var prefs = AppPrefs.get();
var c = ChoiceComp.ofTranslatable(
prefs.terminalType, PrefsChoiceValue.getSupported(ExternalTerminalType.class), false);
@@ -99,7 +99,7 @@ public class TerminalCategory extends AppPrefsCategory {
};
});
});
c.hgrow();
c.prefWidth(300);
var visit = new ButtonComp(AppI18n.observable("website"), new FontIcon("mdi2w-web"), () -> {
var t = prefs.terminalType().getValue();
@@ -125,7 +125,7 @@ public class TerminalCategory extends AppPrefsCategory {
struc.get().setAlignment(Pos.CENTER_LEFT);
struc.get().setSpacing(10);
});
h.maxWidth(getCompWidth());
h.maxWidth(600);
var terminalTest = new ButtonComp(AppI18n.observable("test"), new FontIcon("mdi2p-play"), () -> {
ThreadHelper.runFailableAsync(() -> {
@@ -135,7 +135,7 @@ public class TerminalCategory extends AppPrefsCategory {
"Test",
ProcessControlProvider.get()
.createLocalProcessControl(true)
.command("echo Test"),
.command(ProcessControlProvider.get().getEffectiveLocalDialect().getEchoCommand("If you can read this, the terminal integration works", false)),
UUID.randomUUID());
}
});
@@ -164,7 +164,7 @@ public class TerminalCategory extends AppPrefsCategory {
.ref()
: DataStorage.get().local().ref());
ref.addListener((observable, oldValue, newValue) -> {
prefs.terminalProxy.setValue(newValue != null ? newValue.get().getUuid() : null);
prefs.terminalProxy.setValue(newValue != null && !newValue.get().equals(DataStorage.get().local()) ? newValue.get().getUuid() : null);
});
var proxyChoice = new DelayedInitComp(
Comp.of(() -> {
@@ -173,7 +173,7 @@ public class TerminalCategory extends AppPrefsCategory {
null,
ref,
ShellStore.class,
r -> TerminalProxyManager.canUseAsProxy(r),
r -> r.get().equals(DataStorage.get().local()) || TerminalProxyManager.canUseAsProxy(r),
StoreViewState.get().getAllConnectionsCategory());
return comp.createRegion();
}),
@@ -197,14 +197,13 @@ public class TerminalCategory extends AppPrefsCategory {
.ref()
: DataStorage.get().local().ref());
});
var script = new SimpleObjectProperty<>(prefs.terminalInitScript().getValue());
return new OptionsBuilder()
.nameAndDescription("terminalInitScript")
.addComp(
IntegratedTextAreaComp.script(ref, script)
IntegratedTextAreaComp.script(ref, prefs.terminalInitScript)
.maxWidth(getCompWidth())
.minHeight(150),
script);
prefs.terminalInitScript);
}
private OptionsBuilder terminalMultiplexer() {

View File

@@ -189,11 +189,9 @@ public class TerminalLauncher {
return;
}
var initScript = AppPrefs.get().terminalInitScript().getValue();
var customInit = initScript != null ? initScript + "\n" : "";
config = config.withScript(
ProcessControlProvider.get().getEffectiveLocalDialect(),
getTerminalRegisterCommand(request) + "\n" + customInit + "\n" + config.getScriptContent());
getTerminalRegisterCommand(request) + "\n" + config.getScriptContent());
launch(type, config, latch);
}
@@ -266,15 +264,12 @@ public class TerminalLauncher {
return Optional.empty();
}
var initScript = AppPrefs.get().terminalInitScript().getValue();
var initialCommand = initScript != null ? initScript + "\n" : "";
var openCommand = launchConfiguration.getDialectLaunchCommand().buildSimple();
var fullCommand = initialCommand + openCommand;
var proxyControl = TerminalProxyManager.getProxy();
if (proxyControl.isPresent()) {
var proxyMultiplexerCommand = multiplexer
.get()
.launchScriptSession(proxyControl.get(), fullCommand, initScriptConfig)
.launchScriptSession(proxyControl.get(), openCommand, initScriptConfig)
.toString();
var proxyLaunchCommand = proxyControl
.get()
@@ -295,7 +290,7 @@ public class TerminalLauncher {
} else {
var multiplexerCommand = multiplexer
.get()
.launchScriptSession(LocalShell.getShell(), fullCommand, initScriptConfig)
.launchScriptSession(LocalShell.getShell(), openCommand, initScriptConfig)
.toString();
var launchCommand = LocalShell.getShell()
.prepareIntermediateTerminalOpen(
@@ -320,14 +315,11 @@ public class TerminalLauncher {
return Optional.empty();
}
var initScript = AppPrefs.get().terminalInitScript().getValue();
var initialCommand = initScript != null ? initScript + "\n" : "";
var openCommand = launchConfiguration.getDialectLaunchCommand().buildSimple();
var fullCommand = initialCommand + openCommand;
var launchCommand = proxyControl
.get()
.prepareIntermediateTerminalOpen(
TerminalInitFunction.fixed(fullCommand),
TerminalInitFunction.fixed(openCommand),
TerminalInitScriptConfig.ofName("XPipe"),
WorkingDirectoryFunction.none());
// Restart for the next time

View File

@@ -36,6 +36,7 @@ public class TmuxTerminalMultiplexer implements TerminalMultiplexer {
"tmux kill-session -t xpipe",
"tmux new-session -d -s xpipe",
"tmux rename-window \"" + escape(config.getDisplayName(), true) + "\"",
"tmux send-keys -t xpipe ' stty -echo' Enter C-l",
"tmux send-keys -t xpipe ' " + escape(command, false) + "; exit' Enter",
"tmux attach -d -t xpipe");
}

View File

@@ -55,28 +55,26 @@ public class DerivedObservableList<T> {
}
public void setContent(List<? extends T> newList) {
synchronized (newList) {
synchronized (list) {
if (list.equals(newList)) {
return;
}
if (list.size() == 0) {
list.addAll(newList);
return;
}
if (newList.size() == 0) {
list.clear();
return;
}
synchronized (list) {
if (list.equals(newList)) {
return;
}
if (unique) {
setContentUnique(newList);
} else {
setContentNonUnique(newList);
if (list.size() == 0) {
list.addAll(newList);
return;
}
if (newList.size() == 0) {
list.clear();
return;
}
}
if (unique) {
setContentUnique(newList);
} else {
setContentNonUnique(newList);
}
}
@@ -184,17 +182,19 @@ public class DerivedObservableList<T> {
var cache = new HashMap<T, V>();
var l1 = this.<V>createNewDerived();
Runnable runnable = () -> {
List<V> toApply;
synchronized (list) {
var listSet = new HashSet<>(list);
cache.keySet().removeIf(t -> !listSet.contains(t));
l1.setContent(listStream().map(v -> {
toApply = listStream().map(v -> {
if (!cache.containsKey(v)) {
cache.put(v, map.apply(v));
}
return cache.get(v);
}).toList());
}).toList();
}
l1.setContent(toApply);
};
runnable.run();
list.addListener((ListChangeListener<? super T>) c -> {
@@ -203,13 +203,6 @@ public class DerivedObservableList<T> {
return l1;
}
public void bindContent(ObservableList<T> other) {
setContent(other);
other.addListener((ListChangeListener<? super T>) c -> {
setContent(other);
});
}
public DerivedObservableList<T> filtered(Predicate<T> predicate) {
return filtered(new SimpleObjectProperty<>(predicate));
}
@@ -230,9 +223,11 @@ public class DerivedObservableList<T> {
public DerivedObservableList<T> filtered(ObservableValue<Predicate<T>> predicate) {
var d = this.<T>createNewDerived();
Runnable runnable = () -> {
List<T> toApply;
synchronized (list) {
d.setContent(predicate.getValue() != null ? listStream().filter(predicate.getValue()).toList() : list);
toApply = predicate.getValue() != null ? listStream().filter(predicate.getValue()).toList() : list;
}
d.setContent(toApply);
};
runnable.run();
list.addListener((ListChangeListener<? super T>) c -> {
@@ -260,9 +255,11 @@ public class DerivedObservableList<T> {
public DerivedObservableList<T> sorted(ObservableValue<Comparator<T>> comp) {
var d = this.<T>createNewDerived();
Runnable runnable = () -> {
List<T> toApply;
synchronized (list) {
d.setContent(listStream().sorted(comp.getValue()).toList());
toApply = listStream().sorted(comp.getValue()).toList();
}
d.setContent(toApply);
};
runnable.run();
list.addListener((ListChangeListener<? super T>) c -> {

View File

@@ -7,7 +7,12 @@
-fx-font-weight: BOLD;
-fx-font-size: 1.1em;
}
.prefs-container.options-comp > .options-comp {
.initial-setup.prefs-container {
-fx-padding: -1.8em 25 0 0;
}
.prefs .prefs-container.options-comp > .options-comp {
-fx-padding: 0 0 0 1em;
}

View File

@@ -71,7 +71,13 @@ public class IncusContainerStore
}
@Override
public ShellControl control(ShellControl parent) {
public ShellControl control(ShellControl parent) throws Exception {
refreshContainerState(getInstall()
.getStore()
.getHost()
.getStore()
.getOrStartSession());
var user = identity != null ? identity.unwrap().getUsername() : null;
var sc = new IncusCommandView(parent).exec(containerName, user, () -> {
var state = getState();

View File

@@ -1,9 +1,7 @@
package io.xpipe.ext.system.incus;
import io.xpipe.app.comp.store.StoreChoiceComp;
import io.xpipe.app.comp.store.StoreEntryWrapper;
import io.xpipe.app.comp.store.StoreSection;
import io.xpipe.app.comp.store.StoreViewState;
import io.xpipe.app.comp.Comp;
import io.xpipe.app.comp.store.*;
import io.xpipe.app.ext.ContainerStoreState;
import io.xpipe.app.ext.GuiDialog;
import io.xpipe.app.storage.DataStoreEntry;
@@ -20,6 +18,20 @@ import java.util.List;
public class IncusContainerStoreProvider implements ShellStoreProvider {
public Comp<?> stateDisplay(StoreEntryWrapper w) {
return new OsLogoComp(w, BindingsHelper.map(w.getPersistentState(), o -> {
var state = (ContainerStoreState) o;
var cs = state.getContainerState();
if (cs != null && cs.toLowerCase().contains("stopped")) {
return SystemStateComp.State.FAILURE;
} else if (cs != null && cs.toLowerCase().contains("running")) {
return SystemStateComp.State.SUCCESS;
} else {
return SystemStateComp.State.OTHER;
}
}));
}
@Override
public DocumentationLink getHelpLink() {
return DocumentationLink.LXC;

View File

@@ -74,7 +74,13 @@ public class LxdContainerStore
}
@Override
public ShellControl control(ShellControl parent) {
public ShellControl control(ShellControl parent) throws Exception {
refreshContainerState(getCmd()
.getStore()
.getHost()
.getStore()
.getOrStartSession());
var user = identity != null ? identity.unwrap().getUsername() : null;
var sc = new LxdCommandView(parent).exec(containerName, user, () -> {
var state = getState();

View File

@@ -1,16 +1,11 @@
package io.xpipe.ext.system.lxd;
import io.xpipe.app.comp.store.StoreChoiceComp;
import io.xpipe.app.comp.store.StoreEntryWrapper;
import io.xpipe.app.comp.store.StoreSection;
import io.xpipe.app.comp.store.StoreViewState;
import io.xpipe.app.comp.Comp;
import io.xpipe.app.comp.store.*;
import io.xpipe.app.ext.ContainerStoreState;
import io.xpipe.app.ext.GuiDialog;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.util.DataStoreFormatter;
import io.xpipe.app.util.DocumentationLink;
import io.xpipe.app.util.OptionsBuilder;
import io.xpipe.app.util.StoreStateFormat;
import io.xpipe.app.util.*;
import io.xpipe.core.store.DataStore;
import io.xpipe.ext.base.identity.IdentityChoice;
import io.xpipe.ext.base.store.ShellStoreProvider;
@@ -23,6 +18,20 @@ import java.util.List;
public class LxdContainerStoreProvider implements ShellStoreProvider {
public Comp<?> stateDisplay(StoreEntryWrapper w) {
return new OsLogoComp(w, BindingsHelper.map(w.getPersistentState(), o -> {
var state = (ContainerStoreState) o;
var cs = state.getContainerState();
if (cs != null && cs.toLowerCase().contains("stopped")) {
return SystemStateComp.State.FAILURE;
} else if (cs != null && cs.toLowerCase().contains("running")) {
return SystemStateComp.State.SUCCESS;
} else {
return SystemStateComp.State.OTHER;
}
}));
}
@Override
public DocumentationLink getHelpLink() {
return DocumentationLink.LXC;

View File

@@ -135,7 +135,12 @@ public class PodmanContainerStore
}
@Override
public ShellControl control(ShellControl parent) {
public ShellControl control(ShellControl parent) throws Exception {
refreshContainerState(getCmd()
.getStore()
.getHost()
.getStore()
.getOrStartSession());
var pc = new PodmanCommandView(parent).container().exec(containerName);
pc.withSourceStore(PodmanContainerStore.this);
pc.withShellStateInit(PodmanContainerStore.this);

View File

@@ -1,9 +1,7 @@
package io.xpipe.ext.system.podman;
import io.xpipe.app.comp.store.StoreChoiceComp;
import io.xpipe.app.comp.store.StoreEntryWrapper;
import io.xpipe.app.comp.store.StoreSection;
import io.xpipe.app.comp.store.StoreViewState;
import io.xpipe.app.comp.Comp;
import io.xpipe.app.comp.store.*;
import io.xpipe.app.ext.ContainerStoreState;
import io.xpipe.app.ext.GuiDialog;
import io.xpipe.app.storage.DataStorage;
@@ -26,6 +24,20 @@ public class PodmanContainerStoreProvider implements ShellStoreProvider {
return DocumentationLink.PODMAN;
}
public Comp<?> stateDisplay(StoreEntryWrapper w) {
return new OsLogoComp(w, BindingsHelper.map(w.getPersistentState(), o -> {
var state = (ContainerStoreState) o;
var cs = state.getContainerState();
if (cs != null && cs.toLowerCase().contains("exited")) {
return SystemStateComp.State.FAILURE;
} else if (cs != null && cs.toLowerCase().contains("up")) {
return SystemStateComp.State.SUCCESS;
} else {
return SystemStateComp.State.OTHER;
}
}));
}
public void onParentRefresh(DataStoreEntry entry) {
var services = FixedServiceGroupStore.builder().parent(entry.ref()).build();
var servicesEntry = DataStorage.get().getStoreEntryIfPresent(services, false);

View File

@@ -99,6 +99,9 @@ browserWelcomeEmptyHeader=Fil-browser
browserWelcomeEmptyContent=Til venstre kan du vælge, hvilke systemer der skal åbnes i filbrowseren. XPipe vil huske, hvilke systemer og mapper du tidligere har åbnet, og vise dem i en hurtig adgangsmenu her i fremtiden.
browserWelcomeEmptyButton=Åbn lokal filbrowser
browserWelcomeSystems=Du var for nylig forbundet til følgende systemer:
browserWelcomeDocsHeader=Dokumentation
browserWelcomeDocsContent=Hvis du foretrækker en mere guidet tilgang til at gøre dig bekendt med XPipe, kan du tjekke dokumentationswebstedet.
browserWelcomeDocsButton=Åben dokumentation
hostFeatureUnsupported=$FEATURE$ er ikke installeret på værten
missingStore=$NAME$ eksisterer ikke
connectionName=Navn på forbindelse
@@ -248,7 +251,7 @@ rdpConfiguration=Konfiguration af fjernskrivebord
rdpClient=RDP-klient
rdpClientDescription=Det RDP-klientprogram, der skal kaldes, når RDP-forbindelser startes.\n\nBemærk, at forskellige klienter har forskellige grader af evner og integrationer. Nogle klienter understøtter ikke automatisk overførsel af adgangskoder, så du skal stadig udfylde dem ved opstart.
localShell=Lokal shell
themeDescription=Dit foretrukne skærmtema
themeDescription=Dit foretrukne skærmtema.
dontAutomaticallyStartVmSshServer=Start ikke automatisk SSH-server for VM'er, når det er nødvendigt
dontAutomaticallyStartVmSshServerDescription=Enhver shell-forbindelse til en VM, der kører i en hypervisor, sker via SSH. XPipe kan automatisk starte den installerede SSH-server, når det er nødvendigt. Hvis du ikke ønsker dette af sikkerhedsmæssige årsager, kan du bare deaktivere denne adfærd med denne indstilling.
confirmGitShareTitle=Git-synkronisering
@@ -307,7 +310,7 @@ runOnStartup=Kører ved opstart
closeBehaviour=Afslutningsadfærd
closeBehaviourDescription=Styrer, hvordan XPipe skal fortsætte, når hovedvinduet lukkes.
language=Sprog
languageDescription=Det skærmsprog, der skal bruges.\n\nBemærk, at oversættelserne bruger automatisk genererede oversættelser som base og rettes og forbedres manuelt af bidragydere. Du kan også hjælpe med oversættelsesarbejdet ved at indsende oversættelsesrettelser på GitHub.
languageDescription=Det skærmsprog, der skal bruges. Oversættelserne forbedres gennem bidrag fra fællesskabet. Du kan hjælpe oversættelsesarbejdet ved at indsende oversættelsesrettelser på GitHub.
lightTheme=Lys-tema
darkTheme=Mørkt tema
exit=Afslut XPipe
@@ -376,7 +379,8 @@ terminalConfiguration=Konfiguration af terminal
terminalCustomization=Tilpasning af terminaler
editorConfiguration=Konfiguration af editor
defaultApplication=Standardapplikation
terminalTypeDescription=Den standardterminal, der skal bruges, når man åbner en shell-forbindelse. Denne applikation bruges kun til visning, det startede shell-program afhænger af selve shell-forbindelsen.\n\nNiveauet for understøttelse af funktioner varierer fra terminal til terminal, og derfor er hver enkelt markeret som enten anbefalet eller ikke anbefalet. Alle ikke-anbefalede terminaler fungerer med XPipe, men mangler måske funktioner som faner, titel-farver, shell-understøttelse og meget mere. Din brugeroplevelse bliver bedst, når du bruger en anbefalet terminal.
initialSetup=Første opsætning
terminalTypeDescription=Den standardterminal, der skal bruges til at åbne shell-forbindelser.\n\nNiveauet for understøttelse af funktioner varierer fra terminal til terminal, og hver enkelt er markeret som enten anbefalet eller ikke anbefalet. Din brugeroplevelse bliver bedst, når du bruger en anbefalet terminal.
program=Program
customTerminalCommand=Brugerdefineret terminalkommando
customTerminalCommandDescription=Den kommando, der skal udføres for at åbne den brugerdefinerede terminal med en given kommando.\n\nXPipe opretter et midlertidigt shell-script til din terminal, som den kan udføre. Pladsholderstrengen $CMD i den kommando, du angiver, vil blive erstattet af det faktiske startscript, når det kaldes. Husk at citere stien til terminalens eksekverbare fil, hvis den indeholder mellemrum.

View File

@@ -102,6 +102,9 @@ browserWelcomeEmptyHeader=Dateibrowser
browserWelcomeEmptyContent=Du kannst auf der linken Seite auswählen, welche Systeme im Dateibrowser geöffnet werden sollen. XPipe merkt sich, auf welche Systeme und Verzeichnisse du zuvor zugegriffen hast und zeigt sie in Zukunft in einem Schnellzugriffsmenü an.
browserWelcomeEmptyButton=Lokalen Dateibrowser öffnen
browserWelcomeSystems=Du warst vor kurzem mit den folgenden Systemen verbunden:
browserWelcomeDocsHeader=Dokumentation
browserWelcomeDocsContent=Wenn du dich lieber mit einem Leitfaden mit XPipe vertraut machen willst, schau dir die Dokumentations-Website an.
browserWelcomeDocsButton=Offene Dokumentation
hostFeatureUnsupported=$FEATURE$ ist nicht auf dem Host installiert
missingStore=$NAME$ gibt es nicht
connectionName=Verbindungsname
@@ -248,7 +251,7 @@ rdpConfiguration=Konfiguration des Remote-Desktops
rdpClient=RDP-Client
rdpClientDescription=Das RDP-Client-Programm, das beim Starten von RDP-Verbindungen aufgerufen wird.\n\nBeachte, dass die verschiedenen Clients einen unterschiedlichen Grad an Fähigkeiten und Integrationen haben. Einige Clients unterstützen die automatische Übergabe von Passwörtern nicht, so dass du sie beim Start immer noch eingeben musst.
localShell=Lokale Shell
themeDescription=Dein bevorzugtes Anzeigethema
themeDescription=Dein bevorzugtes Anzeigethema.
dontAutomaticallyStartVmSshServer=SSH-Server für VMs bei Bedarf nicht automatisch starten
dontAutomaticallyStartVmSshServerDescription=Jede Shell-Verbindung zu einer VM, die in einem Hypervisor läuft, wird über SSH hergestellt. XPipe kann bei Bedarf automatisch den installierten SSH-Server starten. Wenn du das aus Sicherheitsgründen nicht möchtest, kannst du dieses Verhalten mit dieser Option einfach deaktivieren.
confirmGitShareTitle=Git-Synchronisation
@@ -307,7 +310,7 @@ runOnStartup=Beim Starten ausführen
closeBehaviour=Exit-Verhalten
closeBehaviourDescription=Legt fest, wie XPipe beim Schließen des Hauptfensters vorgehen soll.
language=Sprache
languageDescription=Die zu verwendende Anzeigesprache.\n\nBeachte, dass die Übersetzungen automatisch generierte Übersetzungen als Grundlage verwenden und von den Mitwirkenden manuell korrigiert und verbessert werden. Du kannst die Übersetzungsarbeit auch unterstützen, indem du auf GitHub Korrekturen für die Übersetzungen einreichst.
languageDescription=Die zu verwendende Anzeigesprache. Die Übersetzungen werden durch Beiträge der Community verbessert. Du kannst die Übersetzungsarbeit unterstützen, indem du auf GitHub Korrekturen an den Übersetzungen einreichst.
lightTheme=Licht-Thema
darkTheme=Dunkles Thema
exit=XPipe beenden
@@ -375,7 +378,8 @@ terminalConfiguration=Terminal-Konfiguration
terminalCustomization=Terminal-Anpassung
editorConfiguration=Editor-Konfiguration
defaultApplication=Standardanwendung
terminalTypeDescription=Das Standardterminal, das beim Öffnen einer Shell-Verbindung verwendet wird. Diese Anwendung wird nur zu Anzeigezwecken verwendet, das gestartete Shell-Programm hängt von der Shell-Verbindung selbst ab.\n\nDer Grad der Unterstützung von Funktionen ist von Terminal zu Terminal unterschiedlich, deshalb ist jedes Terminal entweder als empfohlen oder nicht empfohlen gekennzeichnet. Alle nicht empfohlenen Terminals funktionieren mit XPipe, aber ihnen fehlen möglicherweise Funktionen wie Tabs, Titelfarben, Shell-Unterstützung und mehr. Die besten Ergebnisse erzielst du, wenn du ein empfohlenes Terminal verwendest.
initialSetup=Ersteinrichtung
terminalTypeDescription=Das Standardterminal, das zum Öffnen von Shell-Verbindungen verwendet wird.\n\nDie Unterstützung der Funktionen ist je nach Terminal unterschiedlich und jedes Terminal ist entweder als empfohlen oder nicht empfohlen gekennzeichnet. Das empfohlene Terminal bietet dir die beste Benutzererfahrung.
program=Programm
customTerminalCommand=Benutzerdefinierter Terminalbefehl
customTerminalCommandDescription=Der Befehl, der ausgeführt werden soll, um das benutzerdefinierte Terminal mit einem bestimmten Befehl zu öffnen.\n\nXPipe erstellt ein temporäres Launcher-Shell-Skript für dein Terminal, das ausgeführt wird. Die Platzhalterzeichenfolge $CMD in dem von dir angegebenen Befehl wird beim Aufruf durch das eigentliche Launcher-Skript ersetzt. Vergiss nicht, den ausführbaren Pfad deines Terminals in Anführungszeichen zu setzen, wenn er Leerzeichen enthält.

View File

@@ -108,6 +108,9 @@ browserWelcomeEmptyHeader=File browser
browserWelcomeEmptyContent=You can choose on the left which systems to open in the file browser. XPipe will remember which systems and directories you have accessed previously and show them in a quick access menu here in the future.
browserWelcomeEmptyButton=Open local file browser
browserWelcomeSystems=You were recently connected to the following systems:
browserWelcomeDocsHeader=Documentation
browserWelcomeDocsContent=If you prefer a more guided approach to familiarizing yourself with XPipe, check out the documentation website.
browserWelcomeDocsButton=Open documentation
hostFeatureUnsupported=$FEATURE$ is not installed on the host
missingStore=$NAME$ does not exist
connectionName=Connection name
@@ -256,7 +259,7 @@ rdpClient=RDP client
rdpClientDescription=The RDP client program to call when launching RDP connections.\n\nNote that various clients have different degrees of abilities and integrations. Some clients don't support passing passwords automatically, so you still have to fill them in on launch.
localShell=Local shell
#context: display theme
themeDescription=Your preferred display theme
themeDescription=Your preferred display theme.
dontAutomaticallyStartVmSshServer=Don't automatically start SSH server for VMs when needed
dontAutomaticallyStartVmSshServerDescription=Any shell connection to a VM running in a hypervisor is made through SSH. XPipe can automatically start the installed SSH server when needed. If you don't want this for security reasons, then you can just disable this behavior with this option.
confirmGitShareTitle=Git sync
@@ -316,7 +319,7 @@ runOnStartup=Run on startup
closeBehaviour=Exit behaviour
closeBehaviourDescription=Controls how XPipe should proceed upon closing its main window.
language=Language
languageDescription=The display language to use.\n\nNote that the translations use automatically generated translations as a base and are manually fixed and improved by contributors. You can also help the translation effort by submitting translation fixes on GitHub.
languageDescription=The display language to use. The translations are improved through community contributions. You can help the translation effort by submitting translation fixes on GitHub.
#context: computer display theme for light mode
lightTheme=Light Theme
#context: display theme
@@ -386,7 +389,8 @@ terminalConfiguration=Terminal configuration
terminalCustomization=Terminal customization
editorConfiguration=Editor configuration
defaultApplication=Default application
terminalTypeDescription=The default terminal to use when opening any kind of shell connection. This application is only used for display purposes, the started shell program depends on the shell connection itself.\n\nThe level of feature support varies by terminal, that is why each one is marked as either recommended or not recommended. All non-recommended terminals work with XPipe but might lack features like tabs, title colors, shell support, and more. Your user experience will be best when using a recommended terminal.
initialSetup=Initial setup
terminalTypeDescription=The default terminal to use for opening shell connections.\n\nThe level of feature support varies by terminal, and each one is marked as either recommended or not recommended. Your user experience will be best when using a recommended terminal.
program=Program
customTerminalCommand=Custom terminal command
customTerminalCommandDescription=The command to execute to open the custom terminal with a given command.\n\nXPipe will create a temporary launcher shell script for your terminal to execute. The placeholder string $CMD in the command you supply will be replaced by the actual launcher script when called. Remember to quote your terminal executable path if it contains spaces.
@@ -1203,7 +1207,6 @@ addUserDescription=Create a new user for this vault
skip=Skip
userChangePasswordAlertTitle=Password change
userChangePasswordAlertHeader=Set new password for user
#force
docs=Documentation
lxd.displayName=LXD Container
lxd.displayDescription=Connect to a LXD container via lxc

View File

@@ -98,6 +98,9 @@ browserWelcomeEmptyHeader=Navegador de archivos
browserWelcomeEmptyContent=Puedes elegir a la izquierda qué sistemas abrir en el explorador de archivos. XPipe recordará a qué sistemas y directorios has accedido anteriormente y los mostrará en un menú de acceso rápido aquí en el futuro.
browserWelcomeEmptyButton=Abrir el explorador de archivos local
browserWelcomeSystems=Hace poco te conectaste a los siguientes sistemas:
browserWelcomeDocsHeader=Documentación
browserWelcomeDocsContent=Si prefieres un enfoque más guiado para familiarizarte con XPipe, consulta el sitio web de documentación.
browserWelcomeDocsButton=Documentación abierta
hostFeatureUnsupported=$FEATURE$ no está instalado en el host
missingStore=$NAME$ no existe
connectionName=Nombre de la conexión
@@ -239,7 +242,7 @@ rdpConfiguration=Configuración del escritorio remoto
rdpClient=Cliente RDP
rdpClientDescription=El programa cliente RDP al que llamar al iniciar conexiones RDP.\n\nTen en cuenta que los distintos clientes tienen diferentes grados de capacidades e integraciones. Algunos clientes no admiten la transmisión automática de contraseñas, por lo que tendrás que introducirlas al iniciar la conexión.
localShell=Shell local
themeDescription=Tu tema de visualización preferido
themeDescription=Tu tema de visualización preferido.
dontAutomaticallyStartVmSshServer=No iniciar automáticamente el servidor SSH para las máquinas virtuales cuando sea necesario
dontAutomaticallyStartVmSshServerDescription=Cualquier conexión shell a una máquina virtual que se ejecute en un hipervisor se realiza a través de SSH. XPipe puede iniciar automáticamente el servidor SSH instalado cuando sea necesario. Si no quieres esto por razones de seguridad, puedes desactivar este comportamiento con esta opción.
confirmGitShareTitle=Sincronización Git
@@ -297,7 +300,7 @@ runOnStartup=Ejecutar al inicio
closeBehaviour=Comportamiento de salida
closeBehaviourDescription=Controla cómo debe proceder XPipe al cerrar su ventana principal.
language=Idioma
languageDescription=El lenguaje de visualización a utilizar.\n\nTen en cuenta que las traducciones utilizan traducciones generadas automáticamente como base y son corregidas y mejoradas manualmente por los colaboradores. También puedes ayudar al esfuerzo de traducción enviando correcciones en GitHub.
languageDescription=El idioma de visualización a utilizar. Las traducciones se mejoran gracias a las contribuciones de la comunidad. Puedes ayudar al esfuerzo de traducción enviando correcciones en GitHub.
lightTheme=Tema Luz
darkTheme=Tema oscuro
exit=Salir de XPipe
@@ -365,7 +368,8 @@ terminalConfiguration=Configuración del terminal
terminalCustomization=Personalización del terminal
editorConfiguration=Configuración del editor
defaultApplication=Aplicación por defecto
terminalTypeDescription=El terminal por defecto que se utiliza al abrir cualquier tipo de conexión shell. Esta aplicación sólo se utiliza a efectos de visualización, el programa shell iniciado depende de la propia conexión shell.\n\nEl nivel de compatibilidad de funciones varía según el terminal, por eso cada uno está marcado como recomendado o no recomendado. Todos los terminales no recomendados funcionan con XPipe, pero pueden carecer de características como pestañas, colores de título, soporte de shell y otras. Tu experiencia de usuario será mejor si utilizas un terminal recomendado.
initialSetup=Configuración inicial
terminalTypeDescription=El terminal por defecto a utilizar para abrir conexiones shell.\n\nEl nivel de soporte de funciones varía según el terminal, y cada uno está marcado como recomendado o no recomendado. Tu experiencia de usuario será mejor si utilizas un terminal recomendado.
program=Programa
customTerminalCommand=Comando de terminal personalizado
customTerminalCommandDescription=El comando a ejecutar para abrir el terminal personalizado con un comando determinado.\n\nXPipe creará un script shell lanzador temporal para que lo ejecute tu terminal. La cadena $CMD del marcador de posición del comando que proporciones será sustituida por el script lanzador real cuando sea llamado. Recuerda entrecomillar la ruta ejecutable de tu terminal si contiene espacios.

View File

@@ -102,6 +102,9 @@ browserWelcomeEmptyHeader=Navigateur de fichiers
browserWelcomeEmptyContent=Tu peux choisir à gauche les systèmes à ouvrir dans le navigateur de fichiers. XPipe se souviendra des systèmes et des répertoires auxquels tu as accédé précédemment et les affichera dans un menu d'accès rapide ici à l'avenir.
browserWelcomeEmptyButton=Ouvrir un navigateur de fichiers local
browserWelcomeSystems=Tu as récemment été connecté aux systèmes suivants :
browserWelcomeDocsHeader=Documentation
browserWelcomeDocsContent=Si tu préfères une approche plus guidée pour te familiariser avec XPipe, consulte le site Web de documentation.
browserWelcomeDocsButton=Documentation ouverte
hostFeatureUnsupported=$FEATURE$ n'est pas installé sur l'hôte
missingStore=$NAME$ n'existe pas
connectionName=Nom de la connexion
@@ -245,7 +248,7 @@ rdpConfiguration=Configuration du bureau à distance
rdpClient=Client RDP
rdpClientDescription=Le programme client RDP à appeler lors du lancement des connexions RDP.\n\nNote que les divers clients ont différents degrés de capacités et d'intégrations. Certains clients ne prennent pas en charge le passage automatique des mots de passe, tu dois donc toujours les remplir au lancement.
localShell=Shell local
themeDescription=Ton thème d'affichage préféré
themeDescription=Le thème d'affichage que tu préfères.
dontAutomaticallyStartVmSshServer=Ne démarre pas automatiquement le serveur SSH pour les machines virtuelles lorsque c'est nécessaire
dontAutomaticallyStartVmSshServerDescription=Toute connexion shell à une VM fonctionnant dans un hyperviseur se fait par l'intermédiaire de SSH. XPipe peut démarrer automatiquement le serveur SSH installé lorsque cela est nécessaire. Si tu ne le souhaites pas pour des raisons de sécurité, tu peux simplement désactiver ce comportement avec cette option.
confirmGitShareTitle=Git sync
@@ -305,7 +308,7 @@ runOnStartup=Exécuter au démarrage
closeBehaviour=Comportement de sortie
closeBehaviourDescription=Contrôle la façon dont XPipe doit procéder à la fermeture de sa fenêtre principale.
language=Langue
languageDescription=La langue d'affichage à utiliser.\n\nNote que les traductions utilisent comme base des traductions générées automatiquement et sont corrigées et améliorées manuellement par les contributeurs. Tu peux également contribuer à l'effort de traduction en soumettant des correctifs de traduction sur GitHub.
languageDescription=La langue d'affichage à utiliser. Les traductions sont améliorées grâce aux contributions de la communauté. Tu peux contribuer à l'effort de traduction en soumettant des correctifs de traduction sur GitHub.
#custom
lightTheme=Thème clair
darkTheme=Thème sombre
@@ -375,7 +378,8 @@ terminalConfiguration=Configuration du terminal
terminalCustomization=Personnalisation du terminal
editorConfiguration=Configuration de l'éditeur
defaultApplication=Application par défaut
terminalTypeDescription=Le terminal par défaut à utiliser lors de l'ouverture de tout type de connexion shell. Cette application n'est utilisée qu'à des fins d'affichage, le programme shell démarré dépend de la connexion shell elle-même.\n\nLe niveau de prise en charge des fonctionnalités varie d'un terminal à l'autre, c'est pourquoi chacun d'entre eux est marqué comme étant recommandé ou non recommandé. Tous les terminaux non recommandés fonctionnent avec XPipe mais peuvent manquer de fonctionnalités comme les onglets, les couleurs de titre, la prise en charge de l'interpréteur de commandes, et plus encore. Ton expérience d'utilisateur sera meilleure si tu utilises un terminal recommandé.
initialSetup=Configuration initiale
terminalTypeDescription=Le terminal par défaut à utiliser pour ouvrir des connexions shell.\n\nLe niveau de prise en charge des fonctionnalités varie d'un terminal à l'autre, et chacun d'entre eux est indiqué comme étant recommandé ou non recommandé. Ton expérience d'utilisateur sera meilleure si tu utilises un terminal recommandé.
program=Programme
customTerminalCommand=Commande de terminal personnalisée
customTerminalCommandDescription=La commande à exécuter pour ouvrir le terminal personnalisé avec une commande donnée.\n\nXPipe créera un script de lancement temporaire pour ton terminal à exécuter. La chaîne de caractères $CMD de la commande que tu as fournie sera remplacée par le script de lancement lorsqu'il sera appelé. N'oublie pas de citer le chemin d'accès à l'exécutable de ton terminal s'il contient des espaces.

View File

@@ -98,6 +98,9 @@ browserWelcomeEmptyHeader=Peramban file
browserWelcomeEmptyContent=Anda dapat memilih di sebelah kiri sistem mana yang akan dibuka di peramban file. XPipe akan mengingat sistem dan direktori mana yang telah Anda akses sebelumnya dan menampilkannya dalam menu akses cepat di sini di masa mendatang.
browserWelcomeEmptyButton=Membuka peramban file lokal
browserWelcomeSystems=Anda baru saja tersambung ke sistem berikut ini:
browserWelcomeDocsHeader=Dokumentasi
browserWelcomeDocsContent=Jika Anda lebih suka pendekatan yang lebih terpandu untuk membiasakan diri dengan XPipe, lihat situs web dokumentasi.
browserWelcomeDocsButton=Buka dokumentasi
hostFeatureUnsupported=$FEATURE$ tidak terinstal pada host
missingStore=$NAME$ tidak ada
connectionName=Nama koneksi
@@ -239,7 +242,7 @@ rdpConfiguration=Konfigurasi desktop jarak jauh
rdpClient=Klien RDP
rdpClientDescription=Program klien RDP yang akan dipanggil saat meluncurkan koneksi RDP.\n\nPerhatikan bahwa berbagai klien memiliki tingkat kemampuan dan integrasi yang berbeda. Beberapa klien tidak mendukung pemberian kata sandi secara otomatis, jadi Anda masih harus mengisinya saat peluncuran.
localShell=Cangkang lokal
themeDescription=Tema tampilan pilihan Anda
themeDescription=Tema tampilan pilihan Anda.
dontAutomaticallyStartVmSshServer=Jangan memulai server SSH untuk VM secara otomatis saat dibutuhkan
dontAutomaticallyStartVmSshServerDescription=Semua koneksi shell ke VM yang berjalan di hypervisor dibuat melalui SSH. XPipe dapat secara otomatis memulai server SSH yang terinstal bila diperlukan. Jika Anda tidak menginginkan hal ini karena alasan keamanan, maka Anda dapat menonaktifkan perilaku ini dengan opsi ini.
confirmGitShareTitle=Sinkronisasi git
@@ -297,7 +300,7 @@ runOnStartup=Jalankan saat pengaktifan
closeBehaviour=Perilaku keluar
closeBehaviourDescription=Mengontrol bagaimana XPipe akan melanjutkan setelah menutup jendela utamanya.
language=Bahasa
languageDescription=Bahasa tampilan yang akan digunakan.\n\nHarap diperhatikan bahwa terjemahan ini menggunakan terjemahan yang dibuat secara otomatis sebagai dasar dan secara manual diperbaiki dan ditingkatkan oleh kontributor. Anda juga dapat membantu upaya penerjemahan dengan mengirimkan perbaikan terjemahan di GitHub.
languageDescription=Bahasa tampilan yang digunakan. Terjemahan ditingkatkan melalui kontribusi komunitas. Anda dapat membantu upaya penerjemahan dengan mengirimkan perbaikan terjemahan di GitHub.
lightTheme=Tema Cahaya
darkTheme=Tema Gelap
exit=Keluar dari XPipe
@@ -365,7 +368,8 @@ terminalConfiguration=Konfigurasi terminal
terminalCustomization=Kustomisasi terminal
editorConfiguration=Konfigurasi editor
defaultApplication=Aplikasi default
terminalTypeDescription=Terminal default yang digunakan saat membuka koneksi shell apa pun. Aplikasi ini hanya digunakan untuk tujuan tampilan, program shell yang dijalankan bergantung pada koneksi shell itu sendiri.\n\nTingkat dukungan fitur berbeda-beda pada setiap terminal, oleh karena itu setiap terminal ditandai sebagai direkomendasikan atau tidak direkomendasikan. Semua terminal yang tidak direkomendasikan dapat digunakan dengan XPipe tetapi mungkin tidak memiliki fitur seperti tab, warna judul, dukungan shell, dan banyak lagi. Pengalaman pengguna Anda akan menjadi yang terbaik ketika menggunakan terminal yang direkomendasikan.
initialSetup=Penyiapan awal
terminalTypeDescription=Terminal default yang digunakan untuk membuka koneksi shell.\n\nTingkat dukungan fitur bervariasi menurut terminal, dan masing-masing terminal ditandai sebagai direkomendasikan atau tidak direkomendasikan. Pengalaman pengguna Anda akan menjadi yang terbaik bila menggunakan terminal yang direkomendasikan.
program=Program
customTerminalCommand=Perintah terminal khusus
customTerminalCommandDescription=Perintah yang harus dijalankan untuk membuka terminal khusus dengan perintah tertentu.\n\nXPipe akan membuat skrip shell peluncur sementara untuk dieksekusi oleh terminal Anda. String penampung $CMD pada perintah yang Anda berikan akan digantikan oleh skrip peluncur yang sebenarnya ketika dipanggil. Ingatlah untuk mengutip jalur eksekusi terminal Anda jika mengandung spasi.

View File

@@ -98,6 +98,9 @@ browserWelcomeEmptyHeader=Browser di file
browserWelcomeEmptyContent=A sinistra puoi scegliere quali sistemi aprire nel browser dei file. XPipe ricorderà i sistemi e le directory a cui hai avuto accesso in precedenza e li mostrerà in futuro in un menu di accesso rapido.
browserWelcomeEmptyButton=Aprire un browser di file locale
browserWelcomeSystems=Recentemente sei stato collegato ai seguenti sistemi:
browserWelcomeDocsHeader=Documentazione
browserWelcomeDocsContent=Se preferisci un approccio più guidato per familiarizzare con XPipe, consulta il sito web della documentazione.
browserWelcomeDocsButton=Documentazione aperta
hostFeatureUnsupported=$FEATURE$ non è installato sull'host
missingStore=$NAME$ non esiste
connectionName=Nome della connessione
@@ -239,7 +242,7 @@ rdpConfiguration=Configurazione del desktop remoto
rdpClient=Client RDP
rdpClientDescription=Il programma client RDP da richiamare quando si avviano le connessioni RDP.\n\nSi noti che i vari client hanno diversi gradi di abilità e integrazioni. Alcuni client non supportano il passaggio automatico delle password, per cui è necessario inserirle all'avvio.
localShell=Guscio locale
themeDescription=Il tema di visualizzazione che preferisci
themeDescription=Il tema di visualizzazione preferito.
dontAutomaticallyStartVmSshServer=Non avviare automaticamente il server SSH per le macchine virtuali quando necessario
dontAutomaticallyStartVmSshServerDescription=Qualsiasi connessione shell a una macchina virtuale in esecuzione in un hypervisor viene effettuata tramite SSH. XPipe può avviare automaticamente il server SSH installato quando necessario. Se non vuoi che questo avvenga per motivi di sicurezza, puoi disabilitare questo comportamento con questa opzione.
confirmGitShareTitle=Sincronizzazione Git
@@ -297,7 +300,7 @@ runOnStartup=Esegui all'avvio
closeBehaviour=Comportamento di uscita
closeBehaviourDescription=Controlla come XPipe deve procedere alla chiusura della sua finestra principale.
language=La lingua
languageDescription=Il linguaggio di visualizzazione da utilizzare.\n\nSi noti che le traduzioni utilizzano come base le traduzioni generate automaticamente e vengono corrette e migliorate manualmente dai collaboratori. Puoi anche aiutare il lavoro di traduzione inviando correzioni di traduzione su GitHub.
languageDescription=La lingua di visualizzazione da utilizzare. Le traduzioni vengono migliorate grazie ai contributi della comunità. Puoi aiutare il lavoro di traduzione inviando correzioni di traduzione su GitHub.
lightTheme=Tema della luce
darkTheme=Tema scuro
exit=Esci da XPipe
@@ -365,7 +368,8 @@ terminalConfiguration=Configurazione del terminale
terminalCustomization=Personalizzazione del terminale
editorConfiguration=Configurazione dell'editor
defaultApplication=Applicazione predefinita
terminalTypeDescription=Il terminale predefinito da utilizzare quando si apre una connessione shell di qualsiasi tipo. Questa applicazione è utilizzata solo a scopo di visualizzazione, il programma di shell avviato dipende dalla connessione di shell stessa.\n\nIl livello di supporto delle funzioni varia a seconda del terminale, per questo motivo ognuno di essi è contrassegnato come raccomandato o non raccomandato. Tutti i terminali non raccomandati funzionano con XPipe ma potrebbero mancare di funzioni come le schede, i colori dei titoli, il supporto alla shell e altro ancora. La tua esperienza d'uso sarà migliore quando userai un terminale raccomandato.
initialSetup=Configurazione iniziale
terminalTypeDescription=Il terminale predefinito da utilizzare per aprire le connessioni shell.\n\nIl livello di supporto delle funzioni varia a seconda del terminale e ognuno di essi è contrassegnato come consigliato o non consigliato. La tua esperienza d'uso sarà migliore quando userai un terminale consigliato.
program=Programma
customTerminalCommand=Comando di terminale personalizzato
customTerminalCommandDescription=Il comando da eseguire per aprire il terminale personalizzato con un determinato comando.\n\nXPipe creerà uno script di lancio temporaneo da eseguire sul tuo terminale. La stringa segnaposto $CMD nel comando fornito verrà sostituita dallo script di avvio effettivo quando verrà richiamato. Ricordati di citare il percorso dell'eseguibile del tuo terminale se contiene spazi.

View File

@@ -98,6 +98,9 @@ browserWelcomeEmptyHeader=ファイルブラウザ
browserWelcomeEmptyContent=ファイルブラウザで開くシステムを左側で選択できる。XPipeは、以前にアクセスしたシステムやディレクトリを記憶し、将来的にここのクイックアクセスメニューに表示する。
browserWelcomeEmptyButton=ローカルのファイルブラウザを開く
browserWelcomeSystems=あなたは最近、以下のシステムに接続した:
browserWelcomeDocsHeader=ドキュメンテーション
browserWelcomeDocsContent=XPipeを使いこなすために、よりガイド的なアプローチがお望みなら、ドキュメントのウェブサイトをチェックしよう。
browserWelcomeDocsButton=ドキュメントを開く
hostFeatureUnsupported=$FEATURE$ がホストにインストールされていない
missingStore=$NAME$ 存在しない
connectionName=接続名
@@ -239,7 +242,7 @@ rdpConfiguration=リモートデスクトップの設定
rdpClient=RDPクライアント
rdpClientDescription=RDP接続を開始するときに呼び出すRDPクライアントプログラム。\n\n様々なクライアントの能力や統合の程度が異なることに注意。クライアントの中には、パスワードの自動受け渡しに対応していないものもあるので、起動時にパスワードを入力する必要がある。
localShell=ローカルシェル
themeDescription=お好みの表示テーマ
themeDescription=お好みの表示テーマ
dontAutomaticallyStartVmSshServer=必要なときにVM用のSSHサーバーを自動的に起動しない
dontAutomaticallyStartVmSshServerDescription=ハイパーバイザーで稼働しているVMへのシェル接続は、SSHを介して行われる。XPipeは、必要に応じてインストールされたSSHサーバーを自動的に起動することができる。セキュリティ上の理由でこれを望まない場合は、このオプションでこの動作を無効にすることができる。
confirmGitShareTitle=Git同期
@@ -297,7 +300,7 @@ runOnStartup=起動時に実行する
closeBehaviour=終了時の動作
closeBehaviourDescription=XPipeのメインウィンドウを閉じたときの処理を制御する。
language=言語
languageDescription=使用する表示言語。\n\n翻訳は、自動生成された翻訳をベースに、貢献によって手作業で修正・改善されていることに注意してほしい。GitHubで翻訳の修正を投稿することで、翻訳作業を手伝うことできる。
languageDescription=使用する表示言語。翻訳はコミュニティからの貢献によって改善されている。GitHubで翻訳の修正を投稿することで、翻訳作業を手伝うことできる。
lightTheme=ライトテーマ
darkTheme=ダークテーマ
exit=XPipeを終了する
@@ -365,7 +368,8 @@ terminalConfiguration=端末設定
terminalCustomization=端末のカスタマイズ
editorConfiguration=エディターの設定
defaultApplication=デフォルトのアプリケーション
terminalTypeDescription=あらゆる種類のシェル接続を開くときに使用するデフォルトの端末。このアプリケーションは表示のためだけに使われ、起動されるシェルプログラムはシェル接続そのものに依存する。\n\n端末によってサポートする機能のレベルが異なるため、推奨または非推奨のマークが付けられている。非推奨端末はすべてXPipeで動作するが、タブ、タイトルカラー、シェルサポートなどの機能が欠けている可能性がある。推奨端末を使用することで、最高のユーザーエクスペリエンスが得られるだろう。
initialSetup=初期設定
terminalTypeDescription=シェル接続を開くときに使うデフォルトの端末。\n\nサポートする機能のレベルは端末によって異なり、それぞれに推奨または非推奨のマークがついている。推奨端末を使うと、ユーザーエクスペリエンスが最高になる。
program=プログラム
customTerminalCommand=カスタム端末コマンド
customTerminalCommandDescription=指定されたコマンドでカスタムターミナルを開くために実行するコマンド。\n\nXPipeは、端末が実行するための一時的なランチャー・シェル・スクリプトを作成する。指定したコマンドのプレースホルダ文字列$CMDは、呼び出されたときに実際のランチャー・スクリプトに置き換えられる。ターミナルの実行パスにスペースが含まれている場合は、引用符で囲むことを忘れないこと。

View File

@@ -98,6 +98,9 @@ browserWelcomeEmptyHeader=Bestandsbrowser
browserWelcomeEmptyContent=Je kunt links kiezen welke systemen je wilt openen in de bestandsbrowser. XPipe onthoudt welke systemen en mappen je eerder hebt geopend en toont deze in de toekomst in een snelmenu.
browserWelcomeEmptyButton=Lokale bestandsbrowser openen
browserWelcomeSystems=Je was onlangs verbonden met de volgende systemen:
browserWelcomeDocsHeader=Documentatie
browserWelcomeDocsContent=Als je de voorkeur geeft aan een meer begeleide aanpak om jezelf bekend te maken met XPipe, bekijk dan de documentatie website.
browserWelcomeDocsButton=Open documentatie
hostFeatureUnsupported=$FEATURE$ is niet geïnstalleerd op de host
missingStore=$NAME$ bestaat niet
connectionName=Naam verbinding
@@ -239,7 +242,7 @@ rdpConfiguration=Configuratie van bureaublad op afstand
rdpClient=RDP-client
rdpClientDescription=Het RDP-clientprogramma dat wordt aangeroepen bij het starten van RDP-verbindingen.\n\nMerk op dat verschillende clients verschillende niveaus van mogelijkheden en integraties hebben. Sommige clients ondersteunen het automatisch doorgeven van wachtwoorden niet, dus je moet ze nog steeds invullen bij het opstarten.
localShell=Lokale shell
themeDescription=Het weergavethema van je voorkeur
themeDescription=Het weergavethema van je voorkeur.
dontAutomaticallyStartVmSshServer=SSH-server voor VM's niet automatisch starten wanneer nodig
dontAutomaticallyStartVmSshServerDescription=Elke shellverbinding met een VM die draait in een hypervisor wordt gemaakt via SSH. XPipe kan automatisch de geïnstalleerde SSH-server starten wanneer dat nodig is. Als je dit om veiligheidsredenen niet wilt, dan kun je dit gedrag gewoon uitschakelen met deze optie.
confirmGitShareTitle=Git sync
@@ -297,7 +300,7 @@ runOnStartup=Uitvoeren bij opstarten
closeBehaviour=Afsluitgedrag
closeBehaviourDescription=Regelt hoe XPipe verder moet gaan na het sluiten van het hoofdvenster.
language=Taal
languageDescription=De te gebruiken weergavetaal.\n\nMerk op dat de vertalingen automatisch gegenereerde vertalingen als basis gebruiken en handmatig worden gerepareerd en verbeterd door bijdragers. Je kunt ook helpen met vertalen door vertaalcorrecties in te sturen op GitHub.
languageDescription=De te gebruiken weergavetaal. De vertalingen worden verbeterd door bijdragen van de gemeenschap. Je kunt de vertalingen helpen door vertaaloplossingen in te sturen op GitHub.
lightTheme=Licht thema
darkTheme=Donker thema
exit=XPipe afsluiten
@@ -365,7 +368,8 @@ terminalConfiguration=Terminal configuratie
terminalCustomization=Terminal aanpassing
editorConfiguration=Configuratie editor
defaultApplication=Standaard toepassing
terminalTypeDescription=De standaard terminal die wordt gebruikt bij het openen van een shellverbinding. Deze toepassing wordt alleen gebruikt voor weergave, het opgestarte shell programma hangt af van de shell verbinding zelf.\n\nDe mate van ondersteuning verschilt per terminal, daarom is elke terminal gemarkeerd als aanbevolen of niet aanbevolen. Alle niet-aanbevolen terminals werken met XPipe, maar missen mogelijk functies als tabbladen, titelkleuren, shell-ondersteuning en meer. Je gebruikerservaring is het beste als je een aanbevolen terminal gebruikt.
initialSetup=Eerste installatie
terminalTypeDescription=De standaard terminal om te gebruiken voor het openen van shell verbindingen.\n\nHet ondersteuningsniveau van de functies verschilt per terminal en elke terminal is gemarkeerd als aanbevolen of niet aanbevolen. Je gebruikerservaring is het beste als je een aanbevolen terminal gebruikt.
program=Programma
customTerminalCommand=Aangepast terminalcommando
customTerminalCommandDescription=Het commando dat moet worden uitgevoerd om de aangepaste terminal te openen met een gegeven commando.\n\nXPipe maakt een tijdelijk launcher-shell script aan om je terminal uit te voeren. De placeholder string $CMD in het commando dat je opgeeft zal worden vervangen door het eigenlijke launcher script wanneer het wordt aangeroepen. Vergeet niet het uitvoerbare pad van je terminal te citeren als het spaties bevat.

View File

@@ -98,6 +98,9 @@ browserWelcomeEmptyHeader=Przeglądarka plików
browserWelcomeEmptyContent=Możesz wybrać po lewej stronie, które systemy mają być otwarte w przeglądarce plików. XPipe zapamięta systemy i katalogi, do których wcześniej uzyskałeś dostęp i pokaże je w menu szybkiego dostępu w przyszłości.
browserWelcomeEmptyButton=Otwórz lokalną przeglądarkę plików
browserWelcomeSystems=Ostatnio byłeś połączony z następującymi systemami:
browserWelcomeDocsHeader=Dokumentacja
browserWelcomeDocsContent=Jeśli wolisz bardziej ukierunkowane podejście do zapoznania się z XPipe, sprawdź stronę internetową z dokumentacją.
browserWelcomeDocsButton=Otwarta dokumentacja
hostFeatureUnsupported=$FEATURE$ nie jest zainstalowany na hoście
missingStore=$NAME$ nie istnieje
connectionName=Nazwa połączenia
@@ -239,7 +242,7 @@ rdpConfiguration=Konfiguracja pulpitu zdalnego
rdpClient=Klient RDP
rdpClientDescription=Program klienta RDP do wywołania podczas uruchamiania połączeń RDP.\n\nZauważ, że różne klienty mają różne stopnie możliwości i integracji. Niektóre klienty nie obsługują automatycznego przekazywania haseł, więc nadal musisz je wypełnić podczas uruchamiania.
localShell=Powłoka lokalna
themeDescription=Twój preferowany motyw wyświetlania
themeDescription=Twój preferowany motyw wyświetlania.
dontAutomaticallyStartVmSshServer=Nie uruchamiaj automatycznie serwera SSH dla maszyn wirtualnych w razie potrzeby
dontAutomaticallyStartVmSshServerDescription=Każde połączenie powłoki z maszyną wirtualną działającą w hiperwizorze jest wykonywane przez SSH. XPipe może automatycznie uruchomić zainstalowany serwer SSH w razie potrzeby. Jeśli nie chcesz tego ze względów bezpieczeństwa, możesz po prostu wyłączyć to zachowanie za pomocą tej opcji.
confirmGitShareTitle=Synchronizacja Git
@@ -297,7 +300,7 @@ runOnStartup=Uruchom przy starcie
closeBehaviour=Zachowanie przy wyjściu
closeBehaviourDescription=Kontroluje sposób, w jaki XPipe powinien działać po zamknięciu głównego okna.
language=Język
languageDescription=Język wyświetlania do użycia.\n\nZwróć uwagę, że tłumaczenia używają automatycznie generowanych tłumaczeń jako podstawy i są ręcznie poprawiane i ulepszane przez współpracowników. Możesz również pomóc w tłumaczeniu, przesyłając poprawki tłumaczeń na GitHub.
languageDescription=Język wyświetlania do użycia. Tłumaczenia są ulepszane dzięki wkładowi społeczności. Możesz pomóc w tłumaczeniu, przesyłając poprawki tłumaczenia na GitHub.
lightTheme=Motyw oświetlenia
darkTheme=Ciemny motyw
exit=Zamknij XPipe
@@ -365,7 +368,8 @@ terminalConfiguration=Konfiguracja terminala
terminalCustomization=Dostosowywanie terminala
editorConfiguration=Konfiguracja edytora
defaultApplication=Aplikacja domyślna
terminalTypeDescription=Domyślny terminal używany podczas otwierania dowolnego rodzaju połączenia powłoki. Ta aplikacja jest używana tylko do celów wyświetlania, uruchomiony program powłoki zależy od samego połączenia powłoki.\n\nPoziom obsługi funkcji różni się w zależności od terminala, dlatego każdy z nich jest oznaczony jako zalecany lub niezalecany. Wszystkie niezalecane terminale działają z XPipe, ale mogą nie mieć takich funkcji jak zakładki, kolory tytułów, obsługa powłoki i inne. Twoje wrażenia z użytkowania będą najlepsze, gdy korzystasz z zalecanego terminala.
initialSetup=Konfiguracja początkowa
terminalTypeDescription=Domyślny terminal używany do otwierania połączeń powłoki.\n\nPoziom obsługi funkcji różni się w zależności od terminala, a każdy z nich jest oznaczony jako zalecany lub niezalecany. Twój komfort użytkowania będzie najlepszy, jeśli korzystasz z zalecanego terminala.
program=Program
customTerminalCommand=Niestandardowe polecenie terminala
customTerminalCommandDescription=Polecenie do wykonania w celu otwarcia terminala niestandardowego z danym poleceniem.\n\nXPipe utworzy tymczasowy skrypt powłoki uruchamiającej dla twojego terminala do wykonania. Łańcuch zastępczy $CMD w poleceniu, które podasz, zostanie zastąpiony przez rzeczywisty skrypt uruchamiający po wywołaniu. Pamiętaj, aby zacytować ścieżkę wykonywalną terminala, jeśli zawiera spacje.

View File

@@ -98,6 +98,9 @@ browserWelcomeEmptyHeader=Navegador de ficheiros
browserWelcomeEmptyContent=Podes escolher à esquerda quais os sistemas a abrir no navegador de ficheiros. O XPipe lembrar-se-á dos sistemas e diretórios a que acedeste anteriormente e mostrá-los-á num menu de acesso rápido no futuro.
browserWelcomeEmptyButton=Abre o navegador de ficheiros local
browserWelcomeSystems=Estiveste recentemente ligado aos seguintes sistemas:
browserWelcomeDocsHeader=Documentação
browserWelcomeDocsContent=Se preferires uma abordagem mais guiada para te familiarizares com o XPipe, consulta o site da documentação.
browserWelcomeDocsButton=Abre a documentação
hostFeatureUnsupported=$FEATURE$ não está instalado no anfitrião
missingStore=$NAME$ não existe
connectionName=Nome da ligação
@@ -239,7 +242,7 @@ rdpConfiguration=Configuração do ambiente de trabalho remoto
rdpClient=Cliente RDP
rdpClientDescription=O programa cliente RDP a chamar ao iniciar ligações RDP.\n\nNota que vários clientes têm diferentes graus de capacidades e integrações. Alguns clientes não suportam a passagem automática de palavras-passe, pelo que tens de as preencher no arranque.
localShell=Shell local
themeDescription=O teu tema de visualização preferido
themeDescription=O teu tema de visualização preferido.
dontAutomaticallyStartVmSshServer=Não inicia automaticamente o servidor SSH para VMs quando necessário
dontAutomaticallyStartVmSshServerDescription=Qualquer ligação shell a uma VM em execução num hipervisor é feita através de SSH. O XPipe pode iniciar automaticamente o servidor SSH instalado quando necessário. Se não quiseres isto por razões de segurança, então podes simplesmente desativar este comportamento com esta opção.
confirmGitShareTitle=Sincronização Git
@@ -297,7 +300,7 @@ runOnStartup=Executa no arranque
closeBehaviour=Comportamento de saída
closeBehaviourDescription=Controla a forma como o XPipe deve proceder ao fechar a sua janela principal.
language=Língua
languageDescription=A linguagem de visualização a utilizar.\n\nNota que as traduções usam traduções geradas automaticamente como base e são corrigidas e melhoradas manualmente pelos colaboradores. Também podes ajudar o esforço de tradução submetendo correcções de tradução no GitHub.
languageDescription=A língua de apresentação a utilizar. As traduções são melhoradas através das contribuições da comunidade. Podes ajudar o esforço de tradução submetendo correcções de tradução no GitHub.
lightTheme=Tema de luz
darkTheme=Tema escuro
exit=Sai do XPipe
@@ -365,7 +368,8 @@ terminalConfiguration=Configuração de terminal
terminalCustomization=Personalização de terminais
editorConfiguration=Configuração do editor
defaultApplication=Aplicação por defeito
terminalTypeDescription=O terminal predefinido a utilizar quando abre qualquer tipo de ligação shell. Esta aplicação é apenas utilizada para fins de visualização, o programa shell iniciado depende da própria ligação shell.\n\nO nível de suporte de funcionalidades varia consoante o terminal, e é por isso que cada um está marcado como recomendado ou não recomendado. Todos os terminais não recomendados funcionam com o XPipe, mas podem não ter funcionalidades como separadores, cores de título, suporte de shell e muito mais. A tua experiência de utilizador será melhor se utilizares um terminal recomendado.
initialSetup=Configuração inicial
terminalTypeDescription=O terminal predefinido a utilizar para abrir ligações shell.\n\nO nível de suporte de recursos varia de acordo com o terminal, e cada um é marcado como recomendado ou não recomendado. A tua experiência de utilizador será melhor se utilizares um terminal recomendado.
program=Programar
customTerminalCommand=Comando de terminal personalizado
customTerminalCommandDescription=O comando a executar para abrir o terminal personalizado com um determinado comando.\n\nO XPipe criará um script de shell de lançamento temporário para o teu terminal executar. A string de espaço reservado $CMD no comando que forneces será substituída pelo script de lançamento real quando chamado. Lembra-te de colocar entre aspas o caminho do executável do teu terminal se este contiver espaços.

View File

@@ -98,6 +98,9 @@ browserWelcomeEmptyHeader=Браузер файлов
browserWelcomeEmptyContent=Слева ты можешь выбрать, какие системы открывать в браузере файлов. XPipe запомнит, к каким системам и каталогам ты обращался ранее, и в будущем будет показывать их здесь в меню быстрого доступа.
browserWelcomeEmptyButton=Открыть браузер локальных файлов
browserWelcomeSystems=Недавно ты был подключен к следующим системам:
browserWelcomeDocsHeader=Документация
browserWelcomeDocsContent=Если ты предпочитаешь более экскурсионный подход к знакомству с XPipe, загляни на сайт документации.
browserWelcomeDocsButton=Открытая документация
hostFeatureUnsupported=$FEATURE$ не установлен на хосте
missingStore=$NAME$ не существует
connectionName=Имя подключения
@@ -239,7 +242,7 @@ rdpConfiguration=Настройка удаленного рабочего сто
rdpClient=RDP-клиент
rdpClientDescription=Программа-клиент RDP, которую нужно вызывать при запуске RDP-соединений.\n\nУчти, что разные клиенты имеют разную степень возможностей и интеграции. Некоторые клиенты не поддерживают автоматическую передачу паролей, поэтому тебе все равно придется заполнять их при запуске.
localShell=Локальная оболочка
themeDescription=Предпочитаемая тобой тема отображения
themeDescription=Предпочитаемая тобой тема отображения.
dontAutomaticallyStartVmSshServer=Не запускай автоматически SSH-сервер для виртуальных машин, когда это необходимо
dontAutomaticallyStartVmSshServerDescription=Любое shell-подключение к ВМ, запущенной в гипервизоре, осуществляется через SSH. XPipe может автоматически запускать установленный SSH-сервер, когда это необходимо. Если тебе это не нужно по соображениям безопасности, то ты можешь просто отключить такое поведение с помощью этой опции.
confirmGitShareTitle=Синхронизация гитов
@@ -297,7 +300,7 @@ runOnStartup=Запуск при запуске
closeBehaviour=Поведение при выходе из игры
closeBehaviourDescription=Управляет тем, как XPipe должен действовать после закрытия своего главного окна.
language=Язык
languageDescription=Язык отображения, который нужно использовать.\n\nОбрати внимание, что в качестве основы для переводов используются автоматически сгенерированные переводы, которые вручную исправляются и улучшаются участниками. Ты также можешь помочь в работе над переводом, отправляя исправления на GitHub.
languageDescription=Язык отображения, который нужно использовать. Переводы улучшаются благодаря вкладу сообщества. Ты можешь помочь усилиям по переводу, отправляя исправления перевода на GitHub.
lightTheme=Световая тема
darkTheme=Темная тема
exit=Выйти из XPipe
@@ -365,7 +368,8 @@ terminalConfiguration=Конфигурация терминала
terminalCustomization=Настройка терминала
editorConfiguration=Конфигурация редактора
defaultApplication=Приложение по умолчанию
terminalTypeDescription=Терминал по умолчанию, который используется при открытии любого типа shell-соединения. Это приложение используется только для отображения, запущенная программа-оболочка зависит от самого shell-соединения.\n\nУровень поддержки функций у разных терминалов разный, поэтому каждый из них помечен как рекомендуемый или нерекомендуемый. Все нерекомендованные терминалы работают с XPipe, но в них могут отсутствовать такие функции, как вкладки, цвета заголовков, поддержка оболочек и многое другое. Твой пользовательский опыт будет наилучшим при использовании рекомендуемого терминала.
initialSetup=Начальная настройка
terminalTypeDescription=Терминал по умолчанию, который используется для открытия shell-соединений.\n\nУровень поддержки разных функций зависит от терминала, и каждый из них помечен как рекомендуемый или не рекомендуемый. Твой пользовательский опыт будет наилучшим при использовании рекомендуемого терминала.
program=Программа
customTerminalCommand=Пользовательская команда терминала
customTerminalCommandDescription=Команда, которую нужно выполнить, чтобы открыть пользовательский терминал с заданной командой.\n\nXPipe создаст временный скрипт оболочки запуска для твоего терминала, который будет выполняться. Строка-заполнитель $CMD в команде, которую ты предоставишь, при вызове будет заменена реальным скриптом запуска. Не забудь взять в кавычки путь к исполняемому файлу твоего терминала, если он содержит пробелы.

View File

@@ -98,6 +98,9 @@ browserWelcomeEmptyHeader=Filbläddrare
browserWelcomeEmptyContent=Du kan välja till vänster vilka system som ska öppnas i filbläddraren. XPipe kommer att komma ihåg vilka system och kataloger du har öppnat tidigare och visa dem i en snabbåtkomstmeny här i framtiden.
browserWelcomeEmptyButton=Öppna lokal filbläddrare
browserWelcomeSystems=Du var nyligen ansluten till följande system:
browserWelcomeDocsHeader=Dokumentation
browserWelcomeDocsContent=Om du föredrar en mer vägledd metod för att bekanta dig med XPipe kan du kolla in dokumentationswebbplatsen.
browserWelcomeDocsButton=Öppen dokumentation
hostFeatureUnsupported=$FEATURE$ är inte installerad på värden
missingStore=$NAME$ existerar inte
connectionName=Namn på anslutning
@@ -239,7 +242,7 @@ rdpConfiguration=Konfiguration av fjärrskrivbord
rdpClient=RDP-klient
rdpClientDescription=RDP-klientprogrammet som ska anropas när RDP-anslutningar startas.\n\nObservera att olika klienter har olika grader av förmågor och integrationer. Vissa klienter har inte stöd för att skicka lösenord automatiskt, så du måste fortfarande fylla i dem vid start.
localShell=Lokalt skal
themeDescription=Ditt föredragna displaytema
themeDescription=Ditt föredragna visningstema.
dontAutomaticallyStartVmSshServer=Starta inte SSH-servern för virtuella datorer automatiskt när det behövs
dontAutomaticallyStartVmSshServerDescription=Varje skalanslutning till en VM som körs i en hypervisor görs via SSH. XPipe kan automatiskt starta den installerade SSH-servern när det behövs. Om du inte vill ha detta av säkerhetsskäl kan du bara inaktivera detta beteende med det här alternativet.
confirmGitShareTitle=Git-synkronisering
@@ -297,7 +300,7 @@ runOnStartup=Körs vid uppstart
closeBehaviour=Utgångsbeteende
closeBehaviourDescription=Styr hur XPipe ska fortsätta när huvudfönstret stängs.
language=Språk
languageDescription=Det visningsspråk som ska användas.\n\nObservera att översättningarna använder automatiskt genererade översättningar som bas och korrigeras och förbättras manuellt av bidragsgivare. Du kan också hjälpa till med översättningsarbetet genom att skicka in översättningsfixar på GitHub.
languageDescription=Det visningsspråk som ska användas. Översättningarna förbättras genom bidrag från gemenskapen. Du kan hjälpa till med översättningsarbetet genom att skicka in översättningsfixar på GitHub.
lightTheme=Ljust tema
darkTheme=Mörkt tema
exit=Avsluta XPipe
@@ -365,7 +368,8 @@ terminalConfiguration=Konfiguration av terminal
terminalCustomization=Anpassning av terminaler
editorConfiguration=Konfiguration av redigerare
defaultApplication=Standardapplikation
terminalTypeDescription=Standardterminalen som ska användas när du öppnar någon form av shell-anslutning. Denna applikation används endast för visningsändamål, det shell-program som startas beror på själva shell-anslutningen.\n\nNivån på funktionsstödet varierar från terminal till terminal, och därför är varje terminal markerad som antingen rekommenderad eller inte rekommenderad. Alla icke-rekommenderade terminaler fungerar med XPipe men kan sakna funktioner som flikar, titelfärger, skalstöd med mera. Din användarupplevelse blir bäst när du använder en rekommenderad terminal.
initialSetup=Inledande installation
terminalTypeDescription=Standardterminalen som ska användas för att öppna shell-anslutningar.\n\nNivån på funktionsstödet varierar mellan olika terminaler, och varje terminal är markerad som antingen rekommenderad eller inte rekommenderad. Din användarupplevelse blir bäst när du använder en rekommenderad terminal.
program=Program
customTerminalCommand=Anpassat terminalkommando
customTerminalCommandDescription=Det kommando som ska utföras för att öppna den anpassade terminalen med ett visst kommando.\n\nXPipe kommer att skapa ett tillfälligt startskript för att din terminal ska kunna köras. Platshållarsträngen $CMD i kommandot som du tillhandahåller kommer att ersättas av det faktiska startskriptet när det anropas. Kom ihåg att citera din terminals körbara sökväg om den innehåller mellanslag.

View File

@@ -98,6 +98,9 @@ browserWelcomeEmptyHeader=Dosya tarayıcısı
browserWelcomeEmptyContent=Dosya tarayıcısında hangi sistemlerin açılacağını sol taraftan seçebilirsiniz. XPipe daha önce hangi sistemlere ve dizinlere eriştiğinizi hatırlayacak ve gelecekte bunları burada bir hızlı erişim menüsünde gösterecektir.
browserWelcomeEmptyButton=Yerel dosya tarayıcısını açma
browserWelcomeSystems=Yakın zamanda aşağıdaki sistemlere bağlandınız:
browserWelcomeDocsHeader=Dokümantasyon
browserWelcomeDocsContent=XPipe'ı tanımak için daha rehberli bir yaklaşım tercih ediyorsanız, dokümantasyon web sitesine göz atın.
browserWelcomeDocsButton=ık dokümantasyon
hostFeatureUnsupported=$FEATURE$ ana bilgisayarda yüklü değil
missingStore=$NAME$ mevcut değil
connectionName=Bağlantı adı
@@ -239,7 +242,7 @@ rdpConfiguration=Uzak masaüstü yapılandırması
rdpClient=RDP istemcisi
rdpClientDescription=RDP bağlantıları başlatılırken çağrılacak RDP istemci programı.\n\nÇeşitli istemcilerin farklı derecelerde yeteneklere ve entegrasyonlara sahip olduğunu unutmayın. Bazı istemciler parolaların otomatik olarak aktarılmasını desteklemez, bu nedenle bunları başlatırken doldurmanız gerekir.
localShell=Yerel kabuk
themeDescription=Tercih ettiğiniz ekran teması
themeDescription=Tercih ettiğiniz ekran teması.
dontAutomaticallyStartVmSshServer=Gerektiğinde VM'ler için SSH sunucusunu otomatik olarak başlatma
dontAutomaticallyStartVmSshServerDescription=Bir hipervizörde çalışan bir sanal makineye herhangi bir kabuk bağlantısı SSH aracılığıyla yapılır. XPipe gerektiğinde kurulu SSH sunucusunu otomatik olarak başlatabilir. Güvenlik nedeniyle bunu istemiyorsanız, bu seçenekle bu davranışı devre dışı bırakabilirsiniz.
confirmGitShareTitle=Git senkronizasyonu
@@ -297,7 +300,7 @@ runOnStartup=Başlangıçta çalıştır
closeBehaviour=Çıkış davranışı
closeBehaviourDescription=XPipe'ın ana penceresini kapattıktan sonra nasıl devam edeceğini kontrol eder.
language=Dil
languageDescription=Kullanılacak ekran dili.\n\nÇevirilerin temel olarak otomatik olarak oluşturulan çevirileri kullandığını ve katkıda bulunanlar tarafından manuel olarak düzeltildiğini ve geliştirildiğini unutmayın. Ayrıca GitHub üzerinden çeviri düzeltmeleri göndererek çeviri çalışmalarına yardımcı olabilirsiniz.
languageDescription=Kullanılacak görüntüleme dili. Çeviriler topluluk katkılarıyla geliştirilmektedir. GitHub'da çeviri düzeltmeleri göndererek çeviri çabalarına yardımcı olabilirsiniz.
lightTheme=ık Teması
darkTheme=Koyu Tema
exit=XPipe'tan çıkın
@@ -365,7 +368,8 @@ terminalConfiguration=Terminal yapılandırması
terminalCustomization=Terminal özelleştirme
editorConfiguration=Editör yapılandırması
defaultApplication=Varsayılan uygulama
terminalTypeDescription=Herhangi bir kabuk bağlantısı açarken kullanılacak varsayılan terminal. Bu uygulama sadece görüntüleme amacıyla kullanılır, başlatılan kabuk programı kabuk bağlantısının kendisine bağlıdır.\n\nÖzellik desteğinin seviyesi terminale göre değişir, bu yüzden her biri önerilen veya önerilmeyen olarak işaretlenmiştir. Tüm önerilmeyen terminaller XPipe ile çalışır ancak sekmeler, başlık renkleri, kabuk desteği ve daha fazlası gibi özelliklerden yoksun olabilir. Önerilen bir terminal kullandığınızda kullanıcı deneyiminiz en iyi olacaktır.
initialSetup=İlk kurulum
terminalTypeDescription=Kabuk bağlantılarını açmak için kullanılacak varsayılan terminal.\n\nÖzellik desteği seviyesi terminale göre değişir ve her biri önerilen ya da önerilmeyen olarak işaretlenmiştir. Önerilen bir terminal kullandığınızda kullanıcı deneyiminiz en iyi olacaktır.
program=Program
customTerminalCommand=Özel terminal komutu
customTerminalCommandDescription=Özel terminali belirli bir komutla açmak için çalıştırılacak komut.\n\nXPipe, terminalinizin çalıştırması için geçici bir başlatıcı kabuk betiği oluşturacaktır. Verdiğiniz komuttaki $CMD yer tutucu dizesi, çağrıldığında gerçek başlatıcı betiği ile değiştirilecektir. Terminal çalıştırılabilir yolunuz boşluk içeriyorsa alıntı yapmayı unutmayın.

View File

@@ -123,6 +123,9 @@ browserWelcomeEmptyContent=您可以在左侧选择要在文件管理器中打
#custom
browserWelcomeEmptyButton=打开本地文件管理器
browserWelcomeSystems=您最近连接了以下系统:
browserWelcomeDocsHeader=文档
browserWelcomeDocsContent=如果您更喜欢在指导下熟悉 XPipe请访问文档网站。
browserWelcomeDocsButton=开放文档
hostFeatureUnsupported=$FEATURE$ 主机上未安装
missingStore=$NAME$ 不存在
connectionName=连接名称
@@ -428,7 +431,8 @@ terminalConfiguration=终端配置
terminalCustomization=终端定制
editorConfiguration=编辑器配置
defaultApplication=默认应用程序
terminalTypeDescription=打开任何 shell 连接时使用的默认终端。该程序仅用于显示目的,启动的 shell 程序取决于 shell 连接本身。\n\n不同终端的功能支持程度各不相同因此每种终端都被标记为推荐或不推荐。所有非推荐终端都能与 XPipe 配合使用但可能缺乏标签、标题颜色、shell 支持等功能。使用推荐的终端,您将获得最佳的用户体验。
initialSetup=初始设置
terminalTypeDescription=用于打开 shell 连接的默认终端。\n\n不同终端的功能支持程度不同每种终端都标有推荐或不推荐。使用推荐的终端将获得最佳的用户体验。
program=程序
customTerminalCommand=自定义终端命令
customTerminalCommandDescription=使用给定命令打开自定义终端时要执行的命令。\n\nXPipe 将创建一个临时启动器 shell 脚本,供您的终端执行。在调用时,您提供的命令中的占位符字符串 $CMD 将被实际启动器脚本取代。如果您的终端可执行路径包含空格,请务必加上引号。