信号が落ちたときにスタンバイ状態にならない優れたSamsung HDMI TV /モニターを取得しました。 Pulse Eight CECコマンドインジェクターを入手し、コマンドラインからモニターの電源をオン/オフにする方法を理解しました。
問題は、これらのコマンドを実行させる最も信頼性の高い/将来の証拠/ Ubuntu/Gnomeの方法がどこにあるのかがわからないことです-私がこれまで調べてきたこと:
ユーザーがログインしたとき、およびグラフィカルシステムが起動したときのターゲットを持っているようですが、ログイン前ではありません。
ここで画面のスリープ/スリープ解除メカニズムをキャッチすることは完璧に聞こえますが、それを行う方法を見つけることができないようです。
キーボード操作以外のほとんどすべての場合でスクリプトの追加をサポートしているようです。
これをスクリプトと一緒に使用して、実行時にモニターをスリープ状態にし、SIGHUPをキャッチしてスリープ解除コマンドを発行しようとしましたが、確実に機能していないようです。
私は2015年からこれを見つけました: 画面のスリープ/スリープ解除でスクリプトを実行する方法
...しかし、上記のほぼすべてのオプションは、バックグラウンドタスクをループしてログトラフィックを絶えずこすり落としたり、キーが押されてから@ wait/2秒かかるまでよりも良い解決策のように感じます。それは利用可能な最良のソリューションですか?
以下のスクリプトを使用して、アイドル状態が1分間続くと画面をオフにします。コードは自分のものではなく、自分のニーズに合わせて変更しました
xprintidle
をインストールする必要があります
Sudo apt install xprintidle
cd ~
mkdir myscripts
cd myscripts
以下のコードをコピーしてターミナルに貼り付け、bashスクリプトを作成します
cat>turnoffscreen.sh<<'EOF'
#!/bin/sh
# Wanted trigger timeout in milliseconds.
IDLE_TIME=$((1*60*1000))
IDLE_WARN=$((((1*60*1000))-((10000))))
# Sequence to execute when timeout triggers.
trigger_cmd() {
# put your code here, the below command just an example
xset s blank ; sleep 1 ; xset s activate
}
sleep_time=$IDLE_TIME
triggered=false
# ceil() instead of floor()
while sleep $(((sleep_time+999)/1000)); do
idle=$(xprintidle)
if [ $idle -ge $IDLE_WARN ]; then
notify-send --icon=info "Turning off the screen ..."
sleep 10
idle_check=$(xprintidle)
if [ $idle_check -ge $idle ]; then
if ! $triggered; then
trigger_cmd
triggered=true
sleep_time=$IDLE_TIME
fi
fi
else
triggered=false
# Give 100 ms buffer to avoid frantic loops shortly before triggers.
sleep_time=$((IDLE_TIME-idle+100))
fi
done
EOF
それを実行可能にします
chmod +x turnoffscreen.sh
スタートアップアプリケーションリストに追加する
gnome-session-properties