Gjs 組み込み機能
# 最終更新日 2023.11.19
標準出力
標準入力は無い、GIOChannel を使おう
#!/usr/bin/gjs // print で標準出力に出力される print('標準出力'); // printerr は標準エラー出力に出力される printerr('標準エラー出力'); // log も標準エラー出力 // 「Gjs-Message: 時間情報: JS_LOG:」の接頭子付き log('標準エラー出力'); // console.log が追加された、これまた標準エラー出力 // 「Gjs-Console-Message: 時間情報:」の接頭子付き console.log('標準エラー出力');
system
mainloop 等は無くなりましたがコレは残っています
#!/usr/bin/gjs -m import System from 'system'; import GObject from 'gi://GObject'; // 自身のカレントディレクトリからの相対パス、C 言語の argv[0] と同じ print(System.programInvocationName); // 自身の絶対パス print(System.programPath); // 引数の配列、ARGV と同じ for (let a of System.programArgs) print(a); // gjs --version コマンド同様、ただし区切りは無い print(System.version); // object のアドレス let obj = {} print(System.addressOf(obj)); // GObject 派生な場合のアドレス、Gtk.Window 等もコレ let gobj = new GObject.Object(); print(System.addressOfGObject(gobj)); // 参照カウンタ数 let x = gobj.ref(); print(System.refcount(x)); gobj.unref(); print(System.refcount(x)); // 終了 System.exit(0); print('一行前で終了したのでコレは表示されない');
TextEncoder, TextDecoder
UTF-8 バイト文字列と JavaScript 文字列の相互変換
#!/usr/bin/gjs // Uint8Array に変換 let encoder = new TextEncoder(); let u8arr = encoder.encode('オリンパス PEN'); print(u8arr); // JavaScript 文字列に変換 let decoder = new TextDecoder(); let jsStr = decoder.decode(u8arr); print(jsStr);
byteArray
古い手段の UTF-8 バイト文字列と JavaScript 文字列の相互変換
#!/usr/bin/gjs -m import ByteArray from 'byteArray;'; // Uint8Array に変換 let u8arr = ByteArray.fromString('オリンパス PEN'); print(u8arr); // JavaScript 文字列に変換 let jsStr = ByteArray.toString(u8arr); print(jsStr);
setInterval
Web API の setInterval を移植、繰り返し処理
#!/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__');
setTimeout
Web API の setTimeout を移植、指定ミリ秒後に実行
#!/usr/bin/gjs -m import GLib from 'gi://GLib'; const mainloop = new GLib.MainLoop(null, false); print('5 秒後に,,,'); setTimeout(()=> { print('何もおこりませんでした'); mainloop.quit(); }, 5000); mainloop.run();
Copyright(C) sasakima-nao All rights reserved 2002 --- 2024.