gpt4 book ai didi

c - 帮助让 Conky 与 LXDE 和 PCManFM 一起工作

转载 作者:可可西里 更新时间:2023-11-01 11:48:03 28 4
gpt4 key购买 nike

你们中的一些人可能已经意识到,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 仍然像以前一样消失。

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

非常感谢! :)

最佳答案

这仍然是不可能的 afaik。我做了这个古怪的解决方法。在无法使用Win+D desktop 快捷方式的地方使用own_window_type normal 模式,并修复conky on show desktop。

首先我想,只要重新映射 conky 窗口就可以了。但是我发现只要桌面是焦点,就不会在上面画任何东西。然后我想,杀掉重启conky就好了。但是在 show desktop 模式下,它将在后台创建。

所以为了让 conky 回来:

  • 桌面必须没有焦点
  • 重启 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

按赢+D。你会看到一个闪光,然后 conky 回来了!

这个古怪的解决方案是宇宙中唯一的解决方案根据一周的谷歌,因此鼓励对其进行改进。


解释:

  • zenity --info --text "重新映射 Conky..."&
    • 我们需要创建一个随机窗口来分散桌面的焦点。 Conky 本身不起作用。 :(
    • 我们还需要脚本继续,所以使用&
  • pid=$!
    • 获取最后一个进程的pid
  • sleep 0.3
    • 少睡一点(减慢 HTPC),窗口在创建之前就被杀死。
  • 杀死$pid
    • 在窗口执行完其功能后立即将其关闭。
  • xdotool windowmap xdotool search --classname 'conky'
    • 现在终于可以培养(重新映射)conky 了。

怪癖:

  • 桌面不集中,因此您无法使用箭头浏览桌面图标
    • 我们可以重新调整桌面的焦点吗?只要窗口没有以编程方式最小化,conky 就会保持不变。
  • 300 毫秒延迟,对话框闪烁。
  • 第二次按 Win+D 返回(“取消显示桌面”)
    • 我们需要一种方法来检测桌面是否已经处于显示桌面模式,在这种情况下脚本应该exit 0

关于c - 帮助让 Conky 与 LXDE 和 PCManFM 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1261716/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com