Various fixes

This commit is contained in:
crschnick 2024-08-27 13:23:41 +00:00
parent 542e535e42
commit c1b5fbfa5f
4 changed files with 15 additions and 27 deletions

View file

@ -21,23 +21,22 @@ public class AppDesktopIntegration {
if (Desktop.isDesktopSupported()) { if (Desktop.isDesktopSupported()) {
Desktop.getDesktop().addAppEventListener(new SystemSleepListener() { Desktop.getDesktop().addAppEventListener(new SystemSleepListener() {
@Override @Override
public void systemAboutToSleep(SystemSleepEvent e) { public void systemAboutToSleep(SystemSleepEvent e) {}
@Override
public void systemAwoke(SystemSleepEvent e) {
if (AppPrefs.get() != null if (AppPrefs.get() != null
&& AppPrefs.get().lockVaultOnHibernation().get() && AppPrefs.get().lockVaultOnHibernation().get()
&& AppPrefs.get().getLockCrypt().get() != null && AppPrefs.get().getLockCrypt().get() != null
&& !AppPrefs.get().getLockCrypt().get().isBlank()) { && !AppPrefs.get().getLockCrypt().get().isBlank()) {
// If we run this at the same time as the system is sleeping, there might be exceptions // If we run this at the same time as the system is sleeping, there might be exceptions
// because the platform does not like being shut down while sleeping // because the platform does not like being shut down while sleeping
// This hopefully assures that it will be run later, probably on system wake // This assures that it will be run later, on system wake
ThreadHelper.runAsync(() -> { ThreadHelper.runAsync(() -> {
ThreadHelper.sleep(1000); ThreadHelper.sleep(1000);
OperationMode.close(); OperationMode.close();
}); });
} }}
}
@Override
public void systemAwoke(SystemSleepEvent e) {}
}); });
} }

View file

@ -46,7 +46,7 @@ public class NativeMacOsWindowControl {
try { try {
lib.get().setAppearance(new NativeLong(nsWindow), seamlessFrame, darkMode); lib.get().setAppearance(new NativeLong(nsWindow), seamlessFrame, darkMode);
if (seamlessFrame) { if (seamlessFrame) {
ThreadHelper.sleep(150); ThreadHelper.sleep(200);
} }
} catch (Throwable e) { } catch (Throwable e) {
ErrorEvent.fromThrowable(e).handle(); ErrorEvent.fromThrowable(e).handle();

View file

@ -5,19 +5,13 @@ import io.xpipe.app.core.AppI18n;
import io.xpipe.app.core.AppProperties; import io.xpipe.app.core.AppProperties;
import io.xpipe.app.core.mode.OperationMode; import io.xpipe.app.core.mode.OperationMode;
import io.xpipe.app.core.window.AppWindowHelper; import io.xpipe.app.core.window.AppWindowHelper;
import io.xpipe.app.issue.ErrorEvent;
import io.xpipe.app.util.*; import io.xpipe.app.util.*;
import io.xpipe.core.process.OsType; import io.xpipe.core.process.OsType;
import io.xpipe.core.util.XPipeInstallation; import io.xpipe.core.util.XPipeInstallation;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.scene.control.ButtonType; import javafx.scene.control.ButtonType;
import org.apache.commons.io.FileUtils;
import java.nio.file.Files;
public class WorkspaceCreationAlert { public class WorkspaceCreationAlert {
public static void showAsync() { public static void showAsync() {
@ -53,13 +47,6 @@ public class WorkspaceCreationAlert {
return; return;
} }
if (Files.exists(path.get()) && !FileUtils.isEmptyDirectory(path.get().toFile())) {
ErrorEvent.fromMessage("New workspace directory is not empty")
.expected()
.handle();
return;
}
var shortcutName = (AppProperties.get().isStaging() ? "XPipe PTB" : "XPipe") + " (" + name.get() + ")"; var shortcutName = (AppProperties.get().isStaging() ? "XPipe PTB" : "XPipe") + " (" + name.get() + ")";
var file = var file =
switch (OsType.getLocal()) { switch (OsType.getLocal()) {

View file

@ -4,7 +4,7 @@ The scripting system has been reworked in order to make it more intuitive and po
The script execution types have been renamed, the documentation has been improved, and a new execution type has been added. The new runnable execution type will allow you to call a script from the connection hub directly in a dropdown for each connection when the script is active. This will also replace the current terminal command functionality, which has been removed. The script execution types have been renamed, the documentation has been improved, and a new execution type has been added. The new runnable execution type will allow you to call a script from the connection hub directly in a dropdown for each connection when the script is active. This will also replace the current terminal command functionality, which has been removed.
Any file browser scripts are now grouped by the scripts groups they are in, improving the overview when having many file browser scripts. Furthermore, you can now launch these scripts in the file browser either in the background if they are quiet or in a terminal if they are intended to be interactive. When multiple files are selected, a script is now called only once with all the selected files as arguments. Any file browser scripts are now grouped by the scripts groups they are in, improving the overview when having many file browser scripts. Furthermore, you can now launch these scripts in the file browser either in the background or in a terminal if they are intended to be interactive. When multiple files are selected, a script is now called only once with all the selected files as arguments.
## More terminal support ## More terminal support
@ -18,29 +18,31 @@ These work via a local SSH bridge that is managed by XPipe.
## Teleport support ## Teleport support
There is now support to add your teleport connections that are available via tsh. You can do that by searching for available connections on any system which has tsh installed. This is a separate integration from SSH, SSH config entries for teleport proxies do not work and are automatically filtered out. It solely works through the tsh tool. There is now support to add teleport connections that are available via tsh. You can do that by searching for available connections on any system which has tsh installed. This is a separate integration from SSH, SSH config entries for teleport proxies do not work and are automatically filtered out. It solely works through the tsh tool.
This feature is available in the Professional edition and is freely available to anyone for two weeks after this release using the Pro Preview. This feature is available in the Professional edition and is freely available to anyone for two weeks after this release using the Pro Preview.
## Workspaces ## Workspaces
You can now create multiple user workspaces in the settings menu. This will create desktop shortcuts that you can use to start XPipe with different workspaces active. You can now create multiple user workspaces in the settings menu. This will create desktop shortcuts that you can use to start XPipe with different workspaces active. Having multiple workspaces is useful if you want to separate your personal and work environments for example.
This feature is available in the Professional edition and is freely available to anyone for two weeks after this release using the Pro Preview. This feature is available in the Professional edition and is freely available to anyone for two weeks after this release using the Pro Preview.
## TTYs and PTYs ## TTYs and PTYs
Up until now, if you added a connection that always allocated pty, XPipe would complain about a missing stderr. This was usually the case with badly implemented third-party ssh wrappers. In XPipe 11, there has been a ground up rework of the shell initialization code which will in theory allow for better handling of these cases. You can therefore now also launch such connections from the hub in a terminal. More advanced operations, such as the file browser, are not possible for these connections though. Up until now, if you added a connection that always allocated pty, XPipe would complain about a missing stderr. This was usually the case with badly implemented third-party ssh wrappers and proxies. In XPipe 11, there has been a ground up rework of the shell initialization code which will allow for a better handling of these cases. You can therefore now also launch such connections from the hub in a terminal. More advanced operations, such as the file browser, are not possible for these connections though.
## Serial connection support ## Serial connection support
There is now support to add serial connections. This is implemented by delegating the serial connection to another installed tool of your choice and opening that in a terminal session. There is now support to add serial connections. This is implemented by delegating the serial connection to another installed tool of your choice and opening that in a terminal session.
Note that this feature is untested due to me not having physical serial devices around. The plan for this feature is for it to evolve over time with user feedback and issue reports. It is not expected that this will actually work at the initial release. Note that this feature is untested due to me not having physical serial devices around. The plan for this feature is to evolve over time with user feedback and issue reports. It is not expected that this will actually work at the initial release. You can help the development of this feature by reporting any issues and testing it with various devices you have.
## Pricing model updates ## Pricing model updates
I received plenty of user feedback and had time to observe the inner workings of potential customers, so I changed the old model that was created at a time when XPipe had no customers at all. All changes only apply to new orders. If you have previously purchased any XPipe edition, nothing will change for you. Any prices and conditions will stay the same for you. The community edition is also not changed. If you are interested in purchasing XPipe, you can read about the changes in detail at `https://xpipe.io/blog/pricing-updates`. I received plenty of user feedback and had time to observe the inner workings of potential customers, so I changed the old pricing model to one that should capture the demand better. The old pricing model was created at a time when XPipe had no customers at all and did not reflect the actual user demand. The main changes are the addition of a homelab plan, a monthly subscription, and some changes to the one-year professional edition.
All changes only apply to new orders. If you have previously purchased any XPipe edition, nothing will change for you. Any prices and conditions will stay the same for you. The community edition is also not changed. If you are interested, you can read about the changes in detail at `https://xpipe.io/blog/pricing-updates`.
## Fixes ## Fixes