私はchrootでArchlinuxを実行しており、ChromebookでChrome OSを実行しています。元のプロジェクトはそこ、私のフォークはここ(ほとんど同様)。
問題は、Chrome OSのディスプレイ電源管理がChrome OS Xのタッチパッドとtty1のキーボード入力のみを考慮して画面ブランキングカウントダウンをリセットすることです。したがって、chroot、tty3(コンソール)、またはtty4(Arch独自のXサーバー)で作業している場合は、アイドル状態であるかアクティブであるかに関係なく、5分後にバックライトが消えます。その後、tty1に戻っていくつかの入力を登録し、電源を入れてバックライトを再び有効にする必要があります。
Chrome OSでpowerdを無効にしたり、デフォルトのタイムアウト(元の著者またはchroot設定スクリプトが実行した操作)を延長したくありません。数分間アクティビティがない場合は、画面のバックライトがオフになり、chroot環境またはChrome OSでアクティブなままになります。また、Chrome OSは頻繁に更新されるため、修正を最小限に抑え、chrootの再インストールスクリプトを単純に維持したいと思います。
だから私の考えは複数のデーモンを書くことです。デーモンAはchrootで実行され、Archにキーボードまたはマウス入力があるかどうかを検出します。 Chrome OS で実行されているデーモン C は、デーモン A の出力をチェックし、画面の空白とスリープカウンタをリセットするために最も適切なアクションを実行します。
ただし、chrootのユーザーアクティビティが一部の/ devノードを読み込んでいることを確認できる場合は、デーモンAは必要ありません。一部の/devファイルを読んだり、他の方法でchroot(/dev/tty3と/dev/tty4)で最後にアクティブになったユーザーの年齢を推測したりできますか?いいえchroot?
第二に、このようなコマンドはsetterm -blank poke
chroot内で動作しているように見えるので、デーモンAが自分自身でスクリーンスペースのカウントダウンをリセットできる場合、デーモンCは必要ないかもしれません。 2番目の質問は次のとおりです。一部の/devファイルを読んだり、他の方法でchroot(/dev/tty3および/dev/tty4)から最後のユーザーアクティビティの年齢を推測したりできますか?以内にchroot?
カウンタをリセットするには、デーモンAとCの両方が存在し、通信する必要があると思う場合:現代のIPCはGNU / Linuxで実際にどのように実装されていますか?システムV? POSIX? /procファイルの読み取りと書き込み?私の状況に最も適したものは何ですか?
ついに、setterm -blank poke
バックライトを点灯させるために監視プログラムが使用する必要がある他のことを知っていますか?
質問が長いので申し訳ありません。全内容を読んでほしくないです:)
答え1
(潜在的に)電源デーモンと対話する方法に関するいくつかのガイドラインです。
見てChrome OS 源泉(Chrome OSとどのくらい異なるかはわかりません)power_manager
由来これは役に立つかもしれません:
README
以下を含め、人々がそこで何を見つけることができるかを説明します。
powerd
(powerd.cc
)上位レベルの電源マネージャ。ユーザーがアイドル状態で電源が入っているかどうかに応じてデバイスの状態を調整します。ウィンドウマネージャのビデオアクティビティインジケータ。このデーモンは、ユーザーのアイドル状態に応じてバックライトを暗くしたり、画面をオフにしたり、ユーザー入力や周囲の照明条件に応じてバックライトの強度を調整したりします。デーモンはプラグ状態(ACまたはバッテリー)とバッテリーの充電状態も監視します。xidle-example
(examples/xidle_example.cc
)ユーザーが休暇中でアイドル状態のときにコンソール通知を印刷します。
だからおそらくあなたが介入することができますXIdle
。xidle_example.cc
役に立つかもしれません。
もう1つ役に立つかもしれませんRootPowerManager.conf
どちらか教えてくださいDバス受信するアドレス、org.chromium.RootPowerManager
...おそらくそこから何かを見つけることができるでしょう。私はまだインターフェイス仕様を見つけることができませんでした(しかしD-Busがあなたに知らせることができるでしょう)。
(grep idle
役に立つかもしれません。わかりました。activity_detector_interface.h
、これがD-Busエクスポートの場合、これを使用して、Archシステムがアクティビティなどを検出したときにChrome OSのアクティビティ検出を無効にできます。 )