Ubuntu」タグアーカイブ

Eye of GNOME プラグインは面倒

Eye of GNOME でリネームプラグインを作る。
って書いたけど本当に作れるんかいな?

Gedit/Plugins – GNOME Live!
EyeOfGnome/Plugins – GNOME Live!

gEdit とは扱いが随分違うなぁ… HowTo も何もない、勘で作れと?

Eye of GNOME Reference Manual

これ Python にバインディングされているのだろうか?

EyeOfGnome – SunagaLab

以前貼った所をよく見ると window.get_image() メソッドが使えているからできるのだろう。
ただ、9.04 付属の 2.26.1 はこの機能が標準装備、進化って悲しいなぁ。
他の Python への変換は勘でなんとかなると思う、今更 C で作りたく無いよ。

とにかく実際に書いてみるのが一番早い、とりあえず Plugins ページ一番下にあったコードは動いた。
次は gEdit プラグインを作ったのと同じように MessageBox を出すのを作って試す。

っっって

何これ、Eye of GNOME ってプラグインから例外を出すと終了してくれない!
端末から eog で起動して終了しなかったら Ctrl+C で強制終了さなきゃやってられん。
GUI アプリでコレをやるとは思いもしなかった。

eogdebug

2 と出ているのは debug 用でどこまで動いたかを print しているだけだから気にしない。
最初それが解らなくて再起動やログアウトをやるという無駄なことをしてしまった。

こんなことをやっている間に気がついた。
Ubuntu 9.04 って Ctrl+Alt+BackSpace で X の再起動ができなくなっている!

Ubuntu 9.04 Beta ctrl+alt+backspaceを有効にする。

$ sudo apt-get install dontzap
$ sudo dontzap -d

しなきゃいけないのね、何故わざわざ無効にする必要があったのか理解できない。
おいおい、そんなことをしている間に今日が終わっちゃう。
はたしてこの計画は進むのだろうか?

Linux のゴミ箱

Y901x 0.1.1 バグ修正を公開しました。
ココにリネーム方法を書いたのに少し書き換えた私がアホだった…

ところで

何を今頃気がついたが os.remove でファイル削除するとゴミ箱に入らずに消滅する。
そういえば UNIX には元々ゴミ箱なんて無かった、つーか rm で削除すると消滅ですがな。

何か Nautilus に慣れてしまってゴミ箱に入るものだとうっかりしていた。
Windows ShellAPI の SHFileOperation みたいな方法は無いのだろうか?

ちなみに Ubuntu のゴミ箱に捨てたファイルは以下にある。

~/.local/share/Trash/files

しかし調べてみるとディストリビューションによって下記もあるようで。

~/.Trash
~/.Trash-0

ゴミ箱 – Wikipedia

規格の範囲でファイルマネージャ毎に決めているっぽい。
FreeDesktop.org での規格なら xdg-trash とか、無いか…

Ubuntu — Details of package xdg-utils in jaunty

ついでに、メニューのインストールには xdg-desktop-menu を本当は使わなきゃいけないのね。
make や dpkg は勝手にそれをやってくれるということでいいのかな。
Y901x のインストールスクリプトは言うまでもなく直で突っ込んでいる、知らなかったよ。
Ubuntu 限定に近いから別にイイんだが真似しないほうがいいよあの方法は。

Ubuntu日本語フォーラム / HOWTO: CLIからゴミ箱を使う

こういうのがあるのか。
端末からゴミ箱利用はかなり微妙だけど保険にはなるかも。
間違えて Blog の画像を全部消したコトがある私はそう思う。
でもレンタルサーバーで FTP ソフトを使ったら全く意味が無いとも。

コレをインストールしてもらえば…だからソレはやりたくない。
よし決めた、面倒だから当面は消滅のままでいいや!これが私の(略

VirtualBox の今後

Ubuntu 9.04 上の VirtualBox ose にとりあえず Windows XP を再投入。
それは普通に終わり、さて GuestAdditions だ。

メニューから普通に実効したが GuestAdditions がマウントできない!
何か変だ、落ちてきた iso をよく見るとたったの 32 bytes だった。
んなわきゃネェ!中身を見るとやっぱり HTML だ、つまりダウンロード失敗。

http://dlc.sun.com/virtualbox/2.1.4/
ココから無理やり落と…せない。

wget http://download.virtualbox.org/virtualbox/2.1.4/VBoxGuestAdditions_2.1.4.iso
も駄目だ、あきらめよう。

追記 @ 2009.05.03 17:45
駄目元で今日 wget したら落ちてきた!昨日がたまたまなのか修正なのかは解らない。
本体からは試していないけど駄目だったら上のコマンドやってちょ。

Sun の配布している通常版 VirtualBox でも落とすか。
…って何?いつからユーザー登録が必要になったの。
多分これが原因で弾かれているんだなと、これじゃ今後も不具合出まくると思う。
そのうち修正されると思うけど今欲しいんだが。

Windows 版なら窓の杜に…いつのまにか Sun から落とせになっている。
それでもこっちと違い GuestAdditions が同梱なだけマシ、最近のは知らないが。
通常版なら Linux 用にも同梱されているのかな?無かったら終わりなんですけど。

やる気をなくした、このままでも遅くて少し不便ながら使えるからいいや。

次は Ubuntu 8.04 だ。
それは普通に終わり、やっぱり画面が 800×600 なので xorg.conf の書き換え…
ってビデオドライバーは…そうかこのまま使うしかないのか。

最後の手段、コイツをダウンロード。
VirtualBox用仮想マシン | Ubuntu Japanese Team

アップデートしたらマウス統合が無効になっちゃった。
まあいいや、Windows XP も同じだし逆に間違えないだろう。

弄くっていると X が落ちまくる、3D で使っているのが悪いのだろうか?
Windows と違って再起動するのは X だけで済むけどやはり ATI はまだ相性が悪いっぽい。
とにかく半日以上使ってやっと仮想環境構築が終わったので前日のコードを試す。

desk_all

おぉ動く動く。
PyGtk のサイトで使えるバージョンを確認しても実際に試さないと怖いのよ。

しかし GuestAdditions がどうにかならないと他の OS が入れられないぞと。
Linux は 800×600 以上にならない、VMware なら Ubuntu はドライバー標準装備なんけど。
別の仮想環境を試…ビデオドライバーがありそうなのはこの2つしか無いので選ぶ余地は無いか。
なんか他にイイ方法は無いものか、パソコンの台数を増やしてももったいないしなぁ。

それよりあーあ、仮想の Windows から UnitMovie をリモートして動画結合ができないや。

Ubuntu 9.04 そのよん

さて Ubuntu 9.04 をインストールいたしました、4回め。

こんなブログを運営している人はスナップショットをよく使うと思います。
それで私はこんな覚書を作ったのですが

スクリーンショットを取る

9.04 の標準「スクリーンショットの取得」は神レベル。

screen

あると便利なマウスドラッグでの指定範囲取得が可能になりました。
それだけなら Windows Vista 付属の Snipping Tool と変わらないように思えます。
しかしコレはボタンを押した時点で起動前にアクティブだったウインドウが再アクティブになる。

Snipping Tool 最大の欠点はウインドウが非アクティブ状態でしかショットできなかったこと。
つまりタイトルバーが薄い状態です、濃い状態で画像化したい場合って結構多い。
しかたがないので全画面をスナップしてペイントに張り付けて保存してソレを開いてスナップ…
なんて冗談みたいな苦労をやっていたのは私だけじゃないと思いますけど。

コレはアクティブ状態で選択範囲が普通に取得できる。
あぁこれでもう枠付けや加工をする時意外は Gimp を使わなくてもいいんだ、本気で嬉しい。

toolbar

こうしておいて Snipping Tool のように使おうと思ったけどオプションが無かった…
それだけが残念、まぁちょっぴり手順が増えるだけだしこれでイイかなと。

で、私は Y901x という需要の無さそうな Python 製動画プレイヤーを作っているのだが。

…この Glade で以前の glade ファイルを編集できねぇ!!!!!

上書き保存したら XML が少々違うタグ付けになって読み込めない。
手順が悪いのかな?と思って色々試したけどダメ、上手くいった人いたら教えて。
しかたがないから手書きで XML を編集するはめに、簡便してよ。

とりあえず明日あたりに次版を出した時点で GtkBuilder 形式に変更しよう。
もう LibGlade 形式は消えゆく運命なのかな。

以下 Python 覚書。

PyGTK FAQ Entry @ How can I focus an external window?

これを使って URI を送ったらウインドをアクティブにしようと思っていたんだけど…
gtk.get_current_event_time() がどうしてもゼロになってしまい上手くいかない。
Gtk アプリは URI を渡されてもアクティブ化しないのが普通なのでこのままいくか。
どうもそういう細かい違いが気になるんだよなぁ、WIndows で長くやっていると。

とりあえずフルスクリーンが上手くいきそうだから付けてみる。
ところで GtkMenubar は非表示にするとアクセラレータが効かなくなっちゃうのね…
全部 GtkAccelGroup 利用に書き換えだ、覚書はどうしよう…

ところで今まで多重起動防止でしばらく次タスクが出てしまう件は回避方法を見つけた。

gtk.gdk.notify_startup_complete()

を DBus 経由で URI を渡した後に呼び出せば綺麗に死んでくれる。
コレを呼び出す前にキュー(でいいのかな?)を空にしておいて。

while gtk.events_pending():
    gtk.main_iteration()

つまり簡単に言えば Delphi でいう Application.ProcessMessage() である。
余計に解り憎いわ!いや、私にはこれが一番解りやすいんですけど。
ちょっと Windows が長かったので Linux らしくない説明が多いのはご了承。

Ubuntu 9.04 そのさん

さて Ubuntu 9.04 をインストールいたしました、更に続き。

何か忘れているなぁ?と思いながら Y901x の開発再開をしようとする。

…Glade をインストールしてねぇ!

ということで毎度のように追加と削除から。
あれ?こんなにサイズがデカかったかな…落とすのにえらく時間が掛かるような。
とにかくインストール完了した時点でバージョン確認のために起動。

ちょー!メチャメチャ変わっている!!!

glade_a

v3.4.5 → v3.6.1 なんだがマイナーチェンジに見えないわ。
一応今までに作った y901window.glade は開けるが古さを感じてしまった。
GtkBuilder と Libglade が選択できるのは解っていたが進化が早すぎ、、、、、

GtkBuilder 形式って GtkListStore や GtkTextBuffer も含められるのか。
View と Data をまとめようってこと?それ WPF と真逆だと思うんですけど。
なんかいっぱいウイジェットが増えているし、ガンマ曲線とかって何よ?

他やれることが至れり尽くせりに、旧バージョンはいったいなんだったの。
「展張」とか意味不明すぎる日本語訳はそのままだけど。

せっかくだから UI Mnager を使いたいが使い方がイマイチ解らない。
ググるも見当たらず、又自分で弄くり回して覚書を作るしかないか。
あぁせっかく書いた PyGtk+Glade 覚書は早くも過去の遺物になった。

同時に入る DevHelp もボリュームたっぷりに進化。
Evolution や Totem の Core API まで解説とは…サイズがデカいわけだ。
そうそう、何故か巨大だった文字サイズは普通になった。

devhelp1

Glade 関連だけで長くなりそうなので以後まとめページを作るとして。
開発繋がりで MonoDevelop を少し試してみます。

前回書いたとおり 9.04 では MonoDevelop のみインストールすれば全部揃う。
早速 C# 3.0 仕様に対応しているか簡単に試してみます。

using System;

namespace hello
{
    class Cls
    {
        public string s{get; set;}
        public void write(string t)
        {
            Console.WriteLine(t + s);
        }
    }

    delegate string Delgt(string t, string u);

    /// <summary>
    /// エントリポイント
    /// </summary>
    class MainClass
    {
        private static void DTest(string t, string u, Delgt d)
        {
            Console.WriteLine( d(t, u) );
        }

        public static void Main(string[] args)
        {
            // var が使えるか test
            var s = "あいうえお";
            Console.WriteLine("{0}_かきくけこ", s);

            // 省略プロパティ test
            var ss = new Cls();
            ss.s = "たちつてと";
            ss.write("さしすせそ_");

            // 匿名メソッド test
            DTest("匿名メソッド", "の出力", delegate(string t, string u) {return t+u;});

            // ラムダ式 test
            DTest("の出力", "ラムダ式", (t, u) => u+t);
        }
    }
}

mono_hello

おぉ動く動く。
他人が読みにくいコードを書いて悦に浸りたいなら C# は最強だね。

MonoDevelop の全置換って Tab の正規表現 \t が使えないんですけどぉ、、、、、
gEdit で置換しました。

ん?標準で作成するソースに utf-8 の BOM が付かなくなった。
IDE からソース追加すると元々付かなかったんだが、無しに統一かな。
MSBuild 形式になった sln ファイルには付いている。

bom

Visual Studio は全ファイルに BOM を付けているはずなんだけーが。
てか sln だけ改行が CRLF だよ、ややこしいったらありゃしない。
BOM という概念は撤廃してくれよ、必要なのはもはや MS 関連のみなんだから。

コード保管は随分賢くなったなぁ、リファクタリングはさすがにまだ無いか。
これも長くなりそうなので以後まとめページを作る。

今回は「追加と削除」から手に入る最新開発環境の簡単な紹介でした。