JWMは元から入っているもので、IceWM、Fluxbox、Openboxを追加した。
(らしい)ので、お馴染みのROX-Filerのピンボード機能をそのまま使ってる。
(勿論、ROX-Filerのピンボードを使わずとも、Idesk等で実現できることは以前のブログに
書いたとおり)
そして、パネルに関してはOpenbox用にLxpanelを入れてある。
さて、、、。問題はXfce。
Xfceはデスクトップ環境なので、当然単体のWMとは違う。
Xfceで使われているWMはxfwmなので、これを単体でいれる分には、
上記WMと同じくROX-filerのピンボード機能を使って問題ない。
でも、デスクトップ環境を導入するとなれば別のはなし。
XfceにはWMの他にセッションマネージャ、ファイルマネージャ
デスクトップマネージャ、パネル等が含まれるので、Puppy Linuxの環境と競合する部分が出てくる。
私が、Xfceを導入した際には、この(特にデスクトップマネージャの)競合による不具合に遭遇した。
導入自体は、パピーパッケージマネジャでxfceを検索して、xfce4_4.8.0.3 をクリックするだけの
簡単操作。
インストール後、一旦「プロンプトへ戻る」でXを終了し、
xwin startxfce4
として、X及びXfceを起動すると↓のようになる。
(xwinと言うスクリプトを通して起動するには訳がある。それについては別の機会に)
これで、表面上は問題ないのだが、先に設定しておいたダブルクリック間隔が反映されていない。
Xfceがデスクトップ環境として統合して持っている設定と、.gtkrc-2.0(.gtkrc.mine)
での設定が競合しているらしい。
ここが、単体のWMとしてxfwmを使用する場合と、デスクトップ環境としてのXfceを使う場合の
違い。
この競合は、.gtkrc-2.0をリネームしておくなどすれば、解決できる。
JWM等に切り替えたときに、ファイル名を戻せば良い。
(この辺は、WMSwitcerを使えばスクリプトが自動でやってくれる)
但し表面上の解決ができればそれで良いと言うことではなく、この違いは、結構重要なことじゃないか
と勝手に思っている。
最初に紹介した画像では、WMSwitcher(ここを参照) というWM切り替えツールが、Xfceを
他のWMと同列に表示している。
また、ここの「Q5:ウィンドウマネージャ」 に見るように、WMの話題のなかで、あたかもXfceが
WMであるかのような記述がされているのを目にする。
ここを無意識にやり過ごしてしまうと、WM関連で問題が発生したときの解決糸口を自ら、
蔑ろにしてしまう結果になりかねないと思っている。
実は、ここからが本題。
※ここから書く内容はマネしないでください。トラブルから復帰できなくなる可能性があります※
Xfceは、ウィンドウの透過処理に(簡易的に?)対応しており、「ウィンドウマネージャ(詳細)」の
「合成処理」設定で指定できる。
この「合成処理」を設定した状態で、他のWMに切り替えてから再度Xfceを起動したり、
再起動をした場合、非常に困った事態に陥る。
xwin startxfce4 を実行してもXfceの画面が表示されず、他のWMで設定した画面になってしまう。
更に、見た目が違うだけではなく、実際の操作結果が画面上で見えなくなってしまう!!!
Xfceが起動されていない訳ではなく、ROX-Filerのピンボードが上から覆い被さっているらしい。
実際にどんな状況なのかをスクリーンショットでお見せしたくても、操作画面が表示されない状態で、
どうやって画像を撮れば良いのか、その方法を知らない。
ただ、画面上部のパネル部分へマウスポインタを合わせれば、ツールチップが表示されるので、
そこから「ログアウトダイアログの表示」を探りだし、クリックをすることでダイアログを
表示させることはできる。一旦「ログアウト」してプロンプトに戻り、JWM等を表示させれば、
通常の画面に戻ることはできる。
初めてこの状態になったときの驚愕と慌てぶりは、ご想像にお任せする(笑)
しかし、JWMに戻してから冷静に考えれば原因は明らかだった。
Xfceのデスクトップマネージャの設定とROX-Filerのピンボード機能が競合してると推測するのに
時間はかからなかった。
他のWMで設定した画面が出るということは、それを制御しているROX-Filerのピンボードが
動いていると考えるのが自然の流れ。
そこで、X起動時に読み込まれる /root/.xnintrc を覘いてみた。
その中に、次の記述を見ることができる。
if [ -f /root/Choices/ROX-Filer/PuppyPan1 ];then rox -p /root/Choices/ROX-Filer/PuppyPin -r /root/Choices/ROX-Filer/PuppyPan1 else rox -p /root/Choices/ROX-Filer/PuppyPin fi
ROX-Filerのパネルを使える状態ならば、ピンボードとパネルを起動し、
パネルが使えないならば、ピンボードのみを起動しろと命令しているらしい。
-p -r オプションの参考 |
ただ、この起動には他の条件式が付加されていないので、基本的にピンボードは起動されてしまう。
WMを単体で切り替えるならば、この命令でも問題はなかったのだろう。
が、Xfceのようにデスクトップマネージャが含まれ、更に透過処理を行うような状況では、
この競合は致命的なんじゃないだろうか。
今までこの .xinitrc のままだったということは、これは私の環境依存による不具合なのかも知れない。
(過去にはここの事例に見るようなこともあったようだが、、、)
そうであれば、それにこしたことはない。私だけが対策をすれば済む。
もし、そうでないのならば、他の使用者への注意を促してほしい。
対策といっても、下のように現在使われているWMが何かを判定に入れただけ。
if [ "$CURRENTWM" != "startxfce4" ];then if [ -f /root/Choices/ROX-Filer/PuppyPan1 ];then rox -p /root/Choices/ROX-Filer/PuppyPin -r /root/Choices/ROX-Filer/PuppyPan1 else rox -p /root/Choices/ROX-Filer/PuppyPin fi fi
今回はXfceのみを対象にしているが、ほかのデスクトップ環境を導入した際にはそれに応じた判定を
加えれば良いはず。
今回のことに限らず、Puppy Linuxの .xinitrc には疑問に思うことがある。
まるで「アキラ」の冷凍設備のような印象を受けなくもない、、、。
0 件のコメント :
コメントを投稿