From a6f930b1cdb3b3e55c4e2ab254028382eef6606f Mon Sep 17 00:00:00 2001 From: crschnick Date: Sun, 29 Mar 2026 12:56:46 +0000 Subject: [PATCH] Rework workspaces --- app/src/main/java/io/xpipe/app/prefs/WorkspaceManager.java | 2 +- .../main/java/io/xpipe/app/prefs/WorkspaceOverviewComp.java | 2 ++ app/src/main/java/io/xpipe/app/prefs/WorkspacesCategory.java | 3 ++- app/src/main/java/io/xpipe/app/util/DocumentationLink.java | 1 + 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/prefs/WorkspaceManager.java b/app/src/main/java/io/xpipe/app/prefs/WorkspaceManager.java index 3779987f6..7acb133f9 100644 --- a/app/src/main/java/io/xpipe/app/prefs/WorkspaceManager.java +++ b/app/src/main/java/io/xpipe/app/prefs/WorkspaceManager.java @@ -52,7 +52,7 @@ public class WorkspaceManager { var d = AppProperties.get().getDataDir(); var existing = workspaces.stream().filter(workspace -> workspace.getDir().equals(d)).findFirst(); if (existing.isEmpty()) { - var name = d.getFileName().toString().startsWith(".xpipe") ? "Default" : d.getFileName().toString(); + var name = d.getFileName().toString().equals(".xpipe") ? "Default" : d.getFileName().toString().equals(".xpipe-ptb") ? "PTB": d.getFileName().toString(); current = new WorkspaceEntry(name, d); workspaces.addFirst(current); } else { diff --git a/app/src/main/java/io/xpipe/app/prefs/WorkspaceOverviewComp.java b/app/src/main/java/io/xpipe/app/prefs/WorkspaceOverviewComp.java index 44ae30834..928a1a28f 100644 --- a/app/src/main/java/io/xpipe/app/prefs/WorkspaceOverviewComp.java +++ b/app/src/main/java/io/xpipe/app/prefs/WorkspaceOverviewComp.java @@ -6,6 +6,7 @@ import io.xpipe.app.comp.base.ListBoxViewComp; import io.xpipe.app.comp.base.TileButtonComp; import io.xpipe.app.comp.base.VerticalComp; import io.xpipe.app.core.AppI18n; +import io.xpipe.app.util.LicenseProvider; import javafx.beans.property.ReadOnlyStringWrapper; import javafx.collections.FXCollections; import javafx.scene.layout.Region; @@ -38,6 +39,7 @@ public class WorkspaceOverviewComp extends SimpleRegionBuilder { }); addButton.setIconSize(1.0); addButton.maxWidth(2000); + addButton.disable(!LicenseProvider.get().getFeature("workspaces").isSupported()); var vbox = new VerticalComp(List.of(box, RegionBuilder.hseparator(), addButton)); vbox.spacing(10); return vbox.build(); diff --git a/app/src/main/java/io/xpipe/app/prefs/WorkspacesCategory.java b/app/src/main/java/io/xpipe/app/prefs/WorkspacesCategory.java index b133bdf9d..fb58de19b 100644 --- a/app/src/main/java/io/xpipe/app/prefs/WorkspacesCategory.java +++ b/app/src/main/java/io/xpipe/app/prefs/WorkspacesCategory.java @@ -5,6 +5,7 @@ import io.xpipe.app.comp.base.ButtonComp; import io.xpipe.app.core.AppI18n; import io.xpipe.app.platform.LabelGraphic; import io.xpipe.app.platform.OptionsBuilder; +import io.xpipe.app.util.DocumentationLink; import io.xpipe.app.util.LicenseProvider; public class WorkspacesCategory extends AppPrefsCategory { @@ -25,9 +26,9 @@ public class WorkspacesCategory extends AppPrefsCategory { .title("manageWorkspaces") .sub(new OptionsBuilder() .nameAndDescription("workspaceManagement") + .documentationLink(DocumentationLink.WORKSPACES) .licenseRequirement("workspaces") .addComp(new WorkspaceOverviewComp().maxWidth(getCompWidth()))) - .disable(!LicenseProvider.get().getFeature("workspaces").isSupported()) .buildComp(); } } diff --git a/app/src/main/java/io/xpipe/app/util/DocumentationLink.java b/app/src/main/java/io/xpipe/app/util/DocumentationLink.java index 5c197cfcf..4a6971133 100644 --- a/app/src/main/java/io/xpipe/app/util/DocumentationLink.java +++ b/app/src/main/java/io/xpipe/app/util/DocumentationLink.java @@ -101,6 +101,7 @@ public enum DocumentationLink { SHELL_ENVIRONMENTS_USER("guide/environments#users"), SHELL_ENVIRONMENTS_SCRIPTS("guide/environments#scripts"), SERIAL("guide/serial"), + WORKSPACES("guide/workspaces"), ICONS("guide/hub#icons"), ONE_PASSWORD_KEYS("guide/password-manager#key-format"), GNOME_WAYLAND_SCALING("troubleshoot/wayland-blur"),