Linux」カテゴリーアーカイブ

Mandriva 2009.1 インストール

何故唐突に Mandriva の KDE をインストールしようと思ったかというと
標準動画プレイヤーが Totem だったから、PyGtk や PyGst 標準装備が期待できる。
なら Y901x や SeeMe がそのまんま動くんじゃね?

それと KDE ならもうちょっと Opera が安定しないかな?と思い始めた。
だからといって Kubuntu では芸が無い、Open SuSE は以前懲りた。
そんな時 Mandriva を見つけた、VirtualBox があるしとりあえず試してしまえ!

One という Live CD でそのまま HDD インストールができるようだ。
Ubuntu と同様に CD サイズというのが魅力だね、Fedora や Open SuSE では DVD だし。
こういう形式が増え簡単で嬉しい、とにかく本家サイトに行ってみる。

Mandriva

しかし本家からだと日本語版は落とせないようで。

kanzメモ: Mandriva Linux 2008 Springインストール

ということで riken の ftp を探して以下の iso と md5 をダウンロード。
Download をクリックしてポチポチやれば ftp を見つける方法はすぐに解ると思う。
ユーザー登録は行わずともよい、つかお試しにユーザー登録させようとすな!

mandriva-linux-one-2009.1-KDE4-asia-noindia-cdrom-i586.iso
mandriva-linux-one-2009.1-KDE4-asia-noindia-cdrom-i586.iso.md5

md5sum コマンドで iso が正しいのを確認、VirtualBox へマウント。
Mandriva のインストール項目が VirtualBox には無い、その他を選ぶ。
Gentoo はあるんだが、こっちのほうがいいのかな?

メモリを 256 だと Live の起動に失敗、512 に変更して開始。
この辺の解説も Linux インストール経験者なら誰でも解ると思うので省略。
Live 状態じゃ何も解らない、とっととインストール。

インストール途中で「不要パッケージの削除」という項目が出る。
チェックボックスを有効にして「次へ」を押すと削除される。
逆だろ?インストールしたいものにチェックを入れるというのが当然だと思うが。
削除項目に fglrx なんかもあった、HDD インストールなら動画アクセラレータも効きそう。

三十分も掛からずインストール終了、Visual Studio はいったい…
最初フォントがガタガタだけどアンチエイリアスを有効にするだけで綺麗になる。

xdg

デフォルトディレクトリの名前は Ubuntu よりまとも。
freedesktop.org 準拠なのでここはあまり代わり映えしないのは当然か。

驚くことに VirtualBox のマウス統合が初めから有効になっている。
テキストのコピペも Host+F も当然のように使える、親切すぎて笑った。
でもマウスホイールがまったく有効にならない…VirtualBox ドライバのせい?

デフォルトの確認、Apache はやはり無いか。
gcc も無い、Python と Perl だけだ、mono はいらないから無くて嬉しい。
Gedit は当然無いけど Totem はしっかりあった、よしよし。
PyGtk はどうだ?

pygtk_qt

問題なく使えるね。
アップデートをとりあえず済ませてとにかく Opera のダウンロードだ。

opera_linux

Mandriva があるじゃん、つか Opera はこんなに沢山サポートしていたのか。
rpm をダウンロードしてダブルクリックで普通にインストールできる。

opera_kde

まあフォントについては解っていたんだが、後で変更しよう。
それより検索バーをドロップダウンしても文字入力ができるぞ!
やはり Qt 製アプリなんだから KDE のほうが相性がいいみたい。
それより何もしていないのに Frash てか YouTube が見られる、おいおい。

SeeMe はどうだ?

non_wnck

wnck が無い…まあそりゃ KDE だし。
でも wnck の import と Opera 起動チェックを消したら普通に使える。
seeme シェルスクリプトのダブルクリックで起動できない、しかたがないから端末で。

Y901x はどうだ?
こっちは dbus-python が無い、予想はしていたけど。
dbus 関連を削除すれば起動できるけど D&D 処理が Nautilus 依存でして…
結局起動できるだけであった。

sss

うーん、やっぱり GNOME にしようかな?もう少し弄くってみる。
ちなみに私の連休は今日で終わり、なのに何やってんだか。

nautilus-gksu を入れる人ってバカなの?

nautilus-gksu を入れる人ってバカなの?

#!/bin/sh
gksu gnome-open $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS

のたった一行のコマンドを Nautilus スクリプトに登録するだけで同じことができるのに。
ちなみに xdg-open だと gksu では開かない、そういうもの?

Nautilus をスクリプトで拡張

久々に覚書ページを更新した、もう少しこの手のネタが欲しい。
それにしてもいつまでたってもサルのままな Ubuntu 使いが多すぎる。
今のままじゃ Ubuntu Linux を使っているというと笑われてしまう日は近いよ。

多分私は Windows 7 から Windows というか .NET Framework メインに戻る。
もしくは他のディストリビューション、でも Opera が正式対応していないと困るんだが。
他に選べるのは Mandriva, SuSE, Fedora くらいかな。
実は今 Mandriva の KDE 版 One を落としている真っ最中だったりする。

Y901x のファイル切り替えでビリビリ音が出る場合があった。
単純にファイル切り替え時にタイマーを止めるのを忘れていただけだった…

やっと原因が解ったので他ちょこっと弄くって v0.1.9 の公開。

ってお知らせしても多分コレを使っているのは作った本人だけなんだろうな。
もうちょっと Linux での需要がありそうなものを作ったほうが良さげ。

GnomeVFS を利用した Palepoli の Linux 版とか…
Y901x 解説の MIME Type 取得方法で Blog にリンクというのもどうかと思ったし。
とはいえ

mime_copy

Gnome では Nautilus のプロパティから普通にコピーできるんで意味無いかも。
つーかそういうものこそ Nautilus スクリプトで十分なんだよなぁと。
でも多くの Ubuntu ユーザーの現状を考えると…とか思ってしまいますね。

Ubuntu Templates Directry

Nautilus のメニューにあるテンプレート。

ぱぇぽぃ2 ? Blog Archive ? テンプレートとスクリプト

は何を今更知ったが標準ディレクトリの「雛形」を読み出すらしい。
って私はそのディレクトリは削除しているんですけど、日本語名なのが気に入らなくて。
しかしあったほうが便利っぽいので使ってみようと思う。

Ubuntu日本語フォーラム / “Templates” の訳語「雛形」の採用理由について

検索すればアルファベット化方法も即見つかるけどディレクトリ名に大文字を付けたくない。
Python をやって推奨の「型名や定数以外では小文字」という掟を守った結果そんな人になった。
というか /home/sasakima-nao/Templates って一つだけ大文字でおかしいだろ…

何よりそんなに開くディレクトリでもないのに home にあってもしょうがない。
だから消しているんだがテンプレートを使いたいなら作るしかない。

それならば隠しディレクトリにしてしまえばいい!
ということでやってみた。

まず「システム→設定→自動起動するアプリ」をメニューから選択。
「ユーザー・フォルダの更新」のチェックボックスを外しておく。
これが有効だとログイン毎に自動生成されるらしい。

auto_exec

んで Nautilus から ~/.config/user-dirs.dirs を Gedit なんかで開く。
XDG_TEMPLATES_DIR に自分で用意した隠しディレクトリを書き込む。
画像を見ると解るけど「デスクトップ」だけはそのまま使っている私、なんか慣れたし。

dirs

んでそのディレクトリにテンプレートを自分で突っ込む。
後はログアウト、ログインで見事 Nautilus でのテンプレートが有効に。

new_file

これでテンプレートが使えてかつディレクトリは普段表示されない環境のできあがり。
Windows はもっと酷いけどあまり開かない標準ディレクトリって表示してほしくないよね。

ついでに。
このディレクトリを開くには Nautilus メニューの「移動(G)」から一発です。

Python gnome Module

Vista に変更中なのに何故か VirtualBox 上の Ubuntu 8.10 を。

gnome

bonobo や gnomevfs は解るんだけど gnome って何?
インタラクティブシェルで

import gnome
dir(gnome)

とやるとズラっと、どうも GNOME に対し何か行うモジュールのようで。
解りやすそうなメソッドを何か使ってみよう。

import gnome
gnome.url_show("http://palepoli.skr.jp/")

とやってみるとやっぱり Firefox が立ち上がって我がサイトを表示。
なんだよ、xdg-open を外部呼び出ししなくてもこれでイケるやん!

こんなことができたのね、もう少し地味に調べると面白そうです。
つーてもこういう Python 限定では Devhelp にあるはずがないしなぁ。
$ pydoc gnome
で見てもちょっと解りにくいのが難点かな。

しかし秀丸では今となってはネタが書きにくい、Gedit に慣れすぎた。

realize signal

Y901x はステータスバーを GtkVBox で自作しているわけなんだが…

今まで GtkWidget 上のマウスカーソルを変更するのに expose-event シグナルを利用していた。
Widget 表示後に変更しないと例外でスローされてしまうからである。
でもそれって realize シグナルでイケたのね…

class CStatusBar(gtk.VBox):
    """
        Instead GtkStatusbar
    """
    def __init__(self, num, window, arg=None):
        #
        # etc...
        #
        ##self._first_show = False
        ##grip.connect("expose-event", self.__on_expose)
        grip.connect("realize", self.__on_realize)
        #
        # etc...
        #

    def __on_realize(self, widget, event=None):
        """
            cursor change
        """
        cur_grip = gtk.gdk.Cursor(gtk.gdk.BOTTOM_RIGHT_CORNER)
        widget.window.set_cursor(cur_grip)

    """def __on_expose(self, widget, event):
        if not self._first_show:
            cur_grip = gtk.gdk.Cursor(gtk.gdk.BOTTOM_RIGHT_CORNER)
            self._im.window.set_cursor(cur_grip)
            self._first_show = True"""

余計な自前フラグも不要だし圧倒的に簡単じゃないですか。
realize はマウスカーソルを変更したい Widget 自体のシグナルを利用しませう。

もう一つ実は気にしていてほったらかしていた部分。
Resize Grip を画像で表示していたこと、結構違和感がある。
せめてデフォルトの Grip Image を表示できないものか。

gtk.Style

色々探して GtkStyle に paint_resize_grip というメソッドを発見。
コレだとよく解らないので Devhelp から gtk_paint_resize_grip を検索。

paint_resize_grip

しかし思うんだが C 言語が解らないで PyGtk アプリを作るなんて不可能だ。
最低 Devhelp が理解できないと誰かが書いたコードのコピペしかやれない。

まあそれはよくて、ということは下記でイケそうだ。

class CStatusBar(gtk.VBox):
    """
        Instead GtkStatusbar
    """
    def __init__(self, num, window, arg=None):
        #
        # etc...
        #
        """self._im = gtk.Image()
        path = os.path.dirname( __file__ ) + "/img/grip.xpm"
        self._im.set_from_file(path)
        grip = gtk.EventBox()
        grip.add(self._im)"""
        grip = gtk.DrawingArea()
        grip.set_size_request(16, 16)
        grip.set_events(gtk.gdk.EXPOSURE_MASK | gtk.gdk.BUTTON_PRESS_MASK)
        grip.connect("expose-event", self.__on_grip_expose)
        #
        # etc...
        #

    def __on_grip_expose(self, widget, event):
        """
            Draw Resize Grip
        """
        widget.style.paint_resize_grip( widget.window,
                                        gtk.STATE_NORMAL,
                                        None,
                                        None,
                                        None,
                                        gtk.gdk.WINDOW_EDGE_SOUTH_EAST,
                                        event.area.width - 16,
                                        event.area.height - 16,
                                        16,
                                        16)

nomal_statusbar

GtkDrawingArea では GtkEventBox とは違い set_events する必要がある。
grip のサイズを 16×16 に限定しているけどコレでいい?

というかこれだけだと Dust とかのテーマでは Grip Image が追従しない。
と思ったけど Firefox も同じじゃん、それならコレでいいやという感じ。
素直に GtkStatusbar を使えば Gtk+ が勝手にやってくれる。
けど Gedit のように境界線が途切れてしまうし、Gtk+ も困ったものだ。

最後に何だかよく解らなかったので *.pyc のキャッシュは毎回同梱していた。
けど無駄にも程があるので今回から省いて配布するようにした。

ということで Y901x 0.1.8 の公開です。
単なるお知らせだけじゃツマランのでコードも貼ってみました。