web-dev-qa-db-ja.com

ウィンドウが上部または下部のパネルに重なるようにする

私はしばしば、画面のウィンドウの上部または下部のみを持ちたいです。 1つのプログラムで画面全体を占有するのは望ましくありません。たとえば、大きなウィンドウの下部に表示される計算を参照する必要があります。その計算を参照し、それについて別のウィンドウに書き込むには、計算ウィンドウの最下部のみが表示されるように計算を再配置します。 (タイトルバーやプルダウンメニュー、または計算パネルの最初の2/3も表示する必要はありません)。

私が知る限り、Linuxのすべての「デスクトップ」は、ウィンドウの位置を上下に変更できないようにする制限を強制しています。

ウィンドウマネージャーの黄金時代(WindowMakerは最高でした!)、これは問題ではありませんでした。私が覚えている限りでは、パネルがカバーされないように保護する「境界」は強制されていませんでした。私が思い出すように、問題はGnomeとKDEで始まりました。 Compizが登場すると、ウィンドウの位置を変更してタイトルバーを画面から外すことができないというポリシーを施行しましたが、ccsmには熱心なユーザーがそれを変更できるオプションがありました(思い出すと「constrain-Y」と呼ばれます)。 OpenBoxとXFWM4ベースのシステムを使い始めたとき、その能力を失いました。

パネルの作者は製品の優位性をあまりにも積極的に保護しているように思えました。何かを書くのに忙しいときは、GnomeまたはXFCE4パネルを見る必要はありません。

編集:下のコメントに答えを入力するときにスクリーンショットを作成しました。こちらをご覧ください: Screenshot with bottom part of Firefox showing

1
pauljohn32

少し前に、共有したい解決策を見つけました。これはwmctrlを使用します。これは、Debian/Ubuntuで利用可能なプログラムであり、EWMH/NetWM互換のX Window Managerと対話できます。 OpenBox、XFWM4、およびその他のNetWM標準に準拠したウィンドウマネージャーでこれに成功しています。

これは、「togglePanelBelow.sh」と呼ぶ2行のbashスクリプトです

#!/bin/bash
wmctrl -l | grep panel |  awk '{print "wmctrl -v -i -r " $1 " -b remove,above"}' | bash
wmctrl -l | grep panel |  awk '{print "wmctrl -v -i -r " $1 " -b add,below"}' | bash

これにより、通常のウィンドウを再配置して、パネルに重ねることができます。

これはwmctlを使用して既存のウィンドウをリストし、名前に「panel」が含まれるウィンドウをフィルタリングしてから、再度wmctrlを使用してそれらのパネルにウィンドウのスタックの下に移動するよう指示します。 2015年のある時点で、プロパティを変更できなかったためにスクリプトが機能しなくなったため、2つのステップがあります。それらを削除してから再設定する必要があります。

以前のように、通常のウィンドウの上部にパネルを表示することにした場合は、togglePanelAbove.sh

#!/bin/bash
wmctrl -l | grep panel |  awk '{print "wmctrl -v -i -r " $1 " -b remove,below"}' | bash
wmctrl -l | grep panel |  awk '{print "wmctrl -v -i -r " $1 " -b add,above"}' | bash

ウィンドウを画面の半分に配置して、togglePanelAboveを実行すると、パネルがウィンドウに重なります。

そのためにショートカットキーを設定しましたが、問題は発生していません。

これは本当に質問ではなく、「私が見つけたこのきちんとしたものを見てください」という投稿です。たぶん質問でしょう:これはあなたが選んだウィンドウマネージャで動作しますか? OpenBoxとXFWM4で問題ないことを確認できますか?たとえば、Enlightenmentでテストする意欲はありません。

2
pauljohn32