L'Isola di Niente
L'Isola di Niente » Gjs Tips » GLib etc...

GLib etc...

# 最終更新日 2017.02.05

コマンドの実行
#!/usr/bin/gjs

const GLib = imports.gi.GLib;

try {
    GLib.spawn_command_line_async("gnome-terminal");
}
catch(e) {
    print("実行できません");
    print(e);
}

コマンド出力を得る(文字列のみ)
#!/usr/bin/gjs

/*
 * 文字列出力しか得ることができません
 * バイナリ出力は GSubprocess を使う
**/

const GLib = imports.gi.GLib;

// ifs 区切りでオプションも使える、パイプは使えない
let [result, output, error, status] = GLib.spawn_command_line_sync("ls -l");
print(output);

ファイルとディレクトリ
#!/usr/bin/gjs

/*
 * g_rename や g_remove はバインドされていない
 * cp や mv に相当する関数も見つからない
 * Gio を使うまでもない単純作業用
**/

const GLib = imports.gi.GLib;

const DIRNAME = "ガールフレンド";
const FILENAME = "優木苗.txt";
const CONTENTS = "苗ちゃん\n可愛い\n大好き";

// mkdir (ECMAScript 5 から 0755 という 8 進数表記は非推奨)
GLib.mkdir_with_parents(DIRNAME, parseInt("755", 8));

// test
if (GLib.file_test(DIRNAME, GLib.FileTest.IS_DIR))
    print(DIRNAME + "ディレクトリを作成しました");

// cd
print("入ります");
GLib.chdir(DIRNAME);

// pwd
print(GLib.get_current_dir());

// リダイレクト (PyGObject と違い UTF-8 で出力)
GLib.file_set_contents(FILENAME, CONTENTS);

// 存在確認
if (GLib.access(FILENAME, parseInt("755", 8)))
    print(FILENAME + " ファイルを作成しました");

// コレも使える
print("出ます");
GLib.chdir("..");
print(GLib.get_current_dir());

タイマー
#!/usr/bin/gjs

/*
 * timeout_add(priority: Number(gint), interval: Number(guint), function)
 * になっているので注意
**/

const GLib = imports.gi.GLib;

let count = 0;
let mainloop = new GLib.MainLoop(null, false);

GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, function() {
    if (count==10) {
        mainloop.quit();
        return false;
    }
    count += 1;
    print(count);
    return true;
});
mainloop.run();

日付けと時刻
#!/usr/bin/gjs

const GLib = imports.gi.GLib;

let datetime = GLib.DateTime.new_now_local();
print(datetime.format("日付 %Y年%m月%d日\n時刻 %H:%M:%S"));

Copyright(C) sasakima-nao All rights reserved 2002 --- 2017.