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

2014年7月20日日曜日

ArchBang ものぐさインストール

ノートPC Mebius PC-BJ120 M(Celeron 433MHz 192MB)に
ArchBang(archbang-rc-2014.06.03-i686)をインストールした。
その手順の覚書。

インストールの詳細に関しては、検索すれば沢山出てくるので、そちらを参考に。
(自分は↓こちらを参考にしました。有り難うございました)
http://hgeekooohay.blogspot.jp/2012/12/archbang-201212_18.html


PC-BJ120 Mには、Windows98(SE)とPrecise-571JP(Puppy Linux)が
インストールされており、そこに新たなパーティションを設けて、
ArchBangをインストールし、マルチブートを実現する目論見。


 ・ダウンロードしたisoイメージをCDに焼いておく。

 ・Puppy Linuxを起動してGpartedで、パーティションを用意しておく。
   sda1  Windows98
   sda2  Puppy Linux
   sda3  ArchBang(インストール予定)
   sda4  Linux用swap領域

 ・CDからArchBangを起動してデスクトップで右クリック、
  メニューからInstallを選択。

 ・基本は、インストールメニューの順番通りに実行。

 ・Disk(s) preperation は選択してパーティションの設定まで進めるが、
  予めパーティションを設けてあるので、何の変更もせずにQuitして、
  Doneで、次の Install system に進む。

 ・Install system が済んだら Configure system(上述のリンク先参照)を設定。

 ・Install Bootloader は飛ばして、Quit を選択する

 ・「ブートローダ入れてないけど、それで良いの?」みたいなメッセージが
  出るが、そのまま終了する。

 ・再起動して、Puppy Linuxの Grub4Dos を実行。Grub4Dos が ArchBang を
  みつけて、menu.lst を作成してくれる。
  (但し、そのままでは ArchBang が起動しないので)
  menu.lstの編集 を選んで、エディタで開く。
  タイトルを適当に変更し、
   kernel /boot/vmlinuz-linux root=/dev/sda3 ro
  の行のすぐ下に次の一行を追記する。

   initrd /boot/initramfs-linux.img

























 ・Grub4Dos を終了して、PCを再起動。

 ・GRUB4DOSのメニューに、↑で設定した ArchBang が表示されるので、
  それを選んで起動。


以上で、ArchBang は、基本的な操作が可能な状態で起動する。
パーティションを準備したり、ブートローダをインストールしたりの面倒そうなところを、
他のOSのGUIで済ませようという、ものぐさインストールの完了。

後は、個別の設定になる。
壁紙の変更、無線LANの設定、日本語入力環境のインストール、常用アプリケーションの変更
等々、、、。
それらについては、追々書いて行きたいと思う。


こうなる迄の過程は次へ、、、(?)

2014年6月8日日曜日

Puppy パッケージマネージャの実験

Puppy Linux(Presice Puppy 5.7.1)でのパッケージマネージャに関する実験は続いている。


現状は、上の画像のような感じになってる。


「パッケージマネージャ:設定」で独自のuiファイルを選択できるようにしてある。


/usr/local/petget/configure.sh の55行目に適用するui名を追記↑
こうした、uiの追加登録・削除機能がGUIで提供されているのか否かは知らない。
(もし無いのなら、それを作ってみるのも一興か)



最近、OpenSSL関連の更新があったようだが、↑画像の下段部分に詳細情報を表示させるように
したので、更新情報の確認等に役に立つんじゃないかと目論んでいる。

2014年5月25日日曜日

マウス設定スクリプトの微調整

マウス設定のスクリプトで、Puppy Linuxの初期値(default)のポインタを、
擬似的にプレビューできるようにした。

SUB_DIALOGを表示する際に、MAIN_DIALOGにhideを与えるようにした。


※ 注意 ※
0)Precise Puppy 5.7.1JP でしか動作確認していません。
  動作には、gtkdialog0.8.3 xcur2png が必要です。
1)動作の保証はしません。
2)隠しファイルの操作をしています。
3)最悪の場合、Puppy Linux自体の不具合が起こります。

よって、スクリプトは読むだけ にしてください

以上宜しくお願いします。


#!/bin/bash 

#mouse_setting053

########## Page1 ##########
#設定ファイル.gtkrc.mineの存在を確認する
if [ ! -e /root/.gtkrc.mine ];then
  touch /root/.gtkrc.mine
  echo "gtk-double-click-time=250" > /root/.gtkrc.mine
  echo "gtk-double-click-distance=5" >> /root/.gtkrc.mine
fi

#/root/.config/rox.sourceforge.net/ROX-Filer/Optionsから
#bind_single_clickとbind_single_pinboardの値を切り出し、変数に代入
rox_path="/root/.config/rox.sourceforge.net/ROX-Filer/Options"

single_click_n=$(grep -n "bind_single_click" $rox_path)
single_click_n=$(echo $single_click_n | cut -f1 -d ":")

def_single_click_str=$(grep "bind_single_click" $rox_path)
def_single_click_value=$(echo $def_single_click_str | cut -c 34)
single_pinboard_n=$(grep -n "bind_single_pinboard" $rox_path)
single_pinboard_n=$(echo $single_pinboard_n | cut -f1 -d ":")
def_single_pinboard_str=$(grep "bind_single_pinboard" $rox_path)
def_single_pinboard_value=$(echo $def_single_pinboard_str | cut -c 37)

def_single_flag=`echo $(( $def_single_click_value + $def_single_pinboard_value ))`

if [ "$def_single_flag" != 0 ]; then
  def_single_click_boolean="false"
else
  def_single_click_boolean="true"
fi

#gtk-double-click-timeの値を.gtkrc.mineから切り出し、変数に代入
def_time_str=$(grep "gtk-double-click-time" /root/.gtkrc.mine)
if [ "$def_time_str" = "" ]; then
  echo "gtk-double-click-time=250" >> /root/.gtkrc.mine
  def_time_str=$(grep "gtk-double-click-time" /root/.gtkrc.mine)
fi
def_time_value=$(echo $def_time_str | cut -c 23-${#def_time_str})
#gtk-double-click-distanceの値を.gtkrc/mineから切り出し、変数に代入
def_distance_str=$(grep "gtk-double-click-distance" /root/.gtkrc.mine)
if [ "$def_distance_str" = "" ]; then
  echo "gtk-double-click-distance=5" >> /root/.gtkrc.mine
  def_distance_str=$(grep "gtk-double-click-distance" /root/.gtkrc.mine)
fi
def_distance_value=$(echo $def_distance_str | cut -c 27-${#def_distance_str})

########## Page2 ##########
#xset -qコマンドからマウス関連の数値を切り出し、変数に代入
temp_xset=$(xset -q)
def_acceleration_str=$(echo "$temp_xset" | grep "acceleration")
def_acceleration_value_str=$(echo $def_acceleration_str | cut -f2 -d " ")
def_acceleration_value=$(echo $def_acceleration_value_str | cut -f1 -d "/")
dot_point=$(echo $(( ${#def_acceleration_value} - 1 )))
front_value=$(echo "$def_acceleration_value" | cut -c 1-"$dot_point")
bottom_value=$(echo "$def_acceleration_value" | cut -c ${#def_acceleration_value}) 
def_acceleration_value=$front_value"."$bottom_value
def_threshold_value=$(echo $def_acceleration_str | cut -f4 -d " ")
def_x_parameter="m "$def_acceleration_value_str" "$def_threshold_value

#設定ファイル/.xset.shの存在を確認する
if [ ! -e /root/.xset.sh ]; then
  touch /root/.xset.sh
  chmod +x /root/.xset.sh
  echo "xset "$def_x_parameter > /root/.xset.sh
fi

########## Page3 ##########
default_png='
cat <<'EOF'>> /tmp/ao_o10yan_temp/left_ptr_000.png
/* XPM */
static const char * xpm_data[] = {
"16 16 2 1",
"       c None",
".      c #000000000000",
"                ",
".               ",
"..              ",
"...             ",
"....            ",
".....           ",
"......          ",
".......         ",
"........        ",
".....           ",
".. ..           ",
".   ..          ",
"    ..          ",
"     ..         ",
"     ..         ",
"                "};
EOF

cat <<'EOF'>> /tmp/ao_o10yan_temp/hand_000.png
/* XPM */
static const char * xpm_data[] = {
"16 16 2 1",
"       c None",
".      c #000000000000",
"                ",
"                ",
" ........       ",
".        .      ",
" ......   .     ",
"   .       .    ",
"    ...    .    ",
"   .       .    ",
"    ...   . .   ",
"   .     .   .  ",
"    ..  .     . ",
"      ..     .  ",
"      .  .  .   ",
"       .   .    ",
"        . .     ",
"         .      "};
EOF

cat <<'EOF'>> /tmp/ao_o10yan_temp/watch_000.png
/* XPM */
static const char * xpm_data[] = {
"16 16 2 1",
"       c None",
".      c #000000000000",
"   ........     ",
"   ........     ",
"   ........     ",
"  ..........    ",
" ..    .   ..   ",
"..     .    ..  ",
".      .     ...",
".     ...    ...",
".     ...    ...",
".    .       ...",
"..  .       ..  ",
" ..        ..   ",
"  ..........    ",
"   ........     ",
"   ........     ",
"   ........     "};
EOF
'
mkdir -p /tmp/ao_o10yan_temp
#symlinkの存在を確認する
if [ -e /root/.icons/default ]; then
  def_symlink=$(readlink /root/.icons/default)
  def_symlink_dir=$(echo $def_symlink | cut -f4 -d "/")
else
  def_symlink="/root/.icons/default"
  def_symlink_dir="default"
fi

#lsコマンドで列挙して<list>の<item>を作成する
temp_directories=$(ls /root/.icons/)
#echo $temp_directories
i_count=0
items="<item>default</item>"

if [ "$def_symlink_dir" = "default" ]; then
  def_selected_rwo=0
  eval "$default_png"
fi

for i in $temp_directories
do
  if [ "$i" != "default" -a "$i" != "ROX" -a -e "/root/.icons/""$i""/cursors" ]; then
    i_count=$(( $i_count + 1 ))
#    echo $i_count$i
    if [ "$def_symlink_dir" = "$i" ]; then
      def_selected_row="$i_count"
      xcur2png -d /tmp/ao_o10yan_temp /root/.icons/"$i"/cursors/left_ptr
      xcur2png -d /tmp/ao_o10yan_temp /root/.icons/"$i"/cursors/hand
      xcur2png -d /tmp/ao_o10yan_temp /root/.icons/"$i"/cursors/watch
    fi
    items=$items"<item>"$i"</item>"
  fi
#  echo $items
done

###############################################################################
#OKボタンが押された時に呼び出す
export ok_action='
#前処理
  msg_flag1=0
  msg_flag2=0
  msg_flag3=0
  
  new_time_str="gtk-double-click-time="$TIME
  new_distance_str="gtk-double-click-distance="$DISTANCE

#ダブルクリック、シングルクリックの切替設定
  if [ "'$def_single_click_boolean'" != "$CHKBOX" ]; then
    if [ "$CHKBOX" = "true" ]; then
      new_single_flag=0
    else
      new_single_flag=1
    fi

#ファイラとピンボードの設定を一緒に行う
#どちらかがシングル、どちらかがダブルと言う設定にはしない!!
    sed --in-place "'$single_click_n's/'$def_single_click_value'/$new_single_flag/" '$rox_path'
    sed --in-place "'$single_pinboard_n's/'$def_single_pinboard_value'/$new_single_flag/" '$rox_path'

    msg_flag1=1
  fi

#ダブルクリック間隔、反応距離の設定(文字列整形した後の比較じゃなくてもいいのに)
  if [ "'$def_time_str'" != "$new_time_str" -o "'$def_distance_str'" != "$new_distance_str" ]; then
    sed --in-place --expression=s/'$def_time_str'/$new_time_str/ /root/.gtkrc.mine
    sed --in-place --expression=s/'$def_distance_str'/$new_distance_str/ /root/.gtkrc.mine

    msg_flag1=1
  fi

#加速の設定
  if [ "'$def_acceleration_value'" != "$ACCELERATION" -o "'$def_threshold_value'" != "$THRESHOLD" ]; then
    new_acceleration=$(echo $ACCELERATION | sed "s/\.//")
    echo $new_acceleration
    new_x_parameter="m "$new_acceleration"/10 "$THRESHOLD
    echo $new_x_parameter
    xset $new_x_parameter
    
    sed --in-place "s:'$def_x_parameter':$new_x_parameter:" /root/.xset.sh

    msg_flag2=3
  fi

#テーマの変更
  new_symlink="/root/.icons/"$DIRECTORY
  echo "def_symlink="'$def_symlink'
  echo "new_symlink="$new_symlink
  if [ "$new_symlink" != "/root/.icons/" -a "'$def_symlink'" != "$new_symlink" ]; then
    if [ -e /root/.icons/default ]; then
      rm /root/.icons/default
    fi

    if [ "'$def_symlink'" != "$new_symlink" ]; then
      if [ "$new_symlink" != "/root/.icons/default" ]; then
        ln -s $new_symlink /root/.icons/default
      fi
      
      msg_flag3=1
    fi
  fi

#change_msg_flagにより、表示するメッセージを変える
  change_msg_flag=$(( $msg_flag1 + $msg_flag2 + $msg_flag3 ))

  if [ "$change_msg_flag" = "0" ]; then
    msg0="設定が変更されていません"
    msg1="何もせずに終了します"
    msg2="..."
  else
    msg0="マウスの設定を変更しました"
    msg1="Xサーバをリスタートして効果を確認してください"
    msg2="..."
#加速調整はxのリスタートなしで反映される
    if [ "$change_msg_flag" = "3" ]; then
      msg1="..."
    fi
    if [ "$msg_flag2" = "3" ]; then
      msg2="加速の変更は、既に反映されています。確認してください"
    fi
  fi

  export SUB_DIALOG="
    <window title=\"Double Click Adjust\" width_request=\"400\" height_request=\"300\">
      <vbox>
        <text height-request=\"40\">
          <label>"$msg0"</label>
        </text>
        <text height-request=\"40\">
          <label>"$msg1"</label>
        </text>
        <text height-request=\"40\">
          <label>"$msg2"</label>
        </text>
       <button height-request=\"100\"><label>閉じる</label>
          <action type=\"exit\">exit</action>
        </button>
      </vbox>
    </window>"

  gtkdialog -c --program SUB_DIALOG
'
###############################################################################
#マウステーマプレビュー用

export list_on_change='
  if [ "$DIRECTORY" = "default" ]; then
    if [ -e /tmp/ao_o10yan_temp/left_ptr_000.png ]; then
      rm /tmp/ao_o10yan_temp/left_ptr_000.png
      rm /tmp/ao_o10yan_temp/hand_000.png
      rm /tmp/ao_o10yan_temp/watch_000.png
      
      '$default_png'
    fi
  else
    temp_file_dir="/tmp/ao_o10yan_temp/"$DIRECTORY
    if [ "$temp_file_dir" != "/tmp/ao_o10yan_temp/" ]; then
      xcur2png -d /tmp/ao_o10yan_temp /root/.icons/"$DIRECTORY"/cursors/left_ptr
      xcur2png -d /tmp/ao_o10yan_temp /root/.icons/"$DIRECTORY"/cursors/hand
      xcur2png -d /tmp/ao_o10yan_temp /root/.icons/"$DIRECTORY"/cursors/watch
    fi
  fi
'
###############################################################################
#後始末
export del_temp='
  rm -rf /tmp/ao_o10yan_temp
  rm -f ./left_ptr.conf
  rm -f ./hand.conf
  rm -f ./watch.conf
'

###############################################################################

export MAIN_DIALOG=' 
  <window title="マウスの設定" width_request="400" height_request="300"> 
    <vbox>
      <notebook labels="ダブルクリック|加速|テーマ"> 
        <vbox>  
          <text>
            <label>ダブルクリック調整用スライダー</label>
          </text>
          <frame>
            <checkbox>
              <label>ダブルクリックを有効にする</label>
              <default>'$def_single_click_boolean'</default>
              <variable>CHKBOX</variable>
              <action>if true enable:TIME</action>
              <action>if false disable:TIME</action>
              <action>if true enable:DISTANCE</action>
              <action>if false disable:DISTANCE</action>
            </checkbox>
          </frame>
          <frame 間隔(ミリ秒)>
            <hscale range-min="250" range-max="2000" range-step="1">
              <default>'$def_time_value'</default>
              <variable>TIME</variable>
              <sensitive>'$def_single_click_boolean'</sensitive>
            </hscale>
          </frame>
          <frame 距離(ピクセル)>
            <hscale range-min="5" range-max="100" range-step="1">
              <default>'$def_distance_value'</default>
              <variable>DISTANCE</variable>
              <sensitive>'$def_single_click_boolean'</sensitive>
            </hscale>
          </frame>
        </vbox>
        <vbox>
          <text>
            <label>加速調整用スライダー</label>
          </text>
          <frame 加速(数値が大きい程、マウスが速く動きます)>
            <hscale range-min="1" range-max="10" range-step="0.1">
              <default>'$def_acceleration_value'</default>
              <variable>ACCELERATION</variable>
            </hscale>
          </frame>
          <frame 閾値(数値が小さい程、マウスが速く動きます)>
            <hscale range-max="20" range-min="1" range-step="1">
              <default>'$def_threshold_value'</default>
              <variable>THRESHOLD</variable>
            </hscale>
          </frame>
        </vbox>
        <vbox>
          <text>
            <label>マウスのテーマ切替</label>
          </text>
          <hbox>
            <list selected-row="'$def_selected_row'">
              <variable>DIRECTORY</variable>
              <width>150</width>
              <height>208</height>
              '$items'
              <action>bash -c "$list_on_change"</action>
              <action>refresh:LEFT_PTR</action>
              <action>refresh:HAND</action>
              <action>refresh:WATCH</action>
            </list>
            <frame プレビュー>
              <vbox>
                <pixmap space-fill="false" space-fill="false">
                  <variable>LEFT_PTR</variable>
                  <height>32</height>
                  <input file>/tmp/ao_o10yan_temp/left_ptr_000.png</input>
                </pixmap>
                <pixmap space-fill="false" space-fill="false">
                  <variable>HAND</variable>
                  <height>32</height>
                  <input file>/tmp/ao_o10yan_temp/hand_000.png</input>
                </pixmap>
                <pixmap space-fill="false" space-fill="false">
                  <variable>WATCH</variable>
                  <height>32</height>
                  <input file>/tmp/ao_o10yan_temp/watch_000.png</input>
                </pixmap>
              </vbox>
            </frame>
          </hbox>
        </vbox>
      </notebook>
      <hbox>
        <button ok>
          <action>hide:MAIN_DIALOG</action>
          <action>bash -c "$ok_action"</action>
          <action>bash -c "$del_temp"</action>
          <action type="exit">exit</action>
        </button>
        <button cancel>
          <action>bash -c "$del_temp"</action>
          <action type="exit">exit</action>
        </button>
      </hbox>
    </vbox>
  </window> 
 ' 

gtkdialog -c --program MAIN_DIALOG

2014年5月23日金曜日

Puppy パッケージマネージャに日付情報を付加する実験

パッケージマネージャで、インストールしたパッケージの一覧に日付情報を付加したいと思った。

或るパッケージをインストールすると、依存関係のライブラリやら何やら、沢山のパッケージを
インストールしなければならない場合がある。
後からパッケージマネージャを見たときに、インストール日時の情報があれば、近い時間帯に
インストールされたものは、依存関係によるものだと推測することができるんじゃないか。

で、実験してみた。
実験なので、実際には使わないでください!!


パッケージマネージャの下段「インストール済みパッケージ」にDate項目を追加されているのが
分かると思う。

Puppy Linux(Presice Puppy 5.7.1)では、/root/.packages/ 以下に
インストールされたパッケージの情報を持っている。
沢山の情報が集まった宝のディレクトリなのだが、今回注目するのは、その中の
user-installed-packages と言うファイル。
これは、ユーザがインストールしたパッケージ情報を書き込んだテキストファイルで、
パッケージマネージャは、ここの情報を間接的に)読み込んで表示している。
このファイルにパッケージをインストールした日時の記載があれば、それを使って、
パッケージマネージャに表示させられるんじゃないかと思った。

ところが、実際には日時の記載はない。
(逆にそれがあれば、何らかの方法で利用されているだろう)
そこで先ず、日付情報の書き込みから始める。

パッケージインストール時(?)に、user-installed-packages に情報の書き込みを行っているのは、
/usr/local/petget/installpkg.sh の669行目。

echo "$DB_ENTRY" >> /root/.packages/user-installed-packages

ここで日付を付加して書き込みを行うようにする。

temp_time=$(date)
echo "$DB_ENTRY""$temp_time" >> /root/.packages/user-installed-packages

次に、パッケージマネージャが表示のときに読み込むファイルを整形する必要がある。
パッケージマネージャは、/root/.packages/user-installed-packages を直接読んでいるのではなく、
/sur/local/petget/finduserinstalledpkgs.sh が用意するテンポラリファイル、
/tmp/petget/installedpkgs.results.post を読んでいる。

/tmp/petget/installedpkgs.results は、user-installed-packages の内容から、
パッケージマネージャで表示する項目だけを抽出したものになっている。
したがって、その抽出項目として日時を選んでやらないといけない。

/sur/local/petget/finduserinstalledpkgs.sh の11行目

cut -f 1,5,10 -d '|' /root/.packages/user-installed-packages > /tmp/petget/installedpkgs.results

user-installed-packages から「|」を区切り文字にして、1,5,10番目のフィールドを
抽出してテンポラリファイルに書き出している。
ここで、フィールドの最後に位置する日時を awk を使って抽出し、書き出しをする。

echo -n > /tmp/petget/installedpkgs.results
while read line;do
  temp_line=$(echo $line | cut -f1,5,10 -d "|")
  last_field=$(echo $line | awk -F "|" '{print $NF}')
  echo "$temp_line""|""$last_field" >> /tmp/petget/installedpkgs.results
done < /root/.packages/user-installed-packages

最初は、cut を使って「14番目のフィールド」を指定したが、パッケージによっては、
フィールド数が一定でないことが分かったので、「最後のフィールド」を取り出す方式に変更。
(この際、最初にテンポラリファイルを空にしておくことが必要)

更に、15行目

cut -f 1,3 -d '|' /tmp/petget/installedpkgs.results > /tmp/petget/installedpkgs.results.post-noicons #120908

を下のように変更。
(整形したテンポラリファイルから更に抽出する際に日時を含めるように、4番目のフィールドを追加)

cut -f 1,3,4 -d '|' /tmp/petget/installedpkgs.results > /tmp/petget/installedpkgs.results.post-noicons #120908

最後は、/sur/local/petget/ui_Classic の変更。
これは、gtkdialogの<tree>を使ってるので、

<label>$(gettext 'Package|Description|Date')</label>

上のように、3番めのcolumnとしてDateを追加するだけ。
「Date」のところをクリックすれば、日時での昇順・降順を切り替えることができる。

以上で、実験終了
終了したので、元に戻すのを忘れずに!


※ 余談 ※
抽出する項目
フィールド 1  パッケージの名称
フィールド 5  カテゴリー
フィールド 10  説明

カテゴリーは、columnとして使用するのではなく、ミニ・アイコン用に抽出してるらしい。
「説明」として、10番目をそのまま選択するのが見やすいかどうかは、別の問題としてあると思う。
何らかの整形をしないと、長い文章が表示されてしまう場合有り。

※ 追記 ※
/usr/share/locale/ja/LC_MESSAGES/petget__ui_Classic.mo を編集して、
columnの項目名を日本語表示(日時)にした。

2014年5月18日日曜日

Puppy パッケージマネージャの表示を修正

Presice Puppy 5.7.1 のPuppy パッケージマネジャで「すべてのレポジトリ内検索」を選択した時のこと。


検索結果の表示で、どのレポジトリに属するかを示すために、「説明」の先頭部分に、
[ubuntu-precise-universe]等の文字列が付加される。
更に、インストール済みのパッケージには、(ALREADY INSTALLED)の文字列も付加される。
そうすると、先頭部分で文字数を消費してしまうので、説明を読むためには横スクロールバー
で移動してやらないとならない。


そうすると、今度は肝心のパッケージ名が見えなくなってしまう↑
それならば、ウィンドウを大きくすれば見えるんじゃない?


うーん、どうしたもんでしょう。

色々と試した結果、/usr/local/petget/ui_Classic を下のように修正して使うことにした。


/usr/local/petget/ui_Classic

41行目の<hbox>にAttributeとして明示的に
space-expand=\"true\" space-fill=\"true\" を追加。

42行目の<vbox>にAttributeとして明示的に
space-expand=\"false\" space-fill=\"false\" を追加。
( \" ←これは、ダブルクォーテーションをエスケープしてるってことです)

以上で、ウィンドウを最大化した時に、少しだけ見やすくなった。

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月5日月曜日

Puppy Linux でKDEを使っちゃおう

Precise Puppy 5.7.1JP にKDEのSFSを読み込ませたら、簡単に動いた。

本家(英語版)フォーラムの KDE 4.10.1, 99mo ! から kde4.10.1.sfs をダウンロードし、
読み込ませる。
「Bootマネージャ」から「起動時にどの追加SFSファイルをロードするかを選択」あるいは、
「SFS-Load オン・ザ・フライ」を使用するだけなので、超簡単。



「起動時にどの追加SFSファイルをロードするかを選択」の場合、文字通りに起動時に有効になるので、
再起動してから、一旦プロンプトに戻り、xwin startkde とする。

「SFS-Load オン・ザ・フライ」なら、再起動は必要ないので、そのままプロンプトに戻り、
xwin startkde とする。


このままでも良いのだけど、Puppy Linuxのシステムトレイを表示させるため(?)に、
/root/.xinitrc に編集を加える。

上の図のように、exec startkde の前に /usr/sbin/delayedrun & を追加。
(その上の /sbin/pup_event_frontend_d & に関してはコメントアウトの有無による違いを確認できてません。)



これで、システムトレイが表示される。
ボリュームコントロール(ミキサー)が二つになっているのはご愛嬌。片方を消せば良い。

さて、賢明なる読者諸兄に於かれましては、上のエディタ画像右側を目にして、お察しのことだろう。
今回の .xinitrc への変更は、スクリプトの前半部分に行っている。
(元々の .xinitrc がKDEに関しては、この位置に記述している。)
パネルを読み込んだり、ピンボード機能を有効にする前の段階で、exec startkde として、
デスクトップ環境を立ち上げている。

ならば、Xfceも同様に、前段階でデスクトップ環境を立ち上げてしまえば、後の諸々は必要ない
のではないか?

(やってみましたが、大丈夫そうですよ)

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月21日月曜日

Puppy Linuxのプロンプトで xwin aho としたら

Puppy Linuxのプロンプトで

# xwin aho

としたら、JWMが起動するが、メニューのシャットダウン関係の項目が
効かなくなる。


当然だ。
そんな aho なウィンドウマネージャ(以下WMと表記)など存在しないから。
じゃあ、存在しないWMを指定して起動させた場合のPuppy Linuxの挙動は
これで良いのか?

馬鹿を言っちゃいけない。
ahoな指令はちゃんとエラーを出すか、代替のWMを起動させるなら、それが正常に
動くようにしなくちゃ駄目でしょう!!

/usr/bin/xwin の77行目のコメント以下81行目まで。
xwin に渡された引数を $1 で参照してはいるものの、引数の有無を見ているだけで、
何ら評価が行われていないんじゃないのか?

渡された文字列は何でも良いのですか?
WMを起動しろと言うコマンド、あるいは起動用のファイル名、
それが実行可能なのか、ファイルが存在するのか、それはWMを指定しているのか、、、。
それらの評価がない。
だから、aho な文字列を渡したら、それを /etc/windowmanager ファイルへ書き込んでしまう。
そこの注意書きには「/root/.xinitrc use this file.」と記されている。

ちょっと、意図を推し量りかねる。

Puppy Linuxでは、 /etc/windowmanager を読んで、使用されているWMを特定し、
それを使うスクリプト等が存在する。シャットダウン関連の項目もその例だろう。
実際に使用しているWMがJWMなのに aho を終了させようとしたって、そりゃ無理ですわ。

何故こんなことになるのか。
xwin での書き込みも重用だが、それを読み込む .xinitrc にも疑問がある。

.xinitrc では諸々の設定が終わった最後の方で、WMを実行している。
そこの記述。

which $CURRENTWM && exec $CURRENTWM
[ -x $CURRENTWM ] && exec $CURRENTWM
exec jwm

素人が見て分かる範囲では、
busybox に含まれる Unix コマンドの which を使って、
実際にコマンドの場所を指定し、あれば実行。
[ -x]でファイルが実行可能かを判定して実行。
最後の exec jwm は上記が否定された場合に実行。
(上記が実行されれば以下は無視?)
だろうと思われる。

えっ?

ってなるよね!!
$CURRENTWM が否定された場合、そのままなの?
変数を読み込んだ元ファイルの /etc/windowmanager は修正しないの?
そこを、実際に実行する jwm に書き換えておけば、起動後 /etc/windowmanager を
読み込むスクリプト等が動いても、齟齬を来すことはないはず。

実際には、$CURRENTWM で読み込まれている文字列が、WM以外のコマンドや実行ファイル名と
重複していないか、判定しなければならないだろう。
逆にいえば、Puppy Linux で対応できるWMを予め列挙した文字列をデータに持ち、
それに該当しない文字列ならば、強制的に jwm として処理する方法をとれば良い。
(xwin で書き込む際に判定しても良いはず)


「xwin aho なんてのは想定していません。そんなことする人は使わなくて良いです」
って、言われればそれまで。
私が悪かったです。申し訳ありません。



which $CURRENTWM && exec $CURRENTWM
[ -x $CURRENTWM ] && exec $CURRENTWM
echo -n "jwm" > /etc/windowmanager
exec jwm

↑のように "jwm" を書き込む1行を加えるだけでも、対症療法にはなると思うんだけどな、、、。

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

2014年4月6日日曜日

シェルスクリプトの余談

一つ前の投稿で、Puppy linuxに於けるマウス設定のシェルスクリプトの恥を晒した訳です。
その時点では、マウスのテーマ切替でdefaultのプレビューが表示できなかった。

defaultのプレビューが表示できない

それは、defaultのマウスカーソル画像を探したけど見つけられず、
gtkdialogの<pixmap><input file>で指定すべき画像を用意できなかったから。

で、考えたのは、画像を外部ファイルとして用意できなければ、シェルスクリプト内に
データとして持ってしまえば良いということ。
XPM形式のデータを埋め込んで、プレビュー用の画像に展開できることはすぐに確認できた。
ファイル形式がXPMでも、他の画像と共通に扱えるように、ファイル名は .png で終わるように
した。
が、肝心のカーソルのデータをどうやって作成すれば良いのか?

defaultのカーソルはcursor.pcfと言うファイルで、フォントの形式であるらしい。
下記参照。
http://www.murga-linux.com/puppy/viewtopic.php?search_id=742059936&t=85706

このcursor.pcfの中身を見るには、一旦bdfファイルに変換して、フォント編集ツールを
使えば良いとのこと。
先ず、pcf2bdfと言うツールでcursor.bdfを作り、それをfontforgeと言うツールで開く
ことにした。

cursor.bdfをfontforgeで開いてみた
これを基にして、下の図のようにXPMデータを記述。

left_ptrのXPMデータ
hnadのXPMデータ
watchのXPMデータ
結果、pngファイル名で書き出したXPMファイルが↓この様に表示された。

そして、こうなった

めでたし、めでたし(?)

2014年4月5日土曜日

マウスの設定周りをまとめたい

Puppy Linuxで、あっちこっちに散らばっているマウスの設定をまとめたい、
と思った。
・ダブルクリックの設定
・マウス加速の設定
・マウスのテーマ切替
これらを、一つのツールでやりたい、って事です。
(但し、現状ではホイール関連の設定についての調べができてない)

マウスのテーマ切替をするには、予めテーマをダウンロードして解凍し、
解凍してできたディレクトリをそのまま /root/.icons へコピーしておく。
(defaultの選択では、画像が表示されません)
(今現在使用しているテーマのディレクトリを削除すると不具合が起こります)

※ 注意 ※
0)Precise Puppy 5.7.1JP でしか動作確認していません。
  動作には、gtkdialog0.8.3 xcur2png が必要です。
1)動作の保証はしません。
2)隠しファイルの操作をしています。
3)最悪の場合、Puppy Linux自体の不具合が起こります。

よって、スクリプトは読むだけ にしてください

以上宜しくお願いします。



#!/bin/bash 

#mouse_setting042

########## Page1 ##########
#設定ファイル.gtkrc.mineの存在を確認する
if [ ! -e /root/.gtkrc.mine ];then
  touch /root/.gtkrc.mine
  echo "gtk-double-click-time=250" > /root/.gtkrc.mine
  echo "gtk-double-click-distance=5" >> /root/.gtkrc.mine
fi

#/root/.config/rox.sourceforge.net/ROX-Filer/Optionsから
#bind_single_clickとbind_single_pinboardの値を切り出し、変数に代入
rox_path="/root/.config/rox.sourceforge.net/ROX-Filer/Options"

single_click_n=$(grep -n "bind_single_click" $rox_path)
single_click_n=$(echo $single_click_n | cut -f1 -d ":")

def_single_click_str=$(grep "bind_single_click" $rox_path)
def_single_click_value=$(echo $def_single_click_str | cut -c 34)
single_pinboard_n=$(grep -n "bind_single_pinboard" $rox_path)
single_pinboard_n=$(echo $single_pinboard_n | cut -f1 -d ":")
def_single_pinboard_str=$(grep "bind_single_pinboard" $rox_path)
def_single_pinboard_value=$(echo $def_single_pinboard_str | cut -c 37)

def_single_flag=`echo $(( $def_single_click_value + $def_single_pinboard_value ))`

if [ "$def_single_flag" != "0" ]; then
  def_single_click_boolean="false"
else
  def_single_click_boolean="true"
fi

#gtk-double-click-timeの値を.gtkrc.mineから切り出し、変数に代入
def_time_str=$(grep "gtk-double-click-time" /root/.gtkrc.mine)
if [ "$def_time_str" = "" ]; then
  echo "gtk-double-click-time=250" >> /root/.gtkrc.mine
  def_time_str=$(grep "gtk-double-click-time" /root/.gtkrc.mine)
fi
def_time_value=$(echo $def_time_str | cut -c 23-${#def_time_str})
#gtk-double-click-distanceの値を.gtkrc/mineから切り出し、変数に代入
def_distance_str=$(grep "gtk-double-click-distance" /root/.gtkrc.mine)
if [ "$def_distance_str" = "" ]; then
  echo "gtk-double-click-distance=5" >> /root/.gtkrc.mine
  def_distance_str=$(grep "gtk-double-click-distance" /root/.gtkrc.mine)
fi
def_distance_value=$(echo $def_distance_str | cut -c 27-${#def_distance_str})

########## Page2 ##########
#xset -qコマンドからマウス関連の数値を切り出し、変数に代入
temp_xset=$(xset -q)
def_acceleration_str=$(echo "$temp_xset" | grep "acceleration")
def_acceleration_value_str=$(echo $def_acceleration_str | cut -f2 -d " ")
def_acceleration_value=$(echo $def_acceleration_value_str | cut -f1 -d "/")
dot_point=$(echo $(( ${#def_acceleration_value} - 1 )))
front_value=$(echo "$def_acceleration_value" | cut -c 1-"$dot_point")
bottom_value=$(echo "$def_acceleration_value" | cut -c ${#def_acceleration_value}) 
def_acceleration_value=$front_value"."$bottom_value
def_threshold_value=$(echo $def_acceleration_str | cut -f4 -d " ")
def_x_parameter="m "$def_acceleration_value_str" "$def_threshold_value

#設定ファイル/.xset.shの存在を確認する
if [ ! -e /root/.xset.sh ]; then
  touch /root/.xset.sh
  chmod +x /root/.xset.sh
  echo "xset "$def_x_parameter > /root/.xset.sh
fi

########## Page3 ##########
mkdir -p /tmp/ao_o10yan_temp
#symlinkの存在を確認する
if [ -e /root/.icons/default ]; then
  def_symlink=$(readlink /root/.icons/default)
  def_symlink_dir=$(echo $def_symlink | cut -f4 -d "/")
else
  def_symlink="/root/.icons/default"
  def_symlink_dir="default"
fi

#lsコマンドで列挙して<list>の<item>を作成する
temp_directories=$(ls /root/.icons/)
#echo $temp_directories
i_count=0
items="<item>default</item>"

if [ "$def_symlink_dir" = "default" ]; then
  def_selected_rwo=0
fi

for i in $temp_directories
do
  if [ "$i" != "default" -a "$i" != "ROX" -a -e "/root/.icons/""$i""/cursors" ]; then
    i_count=$(( $i_count + 1 ))
#    echo $i_count$i
    if [ "$def_symlink_dir" = "$i" ]; then
      def_selected_row="$i_count"
      xcur2png -d /tmp/ao_o10yan_temp /root/.icons/"$i"/cursors/left_ptr
      xcur2png -d /tmp/ao_o10yan_temp /root/.icons/"$i"/cursors/hand
      xcur2png -d /tmp/ao_o10yan_temp /root/.icons/"$i"/cursors/watch
    fi

    items=$items"<item>"$i"</item>"
  fi
#  echo $items
done

#####################################################################
#OKボタンが押された時に呼び出す
export ok_action='
#前処理
  msg_flag1=0
  msg_flag2=0
  msg_flag3=0
  
  new_time_str="gtk-double-click-time="$TIME
  new_distance_str="gtk-double-click-distance="$DISTANCE

#ダブルクリック、シングルクリックの切替設定
  if [ "'$def_single_click_boolean'" != "$CHKBOX" ]; then
    if [ "$CHKBOX" = "true" ]; then
      new_single_flag=0
    else
      new_single_flag=1
    fi

#ファイラとピンボードの設定を一緒に行う
#どちらかがシングル、どちらかがダブルと言う設定にはしない!!
    sed --in-place "'$single_click_n's/'$def_single_click_value'/$new_single_flag/" '$rox_path'
    sed --in-place "'$single_pinboard_n's/'$def_single_pinboard_value'/$new_single_flag/" '$rox_path'

    msg_flag1=1
  fi

#ダブルクリック間隔、反応距離の設定(文字列整形した後の比較じゃなくてもいいのに)
  if [ "'$def_time_str'" != "$new_time_str" -o "'$def_distance_str'" != "$new_distance_str" ]; then
    sed --in-place --expression=s/'$def_time_str'/$new_time_str/ /root/.gtkrc.mine
    sed --in-place --expression=s/'$def_distance_str'/$new_distance_str/ /root/.gtkrc.mine

    msg_flag1=1
  fi

#加速の設定
  if [ "'$def_acceleration_value'" != "$ACCELERATION" -o "'$def_threshold_value'" != "$THRESHOLD" ]; then
    new_acceleration=$(echo $ACCELERATION | sed "s/\.//")
    echo $new_acceleration
    new_x_parameter="m "$new_acceleration"/10 "$THRESHOLD
    echo $new_x_parameter
    xset $new_x_parameter
    
    sed --in-place "s:'$def_x_parameter':$new_x_parameter:" /root/.xset.sh

    msg_flag2=3
  fi

#テーマの変更
  new_symlink="/root/.icons/"$DIRECTORY
  echo "def_symlink="'$def_symlink'
  echo "new_symlink="$new_symlink
  if [ "$new_symlink" != "/root/.icons/" -a "'$def_symlink'" != "$new_symlink" ]; then
    if [ -e /root/.icons/default ]; then
      rm /root/.icons/default
    fi

    if [ "'$def_symlink'" != "$new_symlink" ]; then
      if [ "$new_symlink" != "/root/.icons/default" ]; then
        ln -s $new_symlink /root/.icons/default
      fi
      
      msg_flag3=1
    fi
  fi

#change_msg_flagにより、表示するメッセージを変える
  change_msg_flag=$(( $msg_flag1 + $msg_flag2 + $msg_flag3 ))

  if [ "$change_msg_flag" = "0" ]; then
    msg0="設定が変更されていません"
    msg1="何もせずに終了します"
    msg2="..."
  else
    msg0="マウスの設定を変更しました"
    msg1="Xサーバをリスタートして効果を確認してください"
    msg2="..."
#加速調整はxのリスタートなしで反映される
    if [ "$change_msg_flag" = "3" ]; then
      msg1="..."
    fi
    if [ "$msg_flag2" = "3" ]; then
      msg2="加速の変更は、既に反映されています。確認してください"
    fi
  fi

  export SUB_DIALOG="
    <window title=\"Double Click Adjust\" width_request=\"400\" height_request=\"300\">
      <vbox>
        <text height-request=\"40\">
          <label>"$msg0"</label>
        </text>
        <text height-request=\"40\">
          <label>"$msg1"</label>
        </text>
        <text height-request=\"40\">
          <label>"$msg2"</label>
        </text>
       <button height-request=\"100\"><label>閉じる</label>
          <action type=\"exit\">exit</action>
        </button>
      </vbox>
    </window>"

  gtkdialog -c --program SUB_DIALOG
'
#####################################################################
#マウステーマプレビュー用
export list_on_change='
  if [ "$DIRECTORY" = "default" ]; then
    if [ -e /tmp/ao_o10yan_temp/left_ptr_000.png ]; then
      rm /tmp/ao_o10yan_temp/left_ptr_000.png
      rm /tmp/ao_o10yan_temp/hand_000.png
      rm /tmp/ao_o10yan_temp/watch_000.png
    fi
  else
    temp_file_dir="/tmp/ao_o10yan_temp/"$DIRECTORY
    if [ "$temp_file_dir" != "/tmp/ao_o10yan_temp/" ]; then
      xcur2png -d /tmp/ao_o10yan_temp /root/.icons/"$DIRECTORY"/cursors/left_ptr
      xcur2png -d /tmp/ao_o10yan_temp /root/.icons/"$DIRECTORY"/cursors/hand
      xcur2png -d /tmp/ao_o10yan_temp /root/.icons/"$DIRECTORY"/cursors/watch
    fi
  fi
'
#####################################################################
#後始末
export del_temp='
  rm -rf /tmp/ao_o10yan_temp
  rm -f ./left_ptr.conf
  rm -f ./hand.conf
  rm -f ./watch.conf
'

#####################################################################

export MAIN_DIALOG=' 
  <window title="マウスの設定" width_request="400" height_request="300"> 
    <vbox>
      <notebook labels="ダブルクリック|加速|テーマ"> 
        <vbox>  
          <text>
            <label>ダブルクリック調整用スライダー</label>
          </text>
          <frame>
            <checkbox>
              <label>ダブルクリックを有効にする</label>
              <default>'$def_single_click_boolean'</default>
              <variable>CHKBOX</variable>
              <action>if true enable:TIME</action>
              <action>if false disable:TIME</action>
              <action>if true enable:DISTANCE</action>
              <action>if false disable:DISTANCE</action>
            </checkbox>
          </frame>
          <frame 間隔(ミリ秒)>
            <hscale range-min="250" range-max="2000" range-step="1">
              <default>'$def_time_value'</default>
              <variable>TIME</variable>
              <sensitive>'$def_single_click_boolean'</sensitive>
            </hscale>
          </frame>
          <frame 距離(ピクセル)>
            <hscale range-min="5" range-max="100" range-step="1">
              <default>'$def_distance_value'</default>
              <variable>DISTANCE</variable>
              <sensitive>'$def_single_click_boolean'</sensitive>
            </hscale>
          </frame>
        </vbox>
        <vbox>
          <text>
            <label>加速調整用スライダー</label>
          </text>
          <frame 加速(数値が大きい程、マウスが速く動きます)>
            <hscale range-min="1" range-max="10" range-step="0.1">
              <default>'$def_acceleration_value'</default>
              <variable>ACCELERATION</variable>
            </hscale>
          </frame>
          <frame 閾値(数値が小さい程、マウスが速く動きます)>
            <hscale range-min="1" range-max="20" range-step="1">
              <default>'$def_threshold_value'</default>
              <variable>THRESHOLD</variable>
            </hscale>
          </frame>
        </vbox>
        <vbox>
          <text>
            <label>マウスのテーマ切替</label>
          </text>
          <hbox>
            <list selected-row="'$def_selected_row'">
              <variable>DIRECTORY</variable>
              <width>150</width>
              <height>208</height>
              '$items'
              <action>bash -c "$list_on_change"</action>
              <action>refresh:LEFT_PTR</action>
              <action>refresh:HAND</action>
              <action>refresh:WATCH</action>
            </list>
            <frame プレビュー>
              <vbox>
                <pixmap space-expand="true">
                  <variable>LEFT_PTR</variable>
                  <height>40</height>
                  <input file>/tmp/ao_o10yan_temp/left_ptr_000.png</input>
                </pixmap>
                <pixmap space-expand="true">
                  <variable>HAND</variable>
                  <height>40</height>
                  <input file>/tmp/ao_o10yan_temp/hand_000.png</input>
                </pixmap>
                <pixmap space-expand="true">
                  <variable>WATCH</variable>
                  <height>40</height>
                  <input file>/tmp/ao_o10yan_temp/watch_000.png</input>
                </pixmap>
              </vbox>
            </frame>
          </hbox>
        </vbox>
      </notebook>
      <hbox>
        <button ok>
          <action>bash -c "$ok_action"</action>
          <action>bash -c "$del_temp"</action>
          <action type="exit">exit</action>
        </button>
        <button cancel>
          <action>bash -c "$del_temp"</action>
          <action type="exit">exit</action>
        </button>
      </hbox>
    </vbox>
  </window> 
 ' 

gtkdialog -c --program MAIN_DIALOG

2014年3月21日金曜日

或いは、もう一つの覚書

Puppy Linuxのバージョンによっては、gtkdialogが古くてスライダーが使えなかったので、
単純に数値を入力するタイプを作ってみた。

※ 注意 ※
0)Precise Puppy 5.7.1JPとPuppy Linux 4.3.1JPでしか動作確認していません。
1)動作の保証はしません。
2)隠しファイル(.gtkrc.mine)の操作をしています。
3)ダブルクリックの設定は隠しファイル(.gtkrc-2.0)と競合しています。
4)設定を反映させるには、再起動が必要です。
5)最悪の場合、Puppy Linux自体の不具合が起こります。


よって、スクリプトは読むだけにしてください

以上宜しくお願いします。


#! /bin/bash

if test ! -e /root/.gtkrc.mine;then
  touch /root/.gtkrc.mine
  echo "gtk-double-click-time=250" > /root/.gtkrc.mine
  echo "gtk-double-click-distance=5" >> /root/.gtkrc.mine
fi

def_time_str=`grep 'gtk-double-click-time' /root/.gtkrc.mine`
if [ "$def_time_str" = "" ]; then
  echo "gtk-double-click-time=250" >> /root/.gtkrc.mine
  def_time_str=`grep 'gtk-double-click-time' /root/.gtkrc.mine`
fi
def_time_value=`echo $def_time_str | cut -c 23-${#def_time_str}`
def_time_tag="<default>"$def_time_value"</default>"

def_distance_str=`grep 'gtk-double-click-distance' /root/.gtkrc.mine`
if [ "$def_distance_str" = "" ]; then
  echo "gtk-double-click-distance=5" >> /root/.gtkrc.mine
  def_distance_str=`grep 'gtk-double-click-distance' /root/.gtkrc.mine`
fi
def_distance_value=`echo $def_distance_str | cut -c 27-${#def_distance_str}`
def_distance_tag="<default>"$def_distance_value"</default>"

export ok_action='
  new_time_str="gtk-double-click-time="$TIME
  new_distance_str="gtk-double-click-distance="$DISTANCE

  if [ '$def_time_str' = "$new_time_str" -a '$def_distance_str' = "$new_distance_str" ];then
    mes0="設定が変更されていません"
    mes1="何もせずに終了します"
  else
    sed --in-place --expression=s/'$def_time_str'/$new_time_str/ /root/.gtkrc.mine
    sed --in-place --expression=s/'$def_distance_str'/$new_distance_str/ /root/.gtkrc.mine

    mes0="設定ファイル.gtkrc.mineを書き換えました"
    mes1="Xサーバをリスタートして効果を確認してください"
  fi

  export SUB_DIALOG="
    <window title=\"Double Click Adjust std\" width_request=\"300\" height_request=\"200\">
      <vbox>
        <text height-request=\"50\">
          <label>"$mes0"</label>
        </text>
        <text height-request=\"50\">
          <label>"$mes1"</label>
        </text>
        <button height-request=\"80\"><label>閉じる</label>
          <action type=\"exit\">exit</action>
        </button>
      </vbox>
    </window>"

  gtkdialog3 -c --program SUB_DIALOG
'

export MAIN_DIALOG='
  <window title="Double Click Adjust std" width_request="300" height_request="200">
    <vbox>
      <text>
        <label>ダブルクリック調整用</label>
      </text>
      <frame 間隔(ミリ秒)>
        <hbox>
          <text>
            <label>数値を入力(推奨値:250〜1000)</label>
          </text>
          <entry>
            '$def_time_tag'
            <variable>TIME</variable>
          </entry>
        </hbox>
      </frame>
      <frame 距離(ピクセル)>
        <hbox>
          <text>
            <label>数値を入力(推奨値:5〜30)  </label>
          </text>
          <entry>
            '$def_distance_tag'
            <variable>DISTANCE</variable>
          </entry>
        </hbox>
      </frame>
      <hbox>
        <button ok>
          <action>bash -c "$ok_action"</action>
          <action type="exit">exit</action>
        </button>
        <button cancel></button>
      </hbox>
    </vbox>
  </window>'

gtkdialog3 -c --program MAIN_DIALOG

現時点の覚書

こんな物を作ってみたい。
Puppy Linuxでダブルクリックの調整方法が分かったので、それをGUIでやってみたいと思った。
前回Ideskの壁紙変更スクリプト(今見たら、ひどいミスがあったので、いずれ直したい)を
書いてから数年が経過しているので、また「初めてのおつかい」状態。

シェルスクリプト、gtkdialogを使ってみる。
※ 注意 
0)Precise Puppy 5.7.1JP でしか動作確認していません。
動作の保証はしません
隠しファイル(.gtkrc.mine)操作をしています
ダブルクリックの設定は隠しファイル.gtkrc-2.0競合しています
設定を反映させるには再起動が必要です
最悪の場合Puppy Linux自体の不具合が起こります

よって、スクリプトは読むだけにしてください

以上宜しくお願いします。







#! /bin/bash

if test ! -e /root/.gtkrc.mine;then
  touch /root/.gtkrc.mine
  echo "gtk-double-click-time=250" > /root/.gtkrc.mine
  echo "gtk-double-click-distance=5" >> /root/.gtkrc.mine
fi

def_time_str=`grep 'gtk-double-click-time' /root/.gtkrc.mine`
if [ "$def_time_str" = "" ]; then
  echo "gtk-double-click-time=250" >> /root/.gtkrc.mine
  def_time_str=`grep 'gtk-double-click-time' /root/.gtkrc.mine`
fi
def_time_value=`echo $def_time_str | cut -c 23-${#def_time_str}`
def_time_tag="<default>"$def_time_value"</default>"

def_distance_str=`grep 'gtk-double-click-distance' /root/.gtkrc.mine`
if [ "$def_distance_str" = "" ]; then
  echo "gtk-double-click-distance=5" >> /root/.gtkrc.mine
  def_distance_str=`grep 'gtk-double-click-distance' /root/.gtkrc.mine`
fi
def_distance_value=`echo $def_distance_str | cut -c 27-${#def_distance_str}`
def_distance_tag="<default>"$def_distance_value"</default>"

export ok_action='
  new_time_str="gtk-double-click-time="$TIME
  new_distance_str="gtk-double-click-distance="$DISTANCE

  if [ '$def_time_str' = "$new_time_str" -a '$def_distance_str' = "$new_distance_str" ];then
    mes0="設定が変更されていません"
    mes1="何もせずに終了します"
  else
    sed --in-place --expression=s/'$def_time_str'/$new_time_str/ /root/.gtkrc.mine
    sed --in-place --expression=s/'$def_distance_str'/$new_distance_str/ /root/.gtkrc.mine

    mes0="設定ファイル.gtkrc.mineを書き換えました"
    mes1="Xサーバをリスタートして効果を確認してください"
  fi

  export SUB_DIALOG="
    <window title=\"Double Click Adjust\" width_request=\"400\" height_request=\"200\">
      <vbox>
        <text height-request=\"50\">
          <label>"$mes0"</label>
        </text>
        <text height-request=\"50\">
          <label>"$mes1"</label>
        </text>
        <button height-request=\"80\"><label>閉じる</label>
          <action type=\"exit\">exit</action>
        </button>
      </vbox>
    </window>"

  gtkdialog -c --program SUB_DIALOG
'

export MAIN_DIALOG='
  <window title="Double Click Adjust" width_request="400" height_request="200">
    <vbox>
      <text>
        <label>ダブルクリック調整用スライダー</label>
      </text>
      <frame 間隔(ミリ秒)>
        <hscale range-min="250" range-max="2000" range-step="1">
          '$def_time_tag'
          <variable>TIME</variable>
        </hscale>
      </frame>
      <frame 距離(ピクセル)>
        <hscale range-min="5" range-max="100" range-step="1">
          '$def_distance_tag'
          <variable>DISTANCE</variable>
        </hscale>
      </frame>
      <hbox>
        <button ok>
          <action>bash -c "$ok_action"</action>
          <action type="exit">exit</action>
        </button>
        <button cancel></button>
      </hbox>
    </vbox>
  </window>'

gtkdialog -c --program MAIN_DIALOG

2014年3月15日土曜日

ダブルクリック間隔の調節(完結編!)

「ダブルクリック間隔の調節(解決か?)」の続編です。

前回、Puppy Linux(precise-5.7.1JP)での動作確認をしましたが、
今回、Puppy Linux4.31stdJPでも確認がとれました。
おめでとうございます!!(←誰に言ってるの)

これで、永らく悩まされていた、Puppy Linuxでのダブルクリック間隔の調整が
(一応の)完結を迎えました。

実は、現在試しに使っている別のディストリビューションでも、ダブルクリックに関し
同様の問題が起こっていました。
それは、Ubuntu系のディストリビューションLubuntuでのことです。
Lubuntuも軽量で、使い勝手の良さそうな印象で、暫く試用していたのですが、
やはりダブルクリックを認識してくれる間隔が短く、私には苦痛な操作でした。

標準で入っているツール「キーボードとマウス」を開いて「感度」を調節してみるも、
思ったような効果が出ず。
「Openbox設定マネージャ」でマウスタブにある「ダブルクリック時間」を調節しても、
それは、タイトルバー上での操作に関しての調節にしかなりません。

色々検索をしていたところ、「ダブルクリック間隔の調節(解決か?)」で紹介した
ページを見つけました。
Lubuntuでは、 .gtkrc-2.0ファイルが見当たらなかったので新規に作成し、

gtk-double-click-time=1000 の一行だけを書いて保存しました。

※追記4(2015/12/13 21:30)※
.gtkrc-2.0のファイルは、デザインの変更等をすると書き換えられてしまうので、
せっかく記述した"gtk-double-click-time=1000"が消えてしまう場合は、
こちら「ArchBang でのダブルクリック」を参照してください。
Lubuntuでの確認はしていませんが、同様な方法で解決出きるかもしれません。

これを home/(ユーザ名)/に置いて再起動し、PCManFM(ファイラー)で効果が
出ていることを確認。
ところが、他のアプリケーション、GNOME MPlayer、AbiWord、Gnumeric等の
ファイル選択で効果が出ていない。

ウィンドウマネージャやファイルマネージャの守備範囲でない事は分かっているので、
当然考えるのはGTKツールの関係になります。
home/(ユーザ名)/.config 以下に gtk-3.0 なるディレクトリがあるのは知っていた。
ってことは、 .gtkrc-3.0ファイルを作れば行けるんじゃないか、と思いました。
しかし、これは空振りに終わりました。
また色々検索した結果、下記ページを見つけました。
https://bbs.archlinux.org/viewtopic.php?id=157515

おおう、何と言うことでしょう。設定ファイルが違うではないですか。
単純に .gtkrc-3.0 だと思った私が莫迦でした。
先ず、settings.ini が既存かどうか探し、
/etc/gtk-3.0/settings.ini があったのでそれをコピーして .config/gtk-3.0/
へ貼り付け。例の一行を書き加えて保存、再起動。
(※ .gtkrc-2.0 とは置き場所が違うので注意!! ※)

やりました!
GNOME MPlayer、AbiWord、Gnumericでも効果を確認しました。


※追記1(2014/03/15 12:00)※
gtk-double-click-time=1000
1000という数値は1000ミリ秒の事で、ここの数値は適当に変更して試してください。

※追記2(2014/03/15 17:55)※
settings.iniは必ずしもコピーする必要はなく、

[Settings]
gtk-double-click-time=1000

上の様に[Settings]の下に記述すればOKのようです。

※追記3(2014/06/22 13:00)※
↓試しに、zenityを使ってシェルスクリプトで設定できないか、やってみました。
http://aoo10yan.blogspot.jp/2014/06/zenity.html
動かなくても、何かのヒントになれば。

2014年3月13日木曜日

ダブルクリック間隔の調節(解決か?)

 以前から、Puppy Linuxを使っていて不便に感じていたダブルクリックの間隔であります。
ダブルクリックとして認識される間隔が非常に短く、指の自由が利かない老人には、
酷な設定でありました。
 なんとか設定を変更しようと色々やりましたが、ウィンドウのタイトルバーだけに適用されたり、
解決に至っていませんでした、
 今回、別のディストリビューション(Lubuntu)でのダブルクリック間隔の調節を探していたところ、
下記のページに出くわしました。
http://ubuntuforums.org/showthread.php?t=1920761&highlight=double+click
ここにあるように、.gtkrc-2.0ファイルに、

  gtk-double-click-time=1000

の記述をしたところ、ゆっくりしたダブルクリック(1000は1000ミリ秒だと思います)でも
認識されました。
今のところPuppy Linux(precise-5.7.1JP)での動作確認ですが、取り急ぎ、報告します。
既存の .gtlrc-2.0 を編集(2014・03・16画像追加しました)

しっかしまあ、何年も前に悩んでいたことが解決したんで、喜ばしい限りであります。


※追記1(2014/03/16 5:15)※
.gtkrc-2.0 はGtkテーマを変更すると自動的に書き換えられるようです。
「# -- THEME AUTO-WRITTEN DO NOT EDIT」の範囲外へ追記すれば良いものと
勘違いしていました。済みません。
別途、.gtkrc.mine を新規作成して編集をすれば良いみたいです。
.gtkrc.mine での編集

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の(日本語の)情報が少なくて難儀することが多いが、自分で色々と
試してみるのも面白みの一つと思って、やって行こう。