깜박임 없는 시스템 정보 OSD 디스플레이

깜박임 없는 시스템 정보 OSD 디스플레이

CPU 및 GPU 사용량에 대한 정보를 표시하는 작은 스크립트를 실행하려고 합니다. 스크립트가 완성되었으며 출력 정보 형식은 다음과 같습니다.

  CPU     2%    37C
  GPU     0%    56C

나는 또한 그것을 통해 보여줍니다확장자 이름두 번째 스크립트를 사용합니다.

#!/bin/sh

file=$(mktemp --suffix=osdtmp)

tail -f $file | osd_cat -o 30 -i 5 -d 1 -l 2 - &

while true; do
    ./temps.sh >> $file
done

rm -f $file

스크립트는 파일의 변경 사항을 읽고 화면에 표시된 두 줄을 새로 고칩니다. 내 문제는 데이터가 새로 고쳐질 때마다 깜박임이 눈에 띄게 나타나 짜증난다는 것입니다.

xosd를 사용할 필요는 없지만 작업에 가장 적합한 도구인 것 같습니다.

작은 텍스트 오버레이를 표시하고 깜박임 없이 주기적으로 새로 고치는 방법은 무엇입니까?

답변1

이것이 오래된 게시물이라는 것을 알고 있지만 온라인에서 검색해 보니 이것이 유일한 게시물이라는 것을 알았습니다.

당신이 할 수 있는 일은 CPU % C와 같이 먼저 변경되지 않는 요소를 인쇄하는 것입니다.

그런 다음 osd_cat을 사용하는 다른 프로세스가 변경된 값을 인쇄합니다.

저는 수면 상태의 루프 출력을 osd_cat에 파이프하는 인기 있는 예를 사용하면 동기화가 해제되고 심지어 더 깜박이는 현상이 발생한다는 것을 발견했습니다.

예를 들어, 제가 하는 일은 다음과 같습니다.https://github.com/kevinlekiller/shell_scripts/blob/main/misc/osd_stats.sh

편집: 제가 제공한 솔루션을 사용하면 깜박임이 없지만 화면에서 osd_cat 인쇄 사이에 전환이 있습니다. 이는 osd_cat 프로세스가 종료된 다음 문자열을 계산해야 하고 osd_cat이 다시 호출되기 때문입니다. 전환이 표시됩니다. , 사이의 시간에 있습니다.

루프에서 osd_cat에 대한 호출을 분기하여 이 변환 시간을 없앨 수 있습니다. 그런 다음 osd_cat에 대해 수행한 것보다 약간 낮은 대기 시간으로 루프 내에서 절전 모드를 사용합니다. 이로 인해 몇 밀리초의 중복이 발생할 수 있지만 그렇게 하지 않습니다. 그 변화를 보십시오. 위에 링크된 스크립트를 편집하고 이러한 변경 사항을 추가하겠습니다.

관련 정보