i3status 표시줄에 가동 시간을 표시하는 방법은 무엇입니까?

i3status 표시줄에 가동 시간을 표시하는 방법은 무엇입니까?

가동 시간을 일반적인 단위로 표시하고 싶습니다(따라서 1시간이 넘는 경우 분 단위가 아니라 1분이 넘는 경우에도 초 단위가 아닙니다. 예: 1시간 2분은 "1:02:30", 내 i3status 표시줄에서는 30초가 이상적인 시간 형식입니다. 어떤 장치에서든 i3status 표시줄에 가동 시간을 표시하는 방법조차 찾지 못했습니다. 나는 찾았다이 저장소GitHub에서 이 작업을 수행한다고 주장하는 것처럼 보였지만 이러한 구성을 복사하면 status_command이 줄을 실행하는 데 어려움이 있는 것과 관련된 오류가 발생했습니다.저장소의 구성. 즉 status_command라인은 다음 과 같습니다

status_command ~/.i3/i3status.sh ~/.i3/i3status.conf

i3의 이전 버전에서만 작동한다고 추측합니다. 이 작업을 수행하는 방법에 대한 아이디어가 있습니까?여기내 현재 ~/.i3status.conf파일입니다. 내 배포판은 Gentoo Linux입니다.

답변1

나는 해결책을 찾았습니다. 나는 그 구문을 충분히 이해하지 못했습니다. 방금 파일을 편집해야 했어요 ~/.i3/i3status.sh. 지금이야:

#!/bin/sh

/usr/bin/i3status -c $HOME/.i3status.conf | while :
do
    read line
    RAM=`free -kh | grep Mem | awk '{print $3}'`
    TOTR=$(cat /proc/meminfo | grep MemT | sed 's/.*\://g' | sed 's/ *//g' | sed 's/kB//g')
    TOT=$(octave --eval "$TOTR/1024^2" | sed 's/ans = *//g' | sed 's/$/G/g' )

    # Put uptime
    uptime=`uptime | awk '{print $3 " " $4}' | sed 's/,.*//'`
    hour=$(echo $uptime | sed 's/\:.*//g')
    min=$(echo $uptime | sed 's/.*\://g')
    UP="$hour h $min m"

    # Compile C++ CPU prog and run it
    g++ -o cpu.o $HOME/.i3/cpu.cpp
    CPU=$(./cpu.o)

    printf "%s\n" "Up: $UP | CPU: $CPU% | RAM: $RAM/$TOT | $line"
done

가동 시간과 가장 관련성이 높은 줄은 # Put uptime# Compile C++...최종 printf "%s\n"...명령 사이에 있습니다. 내 전체 i3 구성 파일은 다음에서 찾을 수 있습니다.이 저장소.

답변2

내 솔루션:

cron.hourly에서 스크립트를 만들어 1시간마다 형식을 생성하고 /tmp/uptime(1시간보다 더 높은 정밀도는 필요하지 않음) i3status에서 readfile을 사용하여 사용합니다.

read_file uptime {
        path = "/tmp/uptime"
}

스크립트:

#!/bin/sh
awk '{printf("Up %dd:%02d\n",($1/60/60/24),($1/60/60%24),($1/60%60),($1%60))}' /proc/uptime > /tmp/uptime

관련 정보