問題タブ [gjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - GSettings で dconf-entry を変更できない
現在、 Gjsで単純なアプリケーションを構築しています。これにより、gnome-shell の背景画像が変更されるはずです。gsettings
-toolを使用してこれを行う方法に関する解決策は、ここにあります。
その周りにデスクトップアプリケーションを構築したいので、Gio の -class を使用して -key を変更したいと考えていorg.gnome.desktop.background.picture-uri
ます。ただし、-メソッドを使用してもキーの値は変更されません。GSettings
set_X()
これは gsettings 値を変更する私のコードです:
値の読み取りは期待どおりに機能し、is_writable()
-method が返さtrue
れ、set_string()
-method も返されますtrue
。
「delay-apply」モードではなく、キーにGVariantType
of 文字列があることを確認したので、set_string()
-method が機能するはずです。
通常のgsettings
コマンドライン ツール (リンクされた投稿で説明されている) を使用すると、問題なく動作します。
何が問題なのかわかりません。ログなどを探すことができる場所はありますか?
javascript - Gjs コードでインクルード パスを設定するには?
ご覧のとおり、 Gjsはデフォルトimports
でのみロード/usr/share/gjs-1.0
さ/usr/lib/gjs-1.0
れます。ノードでできるように、アプリケーションをモジュール化したいのですが、スクリプト ファイルに関連するモジュールを見つける必要があります。
インクルード パスを追加するには、次の 2 つの方法を見つけました。
gjs --include-path=my-modules my-script.js
GJS_PATH=my-modules gjs my-script.js
...しかし、どちらもファイルではなく現在のディレクトリに関連しており(明らかに)、コマンドラインで宣言する必要があり、これが不必要に複雑になっています。
Gjs コードでインクルード パスを設定するにはどうすればよいですか? (だから私はこれをファイルに相対的にすることができます)
または... Pythonのように、どこからでもファイルをインポートする別の方法はありますか?
--include-path
(この問題を解決するためにシェルスクリプト ランチャーを使用することを提案する必要はありませんGJS_PATH
。それは明らかですが、それほど強力ではありません。より良い解決策がない場合は、それで乗り切ることができます。)
javascript - Gnome-ShellJSインターフェースを使用した連絡先のリストの取得
gnome-shell拡張機能を書き始めたばかりで、ユーザーの連絡先のリストを取得する方法を知りたいです。
私はいくつかの可能性のあるファイルを追跡しました:gnome-shell/js/ui/contactDisplay.js
そしてgnome-shell/src/shell_contact_system.c
。
今、私shell_contact_system.c
は次の関数に気づきます:
これは、javascriptインターフェースで関数を使用できることを示唆しています(ファイルにもがあり、の使用法を示してget_all
いるという事実によって私の信念が強化されています)。.c
shell_contact_system_get_individual
contactDisplay.js
Shell.ContactSystem.get_default().get_individual
できます!(私はGnome-shellの「lookingglass」javascriptインタープリターで試してみています)。
これは「Gobject」のように見えるので、連絡先の名前を取得するためにこのオブジェクトをどう処理するかわかりません。(Cコードから)このオブジェクトがであることに気付いGeeMap *
たので、Gee.Mapのドキュメントを見ると、次のことができることがわかります。
次に、これらの方法に注目して、contacts.values
を見てみます。contacts.key
to_array()
ただし、これを行うと、空の配列が返されます。contacts.xxx.to_array().size
は0ですcontacts.size
が、31ですか?!!
contacts.map_iterator()
aを使用してマップを反復処理しようとしたときにも同じことが起こります。it.get_value()
そしてit.get_key()
nullのように見えます。
だから、私の質問は:どうすればの個々の要素にアクセスできますcontacts
か?
のコメントは、との間に言うことshell_contact_system_get_all
に注意してください。後者の機能は機能します(検索したい個人のIDがわかっている場合、これが私の問題です)が、前者は機能しません。これはそれと関係があるのでしょうか?Returns: (transfer none): ...
shell_contact_system_get_individual
Returns: (transfer full): ...
また、回避策として、現在、contactSearchProvider
クラスを使用してこれを実現できます(gnome-contacts
連絡先の名前を入力すると、概要に表示されるように、概要で使用されます)。''
私は基本的に、すべての連絡先のリストを返す必要があるものを検索します。get_all()
ラウンドアバウトのようですが、空の文字列を検索しなくても、このメソッドを使用してすべての連絡先を取得できるはずです...
助けていただければ幸いです(ちなみに、これに関するドキュメントはありますか?ソースをじっと見つめ、そこからすべてのドキュメントを推測しようとすると、非常に不十分だと感じます!)
javascript - プロトタイプでセッター/ゲッターを定義する方法
2016 年 10 月編集: この質問は 2012 年に行われたことに注意してください。毎月、誰かが新しい回答または回答に反論するコメントを追加しますが、質問がおそらく古くなっているため、実際には意味がありません (覚えておいてください、Gnome Javascriptが gnome-shell 拡張機能を作成するためのものであり、ブラウザーのものではなく、非常に具体的です) 。
Javascript でサブクラス化を行う方法に関する以前の質問に続いて、次のようにスーパークラスのサブクラスを作成しています。
私の質問は、この構文でプロトタイプにセッター/ゲッターを定義するにはどうすればよいですか?
やったことある:
しかし、明らかに以下は機能しません。
私は GJS (GNOME Javascript) を使用しており、エンジンは Mozilla Spidermonkey のものと多かれ少なかれ同じであることを意図しています。私のコードはブラウザー向けではないので、GJS でサポートされている限り (Spidermonkey を意味すると思いますか?)、相互互換性がなくてもかまいません。
unicode - Javascriptとgjsを使用したUnicodeファイルI/O?
JavascriptとGjsを使用して、おそらくGioやGlibを使用して、Unicodeテキストファイルを読み書きする方法の実用的な例を誰かに教えてもらえますか?私はJavascriptの経験がありますが、これらのAPIはまだ私には異質であり、まったく新しいテクノロジーであるため、グーグルはあまり役に立ちません。
私はこれを見ました:https : //live.gnome.org/Seed/Tutorial/Simple_file_io、しかしそれはシードベース(Gjsではない)であり、かなり古いようです。エラーが発生しているため(9行目のGio.readの引数が少なすぎるなど)、Unicodeテキストを使用してテストできません。
実用的なスニペットが非常に役立ちます。ありがとう!
更新:Ubuntu12.0464ビットでテストしています。
dbus - Gjs / Gnome Shell で DBus メソッドを呼び出す
バス名、オブジェクト パス、およびインターフェイスがある場合、Gjs から (gnome-shell 拡張で) DBus メソッドを呼び出すにはどうすればよいですか?
次のpythonコードに相当するものを探しています:
(私は python-dbus マジックのためにインターフェースを明示的に使用しなかったことに注意してiface = dbus.interface(obj, "org.gnome.SessionManager.EndSessionDialog")
ください。 gnome-shell にコールバックするため、Gjs ではばかげています)
javascript - gnome-shell で拡張オブジェクトを取得する
私はgnome-shell拡張に取り組んでいます。他の拡張機能のオブジェクトを取得できるかどうか疑問に思っていました。
を使用して現在の拡張オブジェクトを取得する手段しか見つけられません
ExtensionUtils.getCurrentExtension()
インストールされている他の拡張機能にアクセスする可能性はありますか?
gjs - Linux(GNOME&Gtk)アプリケーションを開発するためにJavaScriptを使用する必要がありますか?
私はGtk+とGNOMEAPIを使用してPythonとCアプリを作成しましたが、GJSのおかげでGNOME 3でJavaScriptがサポートされていることがわかりました(シードについても聞いたことがあります)。
だから、私は尋ねなければなりません:それはそれだけの価値がありますか?GJSが注目を集めており、今後廃止される予定がないかどうかを知りたいだけです。
javascript - JavaScriptでGVariantを解凍します
GSettingsにタイプのGVariantとして格納されている配列があり、a(ss)
これをCinnamonアプレットで使用します。次のコードを使用して、値を正常に取得できます。
しかし、私はそれを開梱することはできません。私が見る限り、おそらくGVariantIter
構造体を使用して解凍する必要がありますが、ドキュメントが限られており、gjs APIで正しいインターフェイスを見つけることができません(実際に存在する場合)。誰かがそれを行う方法を知っていますか?
ありがとう!
編集: 私のスキーマは次のようになります:
とりあえず、JSON
設定を保存するために外部ファイルを使用していますが、100%満足のいく解決策ではありません。2つのas
型変数を維持し、それらを整列させておくことができると思いますが、これを適切に行う方法が必要ですよね?
gnome-shell - gnome-shell3.4および3.6の拡張機能を記述します
gnome-shellの拡張機能を書いています。しかし、gnome-shell 3.4では、メニューが追加されpanel._menus
、gnome-shell3.6ではwithwithを使用しpanel.menuManager
ます。すべてのバージョンで機能するメニューを追加するにはどうすればよいですか?