以平铺模式 (i3wm) 打开 JavaFX sub window

Open JavaFX sub window in tiling mode (i3wm)

我尝试编写一个可以打开多个子 windows 的 JavaFX 应用程序(TornadoFX,因为我使用 kotlin)。每个 window 应该在 i3wm 中以平铺模式显示。在其他非平铺 window 管理器上,它应该开始最大化。但目前它总是以浮动模式打开。我认为这可以通过最大化 window 来存档。所以我在两种变体中尝试了以下 onDock() 方法。但两种变体都不起作用。

class FileMapFragment : Fragment() {

    val file:Path by param()

    final override val root =
            borderpane {
                ...
            }

    override fun onDock() {
        //Variant 1
        val screen = Screen.getPrimary()
        val bounds = screen.visualBounds

        currentStage?.x = bounds.minX
        currentStage?.y = bounds.minY
        currentStage?.width = bounds.width
        currentStage?.height = bounds.height

        //Variant 2
        currentStage?.isMaximized = true
        currentStage?.isIconified = true
    }
}

此片段由以下代码打开

find<FileMapFragment>(
    mapOf(
        FileMapFragment::file to file
    )
).openWindow()

Variant 1 是伪全屏模式,不是平铺模式。有人知道解决方案吗? (我认为这是一个一般的 JavaFX 问题,与 kotlin/TornadoFX 没有具体关系)

i3 似乎将 windows 与父 window 一起处理为浮动 windows。要以平铺模式启动 window(或在其他 window 管理器中允许 minimize/maximize),您必须将父级 window 设置为空。在此示例中,以下内容将起作用:

find<FileMapFragment>(
    mapOf(
        FileMapFragment::file to file
    )
).openWindow(owner = null)