PuppyLinux571JPでEPSON のフラットベットスキャナGT-X970を使うようになりました。ドライバにはPuppyLinux571JP 同梱のXsane ではなく、Image Scan! for Linux というものをインストールしています。

電源投入あるいは接続時にドライバを起動させる方法を以下に示します。


rules ファイルの修正
88-puppy-autodetect.rules に下記を追加
ベンダーIDとbInterfaceClassをチェックして、pupautodetectに繋いでいます。bInterfaceClassにスキャナが定義されていないのか、ベンダー独自クラスを示すffが割り当てられています。このため誤動作(スキャナ以外の何かも認識してしまう)の可能性があります。気になるようなら、productIDをチェックするようにすれば良いでしょう。

### Scanner (EPSON idVender 04b8) ###
ACTION=="add", SUBSYSTEM=="usb",  ATTR{bInterfaceClass}=="ff", ATTRS{idVendor}=="04b8", RUN+="/usr/sbin/pupautodetect scanner"



pupautodetect の修正
Image Scan! for Linux (実行ファイルはiscan) はデスクトップから呼び出されることを前提にしているらしく、必要な環境変数が定義されていないとセグって終了してしまいました。とりあえず起動に必要なものは特定できたので加筆していますが、これ以外にもあるかも知れません。

#!/bin/sh
#Barry Kauler, Oct. 2011
#called via udev /etc/udev/rules.d/88-puppy-autodetect.rules
#111007 first release.
#111010 maybe wait until delayedrun has done its stuff.

[ ! $1 ] && exit
[ "`pidof X`" == "" ] && exit #X not running.
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/root/my-applications/bin'
export DISPLAY=':0'
export LD_LIBRARY_PATH='/lib:/usr/lib:/usr/X11R7/lib:/root/my-applications/lib:/usr/local/lib'

# for iscan (Image Scan! for Linux)
export GTK2_RC_FILES=/root/.gtkrc-2.0
export GTK_IM_MODULE=scim
export HOME=/root


#111010 maybe wait until delayedrun has done its stuff...
EXCNT=0
while [ ! -f /tmp/delayedrun_finished_flag ];do #see /usr/sbin/delayedrun.
 sleep 2
 EXCNT=$(($EXCNT + 1))
 [ $EXCNT -gt 10 ] && break #precaution
done

export LANG='ja_JP.UTF-8'
case $1 in
 camera)
  pupcamera &
 ;;

 storage)
  myautodepend $2 $3 &
 ;;

 ipod)
  gtkpod &
 ;;

 scanner)
  iscan &
 ;;


esac


なお、Image Scan! for Linux はデフォルトでは管理者権限が無いと使えないらしいのですが、Puppyは原則rootで動くので特に設定しなくても大丈夫のようです。もし、動かないようであれば グループ scanner を作成してユーザーを追加してみて下さい。
 

自分宛メモ

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- /etc/fonts/fonts.conf file to configure system font access -->
<fontconfig>
<!--
  Provide required aliases for standard names
-->

<!--
  Serif faces
-->
    <alias>
        <family>serif</family>
        <prefer>
            <family>TakaoExMincho</family>
            <family>Bitstream Vera Serif</family>
            <family>Times New Roman</family>
            <family>Nimbus Roman No9 L</family>
            <family>Luxi Serif</family>
            <family>Times</family>
            <family>IPAmjMincho</family>
            <family>IPAexMincho</family>
            <family>TakaoMincho</family>
            <family>IPAMincho</family>
            <family>MS Mincho</family>
            <family>TakaoPMincho</family>
            <family>IPAPMincho</family>
            <family>MS PMincho</family>    
            <family>Sazanami Mincho</family>
            <family>Kochi Mincho</family>
            <family>AR PL SungtiL GB</family>
            <family>AR PL Mingti2L Big5</family>
            <family>Baekmuk Batang</family>            
        </prefer>
    </alias>

<!--
  Sans-serif faces
-->
    <alias>
        <family>sans-serif</family>
        <prefer>
            <family>Migu 1C</family>
            <family>DejaVu Sans</family>
            <family>Bitstream Vera Sans</family>
            <family>Verdana</family>
            <family>Nimbus Sans L</family>
            <family>Luxi Sans</family>
            <family>Arial</family>
            <family>Helvetica</family>
            <family>Meiryo</family>
            <family>TakaoExGothic</family>
            <family>IPAexGothic</family>
            <family>TakaoPGothic</family>
            <family>TakaoGothic</family>
            <family>MS Gothic</family>
            <family>MS PGothic</family>
            <family>Sazanami Gothic</family>
            <family>Kochi Gothic</family>
            <family>AR PL KaitiM GB</family>
            <family>AR PL KaitiM Big5</family>
            <family>Baekmuk Dotum</family>
            <family>SimSun</family>
        </prefer>
    </alias>

    <alias>
        <family>monospace</family>
        <prefer>
            <family>Bitstream Vera Sans Mono</family>
            <family>Andale Mono</family>
            <family>Courier New</family>
            <family>Luxi Mono</family>
            <family>Nimbus Mono L</family>        
            <family>M+1P+IPAG</family>
            <family>TakaoExGothic</family>
            <family>TakaoGothic</family>
            <family>Kochi Gothic</family>
            <family>AR PL KaitiM GB</family>
            <family>Baekmuk Dotum</family>
        </prefer>
    </alias>


<!-- 
 Artificial oblique for fonts without an italic or oblique version
 -->
 
    <match target="font">
        <!-- check to see if the font is roman -->
        <test name="slant">
            <const>roman</const>
        </test>
        <!-- check to see if the pattern requested non-roman -->
        <test target="pattern" name="slant" compare="not_eq">
            <const>roman</const>
        </test>
        <!-- multiply the matrix to slant the font -->
        <edit name="matrix" mode="assign">
            <times>
                <name>matrix</name>
                <matrix><double>1</double><double>0.2</double>
                    <double>0</double><double>1</double>
                </matrix>
            </times>
        </edit>
        <!-- pretend the font is oblique now -->
        <edit name="slant" mode="assign">
            <const>oblique</const>
        </edit>
    </match>
        <match target="font">
            <!-- check to see if the font is just regular -->
            <test name="weight" compare="less_eq">
                    <const>medium</const>
            </test>
            <!-- check to see if the pattern requests bold -->
            <test target="pattern" name="weight" compare="more">
                    <const>medium</const>
            </test>
            <!-- set the embolden flag -->
            <edit name="embolden" mode="assign">
                    <bool>true</bool>
            </edit>
        </match>
        <!-- hinting -->
        <match target="font">
            <edit name="antialias" mode="assign">
                <bool>true</bool>
            </edit>
            <edit name="hinting" mode="assign">
                <bool>false</bool>
            </edit>
            <edit name="autohint" mode="assign">
                <bool>true</bool>
            </edit>
            <edit name="hintstyle" mode="assign">
                <const>hintfull</const>
            </edit>
        </match>   
</fontconfig>


 

FORTH の話の続き

fig にアクセスして、参考になりそうな処理系をダウンロードしました。Gforth(GNU forth)とgraspforth という、両方共既存のOS上で実行可能なものです。例によって実行環境はPuppyLinux571JP、ソースを展開して適当に./configure なり make なりします。

Gforth を起動したところ


組み込みワードを表示してみる。(VLIST)

既に1画面に収まっていません。うーむ、これを全て覚えて使いこなす人がいるのだろうか?

続いて graspforthを試す。

俺の知っている forth と違う、かも知れない。


作ったほうが早いな。
 

承前。

前記事でPythonで作ったものをCに書き換えてみました。内容はほぼ同じです。プログラムの性格上(?)終了処理がないことも変わりません。
Thinkpad R500とPuppyLinux571JP, 本来のターゲットであるPanasonic CF-R2とSliTaz(ビルドはVirtualBox上で実施)で動作確認しました。sysfs のパーミッションは触っていませんので、このプログラムを実行する前に別途調整しておく必要があります。
その他、特別変わったことはしていませんので、Statusiconが使えるGTKがあればほとんどのデスクトップLinuxで動くと思います。

なお、VirtualBox上のSliTazで実行したところセグって終わりました。sysfsにノードがないのが原因かも。

実用一途で作りましたので、挙動にちょっとおかしなところもあります。特にトレイ上のステータスアイコンをクリックしてスライダを呼び出すと、トレイにウィンドウバーが出ます。SliTaz(LXDE)だと目立ちませんが、PuppyLinuxだとちょっとかっこ悪い。またウィンドウレイヤーの影響を受けます。スライダを見失っても焦ってはいけません。


実行の様子(PuppyLinux571JP)
 

SliTazをインストールしたPanasonic CF-R2のLCD輝度調整について。

その後、起動時に実行されるスクリプトにて/sys/class/backlight 以下のパーミッションを設定することで、ログイン後にいちいちrootに化けることなく調整することが可能になりました。

以前書いたように何故かシェルスクリプトでの設定がうまくいかないので、何らかのツールを用意しなくてはなりません。
とりあえず、PythonとPyGTKを使ってプロトタイプを書いてみました。システムトレイに常駐する形式のものです。但し、開発と動作確認はPuppyLinux571JPです。SliTazにはPythonもPyGTKもインストールしていないので。

スライダーの方向が逆(上に動かすと暗くなる)なのは手抜きです。

問題点
  1. でかい。Python + PyGTK なので当然。輝度調整の為だけに数MBも費消するのはいかがなものか。
  2. ノードが機種によってまちまち。どうやって検出するか?ThinkPad R500では intel_backlight も acpi_video0 も使えましたが、CF-R2は panasonic (acpi)一択です。

1. はCに書き換えれば改善の見込みはありますが、2.はどうしたものか。もっとも、個人が特定環境で使うのであれば何ら問題にはならないのですが。




 

もはや自社製OSによる囲い込みなんぞにこれっぽっちの拘りも見せないマイクロソフトが、LinuxやMacOSでも動くコーディングツールを投入してきました。その名も VisualStudio Code。略してVSCode、だそうです。



早速、ダウンロードしてみました。当然のことながら、32ビット版は用意されていませんので実行環境はいつものPuppyLinux571JPではなく、LinuxMint x64 (17.1, Xfce)です。

動作そのものは問題なかったのですが、デバッガを触ろうとしたら Mono 3.10.0 以上を要求されました。LinuxMint のMonoは3.8です。webでUbuntuのそれをググって見ましたが、15.04 でも 3.8 のままのようです。

ということで、私の環境ではフルに使おうとすると Mono のサイトから最新版を持ってこなくてはならないようです。インストールしてほかのアプリケーションの挙動に影響が及んでも困るので(とはいっても、Monoで動くアプリケーションは使っていないはずなのだが)今回は見送りました。
個人的には(おそらくVSCodeが主な対象としている)C#やJavaScript を使うことはないし、クロスプラットなアプリケーションを作成するということもありませんから、VSCodeへ移行する積極的な理由もありません。

でも、悪いツールではないと思います。少なくとも(これはIDEだけど)Eclipseなんかに比べれば相当マシといえるのではないでしょうか。


テーマをLight に変更したところ。

マイクロソフトは本気なんだなあ、と改めて感じた次第です。

 

SliTaz に採用されているSakuraTerminalをPuppyLinux 571JPでも使ってみました。

リポジトリに入っているのは 3.0.3 です。これは GTK+-3.0 に依存します。571JPは GTK+-3.0 を標準でもっていませんのでリポジトリから別途インストールが必要です。
ディスク容量(pupsave)を節約したり、デスクトップのルック&フィールを統一したいなら旧バージョンを使うことになります。ただ、SakuraTerminalは結構頻繁に更新されており、旧バージョンを利用する際はバグに留意しなくてはなりません。

適当にググったところ、Ubuntu 10.04 (Lucid Lynx)が 2.3.7 を採用しているのでソースをもらってビルドしてみました。そういえば、Lucid (厳密にはデスクトップではなくサーバー)のサポートは15年4月で終了だったはず。本日限りですね。

ついでに最新版の 3.1.5 も Ubuntu 15.04 (Vivid Vervet) からソースをもらってきてビルドしました。
いずれも構築はCMakeです。またvteのランタイムとdevが必要です。これらは571JPのリポ(すなわち Precise Pangolin)にあるものが使えますが、GTKのバージョンに合わせて別々のものをインストールしなくてはなりません。

バージョンによる大きな機能差というのはなさそうです。背景を通過させるのは勿論、画像を貼ることも可能です。設定変更が容易なのも使いやすくていいと思います。


3.1.5

gtk2
2.3.7 背景を通過させています。
 

前記事 で書いたように、scimやanthyをインストールしてもxtermでは日本語入力できません。

xtermを起動すると

Warning: locale not supported by Xlib, locale set to C

と、表示されるので元から無理なようです。

どうしても端末で日本語を扱いたい場合は対応している端末エミュレータを使うしかありません。SliTazにはSakura Terminalが同梱されています。

どうして2つも入っているのかなあ、と思っていたのですがこういうことだったんですね。(たぶん)

 

(本稿後日加筆予定)

概要
とりあえずpanasonic-laptopモジュールはインストールできた
しかし引き続き問題山積。


顛末

まず、モジュールのインストールから。
モジュールの検索はTazPanelで完結しておらず、コマンドラインで行うようです。

tazpkg search-pkgname panasonic-laptop


すると、linux-acpi がヒットしましたのでインストールしました。機種別モジュールのほとんどが含まれています。
インストール後は再起動するか、modprobe します。

次。
PuppyLinuxで使っていた自作の輝度調整スクリプトを持ってきました。しかし実行するとエラーが出ます。パーミッションかな、と思ってチェックしても問題ない。
ここで始めてSliTazがbashを持っていないことに気づきました。いやはや。シバンを/bin/busybox ash に書き換えて実行してみたのですが、やはりエラーになります。どうも、echo 輝度設定値 > /sys/class/backllight/panasonic/brightness の実行直後に何か生じるらしい。 2> /dev/null 等と繋いでみたら、エラーは出なくなったけど命令そのものがスルーされるという謎挙動。

そしてここで落とし穴。/sys/class/backllight/panasonic/brightness のデフォルトのパーミッションって644なんですね。PuppyLinuxの時は常時rootなので問題なかったのですが、SliTazだといちいちsu でrootにならないと輝度設定できません。666に変更してしまえばいいのですが、再起動で644に戻るので都度やり直さなくてはなりません。

うーむ、他の方法を考えなくてならないようです。
 

概略
LCDバックライトの輝度の変更

結論
難しいかもしれない

LCDバックライトの輝度は、/sys/class/backlight 以下に出現するファイルに設定値を書き込むことで変更します。松下CF-R2の場合、PuppyLinux571JPでは panasonic というディレクトリが出現していました。
しかし、SliTazではそのようなディレクトリは出現せず単にintel_backlightがあるだけです。
読み込まれるべきモジュールはpanasonic_laptopというものです。リポジトリにあるのかしらんと思ってちょっと探してみたのですが見つけられませんでした。
考えられるのは、
  1. PuppyLinux571JPとはカーネルバージョンが違う(571JP 3.2.48, SliTaz 3.2.53)のでモジュール構成も違う。
  2. 他のもジュールと一緒に中身が分からない形でパックされてリポジトリに潜んでいる。
  3. カーネル構築時に外されてしまっている。
3の場合だと、自前でカーネルを再調整するしか方法がありません。もう少し探してみようと思いますが、いずれにせよ今までのように簡単にはいかないようです。

PuppyLinux571JPの機種別モジュールの例
※CF-R2向けにカーネルを調整しているのでオリジナルとは少し違うかもしれません。

# ls /lib/modules/3.2.48/kernel/drivers/platform/x86
acer-wmi.ko          fujitsu-laptop.ko    samsung-laptop.ko
acerhdf.ko           hdaps.ko             samsung-q10.ko
asus-laptop.ko       hp-wmi.ko            sony-laptop.ko
asus-nb-wmi.ko       ibm_rtl.ko           tc1100-wmi.ko
asus-wmi.ko          ideapad-laptop.ko    thinkpad_acpi.ko
asus_acpi.ko         intel_ips.ko         topstar-laptop.ko
classmate-laptop.ko  intel_menlow.ko      toshiba_acpi.ko
compal-laptop.ko     intel_oaktrail.ko    toshiba_bluetooth.ko
dell-wmi-aio.ko      msi-laptop.ko        wmi.ko
dell-wmi.ko          msi-wmi.ko           xo1-rfkill.ko
eeepc-laptop.ko      mxm-wmi.ko           xo15-ebook.ko
eeepc-wmi.ko         panasonic-laptop.ko


 


Search

Calendar

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     
<< April 2018 >>

Archive

Mobile

qrcode

Selected Entry

Link

Profile

Search

Other

Powered

無料ブログ作成サービス JUGEM