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

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: Ctrl+q @ Close all MPV Windows

Fedora で mpv を使って困ること。
Ctrl+q で複数起動したすべての mpv を終了できないこと。

だって GNOME のアプリは全部そうなっているんだもの。
そういえば Chrome が Fedora では終了できないな、狐はできるのに。
コレは GNOME アプリ同様 Ctrl+w 連続押しで代用できるのでまあよし。

macOS では command+q ですね、サードパーティすら全部。
そりゃ macOS はウインドウを全部閉じても終了できないんだから必須機能。
唯一 Finder だけが不可、ファイルマネージャは常に起動しているし。

でも Nautilus は Ctrl+q で全部のウインドウを閉じてくれる動作をする。
そんなこんなで、凄く気になるんですよ。

で、よく考えたら UNIX には killall コマンドがあった。
Linux ではコマンドと GUI の区別が無いんだから使えるかも。
ということで Lua スクリプト。

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

-- Ctrl+q @ Close all MPV Windows.
function on_close_all()
    os.execute('killall mpv')
end
mp.add_key_binding('Ctrl+q', 'close_all_func', on_close_all)

これをスクリプトディレクトリに突っ込んで。
おぉ自分を含めて全部終了してくれる、やったね。
macOS では GUI は区別されているから無理だと思う。
統一されたキーボード操作が無い某 OS はどうでもいいね。

ついでに、最近の mpv osc 設定。
シークバーは QuickTime のようにフローティングもできると知った。

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

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

# 薄くする
boxalpha=180

# 常にトータル時間
timetotal=yes

# タイトルはファイル名 -- タイトル名
title=${filename} -- ${media-title}

# シークバーのみに、弄る時に枠外になるのを防げる
layout=slimbox
seekbarstyle=diamond
valign=0.95

kogera

てかシークバーだけにできるんだ、こりゃいいわ。
だって osc ってシークバーしか使わないよねみんな。

kogera

QuickTime も再生ボタンとか消せないかなぁって。
macOS では動画はほとんど見ないので QuickTime のままです。
ちなみに QuickTime だけで動画の切り貼りやリサイズ保存ができる。
筆者の編集範囲ならコイツだけで完了するので重宝していたりします。

editorconfig Gedit 41

「秀丸エディタ」が10年以上ぶりのメジャーバージョンアップ ?v9.00が正式版に – 窓の杜

Windows は会社でしか使わなくなって何年もたつので今頃知ったけど。
editorconfig って何だろう、モードラインよりイイのか?

チーム開発に効く環境構築術 | 第1回 EditorConfigのススメ | CodeGrid

モードラインじゃダメなのか?って感じだな。
あぁ VSCode というゴミクソエディタがモードラインを使えないからか。

EditorConfig

対応エディタって、よく見たら全部単なるプラグインじゃん。
Gedit のプラグインもあるのでチビッと試してみるか。

GitHub – editorconfig/editorconfig-gedit: EditorConfig plugin for Gedit

Gedit 41 だけど Gedit 3 用で動くだろう。
でもいきなり Installation が間違っています。

editorconfig.plugin
editorconfig_gedit3.py
editorconfig_plugin

editorconfig-core-py の中にある editorconfig
ディレクトリのコピーが必要でした。

editconfig

それと以下を書き換えする必要がありました。

editorconfig.plugin にて Loader=python3 に書き換え。
Loader=python のままでは Python2 を呼び出そうとする。

editorconfig_plugin/gedit3.py にて。
document.get_location は Gedit 40 から使えなくなっています。

#location = document.get_location()
location = document.get_file().get_location()

後は設定で有効にして .editorconfig を書いて。
筆者は Tab 設定を Python ガイドラインな半角スペース 4 つにしているので。

root = true

[*]
indent_style = tab
indent_size = 8

おぉ反映されるようになりました。
たださ。

// ex: noet ts=8

モードラインなら最終行にコレ書くだけでまったく同じことができるんだよね。
Gedit なら最初からプラグイン入っているし Atom にもプラグインあるし。

いや筆者はモードラインも拡張子が無いスクリプトに ft 指定するだけなんだが。
ただ Gedit も Atom もファイル判別が優秀すぎて滅多に必要が無いんだなこれが。

てかコレ別ファイルに記述なのでファイルタイプ指定ができないし。
拡張子が必ずある Windows 専用ですね。