Mandriva にテスト用 Ubuntu 導入

Mandriva One 2010.0 GNOME 版を利用している。
VirtualBox をインストールしてその上に One 2010.0 KDE 版も入れている。

2009.1 の時と違い VirtualBox 上でもしっかりマウスホイールが効く。
今回も GuestAdditions が勝手に入り有効になるのでインストールだけで即マウス統合。
Mandriva on Mandriva なので相性もバッチリのようだ。

なので KDE で使いたい時は Host(右Ctrl)+F でフルスクリーンにするだけで KDE 版に早変わり。
Free 版をログアウトで切り替えするよりこういう使い方のほうが私には合っている。
だって私は KDE は実験でしか使わないので、KDE が本場のディストリだと解っているけど。
とにかく VirtualBox って本当に便利なアプリケーションです。

ということで。

Y901x は Ubuntu 9.10 でどうなのか試さにゃ、Ubuntu 用なんて書いて公開してんだから。
作った本人は Mandriva で動けばいいのだが、シブシブダウンロード。
VirtualBox 上にインストール、インストール中に出る自己宣伝が超ウザッ!

ubuntu_nautilus

Windows のマネ?いきなりコレで引いたが軽くアプリを使ってみる。
日本語 Remix でもないのにキチンと日本語表示できるし Anthy も入っている。
ネット上の評判ほどは酷くないのかな。

てか毎度のように 800×600 以上の大きさにならない。
Mandrina であれば GuestAdditions が勝手に入るが Ubuntu はそうはいかない。
GuestAdditions をコンパイルするために gcc をまず…
って入っているじゃん、/usr/src にヘッダも揃っている。

Mandriva でさえ初期状態で gcc は入っていないのにどういう心境の変化?
もしかして仮想マシン上で動かす人ばかりだったのでこうしたというオチかも。
Linux なんて世間ではそんなもんさ…
まあとにかく GuestAdditions 導入をしてとっとと Y901x の動作を調べる。

y901x0110

あーあ、やっぱり Mandriva とまったく同じ症状か、対策した Beta しか動かない。
Mandriva がおかしいわけではなく GNOME てか GTK+ の仕様が変わったのね。
これで Mandriva 上でデバッグすれば Ubuntu にも対応できると解った。

pyc

しかし Ubuntu では当然のように *.pyc キャッシュを作成してくれた。
Python バージョンは同じ 2.6.4 だから Mandriva は環境設定が他と違うのだろうか?

てか Ubuntu 9.10 って…このスクリプトアイコン何? GNOME 標準を変えないでくれよ。
Linux 臭さを消そうと努力しているんだろうけど Linux 好きには逆効果だと思う。

get the X Window ID from gtk.Drawingarea

私は Y901x という GStreamer フロントエンドな動画プレイヤーを作った。
もちろん自分で使っているのだが Mandriva 2010.0 に乗り換えたら落ちまくる。
でもタマに問題なく動く場合もがあるからややこしい。

ついでに、ソースディレクトリに pyc キャッシュを作成しなくなっているのだが…
Mandriva 2010.0 だからなのか? Python がヤメたのか?それとも他の場所にあるのか?

0.1.9 を色々弄くって以下の処理を行っている場所
GtkDrawingArea の X Window ID を得ようとすると X server Error になると解った。

imagesink.set_xwindow_id(self.video_window.window.xid)
# これさえも error
print self.video_window.window.xid

gtk.DrawingArea.window は gtk.gdk.Window であり gtk.gdk.Drawable のメソッドを持つ。
なので xid アトリビュートで X Window ID が得られるようになっている。

コレが現行の GTK+ ではできなくなったのかな?
と疑って xwininfo をインストールして使ってみた。

xwininfo

何も問題無く root window の xid が得られている。
それなら root な gtk.Window.window に割り当てたらどうなる?

imagesink.set_xwindow_id(self.w.window.xid)
#imagesink.set_xwindow_id(self.video_window.window.xid)

fullwindow

コントローラやメニューが塗りつぶされたけどコレなら問題無く xid が指定できる。
ということは gtk.DrawingArea の window.xid の取得方法がマズイということだろう。
ならば簡易なコードを書いて試してみる。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import pygtk
pygtk.require('2.0')
import gtk

class Xid():
    def __init__(self):
        w = gtk.Window()
        vbox = gtk.VBox()
        self.da = gtk.DrawingArea()
        button = gtk.Button("Press me")
        button.connect("clicked", self.show_xid)
        vbox.pack_start(button)
        vbox.pack_start(self.da)
        w.add(vbox)
        w.set_title("xid")
        w.connect("delete-event", gtk.main_quit)
        w.show_all()

    def show_xid(self, widget):
        widget.set_label("gtk.DrawingArea xid: %s" % (self.da.window.xid))

if __name__ == '__main__':
    w = Xid()
    gtk.main()

あらら、この方法では問題無く取得できてしまった。
ということはタイミングが問題なのか、何か event が起こった時に取得すればイケそうだ。
ということで検索しまくった、日本語で見つかるはずがないのでやはりメリケンの Google で。

Re: [pygtk] get the XID from gtk.Drawingarea

expose-event を吐いた所で xid を保存してソレをブチ込めばいいということかな?
でも expose-event を待つ必要があるので __init__ で sys.argv を処理できない。
show シグナルにて sys.argv を処理するように書き換えて実験。
コードの解説は長くなりすぎるからバックアップを見てくれで済ます。

y901x-0.1.10beta.tar.gz

kkobato

あぁやっと Ubuntu 9.04 で使っていた頃のように Mandriva で動くようになった。
GTK+ が厳密になったのか Ubuntu がいいかげんだったのかは今は解らない。
ところで Mandriva でも Ubuntu と同じインストールスクリプトが使えるね。

もうしばらく自分で試してから本サイトの奴は更新します。
Ubuntu 9.10 でも試さなきゃなぁ、多分同じだと思うけど…
てか RPM にしたほうがいいのだろうか?需要はシラネ。

Mandriva 2010 Japanese Font Setting

Mandriva One GNOME 2010.0 日本語版のデフォルトフォントは以下になっている。

Suns : UmePlus P Gothic
Monospace : DejaVu Sans Mono Book

Monospace 自体はこれでいいけど少々横長なのでテキストエディタでは使い憎い。
UmePlus Gothic にしたいけど何故かアルファベットが少々汚くみえる。
そういえば 2009.1 One KDE 版を試していた時のコレを思い出した。

ぱぇぽぃ2 ? Blog Archive ? Linux Opera 10 文字入力問題の解決

lcd_s

サブピクセルのスムージング(LCDs)
にチェックするだけで詳細ボタンを押した時の設定が上記と同じになるようだ。
GNOME は KDE よりかなり単純化されているんだね。

Gedit 上の UmePlus Gothic も綺麗に見えて Nautilus のファイル名も見やすくなった。
コレだけで液晶ディスプレイに最適な表示になるようです、CRT の人なんてまだいるかな?

これだけでは Qt4 製 VirtualBox や KeepassX のフォントにはアンチエイリアスが掛からない。
Opera は Qt3 製であるためか問題無い、VirtualBox が Qt 製だと今頃知った私であった。

VirtualBox に One 2010.0 KDE 版を入れて Qt4 のフォントはドコを見ているか調べてみる。
どうやらホームの .fonts.conf ファイルを見ているようだ。

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
 <match target="font" >
  <edit mode="assign" name="rgba" >
   <const>rgb</const>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="hinting" >
   <bool>false</bool>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="hintstyle" >
   <const>hintnone</const>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="antialias" >
   <bool>true</bool>
  </edit>
 </match>
</fontconfig>

という XML を書きホームディレクトリに「 .fonts.conf 」という名前で置いてみる。
それだけで Qt4 アプリケーションのフォントは全部綺麗になった。

fonts_conf

PNG 画像にするとアンチエイリアスが掛かるからスクリーンショットは意味無いかも。
とにかくこれで GNOME 版でも Qt4 アプリのフォントにガッカリしなくてよくなる。
KDE 版は GTK+ アプリにも設定で全部適用してくれるのに困ったものだ。

おまけ、何故か今まで気がつかなかった。
Compiz 有効状態で Alt+F1 にてメインメニューが開かない、当然 Alt+F3〜F7 もダメ。
これは CompizConfig 設定マネージャを開いて

gnome_key

とチェック、PrintScreen キーもこれをしないと使えない。
こんなのはデフォルトで有効にしておいてくれよ…

Mandriva 2010 GStreamer Check

DeskTop Linux を Mandriva に乗り換え快適な毎日である。
しかし自作動画プレイヤー Y901x が落ちまくって使えないのは困った。
コイツの操作性に慣れきってしまったのよ、自分が作ったのだから当然。

VirtualBox 上だったとはいえ 2009.1 では Y901x は問題無かったはずなのに。
SeeMe for Linux は我ながら完璧だ、32bit 限定での話だが。
怪しそうなものを考えてみる。

Mandriva のセキュリティ関連が邪魔をしているのか?
GNOME や GTK+ のバージョンが上がったせいなのか?
それとも GStreamer 自体のバージョンのせいなのか?

OS のバージョンアップで以前のアプリが動かなくなるなんて当たり前の話だからね。
過去の資産?はぁ…ドキュメントを読めない人ですかアナタ、漢字文化圏用も用意したのに。
と、Microsoft は強気でいても全然構わないと私的には思うんですけど。
でなきゃ以後の Windows の進化にまで影響が出てしまう…
Windows 7 はその点だけは残らず褒めろ、コイツの開発者達は恐るべき執念、以上脱線。

ということで。
複雑(でもないが)な Y901x では解らないので以前自分で書いたコ以下のコードで試す。
複雑でもないというのはベースである Windows 版 Y901 はトンデモネェ程複雑だから。
自身で何故こうなっているかワカンネェ、だから Cinema は超単純化…まぁそれは関係なくて。

動画プレイヤーを作る

やっぱり動かない…

bus.enable_sync_message_emission()
imagesink.set_xwindow_id(self[“drawingarea1”].window.xid)

のどちらかをコメントアウトすると別個ウインドウになって普通に動く。
つか enable_sync_message_emission ってそういうことだったのね。
知らないで以下のコードをまるまるコピペしたよ。

2. Playbin

そういえば Mandriva の GStreamer のバージョンは何?

gst_ver

0.10.25 なのか、超最新版じゃないの。

GStreamer: open source multimedia framework

むーどうやらこの辺が怪しいな。
もう少し調べてみます。

で。

seiki

Vista は普通に認証通ったよ、何時スナップショットを取ろうかな?

VirtualBox に Vista はお気をつけ

Mandriva Linux 2010 上の VirtualBox ose に Windows Vista をインストール。
この中に Visual Studio 2008 をインストールして Windows 開発はそれで行う。

Aspire 1410 ミニノートに巨大な開発環境を入れたくないだけなんだが。
Windows SDK と本体ライブラリで万単位のファイルが展開されてしまうからね。
Windows では現実的な使い道が無い普通の Python も無駄なので入れるつもりは無い。

ちなみに Windows Vista は昔使っていた SP 無し。
実は DSP 版なんだがコレを入れていたマシンでそのまま仮想にするから問題は無いはず。
仮想 OS に変更となること以外は完全に同じ構成だからライセンスは合っている。

ちなみに現在 Mandriva 2010 に入る VirtualBox ose は 3.0.8 である。

メモリ割り当ては 2GB にすると警告が出たので半端だが 1536MB にしてみた。
HDD 容量は 20GB 推奨値のまま仮想 HDD の作成、たいして必要無いだろう。
ビデオメモリは最大の 128MB に、Vista はそれでも足らないはずだが。
フロッピーを無効にしたり DVD-ROM を指定したり PlusAudio を指定したり。
今まで Linux を入れて試していた頃の感覚で仮想マシン作成開始。

一時間掛かってインストール完了。
即 Windows Update して 5 時間使って自動アップデートが終わる。
だから Windows はアップデートに時間が掛かりすぎるんだよ…

さて次は Visual Studio だ、コレも恐ろしく時間が掛かる。
同じく SP を当てるのに更に時間が掛かるのも解っている、今度にしようか…
そういえば…その前に HDD 使用量の確認。

vista_15gb

15GB って…
OS のみでコレか…
Vista を舐めていた…

これじゃ既に Visual Studio 2008 を入れるスペースが無い。
100GB くらいにしてやり直し、Visual Studio については後日。
無印 Vista を VirtualBox に入れようとしている人は注意ね。

てかプロセッサスコアが 4.1 って 普通に使っていた時よりエラく低いんだが。
ホストで使っていた時の Vista ランクは以下。

vista_rank

昼前から始めて約 12 時間、やっと OS のみのインストールとやりなおしが終わった。

これを行っている最中に ミニノートで IronPython をチマチマ。
しようとしたら EmEditor がアップデートのお知らせでウザい!
今時の Linux のように入れたアプリ一揆にアップデートする仕組みが欲しい。

Windows Update に組み込む API とか無いのかな?
それはそれでセキュリティが絡むし非公式リポジトリも期待できないし…
やはり Windows ではアプリ毎にお知らせをするしかないんだろう。
こういう部分でも Windows って面倒くさいんだよね。

つか YouTube ばかり見ていてロクなコードが書けなかった(ぉい!
あぁ久々に無駄な一日であった。

続き。
Visual Studio x64 build test