最近更新: 2012-09-05

gjs/gnome-shell 雜項筆記

gjs 相關的內容實在太散亂了。 一些不足以湊成單獨一篇文章的內容,我就統一放在這裡了。 目前有下列項目:

  • ARGV - 取得命令列參數
  • imports.gi.versions - 指定 GIRepository 資源版本
  • 執行外部程式 - 如果想用 gjs 寫 shell script...

取得命令列參數

命令列參數可由全域變數 ARGV 取得。

print("Length of arguments: " + ARGV.length);
for (var i = 0; i < ARGV.length; ++i) {
    print(ARGV[i]);
}

指定 GIRepository 資源版本

隨著 gnome-shell 開始導入 GTK 3 ,系統中同時存在兩種版本的 GDK/GTK 等 GIRepository 資源。 故我們將可能遭遇到版本衝突的狀況。 如果你的程式明確地使用其中一個版本才具備的功能時,最好指定版本號碼。 可用 imports.gi.versions.??? = "version number"; 指定。

imports.gi.versions.Gtk = '2.0'; // specify GIRepository of GTK to version 2.0.

print("It will load GTK version " + imports.gi.versions.Gtk);

執行外部程式

調用 imports.gi.GLib.spawn_command_line_sync()。回傳一個陣列,內容如下:

  • [0] - true or false; 是否執行成功?
  • [1] - string; 外部程式的 stdout 輸出的文字內容。
  • [2] - string; 外部程式的 stderr 輸出的文字內容。
  • [3] - int; exit_status; 外部程式的結束狀態碼。
function command(cmd) {
    var results = imports.gi.GLib.spawn_command_line_sync(cmd);
    //print(results);
    if (!results[0])
        return false;
    return results;
}

var results = command('uname -a');
print("Exit status: " + results[3]);
print("Output content: " + results[1]);

其他的 gjs 文章,請用本部落格右上的搜尋欄搜尋 gjs, 或是直接點擊本文的 gjs 標籤。

樂多舊網址: http://blog.roodo.com/rocksaying/archives/20113838.html