投稿者「sasakima-nao」のアーカイブ

gnome-text-editor: snippets

gnome-text-editor には謎の設定がある。

dconf

コードスニペットの有効を切り替える設定だと思うんですけど。
F1 でのヘルプにも公式サイトにも説明が無い、いったい何なんだコレ?
試しに Gedit のスニペットファイルを同様にコピーしても動かない。

ぶっちゃけ筆者を含めて今でもほとんどの人が Gedit を使っていると思うけど。
Gedit は GTK3 だしメンテも消極的、数年前の Python2 と同じ状況。
こっちでもスニペットが使えるならいいかげんに切り替え候補にはなる。
ということで使い方を自力で調べてみる。

gio open /usr/share/gtksourceview-5/snippets

default

こんなディレクトリがあった。
licenses.snippets を Gedit とかで開いてみよう。

<?xml version="1.0" encoding="UTF-8"?>
<snippets _group="Licenses">
  <snippet _name="GPLv3 or later" trigger="gpl3" _description="File header with GPLv3+ license">
    <tooltip position="1" text="The name of the file belongs here"/>
    <tooltip position="2" text="The name of the author belongs here"/>
    <tooltip position="3" text="The email address of the author belongs here"/>
    <text languages="python;python3;"><![CDATA[# ${1:$TM_FILENAME}

あぁなるほど、こんな XML を書けば適用できるのね。
というかデフォルトでは GPL3 等のライセンスしか登録されていないってか。

とにかくデフォルトのを試す、最初の設定を true に設定しておくのを忘れずに。
python ファイルを gnome-text-editor で開く、gpl3 と打ち込み [Tab] キーを叩く。

tabkey

XML の指定が違うだけでスニペットの使い方は Gedit と同じですね。
後は名前 [Tab] 日付 [Tab] メールアドレス [Tab] で完成っと。
使い方が解ったところで追加のスニペットを登録してみる。

<?xml version="1.0" encoding="utf-8"?>
<snippets _group="Shebang">
  <snippet _name="Insert Shebang" trigger="sh" _description="pass">
    <text languages="python;python3"><![CDATA[#!/usr/bin/env python3
$0]]></text>
    <text languages="js"><![CDATA[#!/usr/bin/gjs
$0]]></text>
    <text languages="sh"><![CDATA[#!/bin/sh
$0]]></text>
  </snippet>
</snippets>

sh をトリガーにしてシバンを流し込む例。
シェバングなんて読んでは駄目ですよ、末尾の g は発音しないと中学で(以下略
コレに snippets の拡張子を付け以下に保存、ディレクトリは自分で作成。

~/.local/share/gtksourceview-5/snippets

set

後は py や sh ファイルを開いて sh と打ち込み [Tab] キーを。
こんな感じでスニペットを追加登録できるようです、チトめんどいぞ。

ところでシバンといえば。
そもそも Fedora 38 な現在 /usr/bin/python は Python3 へのリンクなんです。

link

なので今では python に 3 指定は不要なんです、ただ Gedit を使う限りは必要。
このシバンが無いと Gedit は Python2 と認識してしまう困った奴なんです。
3 指定無しで match case 文を書けば色分けされないことがすぐ解るよ。
gnome-text-editor なら 3 指定は不要なんですけど。
それがそろそろ気になってきた、ということでこんなことやってます。

いや筆者は macOS で sublime text を購入しているので Linux でも使えるんだけど。
なるべくならデフォルト (GTK4) の UI を使いたいよねって。

Sasagoi

梅雨の休日はプログラミングを、と考えていたのですが。
今日の尾張地区は雲ひとつない晴天です、よし野鳥を探すぞ。
紫陽花もそろそろと思ったけどまだイマイチつぼみですね。

isohiyodori

イソヒヨドリのメスを見つけました。
柵の形から解るだろうけど 5/28 のオスと同じ場所にて。

isohiyodori

同じ個体かは判らないけれど物凄い近くにも突然現れました。
人懐っこいんですね、こっちを向いている所を撮れなくて残念。

sasagoi

ササゴイ、枝が邪魔だけどこの角度でしか撮れなかった。
五条川で見たのは初、てゆーか川の中以外で見たのも初。

kiji

そしてキジ、まだおるでー。
すっかりオチになってしまった感、夕方にいることが多いし。

しかしカメラボディは E-M5 Mark3 しか使わなくなってしまった。
だって OM Workspace の AI ノイズリダクションがありがたすぎる。
上記のイソヒヨドリの写真にも使っているし、もはや必須機能。

Lightroom に同様な機能が付いたので Adobe に戻れば LUMIX でも。
いやプロキャプチャや深度合成が、サブスク料金も必要だし。
そんなこんなでサブ機用途で買ったのにすっかりメインに。

Tanuki

今日の五条川は金曜の豪雨がまだ影響していてメッチャ濁っている。
なので犬山の某公園へ、犬山市は犬山踊芸祭でワッショイしていた。
デモソンナノカンケーネェー、古くてごめん。

tanuki

タヌキじゃん、愛知県ってタヌキが出るんだ!
まあ庄内緑地にはキツネがいるし小牧山にサルも出たし。

tanuki

犬山の動物|犬山市 なんとアライグマとかもいるんだね。
とはいえどれも夜行性だし普段は見ることなんてないか。

tonbo

チュンチュンとカーカーしかいなかったので木曽川へ移動。
赤トンボってもう秋なのか、いやショウジョウトンボというらしい。

hoojiro

やっと野鳥を発見、ホオジロを貼るのははじめてかな。
残念ながら曇ってしまった、青空バックで撮りたかった。

しかし木曽川のサイクルロードはチャリダーがえらく増えてますね。
自転車はコロナ禍の一時的な流行だと思っていたけど皆結構続くのね。
カメラバッグ背負っているのは筆者くらいしかいないけど。

GTK4: Label

GTK4 の基本と外枠のまとめはゴールデンウイークに作った。
細かい Widget はどうするか、ほとんど GTK3 と変わっていないのですし。
でもその時だけ GTK3 のページを見てくれじゃアレなんで少し書き足そうかと。

Gtk(PyGObject) Tips | ラベル – Paepoi

とりあえずコイツの GTK4 化だな。

Gtk.Label

angle プロパティが無くなった以外は特に問題無さそうにみえる。
回転するにはどうするのかな、pango を使えになったのだろうか?

Pango ? 1.0: Text Attributes and Markup

angle に相当するものはないようで。
text_transform に rotate(deg90) はやっぱりダメか。
でも gravity という重力の指定でどの方向が下なのか決めることはできる。
これで 90 度単位な回転ができるっぽい、他も含めてやってみる。

#!/usr/bin/env python3

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

class Win(Gtk.ApplicationWindow):
    def __init__(self, a):
        manager = Adw.StyleManager.get_default()
        manager.set_color_scheme(Adw.ColorScheme.DEFAULT)
        Gtk.ApplicationWindow.__init__(self, application=a)
        # mouse move
        labels = [
            Gtk.Label(label='中心'),
            Gtk.Label(label='左寄せ', xalign=0),
            Gtk.Label(label='右寄せ', xalign=1),
            #Gtk.Label(label='180度回転', angle=180),
            Gtk.Label(label='<s>打ち消し線</s>を入れたり', use_markup=True),
            Gtk.Label(label='<span bgcolor="red">赤くする</span>とか', use_markup=True),
            Gtk.Label(label='<span fgcolor="blue">青くする</span>とか', use_markup=True),
            Gtk.Label(label='<span font_weight="heavy">太くする</span>とか', use_markup=True),
            Gtk.Label(label='<span font_style="italic">italic にしたり</span>とか', use_markup=True),
            Gtk.Label(label='エスケープ文字も\n\t使えます', xalign=0),
            Gtk.Label(label='エスケープ文字を\n\t無効にする', xalign=0, single_line_mode=True),
            Gtk.Label(label='薄くする', opacity=0.3),
            #
            Gtk.Label(label='<span text_transform="uppercase">uppercase</span>とか', use_markup=True),
            #Gtk.Label(label='<span text_transform="ratate 45deg">回転</span>Error', use_markup=True),
            Gtk.Label(label='<span gravity="north" baseline_shift="13pt">反転</span>とか', use_markup=True),
            Gtk.Label(label='<span gravity="west" baseline_shift="8pt">西が下</span>とか', use_markup=True)
        ]
        #
        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
        for label in labels:
            vbox.append(label)
            vbox.append(Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL))
        # 
        self.set_child(vbox)
        self.set_default_size(200, 200)

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

gtklabel

なんとかなった。
baseline_shift に注意、元のベースラインを軸に回転するので上に動かす。
でもコレ環境によるよなぁって、まあ回転は可能ってことで。
それと single_line_mode だと改行が矢印になるんだね、笑った。

kochidori

今日はコチドリを見つけました、やっとツバメ以外の夏鳥が撮れた。
駐車場でウロウロしていたけどそんな所にミミズいないだろ。

isohiyodori

デカいカワセミ、ではなくイソヒヨドリです。
五条川で見たのは二回目、前回は超望遠をもっておらず点でしたけど。

Hina

先週先々週とキビタキを追いかけ、ボウズでネタ無し。
囀りは聞こえど姿は見えず、趣味なのにウンザリしてきた。
五条川に来ないからと山や公園に行っているのが悪いのか?
なので今日からは五条川にて身近な野鳥という本来の姿に戻る。

suzume

だからってスズメかよ、いやネクタイが小さいから幼鳥ですね。
パナライカ 100-400 前後ボケの例です、被写界深度せま!

sekirei

ハクセキレイの親子、幼鳥って最初はこんな色なんですね。
しかし知らぬ間に幼鳥の季節になっていた、

hibari

ヒバリ、二羽で行動していたがどちらにもトサカが無かった。
もしかしてキマシタワー?

kiji

そしてキジ、いつものキジポイントにまだいます。
そろそろこの田圃にも水を張るだろうし、いなくなる前に。
てかオスしか見かけないんですが、今年はハーレム無しかな。

他にカワラヒワモズカルガモムクドリetc…
季節の鳥に拘らないならいくらでもいるんだよな。