3

ご存知かもしれませんが、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!:)

4

7 に答える 7

3

これはまだ不可能です。私はこの風変わりな回避策を作りました。own_window_type normalショートカットを使用できないモードを使用し、showWin+D desktopデスクトップで conky を修正します。

最初に思ったのは、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

Win+Dを押します。フラッシュが表示され、conky が戻ってきました。

この風変わりなソリューションは、 1 週間の Google によると宇宙で唯一のソリューションであるため、改善することをお勧めします。


説明:

  • zenity --info --text "Conky のリマッピング..." &
    • デスクトップのフォーカスを解除するには、ランダム ウィンドウを作成する必要があります。Conky 自体は動作しません。:(
    • 続行するにはスクリプトも必要なので、&を使用します
  • pid=$!
    • pidその最後のプロセスの取得
  • 睡眠 0.3
    • 少しでもスリープすると (HTPC が遅くなります)、ウィンドウは作成される前に強制終了されます。
  • $pidを殺す
    • 機能を実行したらすぐにウィンドウを強制終了します。
  • xdotool ウィンドウマップxdotool search --classname 'conky'
    • いよいよ、conky を呼び出す (リマップする) ことができます。

癖:

  • デスクトップはフォーカスされていないため、矢印を使用してデスクトップ アイコンを移動することはできません
    • デスクトップに再び焦点を合わせることはできますか? ウィンドウがプログラムで最小化されていない限り、conky はそのまま残ります。
  • 300 ミリ秒の遅延と、ダイアログ ボックスの点滅。
  • Win+D を 2 回押して戻る (「デスクトップの非表示」)
    • デスクトップがすでに show-desktop-mode になっているかどうかを検出する方法が必要です。その場合、スクリプトはexit 0
于 2013-06-23T15:49:04.150 に答える
2

Openbox で完全に動作する最も単純なソリューション (他の WM でも動作するはずです):

  1. あなたの.conkyrcファイルで:

     own_window yes
     own_window_type desktop
     own_window_class Conky
    

    「デスクトップ」ウィンドウ タイプは、show desktop の実行時に conky が最小化されるのを防ぎます。さらに、「デスクトップの表示」を再度実行すると、ウィンドウが復元されます

  2. パッケージをインストールxdotoolし (非常に軽量なので心配はいりません)、ターミナル エミュレーターで次のコマンドを実行します。

    xdotool search --class "Pcmanfm" behave %@ focus windowraise $(xdotool search --class "Conky")

    デスクトップにフォーカスしたときにconkyが隠れないようにしてください

  3. 問題がなければ、端末で Ctrl+C を押して xdotool を中断し、上記のコードを自動起動に配置します。おそらくすぐには開始されないので、以下を含む単純なスクリプト (例: "show_conky.sh") を作成する必要があります。

    #!/bin/sh sleep 5 xdotool search --class "Pcmanfm" behave %@ focus windowraise $(xdotool search --class "Conky")

    最低限必要なスリープ時間は、システムに応じて定義する必要があります。確かに、「show_conky.sh」が実行される前の最初の起動時に conky が非表示になることはありません。また、xdotool focus windowraise $(xdotool search --class "Conky")コマンドと適切なスリープ時間を含む別のスクリプトを作成することもできます (または、「sleep」と「xdotool の動作」の間に追加してみてください)。 " コマンド "show_conky.sh")。

  4. Xorg サーバーを再起動します。楽しみ!:)

    個人的には、デスクトップ アイコンの管理に SpaceFM を使用することをお勧めします。デスクトップ領域の余白を設定できるため、conky がアイコンを覆い隠すことはありません。pcmanfm はエクスプローラーとしてより親しみやすいように見えますが、どちらも使用できます。spacefm は、デスクトップにあるディレクトリを他のアプリケーションで開くことができます。デスクトップでの動作は pcmanfm と同じなので、上記のコードの「Pcmanfm」を「Spacefm」に置き換えるだけです。

于 2014-03-16T18:44:04.367 に答える
2

これは古い「質問」ですが、Lubuntu で Conky を動作させることができなかったため、「Conky LXDE」を検索すると、Google のヒット数がかなり高くなりました。しかし、 LXPanel をハックする必要はありません!

多くの検索と誤った試行とトレイルの後.conkyrc、「PCLinuxOS-Forums」で Just Worked™ というファイルを見つけました。Lubuntu 11.10 から微調整するための優れたベースであることが証明されています。

私は現在、Linux Mint 13 LTS "Maya" Xfce (Ubuntu 12.04 ベース) で同じセットアップを使用しており、引き続き (非常に単純な) Conky 要件を満たしています。.conkyrc私のファイルの現在の形式は、誰かが助けになると思う場合はGist に保存されます。(フォーラムの元のソース リンクは、rc ファイルにコメント化されています。)

于 2012-03-11T01:50:44.333 に答える
0

@imiricの答えを単純化する:

Openbox RC.xml (例: ~/.config/openbox/lxde-rc.xml):

<keybind key="W-d">
  <action name="ToggleShowDesktop"/>
  <action name="Execute">
    <command>wmctrl -a "Conky (hostname)"</command>
  </action>
</keybind>

~/.conkyrc:

own_window yes
own_window_type normal
own_window_class conky-semi
own_window_transparent yes
own_window_hints undecorated,sticky,skip_taskbar,skip_pager
own_window_argb_visual yes
于 2015-06-05T05:45:01.917 に答える
0

解決策は次のとおりです。

NetWMState nws;
guint task_desktop = get_net_wm_desktop(client_list[i]);
get_net_wm_state(client_list[i], &nws);

if (((task_desktop == -1) || (task_desktop == current_desktop))
&& ( ( ! nwwt.dock) && ( ! nwwt.desktop) && ( ! nwwt.splash)
&& ( ! nws.skip_pager) )
于 2010-02-15T23:42:22.357 に答える
-1

pcmanfm を実行して、debian squeezy 上の LXDE で conky 透過性を使用して成功しました。

conky 構成ファイル (つまり .conkyrc) で、次を除くすべての「own_window」行を削除しました。

own_window yes
own_window_class conky
own_window_transparent yes
own_window_hints undecorated,below,skip_taskbar,sticky,skip_pager

よく使用される行を再度追加すると、透過性が失われるか、conky がまったく起動しなくなりました。非常に奇妙な...

于 2013-01-05T15:16:22.960 に答える