패키지 가 포함된 재미있는 터미널 화면 보호기를 만들려고 합니다 cmatrix
(터미널을 영화와 같은 패키지로 전환).행렬) xprintidle
단말기의 유휴 시간을 확인합니다.
도움을 좀 받았어요슈퍼유저의 주제 답변그리고 다음과 유사한 쉘 스크립트를 사용하십시오.
화면 보호기
#!/bin/sh
set -x # Used for debugging
IDLE_TIME=$((60*1000)) #a minute in milliseconds
screen_saver(){
# My screensaver function
cmatrix -abs
}
sleep_time=$IDLE_TIME
triggered=false
while sleep $(((sleep_time+999)/1000)); do
idle=$(xprintidle)
if [ $idle -ge $IDLE_TIME ]; then
if ! $triggered; then
screen_saver
triggered=true
sleep_time=$IDLE_TIME
fi
else
triggered=false
sleep_time=$((IDLE_TIME -idle+100))
fi
done
다음을 사용하여 포그라운드에서 스크립트를 실행하면 스크립트가 완벽하게 실행됩니다.
./screensaver.sh
매트릭스 터미널이 트리거되는 것을 볼 수 있습니다.
그러나 백그라운드에서 실행하면 &
함수가 screen_saver()
백그라운드에서 실행되어 볼 수 없습니다. 매트릭스 터미널을 볼 수 있는 유일한 방법은 fg
터미널을 전경으로 가져오는 것입니다.
질문
fg
함수에서 screen_saver()
다음 명령을 사용할 수 있습니까 ?
screen_saver(){
cmatrix -abs && fg
}
아니면 쉘 스크립트에서 이를 전경으로 가져오는 유사한 옵션이 있습니까?
나는 이것을 내 스크립트에 추가하여 .bashrc
실제로 사용자 정의 가능한 기능이 되기를 바라고 있습니다. 가능합니까?
답변1
작업 fg
명령은 대화형 세션에만 연결되며 배치 모드(스크립팅)에서는 의미가 없습니다.
set -m
기술적으로는 이러한 대화형 스크립트가 없으므로 의미가 없으므로 다음을 사용하여 활성화할 수 있습니다 .
대답은 이렇습니다. 실제로는 그럴 수 없습니다.
답변2
tmux를 사용하는 경우 "화면 보호기" 옵션이 있습니다.
set -g lock-command "cmatrix -abs"
set -g lock-after-time 10 #inSeconds
귀하의 질문에 대한 정확한 답변은 아닙니다.