以平铺模式 (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)
我尝试编写一个可以打开多个子 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)