いもあらい。

プログラミングや哲学などについてのメモ。

すけすけ。

2006-04-15 14:21:00 |  Gentoo...
背景の透過について。

タイトルが微妙にエロい(^^;
まぁ、それはおいといて、Gentoo(というかX)で背景を透過させる方法について。

ウィンドウマネージャのサイトとか見てるとかっこいいスクリーンショットがたくさんあって、特に目をみはるのが、背景が透き通って見える(=ウィンドウが(半)透明になっている)スクリーンショット。
こいつを実現してみたいなぁ、と思うわけです。

ちなみにそういうのを行っていないデフォルトの状態は、例えばこんな感じ
志摩子さんがいたりするけど、気にしないw

背景を透過させるのによく使われるのは、atermやeterm、あるいはmltermといったターミナル。
つまり、個々のアプリケーションレベルでしかそういったのは実現されていないんですよねぇ。
ついでに言うと、あくまでも「背景」(=壁紙、Mac風ならデスクトップピクチャ)を透過させるので、そうでないアプリケーションといっしょに使うと変な感じに・・・
mltermを使って背景を透過させたのがこんな感じ
下になっているウィンドウの文字は表示されないし、透過されていないFirefoxは変な感じになってしまっていますね。

なお、自分は壁紙をImageMagikのdisplayコマンドを使って設定しているのですが、この場合mltermを単に動かして設定するだけだとちゃんと背景が透過されない・・・(xsetrootで設定されたものが背景とみなされてしまう)
これを解決するのにすごい時間がかかりました。
なにやらxsetptransというのをバックグラウンドで動かしている必要があるっぽいです。
上のサイトからtarボールを落としてきて、
# tar zxvf xsetptrans*.tar.gz
# cd xsetptrans*/
# make
# cp xsetptrans /usr/local/bin
(※*はバージョンとか。あと、/usr/local/binはただここをインストール先にしただけ。)
とかって手動でインストールして、.xinitrcにでも
xsetptrans &
というのを入れておけばOK。

閑話休題。
で、実はさっきのみたいな「擬似的な」(半)透明でなく、「本当に」(半)透明にすることがXの拡張を使うことで出来たりします。(重いけど)

方法は比較的簡単で、まず/etc/X11/xorg.confに以下のセクションを追加。
==> /etc/X11/xorg.conf(一部) <==
Section "Extensions"

    Option  "Composite" "true"


EndSection
そうしたら、Xを再起動。

次に、xcompmgrとtranssetをemerge。
# emerge xcompmgr transset
transsetの方はマスクがかかっているかもしれないから、もしかかっていたら、
# echo "x11-misc/transset ~x86" >>/etc/portage/package.keywords
とでもしてマスクを解除しておくこと。

両方ともemerge出来たら、ウィンドウをどれくらい透明にするのかをtranssetを使って設定していきます。
とりあえず透明にしたいウィンドウをクリックできるようにしておいてから、
# transset .8
(.8は0.8の意味で、ここには0(=完全に透明)から1(=完全に不透明)を指定する。)
とすると、マウスカーソルが+の形になるから、それで透明にしたいウィンドウをクリック。
こうすると、ウィンドウの透明度が設定されます。

(後で変えることも出来るけれど)一通り設定が終わったら、
# xcompmgr &
とすると、設定した透明度に従ってウィンドウが透明になります。
このxcompmgrを動かすときに、オプションとして-cを指定するとボヤっとした影が、-sを指定するとシャキっとした影がつきます。
ただ、薄暗くなってしまう感じが否めないので、あまりおすすめは・・・
あと、さっきのxsetptransを動かしていないと、激しくひどい画面になります。
それと、もしエラーがめちゃくちゃ流れてくるようだったら、
# xcompmgr 1>/dev/null 2>&1 &
とリダイレクトして、エラーは捨てちゃってください。

この結果がこんな感じ
ちゃんと下のウィンドウの文字も透けて見えます。
Firefoxといっしょに使うとこんな感じ
ただ、Firefoxは透明化すると見にくいですね(^^;
ということで、transsetでFirefoxは完全に不透明にしたのがこれ
これはなかなかよさげ。

ただ、やっぱり重いのが・・・(^^;
Firefoxの画面をスクロールするのに、ネットワーク越しで操作しているような重さがあります。

ちなみにtranssetで志摩子さんを指定するとすけs(ry
いやいや、幽霊みたいに薄くなるだけですw
(ついでに言うと、指定したときの背景の一部が背後霊みたいに憑いてきますw)


uimとか。

2006-04-15 00:54:00 |  Gentoo...
Xでの日本語入力で、FEPにuimを使う方法について。

ゼミの発表も一段落して(といっても全部終わらなかったから来週もやるのですが)、Gentooのデスクトップ環境を整えたいな、と思い、やっぱり日本語の入力環境がよくないので試しにuim+anthyというのを入れてみました。

そもそも、Xの日本語入力っていうのが・・・
日本語入力するよ、っていうのがXアプリケーションからFEPに伝えられると(ってことで、そもそもそれを伝えることができないアプリケーションは日本語入力できない・・・)、FEPが入力をかな文字列にして、さらにFEPに変換の命令が出されるとFEPはその文字列を変換サーバに送って、変換された漢字を受け取ってそれをアプリケーションに渡す、みたいな感じなんですよね。(あってる?)
で、FEPも変換サーバも自分で選べるんだけれど、設定の仕方が分からないから使いにくい使いにくい・・・
まぁ、ドキュメントをちゃんと読めって話なのかもしれないけれど、これじゃあ普及しないよ・・・

まぁ、愚痴はこの程度にしておいて。
いままではkinput2+cannaという組合せを使っていたのだけれど、いちばん困ったのがShift+SpaceでFEPの切替えが起こってしまうということ。(あと、半角/全角キーでFEPの切替えが行えなかったこと。)
もちろん、ちゃんと設定すれば大丈夫なんだけれど、それもめんどいので、uim+anthyという組合せを入れてみました。(ちなみにanthyは変換サーバじゃなくてライブラリだとか。んでもって少女革命ウテナの姫宮アンシうわ、なにをfjdska;f;dsa)

まずはemerge。
# emerge anthy uim
この順じゃないとダメらしい。
んで、~/.xinitrcに次のようなのをいれてあげる。

==> ~/.xinitrc(一部) <==
export GTK_IM_MODULE=uim
export QT_IM_MODULE=uim
uim-xim &
export XMODIFIERS="@im=uim"

これでFEPがuimにセットされる。

で、Xを立ち上げて(ちなみに.xinitrcにうっかり日本語を入れてしまって、何度かエラーを起こした^^;)、uimの設定。
# uim-pref-gtk
こうするとGUIを使って設定ができるから非常に楽。
この設定ツールの
全体設定→入力方式の利用準備
で、"デフォルトの入力方式を指定する"にチェックを入れて、デフォルトの入力方式のプルダウンメニューからAnthyを選べば、変換がAnthyで行われるように。
あとはキー設定とかをいじっておくと楽かも。

使ってみた感じでは、断然MacやWinに近い使い心地で、うれしい。
MacやWinとちがうのは、日本語モードのときに適当なアルファベットを打っても、ちゃんとかなになるものでなければ入力として扱われない、ということ。
たとえば、日本語モードで'oyaptu'と入力しても、'おやつ'とpは無視されてしまう。(Winなら'おやpつ'となる)
あと、'・'を打つために'/'のキーを押しても、/となってしまって・にならないのがめんどい(たぶん、これも設定でどうにかなりそう。ならなきゃAnthy側でいじれば・・・)
Anthyの方も'、'を','、'。'を'.'に変換してしまう癖が最初あったけれど、使っているうちに学習して直ってきた感じ。

あとは辞書への登録の仕方とか細かい設定の仕方とかを調べていければな、って感じです。



追記(2006.11.06)。
USEフラグでgtkを指定しておかないと、uim-pref-gtkが使えないっぽい・・・(あたりまえ?)


『キーリ9 死者たちは荒野に永眠る(下)』。

2006-04-09 03:17:00 |  Review...
キーリの最終巻、『キーリ9 死者たちは荒野に永眠る(下)』を読んで。

なんというか、とうとう終わってしまいました。
物寂しい。

今回のキーリを読んでいて――そして読み終わってからもずっと感じ続けたこと・・・
「物寂しさ」
今回のキーリはキーリであってキーリではないというか、キーリをはるか上方に越えてしまった物語というか・・・

物語の話をすればですね、もうこれ以上ない終わらせかたなわけです。
でも、それでもなお、キーリには別のものを求めてしまっている自分がいる。
――「人間臭さ」「しらがみ」「葛藤」、そして、格好悪いほどの「生への執念」。

もちろん、そういったものがない方が、人間としては成長しているというのかもしれない。
けれど。
けれどもしかし。
そういったものこそが人の心を惹き付けてやまないのだと思う。
物語を劇的なものに、人の心を掴んで離さないものに変えていくんだと思う。
そういったものが<赦し>という形で昇華されていってしまっているのが、なんとも寂しかった。

もちろん、これだけの旅をしてきたわけだけら、人間的に成長しなかったら何やってんだか、という感じはあるのかもしれない。
けれど、どんなにボロボロになろうと生きようとしてきた――あがき続けてきたハーヴェイ、あるいは、敵を作らずにはいられない自分に嫌悪したり、それが自分のエゴだと分かっていてもそれでもなお兵長・ハーヴェイにいて欲しいと必死になっていたキーリ、この二人には成長して達観した感じになってしまうくらいなら、どんなに泥臭くてもいいからあがき続けていて欲しかった。

キーリが幽体になったときの様子を見て、場違いながら「ニュータイプ!?」とか思ってしまったのだが、その経験を通して戻ってきたときのキーリは今までのキーリからは考えられないほどに達観している感じがあって(もちろん、そうなるのに十分なほどの経験ではあったのだけれど・・・)、本当にニュータイプになってしまった感じがあった。
第七話のエピソードで、きっと以前のキーリならあんな達観した見方なんか出来なかったと思う。お疲れ様だなんて言えなかったと思う。
子供を恨んで、ラジオに泣きついて、けれどそんな自分に嫌気を感じて、でも謝るなんて出来なくて・・・きっとそんな感じ。
でも、自分はそんなキーリのほうがとても共感がもてるし、「生きている」という感じがする。

ちょっと話は変わるけれど、みんながみんなニュータイプになって分かりあえたら、ホントにみんな幸せになれるのだろうか?
もちろんあの時代においては、みんながみんな分かりあえるというのは理想に思えただろう。
けれど、人間臭いドロドロした感情や行き違い、不理解などといったものがなくなってしまったとしたら――みんながみんな達観していて、理知的で、争いごとや悩みや葛藤がないような世界が実現してしまったとしたら、どうだろう?
それでもなお、依然として「生の輝き」というものはそこにあり続けるのだろうか?

『風の谷のナウシカ』(※マンガの方)から、ちょっと引用。


ナウシカ

「その人達はなぜ気づかなかったんだろう? 清浄と汚濁こそ生命だということに。苦しみや慈悲やおろかさは清浄な世界でもなくなりはしない。それは人間の一部だから……だからこそ苦界にあっても喜びや輝きもまたあるのに。」


墓の主

「娘よ、お前は再生への努力を放棄して人類を亡びるにまかせるというのか?」


ナウシカ

「その問いはこっけいだ。私達は腐海と共に生きて来たのだ。亡びは私達のくらしのすでに一部になっている」


墓の主

「種としての人間についていっているのだ。人類は私なしには亡びる。」


ナウシカ

「それはこの星が決めること……」


墓の主

「虚無だ!! それは虚無だ!!」


ナウシカ

「王蟲のいたわりと友愛は虚無の深淵から生まれた!」


墓の主

「お前は危険な闇だ。生命は光だ!」


ナウシカ

「ちがう! いのちは闇の中にまたたく光だ!!」




『風の谷のナウシカ』7巻より。一部省略で。
非常に考えさせられます。

まぁ、何はともあれ、キーリ終わっちゃったなぁ、という感じで。
物語を締めくくる最後の言葉が――ハーヴェイの言った最後の言葉が、この9巻がどうであったのかを如実に表していると思う。
そしてそれは、この物語へのレクイエムとして贈られているように思えてならない。

 キーリと会えてよかった。
 今の時代に生きててよかった。
 お前と会わせてくれた、俺をそれまで生かしておいてくれたこの惑星に、お前を今まで守ってきてくれたすべての人たちに。
 この惑星のすべてに。
 俺は今、感謝しています。




Portage。

2006-04-07 14:37:00 |  Gentoo...
Portageに関するメモ。

Java入れたりFirefox入れたりとかで、いろいろとぶつかって学んだことがあるので、そのメモ。

まず、基本としてemergeのやり方。

emerge --sync

Portageツリーの同期


emerge -s foo

fooという文字列を含むパッケージの検索


emerge -S foo

fooという文字列をコメントに含むパッケージの検索


emerge package

packageというパッケージをインストール


emerge -u package

packageというパッケージをアップデート


emerge -p package

実際にはインストールせずに様子を見る


emerge --unmerge package

packageというパッケージをアンインストール


emerge system

核となるアプリケーションを一括アップデート


emerge world

インストールしたパッケージ全てを一括アップデート



ここらへんは基礎。

あと、覚えておきたいものとして、

emerge -u --newuse package

packageを新しいUSE変数の元でアップデート


emerge -u --deep package

packageが依存しているパッケージについてアップデート


emerge --depclean

unmergeした後、依存されなくなったものをアンインストール


revdep-rebuild

gentoolkitのコマンドで、動的リンクを再構築する



といったところ。

パッケージの名前は
category/package-version
という構造をしていて、通常は
package
category/package
と指定すると、そのパッケージが指定されたことになる。
versionまで指定したいときには
=category/package-version
と、先頭に=をつける。
あるversion以上(より上)を指定したいときには、

 >=category/package-version


(あるいは>category/package-version)
とする。

アーキテクチャごとに基本となる仕様があって、それは
/usr/portage/profiles/default-linux/default-linux/
以下にあったりして、/etc/make.profileによって指し示されている。
ここをいじるのは推奨されていなくて(同期を取ると元に戻ってしまうから)、かわりに/etc/make.confや/etc/portage/以下のファイルをいじることになる。

/etc/make.confはグローバルなPortageの変数を指定するのに使う。
/etc/portage/以下のファイルは個々のパッケージに対しての指定を行い、ファイルは以下のような感じ。

/etc/portage/package.use

パッケージごとのUSE変数を指定


/etc/portage/package.mask

マスクをかける(=インストールできないようにさせる)パッケージを指定


/etc/portage/package.unmask

マスクを解除するパッケージを指定


/etc/portage/package.keywords

パッケージごとにACCEPT_KEYWORDS(~x86とか)を指定する



設定ファイルをどうしていくのかはetc-updateを使って操作していく感じで。


configuration error。

2006-04-06 17:01:00 |  Gentoo...
ログインしようとすると出る
configuration error...
というエラーについて。

インストールも出来たし、システム全部をemergeしようかなぁ、と
# emerge -u --newuse world
としたわけです。
まぁ、えらく時間がかかったわけですが、一応終わりました(groffが依存関係で1.9を削除して1.8を入れたりとかしましたが。確か。)
で、一回ログアウトしてまたログインする段になったら、次のような出力になったわけです。

login: xxxx
configuration error - unknown item 'FAILLOG_ENAB' (notify administrator)
configuration error - unknown item 'LASTLOG_ENAB' (notify administrator)
configuration error - unknown item 'MOTD_FILE' (notify administrator)
configuration error - unknown item 'FTMP_FILE' (notify administrator)
configuration error - unknown item 'ENV_PATH' (notify administrator)
configuration error - unknown item 'ENV_ROOTPATH' (notify administrator)
configuration error - unknown item 'ENV_SUPATH' (notify administrator)
configuration error - unknown item 'PASS_MIN_LEN' (notify administrator)
configuration error - unknown item 'CHFN_AUTH' (notify administrator)
pass:

xxxxはユーザ名で、列挙したitemは手元にあるものではないので検索で出てきたものから引っ張ってきました。

一応ログインは出来るのですが、ログインするたびにこれが出ては気持ち悪いので検索したところ、やはりemerge worldを行った後からこんなのが出るようになったという人がいて、次のようなアドバイスがされていました。

You should always check for block/upgrade dependencies when upgrading your entire system
# emerge -av
The -av allows the user to see the dependencies, the installed version and the upgraded version.
I think you might have axed something important during the upgrade. could be the reason why your internet is not working either.



(意訳)システム全体をアップグレードするときにはいつも依存関係をチェックすべき。
# emerge -av
avオプションは依存関係とインストールされているバージョン、アップグレードされるバージョンをユーザに見せるようにしてくれる。
思うに、アップグレードの途中に大切なものを中断してしまったんじゃないかな?
回線が切れていたりしたのかもしれない。

I had this issue. During emerge default behaviour is not to overwrite configuration files.
The following command will give info on this:
# emerge --help config
In my case I found emerge had not overwritten /etc/login.defs and had added /etc/._cfg0000_login.defs
Simply overwriting login.defs with ./_cfg000_login.defs fixed the problem.



(意訳)私もこの問題があった。emergeのデフォルトの振る舞いではコンフィグレーションファイルは上書きされない。
次のコマンドがこれについての情報を与えるかもしれない。
# emerge --help config
私の場合、emergeが/etc/login.defsを上書きしていなくて、かつ/etc/._cfg0000_login.defsを付け加えていた。
単にlogin.defsを._cfg0000_login.defsで上書きしたらこの問題は解決した。

試してないですが、2番目の方法で大丈夫そうですねぇ・・・(なんか、Gentoo的には怪しそうだけど。)

で、マニュアル見てみたら、このあと依存関係云々の作業をしなくちゃいけなかったみたいです。

システム全体を新しいUSEフラグに対応させる。
システム全体を再構築
# emerge --update --deep --newuse world
不要なパッケージを削除
# emerge --depclean
動的リンクの再構築
# revdep-rebuild
(これはgentoolkitに入っているので、emergeするのを忘れずに)



が、これをやってもエラーが出る感じ。
いろいろやってみたけれど、やっぱりetc-updateを使うのが正解っぽいです。

etc-updateは._cfg0000_<name>ファイルのマージを手助けしてくれるツールです。それは対話式のマージセットアップを提供しますし、普通の変更を自動的にマージすることもできます。._cfg0000_<name>ファイルは、PortageがCONFIG_PROTECT変数に保護されているディレクトリにファイルを上書きするときに作成されます。
etc-updateを実行するには何も付けずにこうします。
# etc-update



本当はいけないんだろうけれど、面倒だったので全部アップデート後の設定ファイルで上書き。
けれど、これでエラーが出ることはなくなりました。