帮助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仍然像以前一样消失。
如果有人能查一下这个文件,看看我的修改是否合理,我会非常感激。
谢谢你!:)


最佳答案:

这恐怕还是不可能的。我做了个奇怪的变通方法。只需使用无法使用快捷方式的own_window_type normal模式,并在“显示桌面”上修复conky。
首先,我想,只要重新映射这扇窗就可以了。但我发现只要桌面被聚焦,就不会有任何东西被吸引。然后我想,杀了康基再重新开始。但在Win+D desktop模式下,它将在后台创建。
为了让康基回来:
必须取消桌面焦点
重新启动Conky或重新映射窗口
安装xdool;show desktop
创建脚本,例如apt-get install xdotool

#!/usr/bin/env bash
zenity --info --text "Remapping Conky..." &
pid=$!
sleep 0.3
kill $pid
xdotool windowmap `xdotool search --classname 'conky'`

编辑/usr/local/bin/conky-remap.sh(或您的发行版中的快捷方式)。
查找:
<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>

激活新的键盘快捷键配置:
~/.config/openbox/lxde-rc.xml
按Win+D。你会看到闪光,康基回来了!
根据谷歌一周的调查,这个古怪的解决方案是宇宙中唯一的解决方案,因此鼓励改进它。
说明:
Zenity--信息--文本“Remapping Conky…”&
我们需要创建一个随机窗口来取消对桌面的聚焦。康基本身不起作用。:。(
我们还需要脚本继续,所以使用&
PID=美元!
获取最后一个进程的openbox --reconfigure
睡眠0.3
睡眠任何少(慢htpc)和窗口被杀死之前,它被创建。
杀死$pid
一旦窗口执行了它的功能,就立即终止它。
xdool窗口映射pid
现在,我们终于可以提出(重新映射)康基。
怪癖:
桌面未聚焦,因此不能使用箭头导航桌面图标
我们能重新调整桌面的焦点吗?只要窗口不按程序最小化,康基就不会动。
300毫秒延迟,对话框闪烁。
再次按win+d返回(“取消显示桌面”)
我们需要一种方法来检测桌面是否已经处于显示桌面模式,在这种情况下,脚本应该xdotool search --classname 'conky'

公众号