Various fixes

This commit is contained in:
crschnick 2024-04-22 11:56:59 +00:00
parent 4ca3d2c52c
commit 401ab34689
37 changed files with 74 additions and 76 deletions

View file

@ -381,8 +381,7 @@ public abstract class StoreEntryComp extends SimpleComp {
contextMenu.getItems().add(browse);
}
if (wrapper.getEntry().getProvider() != null
&& wrapper.getEntry().getProvider().canMoveCategories()) {
if (wrapper.getEntry().getProvider() != null) {
var move = new Menu(AppI18n.get("moveTo"), new FontIcon("mdi2f-folder-move-outline"));
StoreViewState.get()
.getSortedCategories(wrapper.getCategory().getValue().getRoot())

View file

@ -107,7 +107,7 @@ public class StoreSection {
var matchesSelector = section.anyMatches(entryFilter);
var sameCategory = category == null
|| category.getValue() == null
|| inCategory(category.getValue(), section.getWrapper());
|| showInCategory(category.getValue(), section.getWrapper());
return showFilter && matchesSelector && sameCategory;
},
category,
@ -148,7 +148,7 @@ public class StoreSection {
var matchesSelector = section.anyMatches(entryFilter);
var sameCategory = category == null
|| category.getValue() == null
|| inCategory(category.getValue(), section.getWrapper());
|| showInCategory(category.getValue(), section.getWrapper());
// If this entry is already shown as root due to a different category than parent, don't show it
// again here
var notRoot =
@ -160,7 +160,7 @@ public class StoreSection {
return new StoreSection(e, cached, filtered, depth);
}
private static boolean inCategory(StoreCategoryWrapper categoryWrapper, StoreEntryWrapper entryWrapper) {
private static boolean showInCategory(StoreCategoryWrapper categoryWrapper, StoreEntryWrapper entryWrapper) {
var current = entryWrapper.getCategory().getValue();
while (current != null) {
if (categoryWrapper

View file

@ -36,10 +36,6 @@ public interface DataStoreProvider {
return false;
}
default boolean canMoveCategories() {
return true;
}
default boolean alwaysShowSummary() {
return false;
}

View file

@ -88,6 +88,13 @@ public class SecretFieldComp extends Comp<SecretFieldComp.Structure> {
if (allowCopy) {
ig.getChildren().add(copyButton);
}
ig.focusedProperty().addListener((c, o, n) -> {
if (n) {
text.requestFocus();
}
});
return new Structure(ig, text);
}
}

View file

@ -15,7 +15,7 @@ public class DataStateProviderImpl extends DataStateProvider {
return;
}
var entry = DataStorage.get().getStoreEntryIfPresent(store).or(() -> DataStorage.get()
var entry = DataStorage.get().getStoreEntryIfPresent(store, true).or(() -> DataStorage.get()
.getStoreEntryInProgressIfPresent(store));
if (entry.isEmpty()) {
return;
@ -30,7 +30,7 @@ public class DataStateProviderImpl extends DataStateProvider {
return def.get();
}
var entry = DataStorage.get().getStoreEntryIfPresent(store);
var entry = DataStorage.get().getStoreEntryIfPresent(store, true);
if (entry.isEmpty()) {
return def.get();
}
@ -52,7 +52,7 @@ public class DataStateProviderImpl extends DataStateProvider {
return;
}
var entry = DataStorage.get().getStoreEntryIfPresent(store);
var entry = DataStorage.get().getStoreEntryIfPresent(store, true);
if (entry.isEmpty()) {
return;
}
@ -66,7 +66,7 @@ public class DataStateProviderImpl extends DataStateProvider {
return def.get();
}
var entry = DataStorage.get().getStoreEntryIfPresent(store);
var entry = DataStorage.get().getStoreEntryIfPresent(store, true);
if (entry.isEmpty()) {
return def.get();
}
@ -80,7 +80,7 @@ public class DataStateProviderImpl extends DataStateProvider {
}
public boolean isInStorage(DataStore store) {
var entry = DataStorage.get().getStoreEntryIfPresent(store);
var entry = DataStorage.get().getStoreEntryIfPresent(store, true);
return entry.isPresent();
}
}

View file

@ -10,9 +10,7 @@ import io.xpipe.core.store.DataStoreId;
import io.xpipe.core.store.FixedChildStore;
import io.xpipe.core.store.LocalStore;
import io.xpipe.core.util.UuidHelper;
import javafx.util.Pair;
import lombok.Getter;
import lombok.NonNull;
import lombok.Setter;
@ -529,7 +527,7 @@ public abstract class DataStorage {
public void addStoreEntriesIfNotPresent(@NonNull DataStoreEntry... es) {
for (DataStoreEntry e : es) {
if (storeEntriesSet.contains(e)
|| getStoreEntryIfPresent(e.getStore()).isPresent()) {
|| getStoreEntryIfPresent(e.getStore(), false).isPresent()) {
return;
}
@ -563,7 +561,7 @@ public abstract class DataStorage {
}
public DataStoreEntry addStoreIfNotPresent(DataStoreEntry related, @NonNull String name, DataStore store) {
var f = getStoreEntryIfPresent(store);
var f = getStoreEntryIfPresent(store, false);
if (f.isPresent()) {
return f.get();
}
@ -770,12 +768,12 @@ public abstract class DataStorage {
.findFirst();
}
public Optional<DataStoreEntry> getStoreEntryIfPresent(@NonNull DataStore store) {
public Optional<DataStoreEntry> getStoreEntryIfPresent(@NonNull DataStore store, boolean identityOnly) {
return storeEntriesSet.stream()
.filter(n -> n.getStore() == store
|| (n.getStore() != null
|| (!identityOnly && (n.getStore() != null
&& Objects.equals(store.getClass(), n.getStore().getClass())
&& store.equals(n.getStore())))
&& store.equals(n.getStore()))))
.findFirst();
}
@ -814,7 +812,7 @@ public abstract class DataStorage {
return Optional.empty();
}
return getStoreEntryIfPresent(store).map(dataStoreEntry -> dataStoreEntry.getName());
return getStoreEntryIfPresent(store, true).map(dataStoreEntry -> dataStoreEntry.getName());
}
public String getStoreDisplayName(DataStoreEntry store) {

View file

@ -45,16 +45,20 @@ public class SecretRetrievalStrategyHelper {
new SimpleObjectProperty<>(p.getValue() != null ? p.getValue().getKey() : null);
var content = new HorizontalComp(List.of(
new TextFieldComp(keyProperty)
.apply(struc -> struc.get().setPromptText("Password key"))
.apply(struc -> struc.get().setPromptText("$KEY"))
.hgrow(),
new ButtonComp(null, new FontIcon("mdomz-settings"), () -> {
AppPrefs.get().selectCategory("passwordManager");
App.getApp().getStage().requestFocus();
})
.grow(false, true)))
.apply(struc -> struc.get().setSpacing(10));
.apply(struc -> struc.get().setSpacing(10))
.apply(struc -> struc.get().focusedProperty().addListener((c, o, n) -> {
if (n) {
struc.get().getChildren().getFirst().requestFocus();
}
}));
return new OptionsBuilder()
.name("passwordKey")
.addComp(content, keyProperty)
.nonNull()
.bind(

View file

@ -10,7 +10,7 @@ public interface SelfReferentialStore extends DataStore {
default DataStoreEntry getSelfEntry() {
return DataStorage.get()
.getStoreEntryIfPresent(this)
.getStoreEntryIfPresent(this, true)
.or(() -> {
return DataStorage.get().getStoreEntryInProgressIfPresent(this);
})

View file

@ -50,8 +50,7 @@ public class DesktopEnvironmentStore extends JacksonizedValue
var f = ScriptStore.flatten(scripts);
var filtered = f.stream()
.filter(simpleScriptStore ->
simpleScriptStore.getMinimumDialect().isCompatibleTo(dialect)
&& simpleScriptStore.getExecutionType().runInTerminal())
simpleScriptStore.getMinimumDialect().isCompatibleTo(dialect))
.toList();
var initCommands = new ArrayList<>(filtered.stream()
.map(simpleScriptStore -> simpleScriptStore.getCommands())

View file

@ -19,7 +19,6 @@ public enum PredefinedScriptStore {
.group(PredefinedScriptGroup.CLINK.getEntry())
.minimumDialect(ShellDialects.CMD)
.commands(file("clink.bat"))
.executionType(SimpleScriptStore.ExecutionType.TERMINAL_ONLY)
.build()),
CLINK_INJECT("Clink Inject", () -> SimpleScriptStore.builder()
.group(PredefinedScriptGroup.CLINK.getEntry())
@ -28,38 +27,32 @@ public enum PredefinedScriptStore {
.commands("""
clink inject --quiet
""")
.executionType(SimpleScriptStore.ExecutionType.TERMINAL_ONLY)
.build()),
STARSHIP_BASH("Starship Bash", () -> SimpleScriptStore.builder()
.group(PredefinedScriptGroup.STARSHIP.getEntry())
.minimumDialect(ShellDialects.BASH)
.commands(file("starship_bash.sh"))
.executionType(SimpleScriptStore.ExecutionType.TERMINAL_ONLY)
.build()),
STARSHIP_ZSH("Starship Zsh", () -> SimpleScriptStore.builder()
.group(PredefinedScriptGroup.STARSHIP.getEntry())
.minimumDialect(ShellDialects.ZSH)
.commands(file("starship_zsh.sh"))
.executionType(SimpleScriptStore.ExecutionType.TERMINAL_ONLY)
.build()),
STARSHIP_FISH("Starship Fish", () -> SimpleScriptStore.builder()
.group(PredefinedScriptGroup.STARSHIP.getEntry())
.minimumDialect(ShellDialects.FISH)
.commands(file("starship_fish.fish"))
.executionType(SimpleScriptStore.ExecutionType.TERMINAL_ONLY)
.build()),
STARSHIP_CMD("Starship Cmd", () -> SimpleScriptStore.builder()
.group(PredefinedScriptGroup.STARSHIP.getEntry())
.minimumDialect(ShellDialects.CMD)
.script(CLINK_SETUP.getEntry())
.commands(file(("starship_cmd.bat")))
.executionType(SimpleScriptStore.ExecutionType.TERMINAL_ONLY)
.build()),
STARSHIP_POWERSHELL("Starship Powershell", () -> SimpleScriptStore.builder()
.group(PredefinedScriptGroup.STARSHIP.getEntry())
.minimumDialect(ShellDialects.POWERSHELL)
.commands(file("starship_powershell.ps1"))
.executionType(SimpleScriptStore.ExecutionType.TERMINAL_ONLY)
.build());
private final String name;

View file

@ -25,14 +25,10 @@ public class SimpleScriptStore extends ScriptStore implements ScriptSnippet {
private final ShellDialect minimumDialect;
private final String commands;
private final ExecutionType executionType;
private String assemble(ShellControl shellControl, ExecutionType type) {
var targetType = type == ExecutionType.TERMINAL_ONLY
? shellControl.getOriginalShellDialect()
: shellControl.getShellDialect();
if ((executionType == type || executionType == ExecutionType.BOTH)
&& minimumDialect.isCompatibleTo(targetType)) {
private String assemble(ShellControl shellControl) {
var targetType = shellControl.getOriginalShellDialect();
if (minimumDialect.isCompatibleTo(targetType)) {
var shebang = commands.startsWith("#");
// Fix new lines and shebang
var fixedCommands = commands.lines()
@ -48,19 +44,18 @@ public class SimpleScriptStore extends ScriptStore implements ScriptSnippet {
@Override
public String content(ShellControl shellControl) {
return assemble(shellControl, executionType);
return assemble(shellControl);
}
@Override
public ScriptSnippet.ExecutionType executionType() {
return executionType;
return ExecutionType.TERMINAL_ONLY;
}
@Override
public void checkComplete() throws Throwable {
Validators.nonNull(group);
super.checkComplete();
Validators.nonNull(executionType);
Validators.nonNull(minimumDialect);
}

View file

@ -43,11 +43,6 @@ public class SimpleScriptStoreProvider implements DataStoreProvider {
return true;
}
@Override
public boolean canMoveCategories() {
return false;
}
@Override
public boolean shouldEdit() {
return true;
@ -141,10 +136,8 @@ public class SimpleScriptStoreProvider implements DataStoreProvider {
var group = new SimpleObjectProperty<>(st.getGroup());
Property<ShellDialect> dialect = new SimpleObjectProperty<>(st.getMinimumDialect());
var others =
new SimpleListProperty<>(FXCollections.observableArrayList(new ArrayList<>(st.getEffectiveScripts())));
var others = new SimpleListProperty<>(FXCollections.observableArrayList(new ArrayList<>(st.getEffectiveScripts())));
Property<String> commandProp = new SimpleObjectProperty<>(st.getCommands());
var type = new SimpleObjectProperty<>(st.getExecutionType());
Comp<?> choice = (Comp<?>) Class.forName(
AppExtensionManager.getInstance()
@ -181,9 +174,6 @@ public class SimpleScriptStoreProvider implements DataStoreProvider {
})),
commandProp)
.name("executionType")
.description("executionTypeDescription")
.longDescription("base:executionType")
.addComp(new ScriptStoreTypeChoiceComp(type), type)
.name("scriptGroup")
.description("scriptGroupDescription")
.addComp(
@ -204,7 +194,6 @@ public class SimpleScriptStoreProvider implements DataStoreProvider {
.scripts(new ArrayList<>(others.get()))
.description(st.getDescription())
.commands(commandProp.getValue())
.executionType(type.get())
.build();
},
store)
@ -256,12 +245,7 @@ public class SimpleScriptStoreProvider implements DataStoreProvider {
return new SimpleStringProperty((scriptStore.getMinimumDialect() != null
? scriptStore.getMinimumDialect().getDisplayName() + " "
: "")
+ (scriptStore.getExecutionType() == SimpleScriptStore.ExecutionType.TERMINAL_ONLY
? "Terminal"
: scriptStore.getExecutionType() == SimpleScriptStore.ExecutionType.DUMB_ONLY
? "Background"
: "")
+ " Snippet");
+ " snippet");
}
@SneakyThrows
@ -286,7 +270,6 @@ public class SimpleScriptStoreProvider implements DataStoreProvider {
public DataStore defaultStore() {
return SimpleScriptStore.builder()
.scripts(List.of())
.executionType(SimpleScriptStore.ExecutionType.TERMINAL_ONLY)
.build();
}

View file

@ -280,7 +280,6 @@ openDataDir=Vault-datakatalog
openDataDirButton=Åbent datakatalog
openDataDirDescription=Hvis du vil synkronisere yderligere filer, såsom SSH-nøgler, på tværs af systemer med dit git-repository, kan du placere dem i mappen storage data. Alle filer, der henvises til der, vil få deres filstier automatisk tilpasset på ethvert synkroniseret system.
updates=Opdateringer
passwordKey=Nøgle til adgangskode
selectAll=Vælg alle
command=Kommando
advanced=Avanceret

View file

@ -289,7 +289,6 @@ openDataDirButton=Datenverzeichnis öffnen
openDataDirDescription=Wenn du zusätzliche Dateien, wie z.B. SSH-Schlüssel, systemübergreifend mit deinem Git-Repository synchronisieren möchtest, kannst du sie in das Verzeichnis Speicherdaten legen. Bei allen Dateien, die dort referenziert werden, werden die Dateipfade auf allen synchronisierten Systemen automatisch angepasst.
#custom
updates=Updates
passwordKey=Passwortschlüssel
selectAll=Alles auswählen
command=Befehl
advanced=Fortgeschrittene

View file

@ -291,7 +291,6 @@ openDataDir=Vault data directory
openDataDirButton=Open data directory
openDataDirDescription=If you want to sync additional files, such as SSH keys, across systems with your git repository, you can put them into the storage data directory. Any files referenced there will have their file paths automatically adapted on any synced system.
updates=Updates
passwordKey=Password key
selectAll=Select all
command=Command
advanced=Advanced

View file

@ -280,7 +280,6 @@ openDataDir=Directorio de datos de la bóveda
openDataDirButton=Directorio de datos abierto
openDataDirDescription=Si quieres sincronizar archivos adicionales, como claves SSH, entre sistemas con tu repositorio git, puedes ponerlos en el directorio de datos de almacenamiento. Cualquier archivo al que se haga referencia allí tendrá sus rutas de archivo adaptadas automáticamente en cualquier sistema sincronizado.
updates=Actualiza
passwordKey=Clave de acceso
selectAll=Seleccionar todo
command=Comando
advanced=Avanzado

View file

@ -280,7 +280,6 @@ openDataDir=Répertoire de données de voûte
openDataDirButton=Répertoire de données ouvertes
openDataDirDescription=Si tu veux synchroniser des fichiers supplémentaires, comme les clés SSH, entre les systèmes avec ton dépôt git, tu peux les mettre dans le répertoire storage data. Tous les fichiers qui y sont référencés verront leur chemin de fichier automatiquement adapté sur n'importe quel système synchronisé.
updates=Mises à jour
passwordKey=Clé de mot de passe
selectAll=Sélectionne tout
command=Commande
advanced=Avancé

View file

@ -280,7 +280,6 @@ openDataDir=Directory di dati del caveau
openDataDirButton=Elenco di dati aperti
openDataDirDescription=Se vuoi sincronizzare altri file, come le chiavi SSH, tra i vari sistemi con il tuo repository git, puoi inserirli nella directory dei dati di archiviazione. Tutti i file che vi fanno riferimento avranno il loro percorso adattato automaticamente su ogni sistema sincronizzato.
updates=Aggiornamenti
passwordKey=Chiave password
selectAll=Seleziona tutti
command=Comando
advanced=Avanzato

View file

@ -280,7 +280,6 @@ openDataDir=保管庫データディレクトリ
openDataDirButton=オープンデータディレクトリ
openDataDirDescription=SSH キーなどの追加ファイルを git リポジトリとシステム間で同期させたい場合は、storage data ディレクトリに置くことができる。そこで参照されるファイルは、同期されたシステムで自動的にファイルパスが適応される。
updates=更新情報
passwordKey=パスワードキー
selectAll=すべて選択する
command=コマンド
advanced=高度な

View file

@ -280,7 +280,6 @@ openDataDir=Kluisgegevensmap
openDataDirButton=Open gegevensmap
openDataDirDescription=Als je aanvullende bestanden, zoals SSH sleutels, wilt synchroniseren tussen systemen met je git repository, dan kun je ze in de storage data directory zetten. Van alle bestanden waarnaar daar verwezen wordt, worden de bestandspaden automatisch aangepast op elk gesynchroniseerd systeem.
updates=Updates
passwordKey=Wachtwoord sleutel
selectAll=Alles selecteren
command=Opdracht
advanced=Geavanceerd

View file

@ -280,7 +280,6 @@ openDataDir=Diretório de dados da abóbada
openDataDirButton=Abre o diretório de dados
openDataDirDescription=Se quiseres sincronizar ficheiros adicionais, como chaves SSH, entre sistemas com o teu repositório git, podes colocá-los no diretório de dados de armazenamento. Quaisquer ficheiros aí referenciados terão os seus caminhos de ficheiro automaticamente adaptados em qualquer sistema sincronizado.
updates=Actualiza
passwordKey=Chave de palavra-passe
selectAll=Selecciona tudo
command=Comanda
advanced=Avançado

View file

@ -280,7 +280,6 @@ openDataDir=Каталог данных хранилища
openDataDirButton=Открытый каталог данных
openDataDirDescription=Если ты хочешь синхронизировать дополнительные файлы, например SSH-ключи, между системами с твоим git-репозиторием, ты можешь поместить их в каталог данных хранилища. У любых файлов, на которые там ссылаются, пути к файлам будут автоматически адаптированы на любой синхронизированной системе.
updates=Обновления
passwordKey=Ключ пароля
selectAll=Выберите все
command=Команда
advanced=Продвинутый

View file

@ -280,7 +280,6 @@ openDataDir=Kasa veri dizini
openDataDirButton=ık veri dizini
openDataDirDescription=SSH anahtarları gibi ek dosyaları git deponuzla sistemler arasında senkronize etmek istiyorsanız, bunları depolama veri dizinine koyabilirsiniz. Burada referans verilen tüm dosyaların dosya yolları, senkronize edilen herhangi bir sistemde otomatik olarak uyarlanacaktır.
updates=Güncellemeler
passwordKey=Şifre anahtarı
selectAll=Tümünü seçin
command=Komuta
advanced=Gelişmiş

View file

@ -280,7 +280,6 @@ openDataDir=保险库数据目录
openDataDirButton=开放数据目录
openDataDirDescription=如果你想同步其他文件,比如 SSH 密钥,可以把它们放到存储数据目录中。任何在该目录中引用的文件,其文件路径都会在任何同步的系统上自动调整。
updates=更新
passwordKey=密码匙
selectAll=全部选择
command=指令
advanced=高级

View file

@ -307,3 +307,6 @@ rdpSetupAllowTitle=RDP fjernprogram
rdpSetupAllowHeader=Direkte start af fjernprogrammer er i øjeblikket ikke tilladt på dette system. Ønsker du at aktivere det?
rdpSetupAllowContent=Dette vil give dig mulighed for at køre dine fjernprogrammer direkte fra XPipe ved at deaktivere tilladelseslisten for RDP-fjernprogrammer.
rdp=RDP
wslX11SetupTitle=WSL X11-opsætning
wslX11SetupHeader=XPipe kan bruge din lokale WSL-distribution til at fungere som en X11-skærmserver. Vil du gerne sætte X11 op på $DIST$?
wslX11SetupContent=Dette vil installere de grundlæggende X11-pakker på WSL-distributionen og kan tage et stykke tid. Du kan også ændre, hvilken distribution der bruges, i indstillingsmenuen.

View file

@ -310,3 +310,6 @@ rdpSetupAllowTitle=RDP-Fernanwendung
rdpSetupAllowHeader=Das direkte Starten von Remote-Anwendungen ist auf diesem System derzeit nicht erlaubt. Willst du das aktivieren?
rdpSetupAllowContent=So kannst du deine Fernanwendungen direkt von XPipe aus starten, indem du die Zulassungsliste für RDP-Fernanwendungen deaktivierst.
rdp=RDP
wslX11SetupTitle=WSL X11-Einrichtung
wslX11SetupHeader=XPipe kann deine lokale WSL-Distribution nutzen, um als X11-Anzeigeserver zu fungieren. Möchtest du X11 auf $DIST$ einrichten?
wslX11SetupContent=Dies installiert die grundlegenden X11-Pakete auf der WSL-Distribution und kann eine Weile dauern. Du kannst auch im Einstellungsmenü ändern, welche Distribution verwendet wird.

View file

@ -309,3 +309,6 @@ rdpSetupAllowTitle=RDP remote application
rdpSetupAllowHeader=Starting remote applications directly is currently not allowed on this system. Do you want to enable it?
rdpSetupAllowContent=This will allow you to run your remote applications directly from XPipe by disabling the allow list for RDP remote applications.
rdp=RDP
wslX11SetupTitle=WSL X11 setup
wslX11SetupHeader=XPipe can use your local WSL distribution to act as an X11 display server. Would you like to set up X11 on $DIST$?
wslX11SetupContent=This will install the basic X11 packages on the WSL distribution and may take a while. You can also change which distribution is used in the settings menu.

View file

@ -307,3 +307,6 @@ rdpSetupAllowTitle=Aplicación remota RDP
rdpSetupAllowHeader=Iniciar aplicaciones remotas directamente no está permitido actualmente en este sistema. ¿Quieres activarlo?
rdpSetupAllowContent=Esto te permitirá ejecutar tus aplicaciones remotas directamente desde XPipe, desactivando la lista de permitidos para aplicaciones remotas RDP.
rdp=RDP
wslX11SetupTitle=Configuración WSL X11
wslX11SetupHeader=XPipe puede utilizar tu distribución local WSL para actuar como servidor de visualización X11. ¿Quieres configurar X11 en $DIST$?
wslX11SetupContent=Esto instalará los paquetes X11 básicos en la distribución WSL y puede tardar un rato. También puedes cambiar qué distribución se utiliza en el menú de configuración.

View file

@ -307,3 +307,6 @@ rdpSetupAllowTitle=Application à distance RDP
rdpSetupAllowHeader=Lancer directement des applications à distance n'est actuellement pas autorisé sur ce système. Veux-tu l'autoriser ?
rdpSetupAllowContent=Cela te permettra d'exécuter tes applications distantes directement à partir de XPipe en désactivant la liste d'autorisation pour les applications distantes RDP.
rdp=RDP
wslX11SetupTitle=Configuration WSL X11
wslX11SetupHeader=XPipe peut utiliser ta distribution WSL locale pour agir en tant que serveur d'affichage X11. Veux-tu installer X11 sur $DIST$?
wslX11SetupContent=Cela installera les paquets X11 de base sur la distribution WSL et peut prendre un certain temps. Tu peux aussi changer la distribution utilisée dans le menu des paramètres.

View file

@ -307,3 +307,6 @@ rdpSetupAllowTitle=Applicazione remota RDP
rdpSetupAllowHeader=L'avvio diretto di applicazioni remote non è attualmente consentito su questo sistema. Vuoi abilitarlo?
rdpSetupAllowContent=In questo modo potrai eseguire le tue applicazioni remote direttamente da XPipe, disabilitando l'elenco dei permessi per le applicazioni remote RDP.
rdp=RDP
wslX11SetupTitle=Configurazione WSL X11
wslX11SetupHeader=XPipe può utilizzare la tua distribuzione WSL locale per agire come server di visualizzazione X11. Vuoi configurare X11 su $DIST$?
wslX11SetupContent=Questa operazione installerà i pacchetti X11 di base sulla distribuzione WSL e potrebbe richiedere un po' di tempo. Puoi anche cambiare la distribuzione utilizzata nel menu delle impostazioni.

View file

@ -307,3 +307,6 @@ rdpSetupAllowTitle=RDPリモートアプリケーション
rdpSetupAllowHeader=現在このシステムでは、リモートアプリケーションを直接起動することは許可されていない。有効にするか?
rdpSetupAllowContent=RDPリモートアプリケーションの許可リストを無効にすることで、XPipeからリモートアプリケーションを直接実行できるようになる。
rdp=RDP
wslX11SetupTitle=WSL X11のセットアップ
wslX11SetupHeader=XPipeは、ローカルのWSLディストリビューションをX11ディスプレイサーバーとして使用することができる。$DIST$ 、X11をセットアップしてみる
wslX11SetupContent=WSLディストリビューションに基本的なX11パッケージがインストールされるので、時間がかかるかもしれない。どのディストリビューションを使用するかは、設定メニューで変更することもできる。

View file

@ -307,3 +307,6 @@ rdpSetupAllowTitle=RDP-toepassing op afstand
rdpSetupAllowHeader=Externe toepassingen rechtstreeks starten is momenteel niet toegestaan op dit systeem. Wil je dit inschakelen?
rdpSetupAllowContent=Hierdoor kun je je externe toepassingen rechtstreeks vanuit XPipe uitvoeren door de toestaanlijst voor RDP-toepassingen op afstand uit te schakelen.
rdp=RDP
wslX11SetupTitle=WSL X11 instelling
wslX11SetupHeader=XPipe kan je lokale WSL distributie gebruiken om als X11 weergaveserver te fungeren. Wil je X11 instellen op $DIST$?
wslX11SetupContent=Dit installeert de basis X11 pakketten op de WSL distributie en kan even duren. Je kunt ook in het instellingenmenu wijzigen welke distributie wordt gebruikt.

View file

@ -307,3 +307,6 @@ rdpSetupAllowTitle=Aplicação remota RDP
rdpSetupAllowHeader=Iniciar aplicações remotas diretamente não é atualmente permitido neste sistema. Queres activá-la?
rdpSetupAllowContent=Isto permitir-te-á executar as tuas aplicações remotas diretamente a partir do XPipe, desactivando a lista de permissões para aplicações remotas RDP.
rdp=RDP
wslX11SetupTitle=Configuração do WSL X11
wslX11SetupHeader=O XPipe pode utilizar a tua distribuição WSL local para atuar como um servidor de visualização X11. Gostarias de configurar o X11 em $DIST$?
wslX11SetupContent=Isto irá instalar os pacotes básicos do X11 na distribuição WSL e pode demorar um pouco. Podes também alterar a distribuição que é usada no menu de definições.

View file

@ -307,3 +307,6 @@ rdpSetupAllowTitle=Удаленное приложение RDP
rdpSetupAllowHeader=Запуск удаленных приложений напрямую в настоящее время запрещен в этой системе. Ты хочешь разрешить его?
rdpSetupAllowContent=Это позволит тебе запускать удаленные приложения прямо из XPipe, отключив список разрешений для удаленных приложений RDP.
rdp=RDP
wslX11SetupTitle=Настройка WSL X11
wslX11SetupHeader=XPipe может использовать твой локальный дистрибутив WSL для работы в качестве сервера отображения X11. Хочешь настроить X11 на $DIST$?
wslX11SetupContent=Это приведет к установке основных пакетов X11 на дистрибутив WSL и может занять некоторое время. Ты также можешь изменить, какой дистрибутив используется, в меню настроек.

View file

@ -307,3 +307,6 @@ rdpSetupAllowTitle=RDP uzak uygulama
rdpSetupAllowHeader=Uzak uygulamaların doğrudan başlatılmasına şu anda bu sistemde izin verilmemektedir. Etkinleştirmek istiyor musunuz?
rdpSetupAllowContent=Bu, RDP uzak uygulamaları için izin listesini devre dışı bırakarak uzak uygulamalarınızı doğrudan XPipe'dan çalıştırmanıza olanak tanır.
rdp=RDP
wslX11SetupTitle=WSL X11 kurulumu
wslX11SetupHeader=XPipe, yerel WSL dağıtımınızı bir X11 görüntü sunucusu olarak kullanabilir. $DIST$ adresinde X11 kurmak ister misiniz?
wslX11SetupContent=Bu işlem WSL dağıtımına temel X11 paketlerini yükleyecektir ve biraz zaman alabilir. Hangi dağıtımın kullanılacağını ayarlar menüsünden de değiştirebilirsiniz.

View file

@ -307,3 +307,6 @@ rdpSetupAllowTitle=RDP 远程应用程序
rdpSetupAllowHeader=本系统目前不允许直接启动远程应用程序。您想启用它吗?
rdpSetupAllowContent=通过禁用 RDP 远程应用程序的允许列表,您可以直接从 XPipe 运行远程应用程序。
rdp=RDP
wslX11SetupTitle=WSL X11 设置
wslX11SetupHeader=XPipe 可以使用本地 WSL 发布作为 X11 显示服务器。您想在$DIST$ 上设置 X11 吗?
wslX11SetupContent=这将在 WSL 发行版上安装基本的 X11 软件包,可能需要一些时间。你也可以在设置菜单中更改使用哪个发行版。