月別アーカイブ: 2023年5月

GtkFileLauncher

Gtk.FileLauncher

Gtk 4.10 にこんな class が追加されていた。
いやえっと、ファイルからアプリを起動するなら gio コマンドでよくね?

#!/usr/bin/env python3

import gi, subprocess
gi.require_version('Gtk', '4.0')
gi.require_version('Adw', '1')
from gi.repository import Gtk, Adw, Gio

PICFILE = './test.jpg'

class Win(Gtk.ApplicationWindow):
    '''
        Default App Launcher: Sample Code
    '''
    def __init__(self, a):
        # Set Adwaita Style
        manager = Adw.StyleManager.get_default()
        manager.set_color_scheme(Adw.ColorScheme.DEFAULT)
        # init
        Gtk.ApplicationWindow.__init__(self, application=a)
        # button
        button = Gtk.Button(label='Launch test.jpg')
        button.connect('clicked', self.on_button_clicked)
        self.set_child(button)

    def on_button_clicked(self, button):
        subprocess.run(['gio', 'open', PICFILE])

app = Gtk.Application()
app.connect('activate', lambda a: Win(a).present())
app.run()

みたいに。

GtkUriLauncher もある、gio コマンドは URI でもイケるんだが。
とはいえ、わざわざ追加したということは何かあるんだろうなって。
とっとと試してみる、使い方は GtkFileDialog と同じみたいね。

#!/usr/bin/env python3

import gi
gi.require_version('Gtk', '4.0')
gi.require_version('Adw', '1')
from gi.repository import Gtk, Adw, Gio

PICFILE = './test.jpg'

class Win(Gtk.ApplicationWindow):
    '''
        GtkFileLauncher: Sample Code
    '''
    def __init__(self, a):
        # Set Adwaita Style
        manager = Adw.StyleManager.get_default()
        manager.set_color_scheme(Adw.ColorScheme.DEFAULT)
        # init
        Gtk.ApplicationWindow.__init__(self, application=a)
        # button
        button = Gtk.Button(label='Launch test.jpg')
        button.connect('clicked', self.on_button_clicked)
        self.set_child(button)

    def on_button_clicked(self, button):
        f = Gio.File.new_for_path(PICFILE)
        # GtkFileLauncher
        launcher = Gtk.FileLauncher(file=f)
        launcher.launch(self, None, self.on_launch_finish)

    def on_launch_finish(self, launcher, res):
        try:
            result = launcher.launch_finish(res)
            if result:
                print('Success')
            else:
                print('Failed')
        except Exception as e:
            print(f'Launch Error: {e}')

app = Gtk.Application()
app.connect('activate', lambda a: Win(a).present())
app.run()

launch

そういうことか!

デフォルトアプリではなく何で開くかを選択できる、ということだった。
てか GtkAppChooserDialog の後継でした、名前がまぎらわしいわ!
デフォルトアプリ起動なら上のコードほうが簡単です、と一言。
ということで。

hibari

今日が囀り続けるキビタキを三十分追いかけ、とうとう一枚も撮れず。
ヤケクソで午後はキジを探したら、ものすごく遠くにしか出てこないし。
あきらめて帰ろうと思ったところにヒバリが現れてくれました。
ヒバリのトサカって正面から見るとこんな感じなんだね。

Nemophila

オリンパスブルー(iFinish) で青い花を撮ったらどうなる?

春だからとオオルリやキビタキばかり探していてもつまんない。
野鳥撮影は撮れるかどうかが重要で絵作りは二の次なのがどうも。
というか図鑑を埋めるのが目的ならポケモン GO でいいじゃない。
いや図鑑埋めは楽しいです、だけどそれだけじゃねって。

なので今日は冒頭のテーマでやってみる。
幸い今はネモフィラの時期です。

筆者が住んでいる尾張地区でネモフィラは 138 タワーが有名。
タワーをバックに広がる写真が検索で簡単に見つかるはず。
筆者はヒネクレているのであえて外して小牧の某公演へ。
いや、撮影している人は普通にイッパイいましたけど。

nemophila

普通に撮影、うんやっぱり青が少し濃くなるような気が。
でもつまんない写真、スマホでパンフォーカスのほうが綺麗かも。

nemophila

アーチ橋をバックに、フルサイズ換算 40mm がいい感じ。
やはりレフ機やミラーレスで撮影するなら背景まで考えないと。

nemophila

青空バックで下から、フルサイズ換算 34mm いつものやつ。
中央の白い部分が隠れて透明な青い花みたいになった。

nemophila

少し引いて微妙に異なる色々な青、オリンパスはやはり青が綺麗。
正面からも青空背景にできればさらに良し、ここじゃ無理だけど。

てかマイクロフォーサーズの F5.6 でこんなに背景がボケるんですが。
フルサイズの必要性っていったい何なんでしょうね。
ちなみにオオルリが囀っていましたが見つけられませんでした。

Fedora 38 mpv

Fedora 38 にしてから動画のハードウエアアクセラレーションが効かない。
それどころか純正の Totem で何も再生できない、なんだこれ。
何度かアップデートしたけど改善しない、バグってことじゃないみたい。
ということでそろそろ本気で原因追求を。

Intel Graphics – Best practices and settings for hardware acceleration?

libva-intel-driver と libva-intel-hybrid-driver は?
書いていないけど Intel グラの人はコレいります、NVidia とかは知らん。

intel-media-driver が入っていなかったので dnf で導入。
LIBVA_DRIVER_NAME 定義は多分 GStreamer しか関係ないと思うけど一応。

それだけで Totem 再生が可能に、アクセラレーションもバッチリ。
mpv は何も変わりません、なんじゃそれ!
Totem ならアクセラレーションが動くんだから mpv だけの問題か。

mpv – ArchWiki

改めて設定を弄くってみたけど改善しない。
下のほうに書いていた -v オプションで長いログとにらめっこする。

mpv -v 4Kvideo.mp4
...
...
...
[vd] Codec list:
[vd]     libopenh264 (h264) - OpenH264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
[vd] Opening decoder libopenh264
[vd] No hardware decoding available for this codec.
[vd] Using software decoding.
...
...

H.264 デコーダーが libopenh264 しか見つからない、ということみたい。
でもってコイツはハードウエアデコード未対応、原因はコレか。
というかそもそも ffmpeg 純正デコーダーは入っていない、ということを発見。

Fedora 38 Install | Paepoi Blog

ffmpeg-free が省いたのは wmv だけじゃなかったのね。
使い物にならねぇパッケージ作るなら最初から「自分で入れろ」でいいよ。
ということで普通の ffmpeg に上書きします。

sudo dnf install --allowerasing ffmpeg

mpv でアクセラレーションが動くようになりました。
ついでにやはり wmv が再生及びサムネイル可能になりました。
今後 Fedora アップグレード毎にこれやらなきゃいけないんだろうな多分。