ご存知かもしれませんが、ConkyまたはPCManFM(デスクトップマネージャーの側面)のいずれかにバグがあり、次のいずれかの状況でConkyウィンドウが消えます。
- .conkyrc(Nautilusの通常の構成)で「own_window_typeoverride」をフラットアウトに設定しても、Conkyウィンドウはまったく表示されません。
- .conkyrcで「own_window_typedesktop」を設定するとConkyウィンドウが表示されますが、デスクトップをクリックすると消えます。
- .conkyrcで「own_window_typenormal」を設定すると、Conkyウィンドウが表示されます。デスクトップをクリックしても消えませんが、 LXPanelの「Minimizeallwindows」プラグイン(「Showdesktop」に相当)を使用すると消えます。これは、キーボードショートカットを使用している場合にも発生します。
これには、 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は以前と同じように消えます。
誰かがこのファイルを調べて、私の変更が意味をなすかどうかを確認できれば、私は非常に感謝しています。
ありがとうSO!:)