月別アーカイブ: 2009年11月

Y901x 0.2.0 release

Y901x 0.2.0 公開、トップページから。

beta からの変更点、せっかくだから Mandriva KDE 版にも対応。
Dolphin 及び他からのファイルドロップに対応するためにこうした。

def on_drag_data_received(self, widget, context, x, y, selection_data, info, time):
    # D&D FilenNmes split CRLF or LF
    if "\r\n" in selection_data.data:
        drop = selection_data.data.split("\r\n")[0]
    else:
        drop = selection_data.data.split("\n")[0]
    if "//" in drop:
        self.set_uri(drop)
    else:
        self.set_uri("file://" + drop)

Nautilus は CRLF 区切りで file:// の URI で送られてくる。
Dolphin は LF 区切りだ、後は file:// になっているかで振り分ければいいだろう。
これで多分どんな場合でもドロップに対応できる…かもしれない。

それより Mandriva には install というコマンドがあるお!
./ を付けてでは…しかたがないのでインストールスクリプトは名前を変更!

KDE での D-Bus については dbus-python を入れてくれでいっちゃえ!
試しに入れてみたら動いたからそれでいいや。

GtkAspectFrame の件はかなり前に Blog に書いたのに公開版はまだやっていなかった…

てなわけで思ったより差があるので 0.2.0 とマイナーバージョンアップということにする。
しかし気がつくとトップページの更新を 1 か月以上忘れていた、反省。
やっぱり Blog というか CMS のほうが楽なのでコッチばかり更新になってしまう。

Visual Studio x64 build test

時間が掛かりすぎるので休日にしかできない仮想 Vista 構築の続き。

前回はただ OS のインストールだけで終わったので Vista に SP を当てないと。
Windows Update では自動で当ててくれないのが忌々しい。

sp1 を当てないと sp2 が当てられないのね、面倒すぎ。
4 時間使ってやっと両方が終わったところで IE8 への自動更新が出る。
一度にやってくれよ、何回再起動させればいいのやら…

やっと Visual Studio をインストールする環境が揃う。
インストール DVD を立ち上げ今回は忘れずに「すべて」を選択。

vs_all

やっぱり一時間半掛かって、んで一時間使って MSDN ヘルプを入れて…
そして sp1 にするのにまた一時間半と、更に Update が掛かって…
そして今回も丸々一日使うはめになったとさ。

あーもうなるべくコイツは使いたく無い、Visual Studio 専用 OS にしよう。
FTP ができないと困るがこれでやればイイや。

[IE]Internet Explorer で FTP サイトのパスワードを入力する方法

Explorer のエディット部にコレやればとりあえずファイル転送はできるのよね。
パーミッション変更とかはできるはずがない、それらはホストの Mandriva からやる。
パスワードに記号とか入れている人は URI 変換をお忘れなく。
でも何故か Windows 7 ミニノートからではできない…

とにかく minipoli のソースを落として実験だ。
Visual Studio 起動、初回は遅いけど二回目以降は起動が早いというより一瞬。
仮想 OS になっても Vista の SuperFetch は完璧である。
でなきゃ困る、だから XP も 7 も持っているのに Vista を使うんだから。
7 の SuperFetch は効きがイマイチなんだよなぁ…

select_x64

「すべて」を選択したので今回はしっかり x64 の選択肢があった。
ソースコードはまったく弄くらずに minipoli をビルド、何事もなくビルド完了。
ちょっと拍子抜け、本当に 64bit 用にビルドされたのかな?
実験で 32bit であるこの Vista で使ってみる。

minipoli64.zip

32bit_test

わーい 64bit ですってエラーになった!
次に x64 Windows 7 であるミニノートに持っていき試す。

64bit_test

あたりまえのように動く、マジでコードは一行も変更しないで済みそうだ。
後は 64bit 用インストーラを作成すれば minipoli の x64 化は完了。
それがやりたいだけの為に二回も休日を全部使ってしまった…
好きでやっているのだから別にイイのだが。

OSASK 公開停止か? – スラッシュドット・ジャパン

いやいや、皆が何を言いたいかよく解るなぁ。
開発者が望んでいるようなユーザーが一人でもいるなんて奇跡に等しい世界ですから。
情報公開もオープンソースも自己満足、それでいいじゃない。

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 キーもこれをしないと使えない。
こんなのはデフォルトで有効にしておいてくれよ…