
画面にウィンドウの上部または下部だけを表示したいことがよくあります。1 つのプログラムが画面全体を占有するのは望ましくありません。たとえば、大きなウィンドウの下部に表示されている計算を参照する必要があります。その計算を参照してから、別のウィンドウでそれについて記述するには、計算ウィンドウの一番下の部分だけが表示されるように計算を再配置する必要があります (タイトル バーやプルダウン メニュー、さらには計算パネルの最初の 2/3 も表示する必要はありません)。
現時点では、私が知る限り、Linux のすべての「デスクトップ」では、ウィンドウを画面の上部または下部の半分だけはみ出すように再配置できないという制限が適用されています。
ウィンドウ マネージャの全盛期 (WindowMaker は最高でした!) では、これは問題ではありませんでした。私が覚えている限り、パネルが覆われないように保護する強制的な「境界」はありませんでした。私の記憶では、この問題は Gnome と KDE で始まりました。Compiz が登場したとき、ウィンドウの位置を変更してタイトル バーが画面から外れないようにするポリシーが強制されましたが、ccsm には、熱心なユーザーがそれを変更できるようにするオプションがありました (私の記憶では「constrain-Y」と呼ばれていました)。OpenBox と XFWM4 ベースのシステムを使い始めたとき、私はその機能が恋しくなりました。
パネルの作成者は、自社製品の優位性をあまりにも積極的に守りすぎているように私には思えました。何かを書くのに忙しいときに、Gnome パネルや XFCE4 パネルを見る必要はありません。
答え1
しばらく前に、共有したい解決策を見つけました。これはwmctrl
、Debian/Ubuntu で利用可能な、EWMH/NetWM 互換の X ウィンドウ マネージャーと対話できるプログラムです。私は、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
それらのパネルをウィンドウのスタックの下に配置するように指示します。2 つの手順があるのは、2015 年のある時点で、プロパティを変更できなかったためにスクリプトが機能しなくなったためです。プロパティを削除してから再設定する必要があります。
以前のように通常のウィンドウの上にパネルを表示したい場合は、 を実行します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 でテストする気はありませんでした。