問題タブ [dbus]
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.
qt - QStringを使用したQt invokeMethod
アプリケーションを起動するためのサービスを提供する DBus で実行されているデーモンがあります。このサービス API に 2 つの文字列 (appPath、appArgs) を渡したいと考えています。サービスとオブジェクト パスを DBus に登録しました。
サービス メソッドが呼び出されますが、サービスで適切に () 引数を受け取りません。これは、アダプタークラスから行う方法です。
これが私のインターフェースの外観です。
どうすればこれを達成できますか?
python - Gnome / Ubuntu 用のアプレットを開発する方法についてのアドバイスを探しています
私は Linux (主に ubuntu) のユーザーであり、システムがどのように機能するかについて十分に理解しています (ただし、私はLinux の第一人者ではありません!)。過去に、Python/GTK で小規模なクロスプラットフォーム デスクトップ アプリケーションを開発し、それらを自己完結型のファイル ツリーとしてクライアントに配信したため、依存関係は Python 自体と GTK だけでした。
今、私は GPL 2 または 3 の下でリリースしたいubuntu 用の小さなアプレットを開発したいと思います。
特に、これらは、目標を達成するために学ばなければならないことがわかっている新しいステップです (ただし、私が気付いていないことがさらにいくつかある可能性が非常に高いです!):
- gnome との統合:アプリケーションをタスクバーでアプレットとして利用できるようにしたいです。
- D-bus の使用:特に、アプレットで ubuntu 用の新しい osd-notification フレームワークを使用したいのですが、他のアプレットとの通信も 2 回目の反復で可能な機能です。
- パッケージ化:アプリケーションがアルファ段階に達したらすぐにパブリック PPA をセットアップしたいと考えていますが、ライブラリを自分のパッケージに再度含めるのではなく、公式リポジトリの既存のパッケージからの依存関係も使用したいと考えています。
もちろん、公式ドキュメントは私の最初の知識源になりますが、SO に関する別のトピックで受け取った非常に有用な回答に基づいて判断した結果、SO コミュニティに目を向けて、次のような追加のアドバイスを収集することにしました。
- プロジェクトを実装できるようにするために学ばなければならない追加の手順はありますか?
- あなた自身の経験に基づいて、これらの手順を事前に学習するようにアドバイスしてくれますか (これらの知識はコア機能のコーディング方法に影響を与えるため)、または gnome / d-bus およびパッケージングとの統合を「より高いカプセル化レベル」として検討しますか? "後でコア機能の上に追加できます (注: D バスは、最初はデータをプッシュするためだけに使用されます。入力データは Web サービスで取得されます)。
- アプリケーションを 2 つのパッケージ (バックエンドとフロントエンド) に分割するか、1 つのパッケージにまとめるようアドバイスしてもらえますか?,
- 私がしなければならないことを学ぶために、見るように勧める有用なリソースを知っていますか?
- 私が知っておくべき一般的な「初心者の間違い」を知っていますか?
ただし、これらの質問は網羅的なものではありません。全体像から何かが欠けていると思われる場合は、正しい方向に向けていただければ幸いです。
PS: 最終的な目標の説明に失敗した場合は、プロジェクト hamsterを見てください: 私が達成したいことは、ユーザー インターフェイスの点で類似しています (つまり、アプレットはステータスを表示し、それをクリックするとアプリケーション自体が開く必要があります。そこからアプレットを構成し、さまざまな操作を実行できます)。
python - Linux USB マッピングに関する質問
Linuxに挿入されたUSBスティックを自動マウントするユーティリティに取り組んでいます。デバイスが挿入されたときに通知を受け取るために D-Bus に接続しましたが、うまく機能しています。ただし、挿入された USB スティックにマップされている /dev 内のデバイスを特定する必要があります。D-Bus 通知を受け取り、USB システムを pyUSB ( 0.4 ) でスキャンしています。USB_MASS_STORAGE_DEVICE クラスをフィルター処理すると、追加または削除されたデバイスが表示されます。このデバイスをマウントして、使用可能なスペースをクエリし、それをアプリにレポートして、データを書き込むのに十分な空きスペースがあるかどうかを判断できるようにする必要があります。
このタスクには python を使用しています。ターゲット ディストリビューションがどうなるかはわかりませんが、少なくとも 2.6 になるということだけです。
編集: 私の質問は: /dev のどのデバイスが pyUSB から取得した buss-device 番号にマップされているかを判断するにはどうすればよいですか。
python - DBus-Cherrypyマージの問題
python-dbusとcherrypyを使用してUSBデバイスを監視し、挿入されたUSBデバイスのステータスを維持するRESTサービスを提供しています。私はこれらのサービスを個別に作成およびデバッグしましたが、期待どおりに機能します。
今、私はサービスを単一のアプリケーションにマージしています。私の問題は、両方のサービス(cherrypyとdbus)を一緒に開始できないようです。いずれかがブロックするか、スコープ外になるか、初期化されません。
それぞれを独自のスレッドにカプセル化してみましたが、それらに対してstartを呼び出すだけです。これにはいくつかの奇妙な問題があります。
このコードを実行すると、cherrypyコードは完全には初期化されません。USBデバイスが挿入されると、cherrypyは初期化を続行します(スレッドが何らかの形でリンクされているかのように)が、機能しません(データを提供せず、ポートで接続さえしません)cherrypys wikiページを見ましたが、起動して戻るような方法でcherrypyを起動する方法が見つからなかったので、DBusのものを初期化して、これをドアから出すことができます。
私の最終的な質問は、cherrypyを開始し、ブロックせずに作業を継続する方法はありますか?この例のスレッドを削除し、メインスレッドでcherrypyとdbusの両方を初期化します。
linux - D-Busスレッドモデル
Linux/KDEの新しいプロジェクトのIPCメカニズムとしてD-Busを使い始めています。そして、私は、ドキュメントが実際には並行性をまったく扱っていないことを発見しました。D-Busサービスは、異なるクライアントからの複数の同時通話をどのように処理することが期待されていますか?スレッドモデルとは何ですか?サービスは、それがシングルスレッドであり、D-Busがそれ自体でリクエストをキューに入れると想定できますか?
api - ワイヤレス認証モードを調べる方法は?
DBUS API (Linux) を介して、利用可能なすべてのアクセスポイントで認証モード (WPA/WEP) を取得しようとしています。NetworkManager APIはプロパティ WPAFLAGS を記述していますが、何も得られません (毎回 Null フラグを取得します)。D-Feet DBUS デバッガーも何も表示しません。何か不足していますか、それとも API が壊れていますか?
python - Totemアプリケーションから現在の時点を取得する
D-Busを使用して、実行中のTotemインスタンスでメディアファイルが現在一時停止(または再生)されている正確な時刻を確認したいと思います。正確には、次のコマンドを使用して、Totem pythonコンソール(プラグインが存在し、有効になっている場合)から必要なものを利用できます。
私が理解しているのはミリ秒です。
これまでのところ:私はこれまでD-Busを使用したことがないので、D-Busとpython-dbusのドキュメントを調べているところです。また、D-Feetを起動して、org.gnome.Totem
バス名と/Factory
オブジェクトがorg.freedesktop.DBus.Properties
インターフェイスメソッドを使用できることを確認しました。
私は現在この時点にいます:
適切なハウツーすら見つからないので、どんな助けでも大歓迎です。
c - DBus Glib Send Signal - シグナルが送信されていません
セッション メッセージ バスを介して信号を送信しようとしています。d-feet dbus デバッガーを使用して問題なくメソッドを呼び出すことができます。残念ながら、d-feet では信号に接続してデバッグすることはできません。代わりにdbus-monitor "type='signal'"
、何かが送信されたかどうかを確認するために使用しています。これまでのところ、これは私が送信するものを除いて機能します。
私の推測では、呼び出すdbus_g_connection_register_g_object (connection, path, object);
と、イントロスペクション xml ファイル内にあるすべてのメソッド、プロパティ、およびシグナルが登録されます。追加する前に dbus がシグナルが存在しないと文句を言うので、これは正しいように見えます。
を使用して信号を送ろうとしましたg_signal_emit_by_name(self,"application_identifier_changed","some new crazy aid",NULL);
。これはアプリ自体の中で機能し、信号に接続でき、トリガーします。ただし、dbus モニターには何も表示されません。私は単純なものが欠けているに違いありません。
関連するファイルは次のとおりです
。
powerview-application-presence.gob:
powerview-application-presence-instance.xml
プロジェクト tarball: https://www.slello.com/tmp/PowerviewTestApp.tar.gz
助けていただければ幸いです。
python - PythonDBusでの非同期メソッドの実装
Python DBusで非同期メソッドを実装するにはどうすればよいですか?以下の例:
Twistedのglib2リアクターを使用しています。
更新:この動作を実装できることはわかっています-DBusにはメソッド呼び出しへの「シリアル」(一意の識別子)が含まれており、呼び出されたメソッドは「呼び出し」と「応答」を照合するためにこの識別子にアクセスできます。
python - Python DBUS SESSION_BUS - X11 依存関係
Ubuntuデスクトップで問題ないサンプルのpythonコードを実行しています:
デスクトップで成功した後、コードをシェルのみのサーバー版に移動しました。dbus-launch はプロセスを開始しますが、python dbus.SessionBus() は「/bin/dbus-launch が次のエラーで異常終了しました: 自動起動エラー: X11 初期化に失敗しました」というエラーを返します。
「dbus-launch」で開始されたプロセスが正常に起動して実行されたときに、SESSION_BUS と X11 の間に厳密な依存関係がないことを願っています。エラーはpythonで発生します。
最良の解決策は、クリーンな python または linux 環境設定です。最悪ですが、いくつかの偽または仮想 X11 で許容される可能性があります (試してみると運が悪かったです)。