ラベル xfce の投稿を表示しています。 すべての投稿を表示
ラベル xfce の投稿を表示しています。 すべての投稿を表示

2014年5月6日火曜日

Puppy Linuxのdefaultfilerスクリプトをやっつけ仕事

PmountやPfindを使うと、ROX-Filerが起動するけど、環境によって使い分けたい。
XfceではThunar、KDEではDolphinを使いたいと言うだけの話。

/usr/local/bin/ に defaultfiler のスクリプトが見あたらなかったので、やっつけで作った。

#!/bin/sh

CURRENTWM="`cat /etc/windowmanager`"

case "$CURRENTWM" in
  "startxfce4") exec thunar "$1";;
  "startkde") exec dolphin "$1";;
  *) exec rox "$1";;
esac

/usr/sbin/pmount の422行目をコメントアウトして、defaultfilerで開くように編集。

#    exec rox -x /mnt/$DEVNAME -d /mnt/$DEVNAME #want this window on top.
  exec /usr/local/bin/defaultfiler /mnt/$DEVNAME

pfind は、設定を変更。


※ 追記 ※
pfind は設定の変更で良いと思ったけど、何か固まるので、
/usr/local/pfind/pfind の409行目の rox を defaultfiler に変更した。
検索結果のディレクトリを開くだけで、該当ファイルの位置までスクロールしないけど、気にしない。
(気にしろよヲイ!)

2014年5月4日日曜日

aho が Puppy Linux で使うパネルとは?

前回の「Puppy Linuxのプロンプトで xwin aho としたら」に引続き .xinitrc の話題。
もし、「AO_o10yanのやってることはPuppy Linuxの意図しない使い方だ」と思ってるならば、
以下は読まないでください。
/root/.xinitrc を読んで、「あれ?これってスクリプトの書き方として変じゃね?」って思った人は、
読んでも良いかもしれません。但し、既にそう思っている人には目新しい話では無いですが。

それでは、、、。

前回提示した画像を改めて見てみる。


これを見て、気付いた人もいると思う。
そう、ウィンドウマネージャはJWMなのに、画面下部に表示されてるパネルは、標準のトレイでは
ない。ここで表示されているのはLXPanelだ。
私は、Openboxを使用する際に表示するパネルとしてLXPanelを入れている。

LXPanelの表示を上にすれば見慣れたトレイが現れる。

上の画像を見れば分かる通り、標準トレイは表示されていたが、LXPanelに隠れて見えなかった、
ってこと。

これは、私がJWMのトレイとLXPanel の両方を表示させたかった訳ではなく、単純に
.xinitrc にそうなるように書かれているからに過ぎない。

#v3.95 support fbpanel tray/taskbar...
#only launch tray for w.m. without inbuilt tray...
if [ "$CURRENTWM" != "jwm" -a "$CURRENTWM" != "icewm" ];then
if [ -f /usr/bin/fbpanel ];then
#a bit of a hack: when 3builddistro runs fixmenus, which calls variconlinks,
#which populates /var/local/icons with symlinks, /usr/local/lib/X11/pixmaps
#is not yet populated (happens at first boot, from default icon theme)...
[ ! -e /var/local/icons/home48.png ] && ln -fs /usr/local/lib/X11/pixmaps/* /var/local/icons/
fbpanel &
fi
[ -f /usr/bin/lxpanel ] && lxpanel &
fi

じゃあ、それは xwin aho とした時だけの問題かって言えば、一目瞭然。

↓この画像を見てね。

Xfceで下部パネルが重なっている。

/etc/windowmanager に jwm と icewm 以外の記述があった場合、
lxpanel の存在を判定して、lxpanel があればそれを起動。

/etc/windowmanager に startxfce4 って書いてあっても同じじゃないのか?

私は取り立てて特別なことをしているつもりは無い。
パッケージマネージャからXfce4を入れているだけだ。
Presice Puppy 5.7.1から、Ubuntuのリポジトリを利用してパッケージのインストールが
できるようになったらしいので、それならば、それなりの対応をしないと駄目なんじゃないか?
と思う。
狭い範囲で、謂わば特殊な環境のみを対象にしたディストリビューションであることは、
エクスキューズに使えなくなってるんじゃないのか?との疑問を持ちつつある。




※ 余談 ※
.xinitrc の中に、下の記述を見つけた人もいるでしょう。

if [ "$CURRENTWM" = "xfwm4" ];then
if [ "`which xfce4-panel`" != "" ];then
xfwm4 --daemon #note, starts xfce-mcs-manager daemon also.
exec xfce4-panel
fi
fi

そう。単体のウィンドウマネージャとして xfwm4 を動かした場合に、xfce4-panel を
起動しておく記述。
単体で xfwm4 を動かしたことのある人なら疑問に思うでしょう。
「LXPanelが表示されないじゃん?重複しないじゃん?」って。

私も、デスクトップ起動後に端末から # lxpanel として、

tray: another systray already running

となりつつも、LXPanel が表示されることを確認したり、
試しにこのブロックを、上述の lxpanel 起動部分の下へ移動してみました。
そして、起動する順番を変更すると、パネルが重複して表示されることを確認しました。

確かなことは分かりませんが、順番と、デスクトップ環境からセッションで起動するとの違い
なのかと、感じています。(←「感じ」ってのも変ですが)

2014年4月19日土曜日

Puppy Linux にXfceをいれたら

Precise Puppy 5.7.1JPに色んなウィンドウマネージャ(以後WMと表記)を入れてみた。
JWMは元から入っているもので、IceWM、Fluxbox、Openboxを追加した。


これらの「単体」のWMには、壁紙の表示やデスクトップアイコンを表示する機能がない
(らしい)ので、お馴染みの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 オプションの参考
Puppy Linuxではパネルの使用を廃止しているため、結果としてピンボードが起動される。
ただ、この起動には他の条件式が付加されていないので、基本的にピンボードは起動されてしまう。

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 には疑問に思うことがある。
まるで「アキラ」の冷凍設備のような印象を受けなくもない、、、。