「マウスの動き」を使用して画面の空白を防ぐスクリプトは機能しません。

「マウスの動き」を使用して画面の空白を防ぐスクリプトは機能しません。

これは、ビデオを見ながら画面がオフになるのを防ぐために「マウスの動き」を使用するスクリプトを作成しようとする私の試みです。 CPU%が最も高いプロセスの値を使用したいのですが、topCPU使用率が5%を超えるとマウスの動きが発生するはずです。

#!/usr/bin/env bash

sleep_period=60s 

while true; do
  if (( $(top -bn 1 | sed -nrs '8p' | awk '{ print $9 }') -gt 5 )); then 
    while (( $(top -bn 1 | sed -nrs '8p' | awk '{ print $9 }') -gt 5 )); do
      xdotool mousemove 0 100
      xdotool mousemove 0 50
      sleep ${sleep_period}
    done
  else
    sleep ${sleep_period}
  fi
done

残念ながら動作しません。エラーは次のとおりです。

[07:20 PM] /bin $ noo.sh
/home/vasa1/bin/noo.sh: line 6: ((: 0.0 -gt 5 : syntax error: invalid arithmetic operator (error token is ".0 -gt 5 ")
/home/vasa1/bin/noo.sh: line 6: ((: 6.4 -gt 5 : syntax error: invalid arithmetic operator (error token is ".4 -gt 5 ")

どうすれば解決できますか? (私はスクリプトの経験がありません。)


ここにある答えに基づいて、次のように編集しました。

#!/usr/bin/env bash

sleep_period=5m 

while true; do
  if [[ $(top -bn 1 | sed -nrs '8p' | awk '{ print int($9) }') -gt 8 ]]; then 
    while [[ $(top -bn 1 | sed -nrs '8p' | awk '{ print int($9) }') -gt 8 ]]; do
      xset -dpms; xset s off
      xset +dpms; xset s on
      sleep ${sleep_period}
    done
  else
    sleep ${sleep_period}
  fi
done

その後、Ubuntuフォーラムにこのコードを報告しました。ワッフェルこれについてさらに研究を行った。私が使用しているVapellのバージョンは次のとおりです。

#!/usr/bin/env bash

sleep_period=5m 

while true; do
  if top -bn 1 | awk 'NR==8 { exit !($9>8); }'; then
    xset -dpms; xset s off
    xset +dpms; xset s on
  fi
  sleep ${sleep_period}
done

答え1

あなたはそれを使用することができます

xset -dpms; xset s off

画面が黒く変わるのをやめてください。

この機能を再度有効にするには、次を使用します。

xset +dpms; xset s on

したがって、-dpms省電力機能を無効にすると、ディスプレイ全体がオフになり、s offXサーバーのスクリーンセーバーもオフになります。

xscreensaverコメントで述べたように動作しません。

答え2

いくつかの問題があります。まず、top毎回2回の繰り返しが必要です。私の答えを見てください。こことバグレポートここ

もう1つの問題は、bashが浮動小数点操作を実行しないため、CPU使用率が似ているとスクリプトが6.2中断.2されることです。 Bashは「複雑な」算術演算のために設計されていません。この問題を解決する1つの方法は、>5スキャンを次のコマンドに移動することですawk

#!/usr/bin/env bash

sleep_period=60s 

while true; do
    until top -bn 2 -d 0.01 | sed -nrs '8p' | awk '{if($9>5){exit 1}else{exit 0}}'; do
      xdotool mousemove 0 100
      xdotool mousemove 0 50
      sleep ${sleep_period}
    done
   sleep ${sleep_period}
done

答え3

まず、xdotoolとrandをインストールする必要があります。 Ubuntuの例:

sudo apt install xdotool rand

次に、端末で(ユーザーとして)次の行を実行します。

eval $(xdotool getdisplaygeometry --shell); while true; do xdotool mousemove `rand -M $WIDTH` `rand -M $HEIGHT` && sleep $((`rand -M 300` + 120)); done;

関連情報