您可能已经知道,Conky或PCManFM(它的桌面管理器方面)存在一个错误,该错误使Conky窗口在以下情况之一中消失:
对此有一些解决方法,例如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仍然像以前一样消失。
如果有人可以查看此文件并查看我的更改是否有意义,我将不胜感激。
非常感谢! :)
最佳答案
这仍然是不可能的。我做了这个古怪的解决方法。只需使用无法使用own_window_type normal
快捷方式的Win+D desktop
模式,然后在show桌面上修复conky即可。
首先,我认为,只要重新映射conky窗口就可以解决问题。但是我发现,只要将桌面聚焦,就不会在上面画任何东西。然后我想,杀死并重启conky。但是在show desktop
模式下,它将在后台创建。
因此,为了使conky返回:
安装xdotool;
apt-get install xdotool
创建一个脚本,例如/usr/local/bin/conky-remap.sh
:#!/usr/bin/env bash
zenity --info --text "Remapping Conky..." &
pid=$!
sleep 0.3
kill $pid
xdotool windowmap `xdotool search --classname 'conky'`
编辑
~/.config/openbox/lxde-rc.xml
(或发行版中的快捷方式)。找:
<keybind key="W-d">
<action name="ToggleShowDesktop"/>
</keybind>
改成:
<keybind key="W-d">
<action name="ToggleShowDesktop"/>
<action name="Execute">
<execute>conky-remap.sh</execute>
</action>
</keybind>
激活新的键盘快捷键配置:
openbox --reconfigure
按Win + D。您会看到闪光灯,然后conky又回来了!
根据Google一周的调查,这个古怪的解决方案是宇宙中唯一的解决方案,因此鼓励对其进行改进。
说明:
pid
xdotool search --classname 'conky'
怪癖:
exit 0
关于c - 帮助Conky与LXDE和PCManFM一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1261716/