Magamo

今日の五条川

kogamo

コガモ、オスが色付いてくる季節になりました。
やっぱりこの色にならないと撮影する気分が乗らないよね。

magamo

マガモ、カモも増えたけどまだオオバンとかはいないなぁ。
冬はなんにも小鳥が見つからなくてもカモがいるのが救い。

daisagi

しかし小鳥が全然見つからないのでダイサギでも撮るか。
冬のわりに不作な一日だった。

Gjs Tips – Paepoi

いや Gjs Tips の書き換えにはまって時間が無かったんですが。
思っていたより書き換え箇所が多くて今日まで掛かった。

Gjs setInterval

先日 Gjs で TextDecoder が使えると書きましたが。

for (let s in this) print(s);

this

グローバル関数だったんですね、無理やりな実装だなって。
てか setTimeout や setInterval も追加されているじゃないの。
console.log も使えるようになったし、Web に合わせてきたのね。
Web や Node.js と同じなのかな、チト試してみよう。

#!/usr/bin/gjs -m

import GLib from 'gi://GLib';

const mainloop = new GLib.MainLoop(null, false);

let count = 1;
let id = setInterval(()=> {
    if (count == 5) {
        clearInterval(id);
        mainloop.quit();
    }
    console.log(count);
    count++;
}, 1000);

print('__do__');

mainloop.run();

print('__done__');

log

基本 Web と同じですけど、やっぱりメインループが必要ですね。
Web の場合はブラウザがメインループを回しているから不要なだけで。
Node.js が不要だからややこしい、繰り返し処理にはループが必要。
GtkApplication から使う等の場合は当然別途のループはいりません。

console.log は print と同じでいいのに、スタンドアロンでこの表示いる?
とにかく Web 標準と同様に使えます、ということで。

というか、Gjs って三年前とは全然変わってしまったなと。
tips ページはそろそろ丸ごと書き換えしなきゃ、面倒くさいなぁ。。。。。

loupe

先日導入した loupe という GNOME の新規画像ビューア。

loupe

拡大でアンチエイリアスが掛からないじゃん。
右は書くまでもなく Eye of GNOME(EoG) で同じ画像です。
拡大は EoG の最大 20 倍と同じまで可能だった、表示が欲しいなぁ。

EoG のように滑らかにする設定が、って設定が見つからない。
gsettings にも ~/.config にも見当たらない、本当に設定が無い。
そういう仕様ならせめてアンチエイリアスくらいは掛けてよ。

というか GPU アクセラレーターを使っているらしいけど。
もしかして OpenGL でレンダリングだったりするのかな。

screentone 2D and 3D | Paepoi Blog

もしそうだとしたらコレが気になるんですけど。
試そうと思ったけどリンク先が無くなっていた。
「スクリーントーン フリー素材」で検索して別のを探す。

無料イラスト スクリーントーン イラレ用パターン 漫画

とりあえずコレをお借りして縮小実験。

loupe

これ以上小さくできなかった、2 %まで縮小できる EoG って凄かったんだなぁ。
とりあえず縮小は問題ないみたいですね。

しかし何%で表示されているか一目で解らないと困るな。
ほぼ観覧にしか使わないスマホならともかくこれパソコンですよ。
EoG がどんだけ優れていたか思い知っただけだった。

関係あるかどうか知らないけど Nautilus のサムネイルも早くなっている。
こっちも GPU を使っているのかな、GNOME は部品共有だし。

Fedora 39 Upgrade

Fedora に 39 へのアップグレード通知が来た。

What’s new in Fedora Workstation 39 – Fedora Magazine

画像ビューアが EoG から新規アプリに変わって bash プロンプトに色が付く。
端末エミュレーターは GNOME Console についに移行ってことなのかな?

興味があるのはこのくらいか、あとは実物を見ないとわかんねぇ。
クリーンインストールの必要は無いな、そのままアップグレード。

あれ?EoG のままだ。
端末も GNOME Terminal のままで表示も今まで通り。
なにそれ、アップグレードに失敗したの?

about

いや他の項目は普通に適用されている。
左サイドバーがあるアプリはそちら側にハンバーガーメニューが移動している。
Activities Indicator って「アクティビティ」部の置き換えだったのか。
てか隣にあった旧アプリケーションメニューが消えたことのほうが気になるわい。
現在何のアプリがアクティブなのかソコで判別してたのに困った。

写真アプリと一体化したのかなと思い立ち上げたら起動しない。
新規で増えた GUI アプリも何一つ見当たらない。
アップグレードだと GUI アプリ類はそのまんま移行ってことかな。
クリーンインストールだと多分変わっている、知らんけど。

GNOME / Image Viewer ? GitLab

GNOME / Console ? GitLab

コレのはずなので自分で入れてみた。
loupe は拡縮がスムースでいいね、筆者的には Esc で終了できないのは痛い。
console は kgx から改名したのか、プロンプトに色が付かないんですけど。
それよりどちらも翻訳されていなくて英語のまま、うーん微妙。

あと US 配列キーボードを使っている人以外には関係ないだろうけど。
リネーム時に入力メソッド切り替え一発目がスカるのが解消された。
地味に嬉しいけど恩恵がある人は少ないだろう。

変化が無いようにみえて地味に嬉しい追加機能を発見。
ファイルのロケーションバーメニューに Copy Location が。
現在の場所をクリップボードにコピーできます、ついに標準機能に。
いや Ctrl+L Ctrl+C をやれば今までもできていたのは置いておいて。

Wayland で Gedit の Ctrl+F9 が動作しないのも今まで通り。
てか gnome-texteditor をいいかげん拡張可能にしてくれないか?
いつまで Gedit を使い続けなきゃいけないのよマジで。
とりあえずアップグレードは問題なくできたということで。

Javascript TextDecoder

知らぬ間に Gjs の挙動が変わっていた。
普段は Python ばかりなのでいつからかは解らない。

#!/usr/bin/gjs -m

import GLib from 'gi://GLib';

/**
 * res is Uint8Array
 */
let res =  GLib.spawn_command_line_sync('pwd')[1];
print(res.toString()); //=> Warning

warn

よく見ると実行はされているので警告されているだけですね。
今まで普通に動いた、なんなら toString さえ暗黙実行されていた。

Google translate 等を使えば解るけど TextDecoder 使えってさ。
互換性のために残しているけどはよ移行しろということらしい。
警告メッセージも親切になったもんだ、ということで。

TextDecoder – Web API | MDN

主要ブラウザは全部が既に実装済みなんですね。
Web API なんだが Gjs や JXA でも使えるのだろうか?

#!/usr/bin/gjs -m

import GLib from 'gi://GLib';

let res =  GLib.spawn_command_line_sync('pwd')[1];
// TextDecoder
let dec = new TextDecoder();
let text = dec.decode(res);
print(text.trim());

動くじゃん、Spider Monkey 自体に実装されているのだろうか。
import 何も無しで使えるのって筆者は正直気持ち悪いんですけど。
string に変換されたので trim メソッドで改行を削除しています。
ちなみに。

#!/usr/bin/gjs

/**
 * old gjs
 */

const GLib = imports.gi.GLib;
const ByteArray = imports.byteArray;

let res =  GLib.spawn_command_line_sync('pwd')[1];
let text = ByteArray.toString(res);
print(text.trim());

byteArray モジュールを使う以前の正規な手段もまだ使えます。
というか、imports でのインポートもまだ普通に使えるんだよね。
byteArray も imports も Gjs 独自実装だから排除したかったのだろうけど。
Gjs で新しい手段の import では -m オプションを忘れずに。

jxa

JXA では TextDecoder 等は使えない、やはり実装はバラバラ。
というか JXA の UTF8String って正体は string じゃないか。
普通に string のメソッドが使えるし、まあ Cocoa がそうなのね。
Uint8Array は JXA ではほぼ扱われることが無いということだろう。
Node.js やその他は知らないしどうでもいい。

非推奨の機能、廃止された機能 – JavaScript | MDN

てか escape や unescape は非推奨になっていたのか。
Tips ページをいくつか書き換えなきゃなぁ面倒だなぁ。
え?今日は公園には行きましたよ、察して。