
私はopenboxとplankを使用しています。アプリを開いて最大化するたびに、ウィンドウは自動的にボード領域との競合を防ぎます。
私の質問は、ウィンドウを「タスクバー」として指定できますか?たとえば、画面の幅の25%を占めるようにメモ帳を設定し、他のメモ帳インスタンスを含む他の項目を残りの75%まで自動的に最大化するように設定できますか?
答え1
タスクバークライアントは通常_NET_WM_STRUT財産誰かに言うヨーロッパWMH一部の画面の実際の状態が自分だけに属すると予想される互換性のあるウィンドウマネージャです。
_NET_WM_STRUT, left, right, top, bottom, CARDINAL[4]/32
この属性は、すべての開始値が 0 で、すべての終了値が論理画面の高さまたは幅である _NET_WM_STRUT_PARTIAL 属性と同じです。
_NET_WM_STRUT_PARTIAL, left, right, top, bottom, left_start_y, left_end_y, right_start_y, right_end_y, top_start_x, top_end_x, bottom_start_x, bottom_end_x, CARDINAL[12]/32
このプロパティには、画面の各境界に予約されている領域の幅を指定する4つのベースと、4つの列のそれぞれの開始と終了を指定する追加の8つのベースが含まれています。
これにより、特定のウィンドウに対して300ピクセルの幅が予約されます。橋脚)、ラン
xprop -f _NET_WM_STRUT 32c -set _NET_WM_STRUT '300, 0, 0, 0'
次にウィンドウをクリックします。これで最大化されていても、通常のウィンドウは残りのスペースに制限する必要があります。
もちろんいいえドッキングされたウィンドウを予約済みスペースに自動的に配置します。ただし、Xdotoolを使用してプロセスを自動化できます。
xlogo #Dock window example
xprop -id "$(xdotool search xlogo)" -f _NET_WM_STRUT 32c -set _NET_WM_STRUT '300, 0, 0, 0'
xdotool search xlogo windowmove 0 0 windowsize 300 100%
Icewmはこれをきちんと抽象化するウィンドウマネージャです。man icewm-winoptions
。あなたに必要なもの
==> ~/.icewm/winoptions <==
xlogo.layer: Dock
xlogo.geometry: 300x700+0+0
これにより、各新しいXlogoウィンドウがドッキングポイントになり、作成時に正しく配置されます。
答え2
ウィンドウマネージャ(WM)は、アプリケーションとXサーバー間の特定の対話を傍受できます。
これらのタスクの1つはサイズ変更です(最大化はサイズ変更です)。したがって、アプリケーションは「このウィンドウのサイズが好きです」と言い、WMはリクエスト処理を開始し、「わかりました、これはあなたが得たサイズと場所です」と言います。
したがって、原則として、WMは画面の25%を特定のウィンドウに割り当て、画面の75%を他のすべてのウィンドウに割り当てることができます。
しかし、このように設定できるWMがあるかどうかはわかりません。したがって、独自のWMを作成するか、既存のWMを変更する必要があるかもしれません。
私はいわゆるタイリングWMがあることを知っていますが、一般的にすべてのウィンドウをタイリングするので、おそらく望むものではありません。
OTOH、私はopenboxとplankに慣れていないので、そうかもしれません...