i3statusで「read_file uptime」の出力フォーマットを指定する

i3statusで「read_file uptime」の出力フォーマットを指定する

i3statusを使用してシステムの稼働時間を表示しようとしています。私のファイルi3status.confの内容は次のとおりです。

read_file uptime {
    format = "%title: %content"
    path = "/proc/uptime"
}

ただし、スクリーンショットに示すように、出力は秒単位で行われているため、明らかに理想的ではありません。

ここに画像の説明を入力してください。

たとえば、次の形式で表示するようにフォーマットする方法はありますか?

DD:HH:MM:SS

答え1

私のソリューション

1. 非常に短いスクリプトを書く

新しいファイルを作成して名前を変更し、次のファイルをuptime.shコピーします。

!#/bin/sh

echo "$(uptime -p)" > ~/.config/i3/uptime

uptime -pこれは私が選択したファイルにコマンドの出力を追加または記録します~/.config/i3/uptime。このコマンドはuptime -p稼働時間を表示します美しい滞在。

uptime -p の端末出力

正しく完了したら、コンテンツ~/.config/i3/uptimeup x hours, x minutes

試してみるもう1つのコマンドはuptime -s次のとおりです。日時システムが起動してから。

> !

2. クローンジョブの作成

crontab -e端末で実行したら、次の行を追加してください。

* * * * * /home/user/path/to/uptime.sh

これにより、1分ごとにスクリプトが実行されるため、稼働時間の内容は1分ごとに更新または上書きされます。これにより、最新の稼働時間を得ることができます。

スクリプトが1分ごとにファイルを実行したり更新したりしたくない場合は、毎時間ファイルの更新に置き換えること* * * * *ができます。@hourlyuptime

3. 最後にi3status構成ファイルを編集します。

このように:

# uptime
read_file uptime {
    color_good = "#ffffff"
    format = "%content"
    path = "/home/user/.config/i3/uptime"
}

それはすべてです。 i3を再起動し、i3status uptimeそれが表示されることを願っています。美しい

答え2

よりきれいにするためにこのスクリプトを使用しました。

#!/bin/sh

uptime=$(uptime -p)
days=$(echo "$uptime" | grep -oP '\d+(?= day)')
hours=$(echo "$uptime" | grep -oP '\d+(?= hour)')
minutes=$(echo "$uptime" | grep -oP '\d+(?= minute)')

formatted_uptime=""
if [ -n "$days" ]; then
  formatted_uptime="${days}d "
fi
formatted_uptime="${formatted_uptime}${hours}h ${minutes}m"

echo "$formatted_uptime" > ~/.config/i3/scripts/uptimedm

関連情報