正如你们中的一些人可能知道的那样,Conky 或 PCManFM(它的桌面管理器方面)存在一个错误,导致 Conky 窗口在以下一种情况下消失:
- 在 .conkyrc(Nautilus 的常用配置)中设置“own_window_type override”根本不会显示 Conky 窗口。
- 在 .conkyrc 中设置“own_window_type desktop”会显示 Conky 窗口,但如果单击桌面,它就会消失。
- 在 .conkyrc 中设置“own_window_type normal”会显示 Conky 窗口,单击桌面时它不会消失,但是......如果您使用 LXPanel 的“最小化所有窗口”插件(“显示桌面”等效项),它会消失。如果使用键盘快捷键也会发生这种情况。
有一些解决方法,例如停用 PCManFM 的桌面管理(并使用 feh 设置壁纸,并且可能使用 iDesk 设置图标)或完全使用另一个文件管理器,但我注意到这些都是低于标准的解决方案。我真的很喜欢 PCManFM,我真的很喜欢 Conky。男人要做什么?:-/
所以我挖掘了LXPanel 的源代码并找到了一段相关的代码,它可能包含我的修复。该文件是 src/plugins/wincmd.c 。
我的想法是,当单击“最小化所有窗口”按钮时,所有窗口(类)名称将与静态字符串“Conky”进行比较,如果匹配,它根本不会最小化该窗口。很简单,它应该可以工作。但问题是我已经有几年没有接触过任何 C 代码了,而且我还没有真正玩过 Xlib。
到目前为止,我做了以下更改:
19a20
> #include <string.h>
77a79,82
>
> /* Getting window's class name */
> XClassHint class;
> XGetClassHint(GDK_DISPLAY(), client_list[i], &class);
81c88
< if (((task_desktop == -1) || (task_desktop == current_desktop))
---
> if (((task_desktop == -1) || (task_desktop == current_desktop) || strcmp(class.res_name, "Conky") != 0)
这编译正确,但是当我运行新的 lxpanel 并单击“最小化所有窗口”时,Conky 仍然像以前一样消失。
如果有人可以查看此文件并查看我的更改是否有意义,我将非常感激。
谢谢!:)