Having a keyboard input focus problem when you first launched your Linux GUI app? Update X410 to the new version 3.8.2!

December 11, 2023|

3.8.2
  • There seems to be cases where Windows does not activate the newly launched Linux GUI app and set it to the foreground. You might need to click another window or desktop before you can set the keyboard input focus back to your Linux GUI app in such cases. The new version 3.8.2 addresses this problem, and you should now always be able to set the input focus simply by directly clicking on your Linux GUI app.

  • The new version 3.8.2 improves ensuring the initial visibility of your Linux GUI apps. For example, JetBrains Toolbox that places itself to the top right corner of the desktop screen should now properly show its window title bar as well as its full content even on HiDPI monitors.

X410 version 3.8.1 fixes multi-monitor related bugs and improves the popup menu management on HiDPI screens.

November 24, 2023|

3.8.1
  • Fixed the popup menu and tooltip location problem when a GUI app has multiple tool windows across multiple monitors.

  • IntelliJ IDEA and other JetBrains products should now correctly restore their window layout even when you have multiple monitors connected to your system.

  • Improved positioning sub-popup menus relative to their parent popup menu.

  • Tall popup menus are now automatically resized to ensure their visibility within the current monitor. Please note that X410 can only resize the menu window; X410 cannot add a scrollbar or buttons for viewing all the menu items. But modern apps usually recognize the new size and automatically adjust the UI that allows accessing all the menu items.

X410 version 3.8.0 brings a re-parenting window manager to Windows!

November 18, 2023|

3.8.0
  • X410 now has a re-parenting window manager option for Windowed Apps mode.

    Virtually all modern window managers for Linux GUI desktop environments such as Ubuntu, KDE, Xfce etc. are re-parenting the GUI apps; one or more extra outer windows are added to show window title and buttons as well as other visual decorations without actually affecting the GUI app itself.

    Those extra parent windows are not technically needed for X410 as those window buttons and decorations are handled by Windows. However, as re-parenting window managers are so common on Linux desktop environments, some Linux GUI apps expect such outer parent window to always exist when they update their user interface or calculate their screen position (ex. Apache NetBeans 19).

    The new reparenting mode in X410 should greatly improve the compatibility when running Linux GUI apps. You should no longer need to worry about setting up extra environment variables (ex. _JAVA_AWT_WM_NONREPARENTING) or tweaking configurations for your Linux GUI apps; just run them and they shall be ready!

    If you prefer the previous non-reparenting window manager, you can of course simply uncheck the 'Re-parenting window manager' option in X410.

  • X410 now more consistently and accurately selects a target window while drag-and-drop an item on HiDPI screens in Windowed Apps mode. You should also see fewer flickering screens for some apps (ex. Eclipse IDE) during their drag-and-drop operations.

  • Window decoration hints from Linux GUI apps are now interpreted more naturally logical to the management actions allowed for the window. For example, if a window is allowed to be resizable, maximize and minimize buttons are added regardless of its window decoration hints about those buttons (ex. KDE Dolphin).

  • X410 now tries to ensure the visibility of tooltips and popup menus within the current monitor. This should be handy for systems with multi-monitors and HiDPI screens. But please keep in mind that the final position of those tooltips and popup menus is determined by the app, not X410. Especially when you enable the scaling option in X410, popup menus might be placed outside of the current monitor and become unreachable as Linux GUI apps are not actually aware of their scaled size and position.

  • X410 now correctly detects the IP address for WSL2 version 2.0 and higher even when its experimental features are enabled. For your information, Microsoft added new experimental features to WSL2 in the recently released version 2.0. When you enable one of those features, mirrored networking mode or firewall, WSL2 replaces its existing virtual network adapter with a new one that has a different name, 'vEthernet (WSL (Hyper-V firewall))'. And that caused problems for X410.

JetBrains resurrects the title bar in its new UI for WSL users. Here is a workaround to remove it!

August 28, 2023|

Starting from version 3.7.0, X410 supports running JetBrains products such as IntelliJ IDEA in their new UI without the native Windows title bar. However, JetBrains recently released a new version 2023.2.1 for some of their products and the Windows title bar is brought back for WSL users. If you are running JetBrains products over SSH X11 forwarding from a regular Linux machine, they run cleanly without the title bar as expected.

It seems JetBrains was trying to fix the following problem and ended up penalizing WSL users.

Menu bar missing on all windows except one on tiling WM / under WSLg

While investigating the problem for X410, we found the following snippets in IntelliJ IDEA Community edition open-source codes.

internal val hideNativeLinuxTitleSupported: Boolean
    get() = SystemInfoRt.isXWindow
            && ExperimentalUI.isNewUI()
            && JBR.isWindowMoveSupported()
            && !X11UiUtil.isWSL()
            && !X11UiUtil.isTileWM()
public static boolean isWSL() {
    return SystemInfoRt.isXWindow && System.getenv("WSL_DISTRO_NAME") != null;
}

As you can see from the codes, IntelliJ IDEA specifically checks for WSL and disables its title bar hiding feature regardless of the X server it runs on. Hence, this issue cannot be fixed from X410. But fortunately, you should be able to trick IntelliJ IDEA by removing the environment variable it uses for identifying WSL, i.e., WSL_DISTRO_NAME, before launching it. You can execute the following command to remove the variable.

unset WSL_DISTRO_NAME




Unsetting WSL_DISTRO_NAME environment variable should also work for other JetBrains products as they share their source codes. Since WSL_DISTRO_NAME is rarely used in WSL, removing it should have minimal impact on running other Linux GUI apps. You can of course also restore it back to its original value once your JetBrains product is started.

Happy coding!

Best regards,
X410 Team
Choung Networks

Fixed an annoying bug that unexpectedly made your Linux GUI app topmost! Get the new version 3.7.1!

August 15, 2023|

3.7.1
  • When you use keyboard shortcuts in a Linux GUI app for switching among its floating tool windows, X410 now also synchronizes Windows visuals (ex. window title bar, taskbar icons etc.) accordingly.

  • X410 now tries to set the keyboard input focus to the main window when you first launch an app with additional floating tool windows.

  • If you are using multi-monitors or higher Windows display scaling settings, X410 now automatically adjusts the initial Linux GUI app window size and makes sure it is visible within the current monitor.

  • Fixed a bug that caused a Linux GUI app to unexpectedly become topmost when you click the main window while a tooltip or similar small window is shown.

  • Additional bug fixes and workarounds are also added to improve stability and consistency in managing Linux GUI app windows.