web-dev-qa-db-ja.com

アクティビティに応じて、どうすればコンピュータを起動状態にできますか?

特定のアクティビティや、より大きなファイルのダウンロードやフルスクリーンビデオの視聴など、長時間実行されるタスクの間、コンピューターを起動したままにしておきたいと思います。

ディスプレイがスリープ状態にならないようにすることで、Caffeineを使用してコンピューターがスリープ状態にならないようにします。これは私のMacではうまくいきましたが、Ubuntuではうまくいきません。

これどうやってするの?

5
Wes

Caffeineがコンピューターをスリープ状態にしない理由はわかりません。 Ubuntuのアイドル時間はキーボードまたはマウスでユーザーアクティビティが検出されない時間と同等であるためだと思われます。

コンピューターがスリープ状態になるのを防ぐ方法

Caffeineがするように(そうするべきです)コンピューターをスリープ状態に保つためのソリューションを探している場合、以下のソリューションが機能するはずです。 14.04でテストしました。 1つの同じスクリプトに一緒に保存する必要がある2つの小さなスクリプトが存在します。キーの組み合わせを使用して、オンまたはオフに切り替えることができます(トグル)。一度押すと、メッセージに現在の状態が表示されます:

enter image description here または: enter image description here

基本的には、マイナーなユーザーアクションをシミュレートする小さなバックグラウンドスクリプト(キープレス Ctrl)アイドル時間が定義された時間を超えた場合、コンピューターがスリープ状態になったり画面がブランクになったりするのを防ぎます。キープレス自体は無意味であり、フルスクリーンでビデオを再生するのに影響はありません。

使い方

  • xprintidleおよびxdotoolをインストールする必要があります。

    Sudo apt-get install xprintidle xdotool
    

    inotify-toolsはデフォルトでbuntにインストールする必要がありますが、Xu-またはLubuntuには当てはまらない場合があります)

  • 以下のスクリプトは、オン/オフを切り替え、空のファイルにコピーし、insomnia.py(名前をそのままにして)として保存し、実行可能にします(!)

#!/usr/bin/env python3
import os
import subprocess

script_dir = os.path.dirname(os.path.abspath(__file__))
try:
    pid = subprocess.check_output(["pgrep", "-f", "caf.py"]).decode("utf-8").strip()
    subprocess.Popen(["kill", pid])
    subprocess.Popen(["notify-send", "Computer doesn't stay awake..."])
except:
    subprocess.Popen(["/bin/bash", "-c", script_dir+"/"+"caf.py"])
    subprocess.Popen(["notify-send", "Computer stays awake..."])
  • 以下の(メイン)スクリプトは、コンピューターを起動したままにして、スクリプトを空のファイルにコピーし、caf.py(名前をそのままにして)として保存し、実行可能にします(!)
#!/usr/bin/env python3

import subprocess
import time

seconds = 120 # number of seconds to start preventing blank screen / suspend

while True:
    curr_idle = subprocess.check_output(["xprintidle"]).decode("utf-8").strip()
    if int(curr_idle) > seconds*1000:
        subprocess.call(["xdotool", "key", "Control_L"])
    time.sleep(10)

両方のスクリプトを同じフォルダーに保管することが重要です!

  • 次に、カフェインの置き換えのオンとオフを切り替えるキーボードショートカットを追加します。「システム設定」>「キーボード」>「ショートカット」>「カスタムショートカット」

    コマンドを追加します。

    /path/to/insomnia.py
    

    お好みのキーの組み合わせへ

それでおしまい。

5
Jacob Vlijm

また、ここでは、ネットワークアクティビティまたはフォルダーサイズの変化に基づいてアクティビティを判断するため、よりインテリジェントなスクリプトソリューションをいくつか利用することもできます。

たとえば、バックアップまたはトレントクライアントの動作中にコンピューターを起動したままにする場合は、dhiyaによるリンクの2番目のソリューションを使用します。ネットワークトラフィックをチェックし、トラフィックが停止するまで起動し続けます。ワイヤレスLANではなくイーサネットを使用している場合は、コードで「wlan0」を「eth0」に変更することを忘れないでください。

2015年9月17日更新:ネットワークトラフィックまたはユーザーアクティビティに基づいてシステムを起動状態に保ち、強制的に中断するために、下のリンクからdhiyaのコードを変更しましたデスクトップセッションがネットワークトラフィックなしでロック/ログイン画面で終了する場合。プログラムは、すべてをログファイルに記録します。ログファイルを管理するための構成も提供されています。私はプログラムに「Keep Awake」という名前を付けました。

リンクダウンロードの進行中にUbuntuが中断しないようにする方法はありますか?

0
DanglingPointer

Jacob Vlijmの非常に役立つスクリプトを出発点として使用して、構成オプション、バッテリー認識などを備えた本格的なアプリに変えました。

GitHubで取得する ができます。インストールは不要です。ただ:

  1. .tar.gzをダウンロードして、ファイルを展開します(gitユーザーの場合はmasterブランチを複製します)。 $PATHにそれを置くことはnot必要ではありません。
  2. 依存関係をインストールします。

    Sudo apt install xdotool xprintidle
    

    ラップトップを使用している場合は、acpiも必要になります。

  3. インストールしたディレクトリから、sleep_inhibitを実行します。
  4. ログインするたびにアプリが自動的に起動するようにするには、アイコンのメニューを開いて[設定]を選択し、設定ウィンドウで有効にします。
  5. アンインストールする場合は、Sleep Inhibitを終了し、cleanup.pyを実行して、すべての質問に必ずyesと答えてください。その後、ディレクトリを削除すると、すべてのトレースが削除されます。
0
Scott Severance