Fedora」タグアーカイブ

espeak-ng

Fedora 36 で espeak を使おうと思ったんだけど。
espeak-ng というものに置き換わっていた。

GitHub – espeak-ng/espeak-ng: eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents.

どうやら日本語等の多言語出力できるようになっているみたい。
だけど日本語で検索しても誰も手段を書いていない、おいおい。。。。。
海外を探して見つけた、-v オプションでイケるようだ。

espeak-ng -v it "Tiro finale"
# Voice Change
espeak-ng -v it+f1 "Tiro finale"

これが本場イタリアの「ティロ・フィナーレ」か!
ネタ古!
いや、そんなことより日本語だ。

espeak-ng

ひらがなやカタカナは問題無し。
スペースがあってもダブルクォートで括ればイケる、区切ってはくれない。
しかし句点は普通に区切ってくれるようです。
アルファベットは半角ならば一文字ずつ読み上げる。
数値は全角半角ともに無視される、長音も同じ。
漢字はやっぱり駄目だった。

拗音や促音もしっかり対応している、と思ったけど。

すごーーい
エヴァンゲリオン
ディーブイディー

なんかは駄目、日本語って難しいですね。
てか、漢字に対応していない時点で日本で運用は厳しいかと。

Comipoli 0.5.0

Comipoli GTK4 版を公開しました。
Linux アプリケーション – Paepoi

アイコンがどうしても設定できず丸一日使った。
application_id と desktop ファイルと SVG アイコンの名前。
コレらの名前は完全に同じにしないと適用されないってことらしい。
そうしないとアプリ名も application_id で表示されるという。

SVG を作るために超久々に Gimp を使った、何年ぶりだろう?
大きいほうは下記を使って手抜きした、いや小さいほうも手抜きだが。
PNG to SVG ? PNGファイルをネット上でSVGに変換する

ss

新しいスクリーンショットはアクティブオーバービューでも使えるぞ!
ほんの出来心で PrintScreen を押したらできてビックリ。

それと関係ないかもだが、Fedora 36 はデフォルト状態で rar を展開できるぞ!
unrar を入れていないのに cbr のサムネイルが表示されてビックリした。
事実ドキュメントビューアーで観覧できる、どうやっているんだ?
いや rar 圧縮はできないんですけど、でも探せば API はあるかも。

そんなことよりコレだ!

new_window

この「新しいウィンドウで開く」がどうしても実装できない。
GTK3 では desktop ファイルに書き込むんだけど同じようにしても出てこない。
事実 gnome-text-editor の desktop には Actions キーなんて無いし。
まだ調べるけど今回は「今後の課題」ということで。

このアプリケーションメニューで複数ウインドウからの選択ができるんだけど。
コレは GtkWindow.props.title を設定すれば自動でやってくれる。

appmenu

HeaderBar を使っていても title プロパティは変更しようね。

後は、Comipoli のソースを見てください。
Y901 シリーズは公開終了、今度は mpv の拡張スクリプトでもまとめるかな。

Fedora 36: ibus-anthy

PageUp/PageDown do not work to scroll candidates ? Issue #27 ? ibus/ibus-anthy ? GitHub

ibus-anthy の変換候補が PageUp/PageDown でページめくりできない件。
ずっと Wayland 対応が理由だと思っていたけどこれバグだったのか。

てかこの uneyama って人スゲェな、よくこんなの見つけたなって。
差分バッチを提供してくれているけど、当ててくれるかどうかだ。

anthy

今の anthy は Red Hat が管理しているはずなんだけどなぁ。
とはいえ anthy って Python 製なんだし。

/usr/share/ibus-anthy/engine/engine.py

を二行ほど書き換えするだけだ、自力バッジでやってもいいかも。

#!/usr/bin/env python3

'''
    コピペして sudo で実行しログインのやりなおし
    sudo python コピペしたソース.py
'''

import os

os.chdir('/usr/share/ibus-anthy/engine')

with open('engine.py') as f:
    txts = f.read().split('\n')
    s = txts[1521].strip()
    if s == 'self.do_page_up()':
        print(f'{s} を self.__page_up(0) に書き換え')
        with open('engine.py', 'w') as f:
            txts[1521] = '            self.__page_up(0)'
            txts[1528] = '            self.__page_down(0)'
            f.write('\n'.join(txts))

一旦ログアウトしてログイン。

よし PageDown が動くようになった。
Python の open ってネストできるんだ、勉強になって一石二鳥。

万が一失敗したら gnome-softwere から入れ直しで元通り。
今まで ibus-kkc に即換えしていたけど当分コレを使ってみる。
mozc は US 配列 RealForce だと不便なだけだし。

あと wmv ファイルがあるディレクトリを Nautilus で開くとが落ちる。
wmv のサムネイルを作成しようとしてクラッシュしているようです。

GStreamer: open source multimedia framework

GStreamer の対策版は出ているようだけど。
令和の現在ではそれほど問題にはならないしコレはのんびり待つか。

PHP を入れたら PHP 8.1.5 になっていた。
筆者の使用範囲では PHP7 と同様だけどコレも勉強しないとな。

今日はここまで。

Fedora 36 Install

Fedora 36 が出ました。
早速 SSD を交換してインストール、今までと同じです。
初期状態を確認したいだけです、新規にする必要はないとは言わないで。

Nautilus のアイコンが青色ベースに変わっている。
でもメニューを見ると GTK3 のままなのか。
F10 でロケーションバーがドロップダウンに、何この挙動?

Gedit は無くなり gnome-text-editor に代わった。
メニューが日本語翻訳され設定が別ウインドウに変更されました。
でもスニペットや外部ツールてかプラグインは使えません。
コレについては後日色々と、筆者は Gedit を入れますけど。

設定は GTK4 化されていますね。
あと gnome-softwere 等の gnome-*** な純正アプリは。
eog 等の半純正は GTK3 のままみたい、GTK3 の時と違って慎重のようで。

そんなことよりコレですよね。

2022.05.22 修正

#!/usr/bin/env python3

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

a = Gtk.get_major_version()
b = Gtk.get_minor_version()
c = Gtk.get_micro_version()
print(f'GTK+ version {a}.{b}.{c}')

'''
# Fedora 35
GTK+ version 4.4.2

# Fedora 36
GTK+ version 4.6.2
'''

マイナーバージョンだけかよ。
でもコレはイケるかな?

python 3.x – Drag and drop with GTK4: connecting DragSource and DropTarget via ContentProvider for derived classes – Stack Overflow

#!/usr/bin/env python3

# https://stackoverflow.com/questions/70921068/drag-and-drop-with-gtk4-connecting-dragsource-and-droptarget-via-contentprovide
# GDK_TYPE_FILE_LIST
 
import gi, sys
gi.require_version('Gtk', '4.0')
gi.require_version('Gdk', '4.0')
from gi.repository import Gtk, Gio, Gdk, GObject

class Win(Gtk.ApplicationWindow):
    '''
        GtkGestureDrag Sample Code
    '''
    def __init__(self, app):
        try:
            Gtk.ApplicationWindow.__init__(self, application=app, title='Drop FIle')
            drop_target = Gtk.DropTarget.new(Gdk.FileList, Gdk.DragAction.COPY)
            drop_target.connect('drop', self.on_file_drop)
            drop_target.connect('accept', self.on_drop_accept)
            self.add_controller(drop_target)
            #
            self.label = Gtk.Label(label='Please drop the file')
            self.set_child(self.label)
        except Exception as e:
            print(e, file=sys.stderr)
            app.quit()

    def on_drop_accept(self, target, drop):
        return True

    def on_file_drop(self, target, value, x, y):
        l = []
        for gfile in value.get_files():
            l.append(gfile.get_path())
        self.label.set_text('\n'.join(l))

def app_activate(a):
    w = Win(a)
    w.present()

app = Gtk.Application()
app.connect('activate', app_activate)
app.run()

fedora36_dnd

gir でファイルドロップができるようになりました。

てかコレで気がついたけど gnome-screenshot が無くなっている。
代わりに Print Screen で範囲指定スクリーンショットが可能になった。
「~/画像/スクリーンショット」に保存される、いや OS 統合はいいと思う。
macOS だってそうなのだから、ね。

HDD マウント等でパスワード画面になると ibus が落ちて日本語が入力不能に。
時々再起動に失敗し電源ボタン長押しで強制終了。
いやー久々に細かい所が不安定だ、何故か喜んでいる筆者であった。

そうだ手動アップデートしなきゃ、イッパイあった。
夜勤準備でもう寝ます、続きは明日にでも。

mpv settings

Fedora 35 にしてから Celluloid がどうにも調子が悪い。
ブツブツとブラックアウトが入る、筆者自作の奴はもっと調子が悪いけど。

原因が解らない、mpv ライブラリが原因かな?
と思い確認のため素の mpv を入れてみた、dnf で普通に入れられる。
コチラはなんともない、てか mpv ってこんな感じだったっけ?
いや以前試しに使ってみたことはあるんだけど、もう何年も前だし。

今の筆者はコレで充分なんだけど、ということで乗り換えすることにした。
で、カスタムする方法を検索していたんですけど。

mpv – ArchWiki

日本語ページでは上記以外は情報が古過ぎで役に立たないな。
とにかく Linux でもハードウエア・アクセラレーションが使えると今頃知った。
あれ?と思ったけど筆者のその手の知識が古すぎるんだな。
それはそうと、Fedora では別途2つのライブラリを追加する必要がある。

Hardware decoding on Linux ? mpv-player/mpv Wiki ? GitHub

# Fedora dnf command
sudo dnf install libva-intel-driver
sudo dnf install libva-intel-hybrid-driver

Intel HD graphics の場合です。
AMD のグラフィックって元 ATI だし Linux への対応なんてお察しで。

準備はこれだけ、後は好みでカスタムしていくんですが拘りが二つ。
Esc はフルスクリーン解除、フルスクリーンでなければウインドウを閉じる。
ようするに Eye of GNOME の動作に合わせたい、筆者自作の奴もそうしていますし。
それとやはりディレクトリ内巡回機能が、プレイリスト化するのメンドイもん。
Ctrl+Down Ctrl+UP が標準では空いているのでココに割り付けしたい。

mpv.io

Lua や Javascript でなんとかなるっぽい。
こいつの js で ls する方法が解らないので Lua を久々に。
Lua の正規表現ってショボいな。
Javascript の /\.(mp4|m4v|mov)$/i を同様に定義できないんだが。
とりあえず *.mp4 だけでやってみた関数群。

ファイル名は何でもいい、場所は一行目に。
2022.01.12 複数の拡張子対応に書き換え、extstr 変数で指定

-- ~/.config/mpv/scripts/mpv_func.lua

extstr = 'mp4,m4v,mov'

-- Esc 時にフルスクリーンなら解除、でなければ終了
function on_escape()
    if mp.get_property_bool('fullscreen') then
        mp.set_property('fullscreen', 'no')
    else
        mp.command('quit')
    end
end
mp.add_key_binding('Esc', 'esc_func', on_escape)

-- Ctrl+DOWN でディレクトリ内の次ファイルを再生
function on_nextfile()
    local ex = false
    local fn = mp.get_property('filename')
    local directory = mp.get_property('path'):match('.*/')
    local pfile = io.popen('ls  "'..directory..'"')
    for filename in pfile:lines() do
        ext = filename:match('.*%.(.*)'):lower()
        if not(extstr:match(ext) == nil) then
            if ex then
                mp.command('loadfile "file://'..directory..filename..'"')
                break
            end
            ex = filename == fn
        end
    end
    pfile:close()
end
mp.add_key_binding('Ctrl+DOWN', 'nextfile_func', on_nextfile)

-- Ctrl+UP でディレクトリ内の手前ファイルを再生
function on_prevfile()
    local prevfn = ''
    local fn = mp.get_property('filename')
    local directory = mp.get_property('path'):match('.*/')
    local pfile = io.popen('ls  "'..directory..'"')
    for filename in pfile:lines() do
        ext = filename:match('.*%.(.*)'):lower()
        if not(extstr:match(ext) == nil) then
            if filename == fn then
                if not(prevfn == '') then
                    mp.command('loadfile "file://'..directory..prevfn..'"')
                end
                break
            end
            prevfn = filename
        end
    end
    pfile:close()
end
mp.add_key_binding('Ctrl+UP', 'prevfile_func', on_prevfile)

ハードウエア・アクセラレーション

# ~/.config/mpv/mpv.conf

# ハードウエア・アクセラレーション
profile=gpu-hq
hwdec=vaapi
tscale=oversample
correct-pts=yes

# 下記を指定すると筆者の環境 (i5-6500) ではコマ落ちする。
#scale=ewa_lanczossharp
#cscale=ewa_lanczossharp
#video-sync=display-resample

# 再生終了で本体を終了しない
keep-open=yes

ショートカット、とにかく EoG に合わせる

# ~/.config/mpv/input.conf

# GtkApplication ではないので Ctrl+Q で全体終了はできないけど
Ctrl+q quit
Ctrl+w quit

# GNOME アプリのフルスクリーンは F11 です
F11 cycle fullscreen

# 小さい動画は Ctrl+1 で FullHD にリサイズ
Ctrl+1 set autofit 1920x1080

# 回転、マイナスにはできないようなので
Ctrl+r add video-rotate 90
Ctrl+Shift+r add video-rotate -90
Ctrl+e add video-rotate 270
Ctrl+Shift+e add video-rotate -270

オンスクリーンコントローラを小さく

# ~/.config/mpv/script-opts/osc.conf

# 動画に合わせた OSC リサイズを無効に
vidscale=no

# OSC のサイズを少し小さくしてシークバー領域を増やす
scalewindowed=0.75
scalefullscreen=0.75

で。

vaapi

vaapi が適用され動作も筆者の好みな環境ができあがりました。
もう筆者はプレイヤーを自作しなくていいな、そろそろ公開終了するか。
これからはスクリプトで拡張の時代ですよ。

いや、LUMIX らしく動画もやろうかなとも思ったんだけど。
手持ちじゃユラユラしちゃって、コレこそ三脚無しじゃ不可能でした。