去年、Xfce(xfwm4)のウインドウ枠(上を除く)を太くした。それには概ね満足していたのだが、ことあるごとに上辺も太くしたいと思っていた。というのは、上をつかんでリサイズすることも多く、そのたびに神経を遣うからだ。それに、上だけ例外というのは癪だ。それで、昨夜、うっかり取り掛かってしまったw
ただ、去年も書いたように、元々できない(と思っていた)ので、まずは、まだ/本当にできないのか検索し、やっぱりできなさそうなことが分かった。仕方ないので、プログラムを改造しようと思って、ソースを見て直すべきところを探した。コードの見た目は綺麗なのだが、他人が書いたせいか、どうにも分かりずらくて苦労した。
結構時間が掛かったが、ようやく、どこでどうやって枠を処理しているかが分かった。それぞれの枠画像を本体の子ウインドウにしていて、そこにマウスが入ったらマウスポインタを変えるなどし、ドラッグされたらリサイズなどの処理を実行するようだ。
次に、その枠画像を読み込むところを探したら、settings.cのloadTheme()だった。それを読んだら、思わぬことが分かった。上辺はタイトルの枠画像(実際には枠ではなかった。以下、タイトル)だけだと思っていたら、その上にトップの枠画像(以下、トップ枠)があるのだ。全然知らなかった。改めて検索したら本当にそうだった(→ 参照: "Titlebar decorations"の項。見ても意味不明だが・・・)。以下に、それぞれの枠画像の位置関係を示す。ただし、実際にはそれぞれの枠画像は細分化されている(トップ枠については後述)。
左 枠 |
タイトル | 右 枠 |
(ウインドウ本体)
|
||
下枠 |
つまり、今はトップ枠(太字)の画像が存在しないからデフォルト値が使われていて細い※のだが、太いものを作ってテーマに追加すれば、他の辺と同様に太くできそうなのだ。
※今気付いたのだが、元々トップの左と右角の画像はあったので、(デフォルト値とは別に)それが細かったのかも知れない。
さっそくやってみた。実際のトップ枠は以下のように7個に分割されているので、それぞれを準備した。上段は画像ファイル名の先頭、下段は内容(用途)である(内容は推測を含む)。
top-left | top-1 | top-2 | top-3 | top-4 | top-5 | top-right |
左上角 | 左ボタン領域の上 | タイトルの左余白の上? | タイトル文字列の上 | タイトルの右余白の上? | 右ボタン領域の上 | 右上角 |
また、他の枠同様、それぞれにアクティブ時(-active)と非アクティブ時(-inactive)の画像が要るので、トップだけで合計14個もの画像を用意する必要がある。ただし、角以外(top-?-*)は同じでいいので、top-1-*をsym-linkして同じものを使った(もしかしたら、同じものはなくてもいいのかも知れないが、面倒なので確認しない)。
分からないことや謎があって随分苦労したが、できた。図示が難しいが、実際に、リサイズでつかめる領域が広くなった(気がする)。「気がする」と書いたのは、確かに他の辺と同様の使い勝手になったし、確認のために境界を表示すると想定どおりなのだが、どうも代り映えしないからだ。広くなったのが数画素(他と同様に枠を7画素にしたので、デフォルトに4画素程度追加)に過ぎないせいだろうか? まだ何か間違っている可能性もある。
- 枠を広げる前 (通常の状態)
- 枠を広げた後 (トップ枠の追加後)
- トップ枠下部の境界 (上部×の右の線)
分からないことは、例えば以下だった。
- 枠画像ファイルの場所
- すっかり忘れていた。 ~/.themes/(テーマ名)/xfwm4 の下だった。
- トップ枠を広げ過ぎるとタイトルが狭くなる。高さに制限があるのだろうか? そもそも、それらは別の領域ではないのか?
- トップ枠の色を他の枠と同じにしたのに合わない(暗く見える)。
上から光が当たっている効果が付いているようで、タイトルの背景も指定より明るくなっている。 ← 上記の参照ページを良く読んだら原因が分かった。枠画像のディレクトリにαチャネルを持つpngのファイルがある場合、それが被せられるためである。元となったテーマのpngファイルが残っていて、それが明るくしていた。pngファイルを削除したら、想定どおりになった(ただ、見栄えが少し悪くなったので戻した)。- その、色を明るくする効果の指定場所は不明だったので、画面で実際の値を調べて調整した。そのため、テーマを変えたりすると色が合わなくなる可能性がある。
- なお、画像ファイル(xpm)中の色は名前で指定できるので、テーマの設定ファイル(themerc)で指定して各ファイルから参照するようにし、あとで変更する時に整合性が保てるようにした。以下に設定した名前を示す(なお、これらを使うのが適切なのかは不明だが、設定しても問題が起こらなかったので、使った)。
- active_color_1: トップ枠(アクティブ時, top-*-active.xpm)の本体色
- active_color_2: タイトル枠(アクティブ時, title-*-active.xpm)の本体色
- inactive_color_1: トップ枠(非アクティブ時, top-*-inactive.xpm)の本体色
- inactive_color_2: タイトル枠(非アクティブ時, title-*-inactive.xpm)の本体色
- それぞれの名前のデフォルト値はテーマで指定するのだろうが、(themercでなく、)GUIではどこで変更できるのかは不明だった。
それにしても、xfwm4のこのようなしょうもない(例: アナクロな)仕様を見るにつけ、「美しくない!」と思うし、何人もが太くしてほしいという要望を出しているのに「それは仕様」、「非対応」と言い放って対応せず、実際にはやればできるのに情報を公開しない態度は大嫌いだが、自分では作る気になれないし、おそらく作れないので我慢して使うしかない。でも、他にもっといいウインドウマネージャがあれば試してみたい。
ただ、ウインドウマネージャはデスクトップの肝なので、失敗すればシステムを壊す可能性があるし、ウインドウマネージャが変わればテーマも別になるので、せっかくカスタマイズしたテーマを捨てて新たに最初から作るのは面倒そうなので、二の足を踏んでいる。そもそも、ウインドウマネージャを変えるのであれば、デスクトップだってXfceでなくてもいいことになりかねず、ちゃぶ台返しになりそうだ(それでも使い勝手が良ければいいけど)。
コメントを書く / Write a comment