去年、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でなくてもいいことになりかねず、ちゃぶ台返しになりそうだ(それでも使い勝手が良ければいいけど)。

  •   0
  •   0

コメントを書く

名前    

メール 

URL