--cycle-once에도 불구하고 Linux의 feh는 계속 반복됩니다.

--cycle-once에도 불구하고 Linux의 feh는 계속 반복됩니다.

나는 raspbian을 실행하고 화면에 그림을 표시하기 위해 lepotato를 사용하고 있습니다. 사진은 내 Windows 컴퓨터에서 액세스할 수 있는 공유 폴더에 있습니다. 입력은 그림이 있는 곳이고 출력은 실제로 전체 화면이 되도록 크기가 조정됩니다. 입력 폴더에 변경 사항이 있는지 확인하는 코드가 있으므로 출력 폴더가 조정됩니다.

내 문제: 슬라이드쇼를 한 번 반복한 다음 닫고 아래에 Google Chrome을 표시해야 합니다. 설정된 시간(10분) 동안 기다린 후 슬라이드쇼를 다시 재생하세요.

어떤 이유로 --cycle-once를 사용해도 슬라이드쇼가 계속 재생됩니다. 루프 계산을 사용해 보았으나 아무 소용이 없었습니다. T는 코드에서 출력에서 ​​사진을 확인한 후 사진을 삭제한 다음, 출력이 비어 있으면 절전 모드로 전환하고 다시 시작하도록 시도했지만 그렇지 않습니다.바라보다사진을 볼 때.

불행히도 저는 Linux와 코딩을 처음 접했고 대부분의 작업에 chatGPT를 사용합니다. 나는 3일 동안 이 문제로 어려움을 겪었고 누군가가 나를 도울 수 있기를 바랐습니다.

현재 코드:

#!/usr/bin/bash

input_folder="/home/power/Public/screen/input/"
output_folder="/home/power/Public/screen/output/"
slideshow_pid=""

### Function to upscale and copy images from the input folder to the output folder
upscale_and_copy() {
  local file_path="$1"
  local file_name=$(basename "$file_path")
  local output_path="$output_folder/$file_name"
  
  convert "$file_path" -resize 1920x1080^ "$output_path"
}

### Function to remove images from the output folder
remove_from_output_folder() {
  local file_path="$1"
  local file_name=$(basename "$file_path")
  local output_path="$output_folder/$file_name"
  
  rm "$output_path"
}

### Function to restart the slideshow
restart_slideshow() {
  if [[ -n "$slideshow_pid" ]]; then
    kill "$slideshow_pid"
  fi

### Function that plays the actual slideshow

  feh --quiet --fullscreen --cycle-once --slideshow-delay 3 "$output_folder" &
  slideshow_pid=$!
}

### Upscale and copy existing images from input to output folder
for file in "$input_folder"/*; do
  upscale_and_copy "$file"
done

### Display the images from the output folder in a slideshow
restart_slideshow

### Monitor input folder for changes and update the output folder accordingly
inotifywait -m -r -e create -e delete -e move -e modify "$input_folder" |
while read -r directory event filename; do
  if [[ $event == "CREATE" || $event == "MODIFY" || $event == "MOVED_TO" ]]; then
    upscale_and_copy "$input_folder/$filename"
    restart_slideshow
  elif [[ $event == "DELETE" || $event == "MOVED_FROM" ]]; then
    remove_from_output_folder "$input_folder/$filename"
    restart_slideshow
  fi
done

다음을 테스트했는데 다음 코드를 실행해도 계속 반복되므로 feh 자체가 문제를 일으키는 것 같습니다.

feh --quiet --fullscreen --cycle-once --slideshow-delay 3 /home/power/Public/screen/output/ &

답변1

나는 스스로 해결책을 찾았습니다.

--cycle-once최신 버전은 더 이상 지원되지 않습니다 feh. 지금 사용해야 합니다 --on-last-slide.

관련 정보