我有一台连接了外接显示器的笔记本电脑,所以实际上我有两个显示器(分辨率不同,但我想分辨率并不重要)。
当我启动 Java 应用程序(在我的情况下是 Supermicro IPMIView)时,应用程序似乎试图计算尺寸并将自身放置在屏幕的某个中心区域。事实上,我看到应用程序窗口分成两部分 - 一部分在第一个显示器上,一部分在第二个显示器上。此问题仅出现在 Java 应用程序中。
我能否以某种方式强制 Java 将其窗口放在某个监视器上(或者,假设放在任何监视器上,但同时只能放在一个监视器上)?
应用程序通过执行 shell 脚本启动,该脚本会检查环境中的很多内容,最后对代码进行评估./jre/bin/java com.zerog.lax.LAX /path/to/IPMIView20.lax /tmp/env.properties.12345
我使用 Kubuntu 16.04。
答案1
您可以使用xdotool
在窗口弹出后更改其位置和大小。例如
xdotool search --name "Supermicro IPMIView" windowsize 800 600
xdotool search --name "Supermicro IPMIView" windowmove 10 10
你也可以设置devilspie
一个守护进程来自动执行此操作。例如参见Devilspie 的 Ubuntu 文档
答案2
可能不行。如果应用程序开发人员只是使用固定位置或硬编码“显示 0”(从您的描述来看,听起来是这种情况),那么它就在那里。这不是 Java 特有的。在我看来,这听起来像是糟糕的编程。
我有很多 Java 应用程序和双显示器设置,但只有那些在其中硬编码了位置的应用程序才会出现此问题(如果程序员对位置进行了硬编码,则同样的情况也会发生在 .Net 应用程序或任何您想要使用的语言/框架上)