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

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

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

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

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

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

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 の拡張スクリプトでもまとめるかな。