のキーバインドがありToggleShowDesktop
ます。を押すとMenu、すべてのウィンドウが最小化され、デスクトップの壁紙が表示されます(予想どおり)。
<keybind key="Menu">
<action name="ToggleShowDesktop"/>
</keybind>
問題は、壁紙を見たくないということです。私はterminator
壁紙として使用しています。つまり、起動するとterminator
、下のレイヤーに配置されます。
<application name="terminator">
<focus>yes</focus>
<layer>below</layer>
<desktop>1</desktop>
<position>
<y>0</y>
<x>0</x>
</position>
<skip_taskbar>yes</skip_taskbar>
<maximized>true</maximized>
</application>
ToggleShowDesktop
「下」のレイヤーが影響を受けないように構成することは可能ですか?つまり、通常のウィンドウのみを最小化する必要がありterminator
ますが、最小化することはできません。言い換えれば、ターミネーターが通常の壁紙と同じように動作するようにしたいのですが、は影響を受けませんToggleShowDesktop
。
で使用Debian Wheezy
していLXDE
ます。
私は元の質問からいくつかの詳細を省略しました、そして今これらの詳細は結局のところ関連しているようです:
私のセットアップには、2台のモニターと4台の仮想デスクトップがあります。だから私は「8つの壁紙」を埋める必要がありterminator
ます。以前に読んだことから、これらの8つのウィンドウは区別可能である必要があると想定したため、次の8つのsymlikを作成しましたterminator
。
/usr/bin/terminator-wallpaper-1a -> terminator
/usr/bin/terminator-wallpaper-1b -> terminator
/usr/bin/terminator-wallpaper-2a -> terminator
...
実際には、8つの異なるアプリケーション(異なる名前)が作成されました。
同様に、.config/openbox/lxde-rc.xml
私には1つではなく、8つの定義があります。
<application name="terminator-wallpaper-1a">
<desktop>1</desktop>
<position>
<monitor>1</monitor>
</position>
...
</application>
<application name="terminator-wallpaper-1b">
<desktop>1</desktop>
<position>
<monitor>2</monitor>
</position>
...
</application>
<application name="terminator-wallpaper-2a">
<desktop>2</desktop>
<position>
<monitor>1</monitor>
</position>
...
</application>
そして最後に、ログイン後に自動的に開始される/.config/autostart
8つの*.desktop
ファイルがあります。
/.config/autostar/terminator-wallpaper-1a.desktop
/.config/autostar/terminator-wallpaper-1b.desktop
/.config/autostar/terminator-wallpaper-2a.desktop
これは私には過度に複雑でエレガントでないことを静めるように思えますが、それを行うためのより良い方法は見当たりませんでした。
さて、@ Suchipiの指示に従うと、次のようになります。
1)正常にdevilspie
動作する部分。結局のところ、8つのウィンドウすべてをカバーする定義が1つだけ必要です(の代わりmatches
にis
):
$ cat .devilspie/terminator.ds
(if
(matches (application_name) "terminator-wallpaper")
(begin
(wintype "desktop")
)
)
そして、私はobxprop
それが期待通りに機能することを見ることができます。
$ obxprop | egrep '(_OB_APP|_NET_WM_WINDOW_TYPE)'
_OB_APP_TYPE(UTF8_STRING) = "normal"
_OB_APP_TITLE(UTF8_STRING) = "None"
_OB_APP_CLASS(UTF8_STRING) = "Terminator-wallpaper-1"
_OB_APP_NAME(UTF8_STRING) = "terminator-wallpaper-1"
_OB_APP_ROLE(UTF8_STRING) =
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP
2)現在、の部分xdotool
はよりトリッキーです。まず100%
、解像度に使用することは機能しません。つまり、ウィンドウが消えます(表示されません)。静的を使用する場合:
xdotool search --class "Terminator-wallpaper-1a" windowunmap --sync windowmap windowsize %1 1920 1056
これはデスクトップ1モニター1で機能します。しかし、他のデスクトップで実行しても効果はありません。
xdotool search --class "Terminator-wallpaper-2a" windowunmap --sync windowmap windowsize %1 1920 1056
実際には、他のデスクトップでもxdotool
機能しますが、影響を与えたい特定のデスクトップでコマンドを実行した場合に限ります。つまり、デスクトップに切り替えて2
実行する必要がxdotool search --class "Terminator-wallpaper-2a"
あり、それが機能します。
また、windowsize %1
ここで何か役割を果たしているのだろうかと思っていました。
そのため、Debian Buster(Openbox 3.6)で同じシステムをセットアップしようとしていますが、新しい問題が発生しています。新しいバージョンのopenboxで一部のプロパティが変更されたと思われます。
すべてが以前と同じように見えます。
terminator-wallpaper-1a --profile wallpaper -b &
terminator-wallpaper-1b --profile wallpaper -b &
xdotool search --class 'Terminator-wallpaper-1a' windowunmap --sync windowmap windowsize %1 1920 1180
xdotool search --class 'Terminator-wallpaper-1b' windowunmap --sync windowmap windowsize %1 1920 1180
私は壁紙として2つの端末を取得します。しかし問題は、これらの端末のうち実際に使用できるのは1つだけであるということです。もう1つは「ピントが合っていない」ので、マウスでクリックしてもピントが合わない。つまり、端末は表示されますが、入力できません。
この問題は、以前のOpenboxバージョンでは存在しませんでした。
この問題を解決するにはどうすればよいですか?
Openboxは、_OB_APP_TYPE
プロパティが「デスクトップ」に設定されているウィンドウに、探している機能を提供します(ウィンドウのプロパティobxprop
を確認するために使用できます)。したがって_OB_APP_TYPE
、これが発生するように、ターミネータウィンドウのを「デスクトップ」に設定する必要があります。
オープンボックスのソースコードを読むと、client.c
それ_OB_APP_TYPE
がから継承されていることがわかりました_NET_WM_WINDOW_TYPE
。そこで、変更できるアプリケーションを探しました_NET_WM_WINDOW_TYPE
。私が見つけたアプリケーションはと呼ばれていdevilspie
ます。
まず、インストールします。
sudo apt-get install devilspie
次に、devilspie
構成ファイル用のフォルダーを作成します。
mkdir ~/.devilspie
次に、devilspie
名前の付いたアプリケーションを検索しterminator
、それらのウィンドウタイプをに設定するように指示する構成ファイルを追加しますdesktop
。以下を入れてください~/.devilspie/terminator.ds
:
(if
(is (application_name) "terminator")
(begin
(wintype "desktop")
)
)
これで、実行した場合devilspie
(またはdevilspie -a
、新しく作成したウィンドウではなく既存のウィンドウに影響を与える場合)、変更されたがまだ変更されていないobxprop
ターミネーターで使用するかどうかがわかります。を使用してウィンドウのマップを解除および再マップしてみましょう(X11の用語では、これは描画を停止してウィンドウの描画を開始することを意味します)。これにより、openboxに値が認識されるようになります。_NET_WM_WINDOW_TYPE
_OB_APP_TYPE
xdotool
xdotoolをインストールします。
sudo apt-get install xdotool
次に、次のスクリプトを実行してterminator
ウィンドウを見つけ、マップを解除し、マップが解除されるまで待ってから、再マップします。また、ウィンドウのサイズを変更するのは、マップを解除して再マップすると、最大化が失われたためです。
xdotool search --class "terminator" windowunmap --sync windowmap windowsize %1 1024 768
1024 768
あなたの解像度に置き換えます。また、静的解決の代わりにxdotool
を使用して、Debianのaptリポジトリで見つかったものよりも新しいバージョンをサポートしていることにも注意してください100% 100%
。xdotoolのgooglecodeページで.deb
、の新しいバージョンのパッケージを見つけることができます。xdotool
ターミネータウィンドウはすぐに装飾されなくなり、を使用obxprop
すると、両方の値が正しく設定されていることがわかります。バインドToggleShowDesktop
したキーを数回押すと、ターミネータウィンドウは常にアクティブなままになります。
これを永続的にするには、ログイン時にこれらのコマンドを実行する必要があります。LXSessionためLXDEのWikiページ(グローバル、ユーザごとの、あたりプロファイル、など)これを行うには、いくつかの異なる方法を示しています。ユーザー専用でLXDEプロファイル(デフォルト)でこれらの設定が必要な場合は~/.config/lxsession/LXDE/autostart
、実行したコマンドを編集して追加する必要があります。ターミネーターのウィンドウがレンダリングされた後にxdotoolコマンドを実行する必要があることに注意してください。のようなことをしてください(sleep 1s & xdotool ...)
。必要に応じて、これらのコマンドをopenboxのキーバインドとして設定することもできます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加