3

Arch Linux の実行

15 分ごとにスクリーンショットを撮り、サイズを変更してドロップボックス フォルダに入れるスクリプトを実行しています。これは、コンピューターをしばらく放置して、同じものの複数のスクリーンショットを作成してしまうと、ちょっとした苦痛です。

私がやりたいのは、15 分ごとではなく、USE の 15 分ごとにスクリーンショットを撮ることです。キーを押してから 30 秒以内を USE と定義したいと思います。一日中 1 時間に 1 回だけチェックすると、実際に入力している時間だけがカウントされます。

これどうやってするの?上記のように機能する(または閉じる)限り、既存のプログラムなどを使用して、任意の言語で任意のソリューションを受け入れます。

4

1 に答える 1

1

David Z の質問には、答える価値があります。あなたの最終目標、またはスクリーンショットを撮る理由について推測することしかできません。しかし、それはさておき、以下は、述べられた目標に役立つ可能性のある方法です。(この方法は大雑把です。xscreensaver について詳しく知っていれば、より良い解決策を提案できると思います。)

開始するには、 xscreensaverをインストールしてセットアップします (スクリーンセーバーの使用があなたの習慣に適合している場合。そうでない場合は、次の回答を参照してください)。

xscreensaver のman ページで説明されているように、スクリーンショット スクリプトにループを追加xscreensaver-command -watchします。またはが発生するreadたびに、前のスクリーンショットから経過した時間 T を保存し、タイマーを停止します。発生したら、タイマーを 15-T にリセットするか、スクリーンショットを撮ってタイマーを 15 に設定します。LOCKBLANKUNBLANK

代わりに、画面が空白になっている場合は現在のスクリーンショットを見送るだけで、15 分のタイマーを定期的に実行し続けることができます。xscreensaver-command -time前のスクリーンショット以降に状態が変化したかどうかを確認するために使用できます。

画面が空白になっているかどうかをスクリプトで確認する簡単な方法を以下に示します。

    xset -q | grep Monitor

Monitor is Off画面が空白の場合は生成され、そうでない場合は生成されますMonitor is On。スクリーン セーバーのモニター オフの遅延が K 分で、スクリプトのウェイクアップ間隔が L 分であるとします。W1、W2 が 2 つの連続するスクリプト ウェイクアップを表すとします。W1 xset でモニターがオンで、W2 でオフであるとします。次に、W2 では、最後の K 分間、キーボード アクティビティがなかったことがわかります。ただし、アイドル間隔は K+L 分ほど長くなる可能性があります。境界を狭めたい場合は、K と L を減らすか、カウンターを使用します。以下は、カウンターの使用を示すスクリプトです。スクリプトの動作を確認するには、3m を 1 に置き換えて実行します。次に、1 を 3m に戻し、スクリーン ショット手順をechoin function ss の代わりに配置します。

#!/bin/bash

ss() {
    echo Taking snapshot at $(date)
}

busy=0
while true; do
    xset -q | grep -q "Monitor is On" && ((++busy > 4)) && busy=0 && ss
    sleep 3m
done
于 2012-09-24T01:21:02.177 に答える