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

Gedit to Kate

以前書いたように Gedit が 2024 年以降もう期待できない。
ただでさえ GTK3 のままなのに、多分また開発者がいないのだろう。
言語の新しいキーワードに対応できないし追加機能もない。

他への乗り換えをしようと色々試してはいるんですが。
Sublime Text や Pulsar は日本語が入力できない。
GTK3 製やイライラする vscode は論外だし他は機能がチト。
Qt があまり好みではないけど無難な Kate にしようかと。

kate

Kate ってメニューバーを消すと自動でハンバーガーメニューになるんだ。
これなら GNOME で使っても見た目の違和感が少ないかもね。
PHP8 のヒアドキュメントインデントにもしっかり対応しているし。
ツールバーの「開く」を「Open」に書き換えできるのは笑った。

kate

拡張子が無いファイルも見分けしてくれた。
vi や Eaacs のモードラインは認識しないけどシバンを読んでいるようだ。
Kate 独自のモードラインには色分けつきでデフォルト対応。

Kate Modelines – Kate

ツールメニューに「Run Current Document」なんてのがある。
F4 で内蔵ターミナルを出した状態で実行するとシバンでスクリプトを実行する。
残念ながら F5 に指定できないみたいなので Ctrl+F5 に割付してみた。
フォーカスはエディタ側にある状態で実行してくださいね。

kate

Ctrl+Shift+Up(Down) で行の入れ替えも普通にできる。
アクティブなタブ以外を全部閉じる機能も最初からある。
Gedit では自分でプラグインを作ったのに、いや今は珍しくもない機能だが。
後は html エンティティー変換さえあれば自作 Gedit プラグインは再現できる。
スニペットから JavaScript を使えばあっさり作れそうだけど。

Kate Snippets

そのスニペットなんだけど、 Gedit 同様に選択文字列取得もできるけど。
Ctrl+Space から選択するしか流し込みする手段が無いんかいなぁ。
Gedit みたくキーワードから Tab キーの一発で流し込みをしたいんだが。
模索しているけど今のところネックはこれだけ。

てか Kate ってドエリャア多機能だ、知らなかったよ。
何故人気がイマイチなのか、まあ KDE の人気がね。

Gedit 46 Syntax Highlighting

Fedora 40 の Gedit でハイライト定義の変更が無視される件。
以下に定義を入れれば摘要されるはずなんですけど。

~/.local/share/gtksourceview-4

GtkSourceView4 に何か変更があったのか?
そう思って単純なテストコードを書いてみた。

#!/usr/bin/env python3

import sys, gi
gi.require_version('Gtk', '3.0')
gi.require_version('GtkSource', '4')
from gi.repository import Gtk, GtkSource
 
TEXTVIEW_CSS = b'''
#MySourceView {
    font: 10pt Monospace;
}'''

PYTHON_CODE = '''#!/usr/bin/env python3

fst = 'fstring'
print(f'Test {fstr} Syntax Highlighi')'''
 
class Win(Gtk.ApplicationWindow):
    def __init__(self, a):
        Gtk.ApplicationWindow.__init__(self, application=a, title='SourceViewTest')
        # GtkTextView
        view = GtkSource.View(show_line_numbers=True, name='MySourceView')
        # CSS
        provider = Gtk.CssProvider()
        provider.load_from_data(TEXTVIEW_CSS)
        view.get_style_context().add_provider(provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
        # Python3 Highlighte
        lang_man = GtkSource.LanguageManager()
        lang = lang_man.guess_language(None, 'text/x-python3')
        view.props.buffer.set_language(lang)
        view.props.buffer.set_text(PYTHON_CODE)
        # GtkScrolledWindow
        sw = Gtk.ScrolledWindow(child=view)
        self.add(sw)
        self.resize(400, 100)
        self.show_all()

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

01

普通に摘要されとるじゃん。
Gedit 派生の奴も試してみよう。

って Pluma は調べてみると Gedit2 派生かよ。
プラグイン作りに Python2 や PyGtk も必要だよな、ありえん。
Xed なら Gedit3 ベースだな、ツールバーを消せばなんとか。

02

やっぱり Gedit だけ摘要されない、マジで何でだよ。
他を試すのも面倒だし、しばらく Xed に乗り換えするかな。

と思ったけどコードスニペットと外部ツールが無いやんけ。
Atom や Sublime Text は別の手段があったけど Xed には無さそう。
単語補完というプラグインがあるけど、違うそうじゃない。
自作プラグインは Gedit 3.10 以前のを小変更で使えるかもだが。
新規タブが Ctrl+N に変更されているのはなんで?

Xed って Old Gedit のふりをした vscode になりたいの?
まあナンチャッテプログラマーにはこういうのがウケるんだろうけど。

だめだ Gedit をなんとかしなきゃ。
とにかく Gedit は他アプリとは別の場所を見ているってことだよな。
もしかしてと思って /usr/share の中を探してみる。

03

あった、こんな所に。
Gedit 46 は GTK3 ライブラリでなくフォークした奴を使っているのか。

libgedit-gtksourceview 300 Reference Manual: libgedit-gtksourceview 300 Reference Manual

それだから libgedit-46.so のサイズが 583MB もあるわけだ。
静的リンクにしたほうが Mac や Windows に移植しやすいよね。
もう面倒だ、直接このディレクトリに python3.lang をコピーしちゃえ!

04

それだとエラーで python3.lang がロードできないようです。

def.lang: Update Unicode identifier regexes (!149) ? マージリクエスト ? GNOME / gtksourceview ? GitLab

Gedit が使う GtkSourceView にはこの定義が無いってことですね。
正式な GtkSourceView-4 にはメンテで追加されているという皮肉。
原因は解ったけどコレでは対策手段が無い、お手上げです。

あと関係ないけど Nautilus のリネームで日本語が打てないね。
経験上 GNOME 45 の間はこのままかと、リネームアプリでも作るか。

Fedora 40 インストール

世間は三連休です、筆者は今日だけですけど。
ちなみに小牧山ではキビタキが囀っていたよ、えぇ声は聞こえました。
ということで送ればせながら Fedora 40 へアップグレードです。

今回はクリーンインストールしたいので休日まで遅らせました。
インストール方法はいつもどおりなので省略。

Fedora Elecom | Paepoi Blog

上記で買った無線 LAN は調子が悪くて有線に戻しています。
ルーターの再起動しまくり現象は止まったし、基地局側が理由だったみたい。
40 に最初からファームがあったら又使おうかと考えたけど未対応のままだった。

ps1

端末は gnome-terminal のままじゃん、プロンプトに色が付いているけど。
PS1 変数がなんじゃこりゃになっているけどまあこのままでいいや。
あ、hostnamectl にて既にホスト名を変更した後です。

画像ビューアは本当に Loupe に変わっているのね。
今気がついたけど矢印キーでの画像切り替えは Nautilus と順番が違うヤン。
拡大でやはりアンチエイリアスが掛からないし、ダメだ EoG を入れよう。

chrome

google-chrome のインストールが失敗するんですけど。
Flathub 版ならイケたのでこっちをしばらく使う。
ログインすれば元通りなのは普通インストールと同じだった。

Fedora Tips | MPV をスクリプトで拡張 – Paepoi

MPV は Skylake 時代な内容が古いままだったので書き換え。
Fedora 38 から ffmpeg が面倒なことになっているんだよな。
他の Tips は全部以前のままだった、書き足すことがないのも寂しい。

gnome-text-editor がちっとも進化しないので Gedit を。
なんだけど色分けは普通に進化しているのね。

gedit

GtkSouceView 4 の開発が止まったからしかたがないんだけど。
PHP8 のヒアドキュメントインデントにも Gedit は未対応なのか。

Gedit: fstring Highlighting | Paepoi Blog

PHP もコレをやればいいと思ったんだけーがさぁ。
Python3 のやつも摘要されなくなっているんですが。
なんですか、Gedit はもう使うなってことですか?

最後の手段である Sublime Text をとうとう導入か。
って Linux 版って日本語入力ができないんですね。
手段はあるけど通常のインプットメソッド切り替えじゃないのね。
メニューバーや古い UI も気になるし、macOS 版を知っているととくに。
今回は見送って Gedit を騙し騙し使うことに。

ということで。
39 の時とほとんど変わらない Fedora 40 になりました。
そんなことより今日はキビタキが撮りたかった。

さくらインターネットサーバー移行ツール

さくらインターネットからサーバー移行ツールの案内が。
FreeBSD が 11.2 から FreeBSD 13 へ、HDD から SSD になる。
先週メールが届いていたんだけどそろそろやろうかと。
筆者のように自前設置の WordPress でも全自動で移行できるらしい。
移行完了までアクセス不能らしいけど夜中にやれば別にいいか。

num

思っていたより容量使っていた、事実上写真ブログ化しているし。
とはいえ 300GB まで使えるからまだまだ余裕あるな。
午前一時くらいに移行開始、おやすみなさい。

起きたら午前三時くらいに移行完了とメールが届いていた。
サイトもブログも問題なく表示できている、うん。
本当に自前設置の WordPress でも普通に移行できた。

SFTP の設定を変更しないといけないのでコンパネへ。
398 番サーバーから 2108 番サーバーへ移行だったようだ。
どこに割り当てかは決められないので移行後にコンパネで確認。

login

Nautilus から SFTP でログイン、久々に見たな。
Linux は GVFS で普通のファイルのように使えるから便利だよね。
サーバーや macOS を持っていないのに Linux 使うバカはいないよね。
てかスゲェアクセスが早くなった、流石 SSD だね。

ところでついでなのでこのブログの URL ですが。
本日より日付と投稿名から数値ベースに移行します。
いや日付と投稿名でもアクセスできますが新規リンクから。
だって今まで通りだと日本語タイトルをつけ辛いんだもん。

Linux LAW File

昨日はインフルに感染して一日中死んでいました。
広めちゃいけないので本日は有給休暇、体はダルいけど頭は超ヒマだ。
そんなこんなで昨日やろうと思っていた Linux ネタ。

orf

Fedora 39 にして四ヶ月、何を今頃気がついたけれど。
Nautilus 45 は OLYMPUS LAW である ORF を認識しているじゃん。

OM SYSTEM となっていないのはまあ時間が解決するだろう。
NIKON の NEF は以前からあったけど LUMIX の RW2 も対応していた。
いやぁ写真趣味を初めて良かった、こんな検証ネタが見つかるとは。

もちろんサムネイル表示することも画像を表示することも何もできない。
macOS の uti と違って意味が無いような気がしなくもない。
いや macOS はリソースフォーク時代と拡張子との整合性とかあったからだけど。
そもそも UTI は開発者側以外は気にしなくていいことは置いておいて。
ちなみに Nautilus は拡張子より前に以下を検索します。

/usr/share/mime/magic

とりあえず開いて olympus で検索、ちなみに文字列ではない定義もある。
当然 Gedit ではエラーが出るけど強制的に開くことは可能。

orf

なんだ普通に定義されていた。
IIRO(0x08)(0x00)(0x00)(0x00)
がファイルの先頭に付いていたら ORF ということです。

つまり macOS の UTI が現在は拡張子依存なのと違い拡張子は関係ない。
拡張子だけで全てが決まるポンコツ OS は置いておいて。

#!/usr/bin/env python3

import sys, textwrap
from gi.repository import Gio

attr = ','.join([
    Gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME,
    Gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ])

for filename in sys.argv[1:]:
    f = Gio.file_new_for_path(filename)
    info = f.query_info(attr, Gio.FileQueryInfoFlags.NONE)
    _name = info.get_display_name()
    _type = info.get_content_type()
    _desc = Gio.content_type_get_description(_type)
    print(textwrap.dedent(f'''
        ----------
        Name        : {_name}
        Content Type: {_type}
        Description : {_desc}
        ----------'''))

get_ctype.py

を使って拡張子不要と表示の確認。

orf

なるほど、Description がプロパティに表示されているようで。
しかし LAW の Content-Type に対応とは、将来的に表示対応するのだろうか?
macOS でないとまともな現像アプリが無いから正直いらないけど。
フリーの GUI アプリって今現在は消費者(エンドユーザー)用途でしかないよね。
関係ないけど GNOME 45 って avif に対応していたのね、知らなかった。
最後に。

[Python]ヒアドキュメントでもインデントを崩さずに書かなきゃダメだよ | DevelopersIO

textwrap.dedent だと簡潔かつ読みやすいコードになりますね。
fstring でなく以前の formar({0}) なら先頭に定義という技があったけど。
それを fstring でやると未定義扱いになり困っていたので嬉しい発見でした。