覆盖 install4j Unix 启动器WM_CLASS属性

是否可以在 Linux 环境中覆盖 install4j 的设置?WM_CLASS

目前,执行

xprop WM_CLASS

在我的应用程序上部署了 install4j 始终返回 。在创建正确的.desktop文件时,这是一个问题,我不想将使用 install4j 部署的所有应用程序组合在一起。com-install4j-runtime-launcher-UnixLauncher

我收集这个问题处理一个类似的问题。但是,答案对我不起作用。提到的编译器变量没有记录在我能找到的任何地方,据我所知,它什么都不做。sys.ext.windowClass


largeQ
浏览 87回答 1
1回答

潇湘沐

在 Linux 上,窗口管理器使用属性对窗口进行分组并分配正确的图标。WM_CLASS可以使用 xprop 检查此属性:xprop WM_CLASS若要指定 .desktop 文件应影响哪些WM_CLASS,可以在桌面文件中使用以下属性:StartupWMClassStartupWMClass=<my-applications-wm-class>install4j 的问题在于所有已部署的应用程序都将用作WM_CLASS。com-install4j-runtime-launcher-UnixLauncher正如 Ingo Kegel 在他现在编辑过的对此问题的回答中提到的那样,可以通过使用以下代码在 Java 应用程序中显式设置WM_CLASS窗口属性来规避此问题:String wmClass = ...;Toolkit toolkit = Toolkit.getDefaultToolkit();Class<?> toolkitClass = toolkit.getClass();if (Objects.equals("sun.awt.X11.XToolkit", toolkitClass.getName())) {&nbsp; &nbsp; Field awtAppClassName = toolkitClass.getDeclaredField("awtAppClassName");&nbsp; &nbsp; awtAppClassName.setAccessible(true);&nbsp; &nbsp; awtAppClassName.set(null, wmClass);}如果在应用程序启动时有初步对话框(例如,用于选择工作区),则必须单独对所有对话框执行此操作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java