2011年9月23日金曜日

Puppy LinuxでWindows用無線LANドライバを使おう

ノートPCにWary Puppyをインストールしてネットに繋ごうとした時の話し。

自分の古いノートPCには、LANインターフェース(有線・無線共に)がない。
貰い物のBUFFALOのWLI-CB-B11が手元にあったので、カードスロットに挿し、
Wary Puppy5.1.1のネットワークウィザードを使って簡単に繋げる事ができた。


もう一つ、CoregaのCG-WLUSB300NWH(白い方のヤツ。って色なんか関係無い!!)
と言うUSB接続のアダプタがあったので、こっちも繋いで見ることにした。
が、CG-WLUSB300N用のモジュールはサポートしていないらしく、繋げることが
出来なかった。

手動でUSB関連らしいモジュールを順番に総当りしてみたが、やはり駄目。
(予め入っているモジュールで行けるなら、自動で認識するっちゅうの)
こうなると、CG-WLUSB300N用のモジュールを別途入れなければならない。

例によって、検索してみた。
Realtekの型番を調べ、Linux用ドライバのソースを落としてきて、
自分でコンパイルする方法と、ndiswrapperを使ってWindows用のドライバを
そのまま流用する方法が見つかった。
その時はまだ、ソースを落としてコンパイルするなんて経験が無かったので、
「モジュールが無ければ、自分でソースからコンパイルしる」なんて言う
漠然とした情報だけでは、手も足も出ない。
したがって、選択肢は一つ。
Windows用のドライバを流用することにした。

先にWindowsXP上で準備段階の作業をする。
CoregaのサイトからCG-WLUSB300Nのドライバをダウンロードして解凍。
フォルダを覗いて見ると、
\corega\wlusb300n_102\Driver\CG-WLUSB300N
の中に以下のフォルダが見つかった。

VistaX64
VistaX86
Win2K
Win7X64
Win7X86
WinX64
WinXP

この内、Vista、Win7系を除いたそれぞれのフォルダにある

net8192u.inf
rtl8192u.sys

セットにして(ここ重要!)Wary Puppyの適当なディレクトリにコピー。


順番にndiswrapperで読み込ませてみる。


WinXPの所で、あっけなくドライバモジュールが読み込まれた。
後は、ウィザードの指示に従って作業するだけ。



繋がったぁ!
Pupyy Linux凄い!
(と思ったら、ndiswrapperはPuppy Linux独自の機能じゃなくて、Linux全般で
使えるのね、、、orz)
http://ja.wikipedia.org/wiki/NdisWrapper

手持ちの無線LANアダプタが認識されない時は、一度ndiswrapperを試してみたら?
意外と簡単にWindowsのドライバが使えちゃうかも。

※追記(2014/09/10)※
ドライバは認識されたけど、接続ができない場合、
↓も参照ください。
「ArchBang でCG-WLUSB300NWHを使う」
firmware の導入で上手く行くかもしれません(確率は低そうですが)

2011年9月18日日曜日

Puppy LinuxにMinecraftのサーバ(fCraft)を建てよう(後編)

前回の続き。メインPCの方で動作確認できたので、古いPCでやってみる。
古いPC(SVII265)には、Puppy Linux4.3.1日本語版が入れてある。
こちらで、fCraftサーバを動かして、メインPCから接続するのが目標。

当初、古いPCでもMonoをビルド、インストールしようと思っていた。
が、このスペックでmakeなどしたら、どれだけ時間が掛かるか分からない。
あるいは、メモリ不足でハングアップする可能性の方が高いか、、、。

で、Puppy Linuxでは独自のPETパッケージを作成する機能があることを
思い出した。
古いPCでビルドするなんて危険を犯さなくても、PET化してインストールすれば、
簡単じゃないか!

早速、メインPC上のLucid Puppy5.2.5でPET化してみる。
今までにPET化作業はしたことが無く初めてになるので、ちょっと心配。

PET化の方法はココにあるので、その通りにやるだけ。

ビルド、インストールと同じ要領で作業を進めて、make install とするところで
new2dir make install
とやるだけ。
後は表示にそって作業を進めていけば終了する。

Puppy Linux用のmonoを動かすPET

libgdiplus-2.10-i486.pet
mono-2.10.2-i486.pet
2つのpetファイルが出来上がったので、それをPuppy Linux4.3.1の方でインストールする。
と言っても、petファイルをクリックするだけ。
mono-2.10.2.petは55MBもの容量があり、相当な時間が掛かると思いきや、意外とあっさり
インストールが終了した。

よし、fCraftを入れて.exeファイルに実行許可を与え、関連付けを/udr/bin/monoに設定。
ポチッとな!

何も起こらない!

うん。予想通り(?)
Lucid Puppy5.2.5でビルドしたものが、そのままPuppy Linux4.3.1で動かないことは
想定内なので、メインPCの環境をPuppy Linux4.3.1に切り替えて、同様の作業をした。

「やってもうた!!」
作業が終了してから気がついた。
先に作成したLucid版petファイルと同じ名前で、4.3.1版のpetファイルを作ってしまった。
皆さんPET化作業をするときには、名前の付け方に注意しましょうね!
簡単な説明を付加する事もできるので、解り易くしておきましょうね!

Lucid版のpetを削除して、新しいpetパッケージをインストールする。

OK!!

fCraftが無事に起動!
サーバが立ち上がった!

古いPCで強引にビルドせず、PET化してインストールする方法は大正解だった。

さて、以上で基本的な作業が終了したので、ここからが本番。
立ち上げたサーバへ、メインPCから接続して実際にMinecraftをプレイしてみよう。
fCraftUI.exeを起動して、上段に表示されるアドレスをコピーし、メインPCで
接続してみる。

Failed to connect
You failed to connect to the server. It's probably down!

はいっ??

サーバは落ちてませんが?

何回もやってみたが、結果は同じ。
http://www.fcraft.net/wiki/Installation_Instructions
ココを見ると、Troubleshootingに記載があった。

Other players cannot connect from LAN
1、2、3の手順でやってみるも、まだつながらない、、、。
ん?まてよ、さっきコピーしたアドレスと記述が微妙に違いますな。

http://www.minecraft.net/play.jsp?ip=_____&port=_____

この記述を下の様に修正してみる。
(ここまで来ると、勘が頼り)

http://www.minecraft.net/classic/play/play.jsp?ip=_____&port=_____

オォーーッ!!
接続成功したぁーーー!


Puppy Linux4.3.1でfCraftサーバ起動


実際にプレイできることが確認できた。

↑古いPCのサーバ
↑メインPCで接続している

推測では、Minecraftの新バージョンが出たのを機に、本家のサイト構成の
変更があったのではないかと。

Puppy LinuxでMinecraftのサーバを建てる為にMonoを入れる為にソースからビルドし、
非力なPCにインストールする為にPET化し、、、。
日本語でOK?状態の作業がようやく終了した。

非常に疲れたが、目標を達成できた満足感はある。
Puppy Linuxの(日本語の)情報が少なくて難儀することが多いが、自分で色々と
試してみるのも面白みの一つと思って、やって行こう。

2011年9月17日土曜日

Puppy LinuxにMinecraftのサーバ(fCraft)を建てよう(前編)

ちょっと長いです。興味のある方だけどうぞ。

Minecraftと言うゲームをやってみた。
無料で出来るClassic版。

シングルプレイの他にマルチプレイで多人数の参加ができる。
見知らぬ人が建てたサーバにお邪魔して、ゲームをプレイできるのだ。
ただし、お邪魔する身分では利用できる機能の制限がある。

なので、自分でサーバを建ててしまおうと言う目論見。

サーバには公式で提供するサーバと、カスタムサーバがある。
機能的にはカスタムサーバの方が良さそうなのでココで紹介されている
fCraftと言うのを使ってみよう。


先ずは、WindowsXPでサーバを建ててみる。ココを参考にしたら、
あっけないくらい簡単にできてしまった。

しかし、サーバマシンと自分でプレイするPCが同じになってしまうので、
別PCでサーバを建てられないものかと思案。

fCrsftはLinuxにも対応してるらしいので、Puppy Linuxで出来ないかと
トライすることにした。

例によって、Puppy Linux + fCraft などと言う日本語の情報量が圧倒的に
少ない状況。

http://www.fcraft.net/wiki/Installation_Instructions

さあ、英語のお勉強かぁ?

とりあえず、LinuxではMonoなるものが必要と、更にGUIで動かすならlibgdiplus
も必要とな。
じゃあ、Puppy Linux用のPETパッケージを探してみましょうか。

うん、あった、あった。

http://openbve.freeforums.org/openbve-in-puppy-linux-mono-t692.html

openBVEって言う鉄道シミュレーションのフォーラムらしいが、そこに
mono-2.4-i486.pet
libgdiplus-2.4-i486.pet
2つとも紹介されている。(Google先生。流石です!)

この2つが入ったら、Monoで「.exe」ファイルを実行させるようにする。
ターミナルでコマンド入力

mono SomeFile.exe

あれ?エラーですね。
これって、.exeファイルをmonoで起動させるってコマンドじゃないのかな?

よく解らんので別の方法を試してみる。
先に、fCraftのファイルに実行属性を付加しておいて、クリックでMonoを呼び出すように
ファイルの関連付けをする。
んでもって、ConfigTool.exeをクリック。

おおー!!
起動したじゃないですか!

Monoってのは、.NET Framework環境をLinux上に構築するらしく、.NETアプリがLinuxで
動いてしまうと言う事らしい。(凄いですね)

あとはWindowsとほぼ同じ、って書いてある。問題はファイアーウォールの設定か?
とりあえず細かい設定は置いといて、ファイアウォールをoffにした状態でやってみる。
fCraftUI.exeを起動したが、何故か一瞬だけウィンドウが出て消えてしまう。
fCraft.logを開いて眺めて見ると、

ERROR: Could not parse Mono version.
Warning: You are using a relatively old version of the Mono runtime ().
It is recommended that you upgrade to at least 2.8+

うーん、Monoのバージョンが解析不能なくらい古いらしい。
fCraftのページを見ると最低でも2.6.4、推奨は2.10.2となってる。
2.4じゃ駄目って訳か、、、。
検索してみたが、該当バージョンのPETパッケージが見つからない。
Debianのmono-runtime2.6.3を見つけたので試しに入れてみた。
やはりfCraftUI.exeを起動すると、ウィンドウが出て消えてしまう。
fCraft.logで確認すると、今度はバージョン解析はできているが、まだ古いと。

こうなったら、推奨バージョンのmonoソースを落として、自分でビルド、インストール
するしかないな!


検索して次のページがあったので、これを参考にしながらやってみる。
http://smdn.jp/programming/mono/build_install/mono-2.10/

通常はPuppy Linux4.3.1を使っているが、新しめのバージョンの方が無難だろうと
考えて、手持ちのCDにあるLucid Puppy5.2.5をCDブートで使うことにする。
更に、makeなど低スペックPCでは荷が重いので、メインで使っているPCで作業する。
(OKになれば、同じ手順を古いPCでやってみる)
Lucid Puppy5.2.5を初期状態のまま、LANとブラウザの設定だけ。

ファイアウォールは起動しないままにしておく。
(動作確認が目的なので、日本語化もせずにそのまま使う)

ソースコード(mono-2.10.2.tar.bz2)を展開するだけでも相当な時間が掛かってしまった。
(この時点で長い戦いになることは、容易に想像できるw)
まずは、libgdiplus-2.10からビルドする。
configureにはパラメータを付けずにそのまま実行。
make、make installは終わった。
/usr/local/lib/にインストールされた。
ふと嫌な感じが頭を過る。
「libgdiplus-2.4-i486.petとディレクトリが違うぞ?」

ま、いっか。って事で、次にmono-2.10.2のビルド。
これもパラメータは付けずに実行。
いざ、make。ポチッとな!
しばらく、流れる文字を見ているとErrorやらWarningやらが非常に目につく。
が、止まることはなかったので、長時間になることを覚悟して席を外した。

1時間後戻ってみると、makeは終わってる。
続いて、make install

終了後に、mono -V を実行してみると、ちゃんとバージョンが表示された。
お!行けるのか?
fCraftを実行、、、。

何も起こらない。
monoファイルを探すと、/usr/local/bin/にインストールされている。
「これもmono-2.4-i486.petの時と違うぞ?」

exeファイルの関連付けがおかしいのかもしれない。
改めて、/usr/local/bin/monoに関連付けしてクリック。

何も起こらない。

mono関連のディレクトリを色々開けてみると、何かファイルが少ない気がする。
(気がするって、ヲイヲイ!)。
と言うか、空のディレクトリさえ在る??
これは、ディレクトリだけ作られて中のファイルがコンパイルされてないのか。
やはり、パラメータ無しだし、インストール先も変だし、やり直しだなぁ。

調べてみると、monoビルドの際、先にインストールしたlibgdiplusを参照するので、
その参照先が違っていると駄目らしい。

今度は、configureにprefixを付けて、2.4を入れた時と同じディレクトリに
インストールするようにした。
(実際には、prefixの指定方法を間違えて、/usr/lib/lib/や/usr/bin/bin/に
インストールしたり、何回かやり直してる、、、orz)

先ずは、libgdiplus。

./configure prefix=/usr/
make
make install

/usr/lib/にインストールされたのを確認。

次に、monoでもprefixを付け、更にlibgdiplusを参照できるようにと
--with-libgdiplus=/usr/lib/ を付加し、その他は参考ページに記載してあったパラメータを付けた。

./configure --prefix=/usr --with-libgdiplus=/usr/lib/ --with-ikvm-native=no --with-profile4=yes --with-moonlight=no --with-monotouch=no --with-mcs-docs=no --with-x
make
make install

今回もWarningが大量に流れていく。が、Errorは見当たらないかも、、、。
1時間程掛けて、作業が終了。

mono -V で確認し、インストール先も/usr/bin/に入っていることを確認。
exeファイルの関連付けを、今入れたmonoにする。
よし、クリック。

ヤッホー!!
起動しましたぜ。ConfigTool.exeで設定をし、続いてfCraftUI.exeを起動。
こんどは、ウィンドウが消えることなくサーバを建てる事ができた。

Lucid Puppy5.2.5でfCraftサーバ起動


次は、古い低スペックPCへのビルド、インストールを試してみる。
どこまで対応できるか不明だけど、古いPCをサーバにして、メインPCからアクセス
できれば、当初の目論見は完了することになる。
(この後、何も低スペックPCでビルドしなくても、能力のあるPCでPET化して、それを古いPCへ
インストールすれば良い事に気が付いた。PETの作成から実際にサーバを動かすまでは次で)

※注意※
個人保存ファイルのサイズを充分大きく取っていないと失敗するかも


2011年9月4日日曜日

kernel panic

デスクトップPCにインストールしてあったPuppy Linuxでkernel panic発生。

まぁ、原因は自分の操作ミスなんだけど。

インストールしてあるPETパッケージを整理しようとして、パッケージマネージャで
削除していたが、処理が終了する前に電源を落としてしまった。

kernel panicの対処法を探すのも面倒なので、一からインストールし直す事にした。

ちょうど、Full installの手順をブログに書いていたところなので、おさらいの意味も含めての再インストール。

通常のインストール自体はマニュアル通りにやれば難しくない。
自分の環境ではサウンドカードの認識が問題となるのだが、自分でブログに書いた手順で設定ができた。

この手順さえ身に付けておけば、もうインストールも恐く無いぞ!!

Puppy Linuxのダブルクリック(続き?)

※ダブルクリック間隔の調節については、2014/03/13のブログを見てください
  http://aoo10yan.blogspot.jp/2014/03/blog-post.html

実は、Puppy Linuxを使い始めた当初(ってまだ大して使い込んでる訳じゃないですけど)「ウィンドウマネージャ」って代物がデスクトップ全般を制御してると思っていた。JWMがデスクトップアイコンや壁紙をROX-Filerのピンボードに委譲しているのは、JWMに特別の事だと思っていた訳で、、、。
「じゃあ、ウィンドウマネージャを替えれば、ウィンドウマネージャの設定でダブルクリックとか統合して調整出来んじゃね?」
って事で、ROX-Filerのピンボードを切った状態で、ウィンドウマネージャを替えてみた。

IceWMを入れて、思い違いをしていたことが解った。

IceWMでも、デスクトップ(アイコン)を表示(制御)する機能は用意されていなかった。

Windowsユーザとしては、真っ黒な画面を前にして途方に暮れる訳で。せめて壁紙だけでも何とかしようと、IceWMの設定(preference)を覗いてみた。
確かに DesktopBackgroundImage="" という項目が見つかる。
そこを、いろいろ書き直してみたが、どうも設定が反映されない。
どうやら、jpegやpngの対応には別途ライブラリが必要な模様(未確認)。

そこで、IceWMについて検索しているときに出てきたIdeskってのを入れてみようと。

http://www.murga-linux.com/puppy/viewtopic.php?t=54458

Ideskなら、壁紙の設定だけじゃなくデスクトップアイコンの表示も出来るみたいだぞ!

記述の通りに、ライブラリとIdeskのPETパッケージをインストール。
/root/.idesktop ディレクトリを新規に作成。
準備が出来たところでターミナルから、

idesk (パラメータも何も無しでこれだけ)

「壁紙用のフォルダが無い」とか「壁紙のファイルが無い」とか言われるが、、、。
うん。黒い画面に「家(ホーム)」のアイコンが表示された。
改めて、  /root/.idesktopを除いてみると「default.lnk」と言うファイルが作成されている。
 これが、「家」アイコンを表示させている。
記述例にならって、新たに「opera.link」ファイルを作成して、Operaのアイコンも設置してみる。
さっき怒られたので、.ideskrcファイルを開いて、壁紙の設定もしてみる。

再びideskを実行。

壁紙に設定した画像のサイズが合っていないためか、壁紙がタイル形式で表示された。
壁紙の設定には Background.Mode と言う項目があり、ここで表示モードを指定できるらしいが、
Center(中央表示)を指定してるのに、タイル形式になってしまった。
この設定に関しての解決は未だに出来ていない。画像ファイルのサイズをディスプレイに合わせる
ことで調整した。(因みに、画像ファイルの形式はpngでもjpegでもOK)

Operaのアイコンも表示された。
Operaのアイコンをクリックして、起動には成功したものの、なんか変だぞ。
クリックの反応が悪い!
何回かクリックを試してみて、原因が判明した。

なんと、O(アルファベットのオー)のアイコンでは、文字の中抜き(透過)された部分でクリックが効いていない!!

笑うしかないでしょう。
(アイコンに使っている画像の透過部分を埋めようかとも思ったけど、結局デスクトップアイコンを使わなくなったので、放置状態)

さて、肝心のダブルクリック間隔の調整は、.ideskrc内のClickDelay:にミリセコンドで書けば良いらしい。
実際に、2000、3000と数値を入れてみたが、体感的にそこまでのディレイは効いていない気がする。
しかし、ROX-Filerの超短いクリック間隔よりは、まだましなのでこれで良しとしよう。
(しかし、これもデスクトップアイコンを使わなくなったので放置)

現状では、X起動後にターミナルからコマンドを打って実行させているが、これではしょうがないので
起動時に自動的にIdeskが実行されるようにしたい。
検索で引っ掛かった下のページを参考にして上手く行った。

http://puppylinux.org/wikka/idesk

最終的に、デスクトップアイコンのダブルクリックはIdesk、ウィンドウのダブルクリックはウィンドウマネージャで制御する、と言う棲み分けになった。

2011年9月3日土曜日

Puppy Linuxでmakeが、command not found

デスクトップPCにPuppy Linux4.3.1日本語版を入れたときの話。
当時のことを記憶を頼りに(twitterでつぶやいた内容を読み返しながら)書いてみる。


どうしても音が鳴らなくて、いろいろ調べてみると「isapnptoolsってのを使ったらどうか」
という記述を見つけた。
で、isapnptoolsを入れるには、makeコマンドで コンパイルしてやらないといけない。
が、いざmakeコマンドを実行してみると

command not found

Puppy Linuxでmakeコマンドを使うには、別途開発環境を入れないといけないとのこと。

日本語のサイトには、devx_xxx.sfsを個人設定保存ファイルと同じパーティションに置けば
起動時に読み込むと書いてあったが、自分の環境では駄目だった。
バージョンが悪いのかと思って色んなバージョンを試したり、
置き場所が悪いのかと置き場所を変えてみたが上手く行かない。

メニューを見ると、起動時にsfs読み込むような設定(パピーブートマネージャですね)
があったので、これに登録したらあっさりと読み込まれた。

簡単な事だけど、拾ってくる情報が自分の環境に合っているかどうかで大きな違いだった。
(Puppy Linux4.3.1日本語版なら devx_431JPbeta3-sfs3.sfs  が良いのかな)

ところがどっこい、、、。
Full install の場合は、sfsをそのままロードできないらしい。

検索してみると「devxをマウントしてコピーする」みたいな記述をみつけた。
ただ、「何処にどうやって」コピーするといった、具体的な方法が書かれていない。

とりあえずやってみよう!
先ずは、devx_431.sfsをマウントする。
マウントされた状態で開くと展開されたファイルが見える。
これをコピーするんだな?

で、作業用に適当なディレクトリを作って、そこに保存した。

command not found

パスが通ってないんだから駄目なんだろうな?
で、パスを追加(したつもりだけどexportしてなかったかも??)してやっても、、、。
相変わらず駄目でやんす。

何でやねん!
えーい!ままよ!!

devxを展開して出来たbinetcliboptsbinuser、をそのまま既存のディレクトリに
上書き保存してやれ!

コマンドを使ってコピーするなんて事は知らないので、ROX-Filerで引っ張って来てコピーした。
途中で何か聞かれたけど、構わず「はい」を押しつづける。(良い子はマネしないでね!)
相当な時間を掛けて、、、。終わったかな?

ほっほー! makeコマンドが通りましたぜ!!

多分、devxを展開して出来たディレクトリを適当な所にコーピーしたんでは(ファイルの参照、ライブラリの不足等で?)
実行できず、既存のファイルと統合させることで始めて使えるんだろうなと推測。

まぁ、何とかmakeコマンドが使えるようになりました。



最終的に音は出たのか?
出ました。

isapnptoolsを実行してisapnp.confを出力し、内容を自分のPCに合わせて(IRQやら諸々)編集。
modprobe.confも編集。
ALSAが勝手に読み込むモジュールをkill。
起動時に、ALSAより先にisapnp.confを読み込むようにetc/rc.d/rc.sysinitを書き換えて、
(同ファイル内でALSAの実行タイミングを調整)。
何とか音が出るようになった。

参考
http://sakurapup.browserloadofcoolness.com/viewtopic.php?f=14&t=904&p=4997&hilit=isapnp#p4997
http://linuxjf.sourceforge.jp/JFdocs/ISAPnP-HOWTO-7.html

2011年8月12日金曜日

Puppy LinuxをFull installで使う

「Puppy Linux 日本語版」のサイトには、動作条件として128MBで動く旨記載されている。
が、マニュアルには、
「フルインストール」ではパピーを通常のリナックスと同じ様にハードディスクにインストールします。メモリの容量が256MBよりも少なかったら、この種のインストールは良いと思います。
と書かれている。
自分のデスクトップPCはこの条件に当てはまるので、素直にFull installをしてある。

また、デスクトップPCには、Frugal installもやっているので、チョット比べてみた。
完全に同じ条件とは行かないが、

  ウィンドウマネージャ・・・IceWM
  デスクトップ・・・・・・・Idesk(+ Conky)
  Webブラウザ・・・・・・・Opera 11.50

この条件でYouTubeの同じ動画を表示再生してみた。

以下がその時のConkyが表示した値
  ・動いているプロセス数は同じ55
  ・CPUはともにほぼ100%(95%~100%を行ったり来たり)
  ・使用RAM(最高値)
    Full    81.71MiB
    Frugal  72.46MiB
  ・Swap(最高値)
    Full    47.55MiB
    Frugal  58.97MiB

これを見る限りでは、メモリの使い方に違いがあるように感じられる。
意外(?)にも、RAM使用料はFull installの方が多く、その代わりSwap領域の使用はFrugal installの方が多い。

非常に乱暴な言い方をすると、Frugal installの方がスワッピングが頻繁に起こる事になる。
自分のPCではHDDも高速とは言えないので、スワッピングが頻繁に行なわれると、それだけで操作性が悪くなってしまう。操作をしなくとも、動画を再生させていると、その動きには差が見られる。Full installの方がコマ落ちしながらも、まだ見られる状態で、Frugal installでは画像と音声のズレも激しく、チョット我慢できる範囲とは言い難い。

確かに、Puppy Linuxの特徴を活かすにはFrugal installが最適だとは思うが、低スペックパソコンの再利用と言う点では、Full installに分があるように思えて来る。
飽く迄、私見と言う事で、、、。

2011年8月6日土曜日

Puppy Linux 「デスクトップを更新しています」?

Wary Puppy 5.1.1日本語版で、ウィンドウマネージャをFluxboxに替えたら、起動の度に
「デスクトップを更新しています...」
って言われて待たされる。

JWMからIceWMに替えた時は出ないんだけどなぁ。Fluxboxのパッケージが合ってないんだろうな。
でも、今のパッケージのデフォルトが好きなので、これを変えたくない。
じゃ、何とかして「デスクトップの更新」を止めればいいじゃん。

「デスクトップの更新」って言うんだから、デスクトップアイコン、壁紙等の設定を「更新」してるんだろうなと思ったけど、どうも「更新」というよりPuppy Linuxが管理するデフォルト状態へ「復元」してるっぽい感じ。

メニュー項目を自分なりに編集しても「デスクトップの更新」が掛かると、編集した部分が消されてる。
でも、PETパッケージ・マネージャーでインストールし、メニュー項目に追加されたものは、それを維持している。
まぁ、起動時の更新を止めたいんだから、「.xinitrc」あたりを見てみよう。

# fixmenus when locale is changed
which fixmenus_on_locale &>/dev/null && fixmenus_on_locale

# fixmenus when locale is changed
[ -x /usr/local/bin/fixmenus_on_locale ] && /usr/local/bin/fixmenus_on_locale

この辺が怪しいと当たりを付けて、コメントアウトしてみた。
一旦Xを抜けてコンソールへ。

xwin fluxbox

として、ウィンドウマネージャを起動すると、、、。ビンゴ!
「デスクトップを更新しています...」が出ないで、すんなり起動した。
今度は、PCを再起動して確認。OK、素直に起動しましたねぇ。



本当は
xwin や fixmenu なんてファイルの中身ものぞいてみたんだけど、いろいろなファイルを参照していて、追いかけるのが面倒になって、途中で止めてしまった。
最終的に、「」を頼りに上記のコメントアウトをやってみた訳。
なので、理屈として正しく動いているかは不明。やってみる場合は、お約束の「自己責任」で、、、。

2011年7月28日木曜日

Puppy Linuxのダブルクリック

※ダブルクリック間隔の調節については、2014/03/13のブログを見てください
  http://aoo10yan.blogspot.jp/2014/03/blog-post.html


Windowsから移って来て、一番に戸惑うのはデスクトップアイコン等のアクションが、標準ではシングルクリックになっている事だと思う。

シングルクリックをダブルクリックに変更する方法は「Puppy Linux ダブルクリック」で検索すれば沢山出てくるので、それについて書くつもりは無い。
じゃあ、その先は、、、。って事を書こうと思う。

Puppy LinuxのデスクトップアイコンはROX-Filerのピンボード機能が制御していて、これをダブルクリックに変更しても、まだROX-Filerの制御下にある事に変わりは無い。
このROX-Filerのダブルクリックを認識する間隔が非常に短い!!
シングルクリックでは間違って2重起動してしまう。ダブルクリックでは「気合い」を入れて素早クリックしないと起動してくれない。
年を取って来ると、皆さんが思っている以上に身体が言うことを聞かないんですよ。
なので、ダブルクリックに変更したからには、その間隔の調整もしたいと思うのが人情。でしょ?
同じように思う人が他にもいるようで(英語は苦手なので雰囲気で)。

http://www.murga-linux.com/puppy/viewtopic.php?t=2162

ここで書かれているように、 ウィンドウマネージャの方でダブルクリックの間隔を変更しても、それはROX-Filerのピンボードの挙動にまで影響を及ぼさない。
ウィンドウマネージャでの設定では、ウィンドウのタイトルバーでダブルクリックする時の間隔までの様子。

ならば、ROX-Filerの方でそれなりの機能を用意してんじゃないの?と、調べてみると、以下のページが見つかった。

http://roscidus.com/desktop/Mouse

しかし、入れ方が解らない。
解らないならピンボードを切ってしまえ 、って短絡的に考えてしまった。
コマンドで「rox -p=」とすると、デスクトップの壁紙もアイコンも綺麗に消えて、真っ黒な画面になった。
真っ黒でもメニューからソフトを起動できるし、、、。
この段階になってウィンドウマネージャの範疇が何となく解った気がした。

「ウィンドウマネージャが動いていれば、デスクトップの見た目は機能的にはそれ程重要じゃ無いんじゃね?」

結局、ダブルクリックの調整はどうでも良くなって、デスクトップアイコンは要らない、って思うようになって来た。
WindowsからPuppy Linuxに移って来て最初の戸惑いは、何時しか別の地平を見る事になったのだ(嘘)
(その後、Ideskを入れるようになった経緯は別に書くかも。書かないかも)

追記(2011/9/3)
続き書きました

2011年7月23日土曜日

Idesk用壁紙変更ツールを、少しだけ実用的に

「はじめてのおつかい」でお店の前まで行って帰って来ちゃっていたので、もう一度お店へ行くことにw

前回まで画像ファイルが /usr/share/backgrounds/ ディレクトリにあることが大前提のスクリプトだった。
今回は、その縛りを外した。
更に、前回の修正で「現在使用中のファイル名」を第3引数で渡した為に、ダイアログを出したまま連続して壁紙の変更が出来なくなってしまったので、それを元に戻した。

(本当は、'onchange' と '$temp_str' は引数で渡す必要がないんだけど、戒めの為にそのまま残しておく)
#!/bin/bash

def_str=`grep 'Background.File' /root/.ideskrc`
def_length=${#def_str}
temp_str=`echo $def_str | cut -c 18-$def_length`

export MAIN_DIALOG='
<window title="idesk_bg_changer">
  <vbox>
    <text><label>idesk用壁紙変更ツール(AO_o10yan)</label></text>

      <frame ファイル選択で壁紙変更>
        <hbox>
          <entry accept="filename">
            <label>Select an Existing File</label>
            <variable>FILE_FILENAME</variable>
            <default>'$temp_str'</default> 
            <action>"./desktop_bg_function3.sh 'onchange' $FILE_FILENAME '$temp_str' &"</action>
          </entry>
          <button>
            <input file stock="gtk-open"></input>
            <variable>FILE_BROWSE_FILENAME</variable>
            <action type="fileselect">FILE_FILENAME</action>
          </button>
        </hbox>
      </frame>

    <hbox>
      <button cancel></button>
    </hbox>
  </vbox>
</window>
'
gtkdialog3 --center --program=MAIN_DIALOG

上のスクリプトから desktop_bg_function3.sh として下のスクリプトを呼び出す。
#!/bin/bash

def_str=`grep 'Background.File' /root/.ideskrc`
def_length=${#def_str}
temp_str=`echo $def_str | cut -c 18-$def_length`

new_str=$2

sed --in-place=.bak --expression=s:$temp_str:$new_str: /root/.ideskrc

idesk
うーん、随分スッキリ。
当たり前だけど、ファイル名をフルパスで指定するので、regular expression 区切り文字のスラッシュとディレクトリの区切りが重複してしまうので、regular expression の方の区切り文字を変更した。

Puppy LinuxでJWM、IceWM、FluxboxとWMを切り替えても、壁紙の表示はIdeskが共通して受け持っているので、壁紙変更ツールもこれを共通して使うことができる。って、あまり意味ないけど、、、。

※ 追記(2014/05/24)※
MAIN_DIALOGを表示するスクリプトの17行目、
default値の余分なパスを削除

2011年7月18日月曜日

Puppy Linuxの見た目

Puppy Linux4.3.1のウィンドウマネージャをFluxboxにしてみた。標準のJWMや、後から入れたIceWM同様に軽量WMということらしい。
3つのWMを使ってみたが、どれが軽い・重いを体感できる程の差は無いように思う。
あとは、見ための好みや、操作性が自分にしっくり来るかどうかの問題か、、、。

Fluxboxはシンプルで、ツールバーにアプリケーション起動用のアイコンを置いてランチャににすることが出来ない(らしい)。アプリを起動するにはメニューから選択することになる。なかなか潔いWMだ。デスクトップアイコンの設置もFluxbox自体の機能としては見当たらない。尤も、JWMにしろIceWMにしろ、今まで試しているWMにもデスクトップアイコンを設置する機能は無かったので、特筆すべき事ではないのかもしれない(つまり、それはWMの仕事ではない。って事?)。
従って、デスクトップアイコンを置きたければ、その機能を持つソフトなりを使うことになる。Puppy Linuxでは、ROX-Filerのピンボードを使ってデスクトップアイコンや壁紙を表示させているので、それをそのまま使うのも一つの方法だろう。
但し、私の場合ROX-Filerのピンボードが好きではないので、その機能を切ってIdeskを使っている。画像の壁紙もIdeskに表示させている。
せっかく、Fluxboxがシンプルになっているので、デスクトップアイコンも置くことなくメニューからの選択で行くことにする。
FluxboxにWbarと言うランチャを組み合わせている例も見受けるが、ランチャも使わない。
導入直後なので、システム状況をモニタする為にConkyだけ入れることにした。
そうして、出来上がったのが画像の通り。

Linuxディストリビューションの紹介文等に、スクリーンショットが表示されていることがあるが、それってどの程度の意味があるんだろうか。(って書きながら、自分のデスクトップ画像を晒しているんだけどw)
確かに、画像を見ることで雰囲気を掴むことが出きるし、重要な情報の一つだと思う。
でも、この画像のように元の見た目は変更が可能で、デフォルトのデスクトップがディストリビューションその物を表す指針にはならないんじゃないだろうか。

Puppy Linuxについても「アイコンがいっぱい並んでいて、ゴチャゴチャしてる」「デザインが可愛い過ぎ」とか書かれているのを目にする。
それは自分で変更できるし、自分に合わせて設定するのが楽しいんだよ、って呟きたくなるよね?

今回入れたのは、全てPETパッケージがあるので、導入は結構簡単♪
提供してくださった方々に感謝。

◇Fluxbox
http://sakurapup.browserloadofcoolness.com/viewtopic.php?f=25&t=1477&p=10597&hilit=fluxbox#p10597 
◇Idesk
http://www.murga-linux.com/puppy/viewtopic.php?t=54458
◇Conky
http://distro.ibiblio.org/pub/linux/distributions/puppylinux/pet_packages-4/

2011年7月14日木曜日

修正メモ

#!/bin/bash
def_str=`grep 'Background.File' /root/.ideskrc`
def_length=${#def_str}
temp_str=`echo $def_str | cut -c 41-$def_length`

export MAIN_DIALOG='
<window title="idesk_bg_changer">
  <vbox>
    <text><label>idesk用壁紙変更ツール(AO_o10yan)</label></text>
    <frame ファイル名入力 OKで壁紙変更>
      <hbox>
        <text>
          <label>ファイル名:</label>
        </text>
        <entry><variable>FILENAME</variable>
          <default>'$temp_str'</default>
        </entry>
      </hbox>
      <hbox>
        <button ok>
          <action>"./desktop_bg_function2.sh 'onclick' $FILENAME '$temp_str' &"</action>
        </button>
      </hbox>
    </frame>

    <frame ファイル選択で壁紙変更>
      <hbox>
        <entry accept="filename">
          <label>Select an Existing File</label>
          <variable>FILE_FILENAME</variable>
          <default>/usr/share/backgrounds/'$temp_str'</default> 
          <action>"./desktop_bg_function2.sh 'onchange' $FILE_FILENAME '$temp_str' &"</action>
        </entry>
        <button>
          <input file stock="gtk-open"></input>
          <variable>FILE_BROWSE_FILENAME</variable>
          <action type="fileselect">FILE_FILENAME</action>
        </button>
      </hbox>
    </frame>

    <hbox>
      <button cancel></button>
    </hbox>
  </vbox>
</window>
'
gtkdialog3 --center --program=MAIN_DIALOG
#!/bin/bash
new_str=$2

if [ $1 = 'onchange' ];then
  new_str=`basename ${new_str}`
fi  

sed --in-place=.bak --expression=s/$3/$new_str/ /root/.ideskrc

idesk
選択されたファイル名を basename で取り出す。
使用中のファイル名を第3引数で渡し、$3で参照。

話は前後する

先にシェルスクリプトのことを書いてしまってけど、ここで使っているLinuxの紹介。
10年以上前のPCでも比較的軽快に動くディストリビューションとして、Puppy Linuxを 使っている。
PentiumⅡ 266MHz メモリ128MBのデスクトップPCにPuppy Linux 4.3.1日本語版
Cerelon 433MHz メモリ192MBのノートPCにWary Puppy 5.1.1日本語版を入れている。
2機共にハードディスクへFull install。
(実は、デスクトップの方はもう一つPuppy Linuxが入ってる。それはPuppy Linuxの特徴でもあるFrugal installしたPuppy Linux 4.3.1日本語版。同じ機種で2つのインストール方法を並行して使ってみたが、どうもこの環境ではFull installの方が軽快に動いてくれる印象を持っている。
が、Puppy Linuxを存分に使うならばFrugal installがお勧め。
特に手探りで使い始める初心者ならば、って自分ですが、、、。
個人保存ファイルをバックアップしておけば、以前の状態に戻すのが簡単。
更に、開発環境のdevx_XXX.sfsを使うのも簡単にできる。
ちなみに、Full installでの開発環境の入れ方は↓こっちで、、、。
http://aoo10yan.blogspot.com/2011/09/command-not-found.html

ウィンドウマネージャは、標準のJWMからIceWMへ変更。(単に好みの問題)
デスクトップはROX-Filerのピンボードを切って、Ideskを使用。
(と言っても、デスクトップアイコンを置かず、壁紙の表示だけに使ってる感じ)
ファイラーをWindowsのエクスプローラ風なXfeに変更。

以上が、現在使っているLinuxの状況。

2011年7月13日水曜日

Idesk用壁紙変更ツールをシェルスクリプトで書いてみた

Puppy Linuxでは、標準でROX-Filerのピンボードを使って、デスクトップアイコンや壁紙を表示している。
ピンボードの挙動(デフォルトがアイコンのシングルクリックで起動。設定をダブルクリックにしても、クリック間隔 の調整が「簡単には」できない)があまり好きでないので、切ってしまった。

替わりに、Ideskってのを使う事にした。

標準ならば壁紙変更ツールがあって、GUIでの操作が可能だけど、Ideskで壁紙を変更するには、設定ファイルを 開いて、手動で書き換えないといけない。
面倒なので、Idesk用の壁紙変更ツールを作ってみた。

Linuxでのシェルスクリプトは「はじめての、おつかい」状態なので。細かい事は置いといて、「動く事」が目的。
で、作ったスクリプトが下のコード
#!/bin/bash

def_str=`grep 'Background.File' /root/.ideskrc`
def_length=${#def_str}
temp_str=`echo $def_str | cut -c 41-$def_length`

export MAIN_DIALOG='
<window title="idesk_bg_changer">
  <vbox>
    <text><label>idesk用壁紙変更ツール(AO_o10yan)</label></text>
    <frame ファイル名入力  OKで壁紙変更>
      <hbox>
        <text>
          <label>ファイル名:</label>
        </text>
        <entry><variable>FILENAME</variable>
          <default>'$temp_str'</default> 
        </entry>
      </hbox>
      <hbox>
        <button ok>
          <action>"./idesk_bg_function.sh 'onclick' $FILENAME &"</action>
        </button>
      </hbox>
    </frame>

    <frame ファイル選択で壁紙変更>
      <hbox>
        <entry accept="filename">
          <label>Select an Existing File</label>
          <variable>FILE_FILENAME</variable>
          <default>/usr/share/backgrounds/'$temp_str'</default>
          <action>"./idesk_bg_function.sh 'onchange' $FILE_FILENAME &"</action>
        </entry>
        <button>
          <input file stock="gtk-open"></input>
          <variable>FILE_BROWSE_FILENAME</variable>
          <action type="fileselect">FILE_FILENAME</action>
          <default>/usr/share/backgrounds/'$temp_str'</default>
        </button>
      </hbox>
    </frame>

    <hbox>
      <button cancel></button>
    </hbox>
  </vbox>
</window>
'
gtkdialog3 --center --program=MAIN_DIALOG
最初に #!/bin/bash でbushを使う事を明示。
次の3行は、Ideskの設定ファイルから現在壁紙に指定されている画像ファイルのファイル名を抜き出しているだけ。
あとは、Gtkdialogの生成。

肝は、<action></action>で、別途スクリプトファイルを、引数を渡しながら呼び出している事


上のスクリプトから idesk_bg_function.sh として呼ばれるのが下のスクリプト
#!/bin/bash
new_str=$2

if [ $1 = 'onchange' ];then
  new_length=${#new_str}
  new_str=`echo $new_str | cut -c 24-$new_length`
fi

def_str=`grep 'Background.File' /root/.ideskrc`
def_length=${#def_str}
temp_str=`echo $def_str | cut -c 41-$def_length`
sed --in-place=.bak --expression=s/$temp_str/$new_str/ /root/.ideskrc

idesk

2011年7月12日火曜日

ボチボチ

ここには、古いPC(使用機種参照)にLinuxを入れて、アレコレやっていく様を
書いて行こうと思う。

古い機種でも使えるディストリビューションを探したり、Windowsユーザが
Linuxのデスクトップ環境を使う上で戸惑った事など、気が向いた時に
書いて行く。

多分Twitterでのつぶやきの方が中心で、それを纏めた形になると思う。