From b32f58b0aed50ff50a6f930f0431beec36228636 Mon Sep 17 00:00:00 2001 From: crschnick Date: Tue, 12 Nov 2024 07:42:01 +0000 Subject: [PATCH] Various small fixes --- .../browser/file/BrowserHistoryTabModel.java | 2 +- .../xpipe/app/core/window/ModifiedStage.java | 6 +- .../java/io/xpipe/app/prefs/AppPrefs.java | 1 - .../java/io/xpipe/app/prefs/AppPrefsComp.java | 2 +- .../io/xpipe/app/prefs/LoggingCategory.java | 42 ------------- .../io/xpipe/app/prefs/TerminalCategory.java | 19 ++++++ .../app/terminal/ExternalTerminalType.java | 3 +- .../xpipe/app/terminal/TabbyTerminalType.java | 15 +++-- .../io/xpipe/app/resources/style/browser.css | 4 -- .../io/xpipe/app/resources/style/frame.css | 62 +++++++++++++++++++ .../app/resources/style/store-entry-comp.css | 3 + .../io/xpipe/app/resources/style/style.css | 58 ----------------- 12 files changed, 99 insertions(+), 118 deletions(-) delete mode 100644 app/src/main/java/io/xpipe/app/prefs/LoggingCategory.java create mode 100644 app/src/main/resources/io/xpipe/app/resources/style/frame.css diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserHistoryTabModel.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserHistoryTabModel.java index d003e9f80..0a585eee1 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserHistoryTabModel.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserHistoryTabModel.java @@ -10,7 +10,7 @@ import io.xpipe.app.storage.DataColor; public final class BrowserHistoryTabModel extends BrowserSessionTab { public BrowserHistoryTabModel(BrowserAbstractSessionModel browserModel) { - super(browserModel, AppI18n.get("history")); + super(browserModel, " " + AppI18n.get("history") + " "); } @Override diff --git a/app/src/main/java/io/xpipe/app/core/window/ModifiedStage.java b/app/src/main/java/io/xpipe/app/core/window/ModifiedStage.java index 0224b1641..d2b87f8ba 100644 --- a/app/src/main/java/io/xpipe/app/core/window/ModifiedStage.java +++ b/app/src/main/java/io/xpipe/app/core/window/ModifiedStage.java @@ -88,11 +88,7 @@ public class ModifiedStage extends Stage { NativeWinWindowControl.DmwaWindowAttribute.DWMWA_USE_IMMERSIVE_DARK_MODE.get(), AppPrefs.get().theme.getValue().isDark()); boolean seamlessFrame; - if (AppPrefs.get().performanceMode().get() || !mergeFrame()) { - seamlessFrame = false; - } else { - seamlessFrame = ctrl.setWindowBackdrop(NativeWinWindowControl.DwmSystemBackDropType.MICA_ALT); - } + seamlessFrame = ctrl.setWindowBackdrop(NativeWinWindowControl.DwmSystemBackDropType.MICA_ALT) || true; stage.getScene() .getRoot() .pseudoClassStateChanged(PseudoClass.getPseudoClass("seamless-frame"), seamlessFrame); diff --git a/app/src/main/java/io/xpipe/app/prefs/AppPrefs.java b/app/src/main/java/io/xpipe/app/prefs/AppPrefs.java index 4c05ae6c5..d3e650ede 100644 --- a/app/src/main/java/io/xpipe/app/prefs/AppPrefs.java +++ b/app/src/main/java/io/xpipe/app/prefs/AppPrefs.java @@ -227,7 +227,6 @@ public class AppPrefs { new RdpCategory(), new SshCategory(), new LocalShellCategory(), - new LoggingCategory(), new ConnectionsCategory(), new FileBrowserCategory(), new SecurityCategory(), diff --git a/app/src/main/java/io/xpipe/app/prefs/AppPrefsComp.java b/app/src/main/java/io/xpipe/app/prefs/AppPrefsComp.java index 30dc81643..e7a869f89 100644 --- a/app/src/main/java/io/xpipe/app/prefs/AppPrefsComp.java +++ b/app/src/main/java/io/xpipe/app/prefs/AppPrefsComp.java @@ -23,7 +23,7 @@ public class AppPrefsComp extends SimpleComp { return appPrefsCategory .create() .maxWidth(700) - .padding(new Insets(40, 40, 20, 40)) + .padding(new Insets(40, 40, 20, 60)) .styleClass("prefs-container") .createRegion(); })); diff --git a/app/src/main/java/io/xpipe/app/prefs/LoggingCategory.java b/app/src/main/java/io/xpipe/app/prefs/LoggingCategory.java deleted file mode 100644 index 5960ca19b..000000000 --- a/app/src/main/java/io/xpipe/app/prefs/LoggingCategory.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.xpipe.app.prefs; - -import io.xpipe.app.comp.Comp; -import io.xpipe.app.comp.base.ButtonComp; -import io.xpipe.app.core.AppI18n; -import io.xpipe.app.core.AppProperties; -import io.xpipe.app.issue.ErrorEvent; -import io.xpipe.app.util.DesktopHelper; -import io.xpipe.app.util.OptionsBuilder; - -import java.io.IOException; -import java.nio.file.Files; - -public class LoggingCategory extends AppPrefsCategory { - - @Override - protected String getId() { - return "logging"; - } - - @Override - protected Comp create() { - var prefs = AppPrefs.get(); - return new OptionsBuilder() - .addTitle("sessionLogging") - .sub(new OptionsBuilder() - .pref(prefs.enableTerminalLogging) - .addToggle(prefs.enableTerminalLogging) - .nameAndDescription("terminalLoggingDirectory") - .addComp(new ButtonComp(AppI18n.observable("openSessionLogs"), () -> { - var dir = AppProperties.get().getDataDir().resolve("sessions"); - try { - Files.createDirectories(dir); - DesktopHelper.browsePathLocal(dir); - } catch (IOException e) { - ErrorEvent.fromThrowable(e).handle(); - } - }) - .disable(prefs.enableTerminalLogging.not()))) - .buildComp(); - } -} diff --git a/app/src/main/java/io/xpipe/app/prefs/TerminalCategory.java b/app/src/main/java/io/xpipe/app/prefs/TerminalCategory.java index cceb3455c..23d9f9d7a 100644 --- a/app/src/main/java/io/xpipe/app/prefs/TerminalCategory.java +++ b/app/src/main/java/io/xpipe/app/prefs/TerminalCategory.java @@ -7,8 +7,10 @@ import io.xpipe.app.comp.base.HorizontalComp; import io.xpipe.app.comp.base.StackComp; import io.xpipe.app.comp.base.TextFieldComp; import io.xpipe.app.core.AppI18n; +import io.xpipe.app.core.AppProperties; import io.xpipe.app.ext.PrefsChoiceValue; import io.xpipe.app.ext.ProcessControlProvider; +import io.xpipe.app.issue.ErrorEvent; import io.xpipe.app.terminal.ExternalTerminalType; import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.terminal.TerminalView; @@ -23,6 +25,8 @@ import javafx.scene.paint.Color; import org.kordamp.ikonli.javafx.FontIcon; +import java.io.IOException; +import java.nio.file.Files; import java.util.List; import java.util.UUID; @@ -64,6 +68,21 @@ public class TerminalCategory extends AppPrefsCategory { .addComp(terminalTest) .pref(prefs.clearTerminalOnInit) .addToggle(prefs.clearTerminalOnInit)) + .addTitle("sessionLogging") + .sub(new OptionsBuilder() + .pref(prefs.enableTerminalLogging) + .addToggle(prefs.enableTerminalLogging) + .nameAndDescription("terminalLoggingDirectory") + .addComp(new ButtonComp(AppI18n.observable("openSessionLogs"), () -> { + var dir = AppProperties.get().getDataDir().resolve("sessions"); + try { + Files.createDirectories(dir); + DesktopHelper.browsePathLocal(dir); + } catch (IOException e) { + ErrorEvent.fromThrowable(e).handle(); + } + }) + .disable(prefs.enableTerminalLogging.not()))) .buildComp(); } diff --git a/app/src/main/java/io/xpipe/app/terminal/ExternalTerminalType.java b/app/src/main/java/io/xpipe/app/terminal/ExternalTerminalType.java index 8d778f9ab..dc9e96656 100644 --- a/app/src/main/java/io/xpipe/app/terminal/ExternalTerminalType.java +++ b/app/src/main/java/io/xpipe/app/terminal/ExternalTerminalType.java @@ -919,7 +919,8 @@ public interface ExternalTerminalType extends PrefsChoiceValue { MOBAXTERM, SECURECRT, TERMIUS, - XSHELL); + XSHELL, + TabbyTerminalType.TABBY_WINDOWS); List LINUX_TERMINALS = List.of( AlacrittyTerminalType.ALACRITTY_LINUX, WezTerminalType.WEZTERM_LINUX, diff --git a/app/src/main/java/io/xpipe/app/terminal/TabbyTerminalType.java b/app/src/main/java/io/xpipe/app/terminal/TabbyTerminalType.java index 146935cac..6f3990acb 100644 --- a/app/src/main/java/io/xpipe/app/terminal/TabbyTerminalType.java +++ b/app/src/main/java/io/xpipe/app/terminal/TabbyTerminalType.java @@ -24,11 +24,6 @@ public interface TabbyTerminalType extends ExternalTerminalType, TrackableTermin return "https://tabby.sh"; } - @Override - default boolean isRecommended() { - return true; - } - @Override default boolean supportsColoredTitle() { return true; @@ -61,6 +56,11 @@ public interface TabbyTerminalType extends ExternalTerminalType, TrackableTermin super("app.tabby", "Tabby.exe"); } + @Override + public boolean isRecommended() { + return false; + } + @Override protected void execute(Path file, LaunchConfiguration configuration) throws Exception { // Tabby has a very weird handling of output, even detaching with start does not prevent it from printing @@ -109,6 +109,11 @@ public interface TabbyTerminalType extends ExternalTerminalType, TrackableTermin class MacOs extends MacOsType implements TabbyTerminalType { + @Override + public boolean isRecommended() { + return true; + } + public MacOs() { super("app.tabby", "Tabby"); } diff --git a/app/src/main/resources/io/xpipe/app/resources/style/browser.css b/app/src/main/resources/io/xpipe/app/resources/style/browser.css index 4d1c2bf18..6e1fac3a8 100644 --- a/app/src/main/resources/io/xpipe/app/resources/style/browser.css +++ b/app/src/main/resources/io/xpipe/app/resources/style/browser.css @@ -330,10 +330,6 @@ -fx-background-radius: 4; } -.browser .tab-label:static { - -fx-padding: 0.4em 0.9em 0.4em 0.7em; -} - .browser .tab { -fx-opacity: 0.6; } diff --git a/app/src/main/resources/io/xpipe/app/resources/style/frame.css b/app/src/main/resources/io/xpipe/app/resources/style/frame.css new file mode 100644 index 000000000..d8d6e5f21 --- /dev/null +++ b/app/src/main/resources/io/xpipe/app/resources/style/frame.css @@ -0,0 +1,62 @@ +.root:macos:seamless-frame { + -fx-padding: 0 0 27 0; +} + +.root:dark:separate-frame .background { + -fx-background-color: derive(-color-bg-default, -3%); +} + +.root:light:separate-frame .background { + -fx-background-color: derive(-color-bg-default, -9%); +} + +.root:dark:separate-frame.background { + -fx-background-color: derive(-color-bg-default, -3%); +} + +.root:light:separate-frame.background { + -fx-background-color: derive(-color-bg-default, -9%); +} + + + +.root:dark:seamless-frame .background { + -fx-background-color: derive(-color-bg-default-transparent, 1%); +} + +.root:light:seamless-frame .background { + -fx-background-color: derive(-color-bg-default-transparent, -9%); +} + +.root:dark:seamless-frame.background { + -fx-background-color: derive(-color-bg-default-transparent, 1%); +} + +.root:light:seamless-frame.background { + -fx-background-color: derive(-color-bg-default-transparent, -9%); +} + +.root:seamless-frame.layout > .background { + -fx-background-radius: 0 6 0 0; + -fx-border-radius: 0 6 0 0; + -fx-border-width: 1 1 0 0; + -fx-padding: 0 0 0 0; +} + +.root:light:seamless-frame.layout > .background { + -fx-border-color: #999; +} + +.root:dark:seamless-frame.layout > .background { + -fx-border-color: -color-border-default; +} + +.root:macos:seamless-frame.layout > .background { + -fx-background-insets: 0; + -fx-border-insets: 0; +} + +.root:seamless-frame.layout > .background > * { + -fx-background-radius: 0 6 0 0; + -fx-border-radius: 0 6 0 0; +} diff --git a/app/src/main/resources/io/xpipe/app/resources/style/store-entry-comp.css b/app/src/main/resources/io/xpipe/app/resources/style/store-entry-comp.css index 31e5e27bb..1fa8476e2 100644 --- a/app/src/main/resources/io/xpipe/app/resources/style/store-entry-comp.css +++ b/app/src/main/resources/io/xpipe/app/resources/style/store-entry-comp.css @@ -9,6 +9,9 @@ .store-list-comp.scroll-pane .scroll-bar:vertical { -fx-padding: 9 1 5 1; + -fx-min-width: 6px; + -fx-pref-width: 6px; + -fx-max-width: 6px; } /* Grid */ diff --git a/app/src/main/resources/io/xpipe/app/resources/style/style.css b/app/src/main/resources/io/xpipe/app/resources/style/style.css index 9d9d0756f..379a665d6 100644 --- a/app/src/main/resources/io/xpipe/app/resources/style/style.css +++ b/app/src/main/resources/io/xpipe/app/resources/style/style.css @@ -9,64 +9,6 @@ -fx-background-color: transparent; } -.root:macos:seamless-frame { - -fx-padding: 0 0 27 0; -} - -.root:dark:separate-frame .background { - -fx-background-color: derive(-color-bg-default, -3%); -} - -.root:light:separate-frame .background { - -fx-background-color: derive(-color-bg-default, -9%); -} - -.root:dark:separate-frame.background { - -fx-background-color: derive(-color-bg-default, -3%); -} - -.root:light:separate-frame.background { - -fx-background-color: derive(-color-bg-default, -9%); -} - - - -.root:dark:seamless-frame .background { - -fx-background-color: derive(-color-bg-default-transparent, 1%); -} - -.root:light:seamless-frame .background { - -fx-background-color: derive(-color-bg-default-transparent, -9%); -} - -.root:dark:seamless-frame.background { - -fx-background-color: derive(-color-bg-default-transparent, 1%); -} - -.root:light:seamless-frame.background { - -fx-background-color: derive(-color-bg-default-transparent, -9%); -} - -.root:seamless-frame.layout > .background { - -fx-background-insets: 5 0 0 0; - -fx-border-insets: 5 0 0 0; - -fx-background-radius: 0 6 0 0; - -fx-border-radius: 0 6 0 0; - -fx-border-width: 1 1 0 0; - -fx-border-color: -color-border-default; - -fx-padding: 0 0 0 0; -} - -.root:macos:seamless-frame.layout > .background { - -fx-background-insets: 0; - -fx-border-insets: 0; -} - -.root:seamless-frame.layout > .background > * { - -fx-background-radius: 0 6 0 0; - -fx-border-radius: 0 6 0 0; -} - .store-layout .split-pane-divider { -fx-background-color: transparent; }