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

WebP @ GNOME

Fedora 37 で今更気がついた。
WebP が Nautilus でサムネイル、及び Eye of GNOME で表示できるように。
EoG で拡張子を webp にて別名保存すると作成することさえも可能。
JPEG からでは Exif は消えてしまうけど回転情報に合わせて変換してくれる、凄い。

webp

上記が変換したもの、WebP も今は WordPress で普通にアップロードできるのね。
しかし PNG から変換したらサイズが 1/4 になって笑う。

size

heaf はライセンスの関係で GNU/Linux では今後も無理だと思う。
互換性無さすぎて実験用途にしか使っていないから別にいいけど。

#!/usr/bin/env python3

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

class Win(Gtk.ApplicationWindow):
    '''
        WebP Test
    '''
    def __init__(self, a):
        Gtk.ApplicationWindow.__init__(self, application=a, title='GTK4')
        f = Gio.file_new_for_path('webp.webp')
        pic = Gtk.Picture(file=f)
        self.set_child(pic)

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

GTK4 もデフォルトで対応済。

GdkPixbuf でも読み書きできるけどオプションが解らん。
GdkPixbuf.Pixbuf.save
書いていないし cwebp のオプションとも違うようで、お手上げ。

#!/usr/bin/env python3

'''
    Nautilus Script @ Create WebP
'''

import gi, os
gi.require_version('GdkPixbuf', '2.0')
from gi.repository import GdkPixbuf

path_array = os.environ['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'].split('\n')
for filepath in path_array:
    try:
        pixbuf = GdkPixbuf.Pixbuf.new_from_file(filepath)
    except:
        continue
    webp_name = f'{os.path.splitext(filepath)[0]}.webp'
    pixbuf.savev(webp_name, 'webp')

とりあえず Nautilus Script を簡易で作ってみた。
ドキュメントに追記があるまでオプション無しで。
スクリーンショットの PNG から変換程度ならコレで十分だろう。

mac_img

macOS のプレビュー.app では WebP 変換の選択肢が無くて笑う。
まさか画像関連で Fedora のほうが優れている場合があったなんて。
ということで。

yamagara

ヤマガラ、トリミング無しでこのサイズいけた。
こういうのは劣化しないように JPEG のままがいいよ。
というか Exif を残さないと自分が困るもんね。

Python: open r+

Fedora 37 で今頃気がついたけど。
Anthy の辞書がまた PageDown でページ送りができなくなっているじゃん。

/usr/share/ibus-anthy/engine/engine.py は八月に更新されているな。
バッチは当ててくれなかったのか、気がつかなかったようで。
do_page_down なんてメソッドは定義されていないよメンテナさん。
しかたがない、今回も自前バッチを。

#!/usr/bin/env python3

'''
    Fedora 37 の Anthy で PageUp(Down) にて辞書送りできないのを修正
    コピペして sudo で実行しログインのやりなおし
    万が一失敗したら gnome-softwere から入れ直しで元通り
'''

import os

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

with open('engine.py') as f:
    src = f.read()
    dst = src.replace('do_page_up()', '__page_up(0)', 1).replace('do_page_down()', '__page_down(0)', 1)
    with open('engine.py', 'w') as g:
        g.write(dst)

今回は replace で。

いや Python の open には r+ という読み書きモードがあるんだけど?
と思うかもだけど r+ は使わないほうがいいよ。

#!/usr/bin/env python3

import os

with open('rw.txt', 'w') as f:
    f.write('ABCDEFG')

with open('rw.txt', 'r+') as f:
    src = f.read()
    #
    # 巻き戻すのを忘れずに
    f.seek(0)
    #
    # r+ での書き込みは以前の内容が残る
    dst = src.replace('ABCDE', 'a', 1)
    f.write(dst)
    #
    # 確認
    f.seek(0)
    print(f.read())
    #
    #=> 'aFGDEFG'

ね。
書き出しが短いと最初の語尾が残ってしまうんです。
文字数を合わせる、又はそれ以上なら問題ないんですけど。
ただ文字数を合わせても日本語だと以下のように。

#!/usr/bin/env python3

import os

with open('rw2.txt', 'w') as f:
    f.write('あいうえお')

with open('rw2.txt', 'r+') as f:
    src = f.read()
    f.seek(0)
    #
    # write は UTF-8 で書き出す
    dst = src.replace('あいう', 'aiu', 1)
    f.write(dst)
    #
    # 確認
    f.seek(0)
    print(f.read())
    #
    #=> 'aiuえおえお'

日本語はほぼ 3byte なので。
対策はあるんだろうけど、一番の対策は使わないことですよね。

ところで Nautilus 43 のリネームで入力メソッド切り替えが初回が無視される。
いやこれ US 配列キーボード愛用者以外には関係ないといえばそうなんですけど。
Ctrl+J のほうを使えばいいんだけど macOS と同じコッチを使ってしまうし。

Fedora とは関係ないけど GTK4 になった GHex もなんかおかしいな。

ghex font

Source Code Pro 以外のフォントだとはみ出すんだが。
なにがどうしてこうなるのか全然わからん。

kgx

Fedora 37 への更新通知が来た。
今回は Nautilus の GTK4 化と新規な端末エミュレーター以外はあまり興味が無い。
ということでクリーンインストールによる検証はヤメてアップグレード、いつも面倒だし。
問題なく数分でアップグレード完了。

あれ、gnome-terminal のままなんですけど?
探しても新規ターミナルエミュレーターアプリが見つからないんですけど。
デフォルトでは入らない、クリーンインストールなら入るのか?
いや、Nautilus はしっかり GTK4 化されているし。

What’s new in Fedora Workstation 37 – Fedora Magazine

書いていないね、Fedora 37 では gnome-terminal 継続だったのか。
gnome-softwere を開いて「コンソール」というアプリを見つけた。
コレが GNOME 43 本来の新規端末エミュレーターのようです、

console

kgx が実名、gnome-console とかそれっぽい名前じゃないんかい。
とにかくインストールして色々やってみる。

bash:tip_colors_and_formatting – FLOZz’ MISC

256color

問題なく 256 色表示できますね。
ショートカットは gnome-terminal から変わっていない。
bash 自体を Ctrl+D で終了させると終了するのも変わっていない。

タイトルバーにサブタイトルにて現在位置を表示、Gedit 等と同じ。
GTK4 のはずなのに DarkMode 全体設定には反応しない。
個別 DarkMode 以外の設定が何もない、いらないけど。
コンテキストメニューから現在位置にて Nautilus を起動が可能に。
Nautilus から「端末で開く」は導入しても gnome-terminal が開きます。

あ、Nautilus って「ファイル」の実名ね、何故最近は実名を隠すようになったのか?
kgx も実名を見つけるのに苦労した。

GNOME / Console ? GitLab

src を覗くまでマジでワカンネエってばよ。
何も問題なく見えるけど採用を見送った理由があるんだろうな。

しかしアップグレードのせいか何も変わっていないように見えるな。

mpv

Fedora 36 で mpv の調子が先々週あたりから悪い。
シークをすると OS を巻き込んでフリーズする。
Celluloid の調子が悪いから乗り換えたのに困った。

# Default: framedrop=vo
framedrop=decoder

を三日前に mpv.conf に追記してからは安定している。
短いけど以上です。

どうでもいいけど、筆者の MPV をスクリプトで拡張ページ。
グローバル変数を local 指定にしていないのがいくつかあるな。
それだけで書き換えするのもアレだし何か新作でも考えよう。

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

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

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

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

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