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

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

가동 시간을 일반적인 단위로 표시하고 싶습니다(따라서 1시간이 넘는 경우에는 분만 표시하지 않고 1분이 넘는 경우에는 초만 표시하지 않습니다. 예를 들어 "1:02:30"은 i3status 열에서 1시간, 2분, 30초를 의미합니다. 내가 찾은 어떤 단위에서도 가동 시간을 표시하는 방법조차 찾을 수 없습니다.이 창고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에 스크립트를 생성하여 매 시간 형식을 생성하고 /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

관련 정보