Nautilus 3.16 scripts folder

Nautilus 3.16 には色々困った。

拡張スクリプトの順番が滅茶苦茶になってしまった。
最初は更新日時順だったがリネーム等をしているとワケワカに。
名前順に変更しようと手段を探しているができないみたい。

しかも更に何を今更ファイル名のアンダーバーをニーモニックにするとは。
いや、ニーモニックは便利だけど矢印キーで充分だったし。

nautilus_script_sort

しかたがないのでこうしてみた。
私的にファイル名にアンダーバーが使えないって凄く不便。
ファイル名はマイナス記号で代用できるけど順番は名前順にしてほしい。

更に詳細表示に変更したらナンジャコリャ!
月とかはしっかり日本語になっているけど昨日は Yesterday。
年月日は何故か US フォーマットで表示、勘弁してよ

listview

それと何故だかわからないけど。
設定ダイアログをマウスで移動すると本体がくっついてくる。
他のアプリではそうならない、詳細表示の表示確認ができなくて困る。
しかも設定ダイアログを出すと二回に一度は Nautilus が落ちる。

あと Nautilus を 2 つ立ち上げてファイルを DnD するときだけど。
ドラッグ時にサイドバーが一々反応するようになった、それも敏感に。
3.14 まではこんな動作しなかったはずなんだが。
これじゃ上下でしか DnD できない、おまえは Explorer か!
Windows の悪い所なんかマネしないでくれよ。

Gedit も少し変。
終了時に保存していないダイアログを [はい] にしても終了はしない。
保存したタブ分が残るのは仕様変更なのだろうか?

致命的なバグは無いけど正直使い辛くなった。
でもこういうのは多分次バージョンまでこのままだと思う。

次回からプログラミングネタに戻る予定。
GtkBuilder なんてのがあるらしいし。

Fedora 22 Workstation Install @ SSD part2

Fedora 21 からの環境再構築でまず困ったこと。
Nautilus から F2 を押して標準ディレクトリ名を変更すると以前は

~/.config/user-dirs.dirs

に繁栄されていたはずなんだけどガン無視された。
今回は自分で書き換え必須、一応書くと再ログインで繁栄される。

default_name

次はアプリの導入だ。
絶対に必要な Google Chrome をダウンロード。
狐はコレを落とすための道具になってしまっているのは筆者だけ?

なんか Chrome が SE Linux に引っ掛るんですけど。
使えなくはないので様子見、恒久にダメなままならコレを打てばいいはず。

sudo setsebool -P unconfined_chrome_sandbox_transition 0

相変わらず日本語プロポーショナルフォントがない。
gnome-softwere から VL Pゴシックを探すも何故か見当たらない。
しかたがないので dnf コマンドで導入。

sudo dnf install vlgothic-p-fonts

動画や音声の codecs が最初から gnome-softwere のアドオンにある。
でもインストールはできない、やはり RPM Fusion の登録は必須。
GNOME 公式のコーデックうんぬんはつまりこういうこと?

でも今回は libav もココから入れられるようになった。
コレもまさか筆者のブログの影響?

役立たずだった gnome-softwere の検索窓は少し改良されている。
[dco] のみ打ち込んだだけで dconf-editor が見つかった。

gnome_softwere1

でも sylpheed は全部打っても見つからない、検索の基準がワカラン。
UNIX 系の検索がコレでいいの?マジで???
インターネットカテゴリからすぐ見付かるからいいけど。

keepassx がどのカテゴリにもない。
keepass は mono+WindowsForm のゴミ糞なので間違えて導入しないように。

monoapp

keepassx はコマンドで、今回は Qt4 が最初から入っているみたい。

sudo dnf install keepassx

PHP 等は当然コマンド導入。

リポジトリにはあるけどコマンドでないと導入できないものばかり。
サルを振い落すならこれでいいけどさ。
現在本当に Linux を使っている人なら苦にならないどころが常識なので。

大衆をタッチ操作に誘導を狙ったなんとかエイトの結果がアレだし。
Fedora, GNOME のこの「サルは使うな、つか死ね」路線は貴重。
ネクラでキモチワルイ奴(つまりネラー)は絶対に絶対に使わないでね!

Fedora Linux Tips – L’Isola di Niente

httpd.conf から public_html 関連が無くなっているな。
調べなければいけないけど気が向いたら(ぉい!
http://localhost/ だけでアクセスは問題無し。

それ以外の自作まとめはほぼ書き換える必要無さそう。
デスクトップアイコンが少々カッチョよくなっている。

icon

続く、かも。

Fedora 22 Workstation Install @ SSD

今年も Fedora アップデートの季節がやってきた。
珍しく予定どおりの日付で、遅れることに慣れてる自分が怖い。

Fedora Workstation

早速 Workstation x86_64 の iso をダウンロード。
ブラウザからクリックでは失敗しまくるんですけど…
右クリで URL コピーして wget コマンドなら落とせた。

インストール前に Fedora 21 から持っていくファイルの整理。
bin ディレクトリ、Gedit, Nautilus の自作拡張、Sylpheed の設定。
忘れちゃいけない .config/gtk-3.0/bookmarks

他は人それぞれ、筆者は実験用のローカルサイト等。
tar.gz で固めて外付け HDD にバックアップ。

最近は動画や画像を全然落とさなくなったなぁと気が付く。
Web 観覧のメインが iPhone になっている筆者の現実だし当然か。
パソコンはサーバー用途や何かを作る道具という本来の姿になっただけ。

ということで、brasero で iso を DVD-R に焼く。
SSD を Fedora 20 が入っていいたものに交換し上書きする。
Phenom II 955, AMD 880G マシンはいまだに現役です。

Live を立ち上げる、英語で試用かインストールかの選択。
筆者は当然のようにとっととインストールを選ぶ。
たしか以前はイキナリ日本語になっていたような…

アシスタントの最初で日本語を選択すると即時繁栄される。
次に進むとキーボードの選択ができるようになっていた。
US キーボードを使っている筆者みたいな人はココで変更する。

空の SSD や領域確保済みなデュアルブートなら即インストールできるはず。
今回は上書きなので領域の再利用ボタンで旧パーテイションを全部削除指定。

以上、準備は終わったのでインストール開始。
インストール中に root と自分のパスワードを指定する。
[このユーザーを管理者にする]
のチェックを忘れずに。

毎度ながら終了後に[再起動]ボタンを押しても何もおこらない。
自信で Live を終了する必要あり、右上ボタンからね。
再起動直後にイジェクトボタンで DVD-R を取り出す儀式もそのまま。
ここだけは Ubuntu のインストーラを見習ってほしいよ。

GUI ログインのデフォルトは X のままみたい。
Wayland はまだ

初回起動のアシスタントで ibus-kkc が選択できるようになった。
日本語(かな漢字)がソレね。

fedora22_kkc

それと今回から入力ソースの順番を GUI で変えられるようになった。
もしかしてこのブログって本家から参考にされている?

ibus_kkc

Alt+Enter で直接入力とひらかなを切り替えたいのでキーボードの設定を弄る。
/usr/libexec/ibus-setup-kkc で初期入力モードとショートカットを弄る。
日本語キーボードではないので Zenkaku_Hankaku 部分を変更。
これは Fedora 21 の時と同じ。

とにかく Fedora 21 時のような日本語圏での不満は無くなった、かな。
相変わらず初期時はおバカな変換をするけどすぐに学習してくれる。

GNOME 3.16 リリースノート

GNOME については上記のとおりだね。
バカデカくなったアイコンはコレでも中、大中小の三種類しか選べない。
記憶しないので違和感がある人は設定で初期値を小にするといい。

ゴミ箱に捨てるのは本当に Delete キーのみでよくなった。
もし間違えて捨てた時には即元に戻せるボタンが出るのはナイスアイデア。

通知領域がカレンダー部に統合され下には出なくなった。
って我が clipoli みたいな常駐アプリはどうなるの?

clipoli_gnome316

左下に出るようだ、しかし左クリックでメニューが出ないぞ。
うーん、どうするか考えておく。

マウスを下にグイッとしても何も起こらなくなったのは嬉しいよ。
邪魔なだけだったしタッチパネルの時代にアレは無いし。

書いていないけど標準アプリのアイコンが専用 SVG 画像になっていた。

Eye of GNOME からやっとメニューバーが消えた!
マウスを被せると次画像に進んだり回転のアイコンが、コレは便利!

eog316

でもコレって完全にマウス用だよな。
タッチ時にはフリック操作になるのだろうか。

しかし何故だ?
gnome-terminal には今でもメニューバーって違和感凄いぞ!

terminal

パッと気が付いたのはこのくらい。
それより久々に記事を書いたら WordPress で投稿できなくて焦った。
WordPress 4.2.1: 新規投稿ができないバグ | appling weblog
サボリすぎた、色々やっていたら日付けが変わっちゃったよ!
続く。

g_filename_from_uri and GFile

iPhone と Linux の接続は AFC プロトコルで繋る。
この URI を Gio と GLib の関数でフルパスに変換してみる。

#!/usr/bin/env python3
 
from gi.repository import Gtk, Gdk, GLib, Gio
 
class DWin(Gtk.Window):
    def __init__(self):
        """
            DnD Window
        """
        Gtk.Window.__init__(self)
        self.connect("delete-event", Gtk.main_quit)
        # DnD
        dnd_list = Gtk.TargetEntry.new("image/jpeg", 0, 0)
        self.drag_dest_set(
                Gtk.DestDefaults.MOTION |
                Gtk.DestDefaults.HIGHLIGHT |
                Gtk.DestDefaults.DROP,
                [dnd_list],
                Gdk.DragAction.COPY )
        self.drag_dest_add_uri_targets()
        # GtkLabel
        self.label = Gtk.Label("Please drop your files")
        self.add(self.label)
        #
        self.show_all()
 
    def do_drag_data_received(self, context, x, y, data, info, time):
        """
            URI to FullPath
            Gio or GLib
        """
        uri = data.get_uris()[0]
        try:
            # GFile
            f = Gio.File.new_for_uri(uri)
            path = f.get_path()
            s = "{0}\n".format(path)
            # GLib
            afc = GLib.filename_from_uri(uri)[0]
            s += afc
        except Exception as e:
            # Error
            s += e.message
        self.label.set_text(s)
 
DWin()
Gtk.main()

seruria

一年で 8500yen しか課金していないのにセルリアを持っていてごめんよ!
いやそれは関係なくて、ウチ姫を知らないとワカンナイし。

g_filename_from_uri 関数は AFC の URI を変換できない。
この関数はファイルが存在するかどうかは関係ないからかな。

一手間増えても素直に GFile を使ったほうが良いようです。
実際にアクセスするか変換するだけかの違いがモロにでるのね。

ところで変換されたフルパスがナンジャコリャに見えるけど。

mount

普通にマウントされているんだなぁこれが。
なのに Shotwell ではインポートがエラーになるのは何故だろう?

まあ自分は Nautilus で DnD して保存で充分なんだけどne!

cairo RSVG

GtkPixBuf は SVG 画像をもそのまま扱えて普通に描写できる。
線や図形の描写 – L’Isola di Niente
上記コードで普通に表示できると確認できます。
しかし拡大すると…

airplane

eog は綺麗に引き伸ばしされているのに対し、コッチは超ギザギザ!
MComix で試してもギザギザ、Shotwell は表示すらできない。

eog ってショボイと見せかけて実はこんなに優秀だったのかよ…
ではなく。
どうすれば綺麗に表示できるか考えて調べて色々試してみよう。

ーーーーー

自前ソースがギザギザなのは少し考えれば当然だと解る。
なにせ svg を一度 Bitmap 化して引伸す工程にしているのである。
これではベクターデータである svg での曲線が滑らかという恩恵が無い。
結果 jpeg 画像等と何も変わらないギザギザになる。

つまりベクターデータのまま拡縮して直接描写する必要がある。
メタデータを直接編集すればなんとかなる。
って、だからベクターデータの加工には面倒が付き纏うんだよ。

もしコレが特定ライブラリを使えば Easy Mode になるのだったら…
なんて誰でも考え付くよね。
いきなりそのものズバリを見つけてしまった。

RSVG Libary Reference Manual
librsvg – Wikipedia

GtkDrawingArea は GTK3 から cairo で描写している。
なので cairo から rsvg を使う方法を探す。

Cairo: A Vector Graphics Library: Cairo: A Vector Graphics Library

Fedora 21 で rsvg モジュールはデフォルトでは入っていない。
だけど gir には Rsvg が最初からあった、コレを使おう。

cairo って PostScript や PDF も扱えるのか。
面白そうだけど今回は細かいことは置いておいて。
Python 用 cairo ライブラリから SVG を描写する方法を。

Surfaces ? Pycairo v1.10.0 documentation

サーフェス(面)のサイズを変更するには Matrix を使うのか。
1,4 番目引数で x,y のサイズということみたい。
ということで、サーフェスなので paint でなくレンダリングする。

#!/usr/bin/env python3
 
from gi.repository import Gtk, Gdk, Gio, Rsvg
import cairo, sys
 
class Win(Gtk.ApplicationWindow):
    def __init__(self, app):
        """
            DnD SVG Viewer
        """
        Gtk.Window.__init__(self, application=app)
        # svg
        self.svg = None
        # DrawingArea
        self.da = Gtk.DrawingArea()
        self.da.connect("draw", self.on_draw)
        self.add(self.da)
        # DnD
        dnd_list = Gtk.TargetEntry.new("text/uri-list", 0, 0)
        self.drag_dest_set(
                Gtk.DestDefaults.MOTION |
                Gtk.DestDefaults.HIGHLIGHT |
                Gtk.DestDefaults.DROP,
                [dnd_list],
                Gdk.DragAction.MOVE )
        self.drag_dest_add_uri_targets()
        # self
        self.set_title("DnD SVG Viewer")
        self.resize(200, 200)
        self.show_all()
 
    def do_drag_data_received(self, drag_context, x, y, data, info, time):
        """
            On Drop
        """
        uris = data.get_uris()
        f = Gio.File.new_for_uri(uris[0])
        path = f.get_path()
        # Recreate svg
        self.svg = Rsvg.Handle.new_from_file(path)
        # invalidate
        self.da.queue_draw()
 
    def on_draw(self, widget, cr):
        """
            Draw x5 SVG
        """
        if self.svg:
            # x5 size
            matrix = cairo.Matrix(5, 0, 0, 5, 0, 0)
            cr.transform (matrix)
            # Render
            self.svg.render_cairo(cr)
 
class App(Gtk.Application):
    def __init__(self):
        Gtk.Application.__init__(self,
                application_id="apps.test.dnd",
                flags=Gio.ApplicationFlags.FLAGS_NONE)
         
    def do_activate(self):
        Win(app)

app = App()
app.run(sys.argv)

svg_5x

これならギザギザにならずに拡大することができる。
別途でインストールするものは何もないのに、Linux 恐るべし。
いやまあ全部 GNOME プロジェクトのおかげなんですけど。
結論、cairo って実はこんなに面白いんだyo!