月別アーカイブ: 2022年11月

GTK4: GtkInscription

そういえば GTK4 に GtkInscription が追加されるんだっけ。
Gtk.Inscription

特殊用途に使う Widget なので通常は GtkLabel を使ってくれ。
ということらしいけど、つまり文字列がはみ出すラベルってことね。

#!/usr/bin/env python3

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

class TestWindow(Gtk.ApplicationWindow):
    def __init__(self, app):
        try:
            Gtk.ApplicationWindow.__init__(self, application=app)
            # Label and Inscription
            label = Gtk.Label(label='文字列に合わせて拡大されます')
            inscription = Gtk.Inscription(text='文字列に合わせて拡大されません、はみ出します')
            # pack
            vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
            vbox.append(label)
            vbox.append(inscription)
            self.set_child(vbox)
        except Exception as e:
            print(e, file=sys.stderr)
            app.quit()

class TestApplication(Gtk.Application):
    def __init__(self):
        Gtk.Application.__init__(self, application_id='org.omsystem.pen')

    def do_activate(self):
        w = TestWindow(self)
        w.present()

app = TestApplication()
app.run(sys.argv)

inscription

なんだそれだけだったのか。
カラム部分とかコンテナが拡大されたら困る場所に使うってことですね。

ところで、GTK4 のドキュメントが親切になっている。
deprecated つまり廃止予定を明確にしてくれています。

Gtk ? 4.0

TreeView がやっと廃止、マウス必須な時代遅れ UI ですからね。
TreeStore だけでなく ListStore も廃止、リストビュー表示もできなくなる。
一応、GtkListView は昔ながらのリストビューではなくスマホの設定画面みたいな UI です。
あれ、Nautilus 43 のリストビュー表示は?
と思うかもだけどアレは ColumnView なんですね、いや今知ったんだけど。

伴ってあの解り辛いレンダラ関連が全面廃止。
あぁ、それで Inscription という Widget が必要になったということか。

ダイアログ関連を全面見直し。
いやそれ何故 GTK4 の最初でやらなかったのか。

ComboBox も廃止。いや困るだろと思ったけど Popover があったわ。
Nautilus 43 の設定もそうなっていた、はよ移行しろってことですね。

StyleContext も廃止。
CSS の適用は今後どうするんだろう?調べなきゃ。

GTK4 の方向性が見えてきましたね。
次は GtkColumnView あたりを調べてみるかな。

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

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

Sublime Text 4 Custom 2

Sublime Text プラグインについて日本語の解りやすいトコ無いなぁ。
試してみたら Packages/*/ 以下にある *.py は全部勝手に読み込むや。
つまり自作するならコレでいい、ディレクトリ名は何でもいい。

plugins

ショートカットで実行するには sublime-keymap に書き込む。
配布するなら個別ディレクトリにして OS 別キー割り当てが可能らしい。

Hoge/
- Default (Linux).sublime-keymap
- Default (OSX).sublime-keymap
- Default (Windows).sublime-keymap
- hoge.py

command(super) と Ctrl を変えるだけなんだろうけどね。

スニペットファイルは User 以下に置く。
PHP に定義は text.html.php でイケた。

<snippet>
    <content><![CDATA[
<pre class="brush: ${1:py}">$0</pre>
]]></content>
    <tabTrigger>prep</tabTrigger>
    <scope>text.html.php</scope>
</snippet>

ファイル名はなんでも良くて sublime-snippet の拡張子を付ける。
一つにつき一ファイルにしないと読み込みしてくれないようです。

トリガーで流し込むスニペットはこうやってファイルを作る。
ショートカットで流し込むスニペットは sublime-keymap に直接書く。

key

Default (OSX).sublime-keymap は上記メニューで勝手に作られる。
ちなみに一番上のメニューから Packages ディレクトリは開ける。

[
    { "keys": ["f5"], "command": "build" },
    { "keys": ["alt+up"], "command": "swap_line_up" },
    { "keys": ["alt+down"], "command": "swap_line_down" },
    { "keys": ["super+alt+down"], "command": "duplicate_line" },
    // My Plugin
    { "keys": ["super+ctrl+t"], "command": "open_terminal" },
    { "keys": ["super+ctrl+e"], "command": "html_escape" },
    // My Snippets
    {
        "keys": ["super+ctrl+]"],
        "command": "insert_snippet",
        "args": {"contents": "<br />"}
    },
    {
        "keys": ["super+ctrl+r"],
        "command": "insert_snippet",
        "args": {"contents": "<span style=\"color: ${1:red}\">$TM_SELECTED_TEXT</span>$0"}
    }
]

スニペットは変数も使えます。
記法も Gedit や Atom と同じだから迷うことは無いでしょう。

最後にキー割り当てはなるべくデフォルトのまま、ということに。
command+n が新規タブなのは受け入れることにします。
Gedit が Ctrl+T だという理由で command+t に変えていたんだけど。
Atom のデフォルトもそうだったし慣れておかないと後で困りそうなので。

同じ理由で command+h を置換に割り当てるのもヤメに。
command+option+f のほうが直感的なんだけど Gedit での手癖が。
command+h はどう考えても非表示でないとおかしい、手癖より統一を。
どうしても譲れない 4 つだけは変更させていただきます。

ということでアッサリ乗り換え作業が終わりました。
Sublime Text ってこんなに凄かったのか、知らなかった。

buy

ということで購入、$70 じゃなくて $99 だった。
こんな素晴らしいアプリを作ってくれた感謝を込めて。

Sublime Text 4 Custom 1

Sublime Text 4 が F7 でカタカナ変換できない問題。
v3 の時からか、日本語環境だけの問題だから放置されているのね。
これは v3 の時と同じ手段で回避可能でした。

Sublime Text 3のF7を無効にする(macOS) – Qiita

コレをやると左側ペインのデフォルトも編集できるようになるおまけ付き。
問題になりそうなものや無効化したいキーをコメントアウト。

kbd

キーカスタムはスニペットの登録とかがあるので一旦置いて。

ということで基本設定の暫定。
一番上のは最初から書き込まれていたけど何かは知らない。

{
    "ignored_packages":
    [
        "Vintage",
    ],
    // コード保管無効
    "auto_complete": false,
    // 閉じ括弧自動補完無効
    "auto_match_enabled": false,
    // 起動時に新規ウインドウを作らない
    "create_window_at_startup": false,
    // 保存確認飛ばしさせない
    "hot_exit": "disabled",
    // タブ追加は一番最後に
    "open_tabs_after_current": false,
    // タブ入力は半角スペース化
    "translate_tabs_to_spaces": true,
    // 保存時に行末の空白を削除
    "trim_trailing_white_space_on_save": "all"
}

とにかく邪魔なコード保管と閉じ括弧保管を無効に。
保管ってこちらから要求した時にだけやってくれないと困るよ。
腹が減ってないのに飯を出されてもイラッとするでしょ。

起動時に前回終了時のタブを復元阻止は 3, 4 番目。
v4 は検索で見つかる remember_open_files というキーが無い。
hot_exit も真偽値ではない、現行は色々と設定が違っているようだ。
で、create_window_at_startup は名前のとおりな macOS 専用設定。
無効にしないと Finder からファイルを開いた時に二つ起動する。
ただランチャから起動だとウインドウが作られない、即 command+n する。
もっといい方法があるかもだけど。

後はお好みで、筆者はできるだけデフォルトで使いたい派。

次はプラグイン作成。
Sublime Text 3でプラグインを作るメモ – Qiita

Sublime Text 内蔵 Python は 3.3 なのか。
subplocess.run や html モジュールが使えない、ちと面倒。
これも一つにつき一ファイルづつ、まるで Linux だな。

import sublime, sublime_plugin

class HtmlEscapeCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        sel = self.view.sel()
        for region in sel:
            src = self.view.substr(region)
            dst = ''
            for s in src:
                if s == '>':
                    dst += '&gt;'
                elif s == '<':
                    dst += '&lt;'
                elif s == '&':
                    dst += '&amp;'
                else:
                    dst += s
            self.view.replace(edit, region, dst)

とりあえず html_escape プラグインを作ってみた。
こんなブログをやっていると絶対に必要になるからね。
てか上記で早速使ったわ。

import sublime, sublime_plugin, os, subprocess

class OpenTerminalCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        path = os.path.dirname(self.view.file_name())
        subprocess.Popen(['open', '-a', 'Terminal', path])

もう一つ、編集ファイル位置から Terminal.app 起動。
他のカスタムはスニペットでなんとかなるかな。

後は自作スニペットの登録とキーカスタムだね。
長くなってしまうので今日はココまで。
最後に。

kawasemi

今日は五条川にいました。

Sublime Text 4

そういえば 2022.12.15 で Atom がアーカイブになる。
Gedit も GNOME には含まれなくなり 3 で止まる。
筆者愛用のテキストエディタが両方とも終焉を迎えることに。
Gedit はまだ大丈夫だけど Atom はそろそろ乗り換え先を探さないと。

macOS 用のテキストエディタを色々試した時期があったけど。
当時は Atom 以外は全部気に入らなかったんだよな。

VScode が何故人気があるのか解らない、イライラするだけだろアレ。
他もなんか文化の違いに馴染めず Gedit のように使える Atom に。
それとできればプラグインではなくスクリプトで拡張したいのよ。

Atom を Gedit のように使う – Paepoi

Sublime Text もその時に試したけれど使い方がよく解らなかった。
突っ込んで使ってみたら気に入るかもしれん、今 v4 になっているのね。

Download – Sublime Text

dmg ではなく app での配布なのか。
/Applications に移動して command+o、なんか久々。

gatekeeper

初回はやっぱり許可が必要、以降は普通に使える。
てか起動が早い、いや Atom が遅いだけなんだけど。

? Sublime Text 4 の日本語化とおすすめパッケージ – Qiita

で日本語化。

*.jp をコピーは「フォルダに新規ターミナル」を使って。

cp *.jp ../Default/

末尾の jp を外すには Default に移動して。

for name in *.jp; do; mv $name ${name%.jp}; done

プログラミングのために使う人ならこれくらい打てよってね。
いや、しょぼいシェルの Linux や Windows の人は知らんけど。
bash zsh どっちでも使えます。

日本語化できたので基本入力を試してみる。
command+s や command+c は macOS デフォルトどおりだな。
command+← はインデントの先頭にジャンプがデフォルト、よし。
全部ウインドウを閉じてもアプリは終了しない、macOS では当然。
再起動で前回開いていた書類を開くのは流行なのか?

F7 でカタカナ変換ができない、何か競合しているのか?
fn+← が行頭ではなく先頭になる、command にすればいいんだけど。
行の入れ替えは command+control+↓ ではなく option+↓ にしたい。
新規タブが command+n なのはそろそろ受け入れようかな。

JavaScript だとコード保管をするのね。
VScode ほどウザくない、でもやっぱり邪魔だなぁ。
それよりも、閉じ括弧の自動保管はマジでやめてくれ!

html や php を開いて pre と打ち込んで tab キー。
おぉスニペットがデフォルトで有効なのか、後は追加だな。

残念ながらモードラインはデフォルトでは未対応だけど。
#!/usr/bin/osascript
のシバンがあれば Apple Script と拡張子無しでも認識。
-l オプションで JXA を見分けるまではしてくれなかった。

そんなことよりこれですよ、command+b で。

sublimetext

筆者が Gedit や Atom でカスタムしていることがデフォルトで。
Python としか書いていないけど Python3 で動きますね。
ただしシバンを読み取って実行しているわけではないみたい。
JXA は実行できなかった、手段はあるみたいなので探す。

以上日本語化のみでデフォルト状態での雑感。
Sublime Text ってこんなに凄かったのか!
いや多分大多数の人とは気にする部分が違うと思いますけど。
70$ 払うかどうかはカスタムを試してから。