帮助Conky与LXDE和PCManFM合作

正如你们中的一些人可能知道的那样,Conky或PCManFM(它的桌面管理器方面)存在一个错误,使得Conky窗口在以下某种情况下消失:

>在.conkyrc(Nautilus的常用配置)中设置“own_window_type override”并不会显示Conky窗口.
>在.conkyrc中设置“own_window_type desktop”会显示Conky窗口,但如果单击桌面则会消失.
>在.conkyrc中设置“own_window_type normal”会显示Conky窗口,单击桌面时它不会消失,但是如果你使用LXPanel的“最小化所有窗口”插件(“显示桌面”等效),它就会消失.如果使用键盘快捷键也会发生这种情况.

有一些解决方法,例如deactivating PCManFM’s desktop management(并使用feh设置壁纸,可能是iDesk用于图标)或using another file manager altogether,但我注意到这些都是低于标准的解决方案.我真的很喜欢PCManFM,我真的很喜欢Conky.什么人要做? : – /

所以我在LXPanel’s source挖了一个相关的代码片段,可以解决我的问题.该文件是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仍然像以前一样消失.

如果有人可以查看此文件并查看我的更改是否有意义,我将非常感激.

谢谢!

上一篇:如何确定使用哪种D-Bus绑定


下一篇:如何使用C/C++获得num lock状态?