0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

コマンドラインで使えるラーメンタイマー(Noodle Timer for macOS command line.)

Last updated at Posted at 2020-09-28

コマンドラインで使えるラーメンタイマー(Noodle Timer for macOS command line.)

今日ふとPCのそばにあったラーメンを食べようと準備をしている時に,コマンドラインを使って,

for i in `seq 180`
do
sleep 1
echo $i
done

で時間を測ったのですが,,,
コマンド一つで時間を測れたらいいのにな~と思いまして,

ノリでNoodle-Timerなるものを作ってみました。
(そんな本格的なものではありません...)

noodle.gif

動作環境

  • macOS Catalina 10.15.6
  • You can use bash or zsh
  • shellscript

ソースコード


# !/bin/zsh
clear
trap 'date' 2
sh -c "/bin/echo -n \"How many minutes? 🍜 : \""
read Sec
echo =================================
echo "Set ${Sec} minutes."
view=$((Sec*60))

echo =================================
afplay /System/Library/Sounds/Hero.aiff
sh -c "/bin/echo -n \"start time -> \""
date "+%Y-%m-%d %H:%M:%S"
echo =================================

icon=("ー" "\" "|" "/" "ー" "\" "|" "/")
count=0
for i in `seq $view`
do 
    sleep 1
    ESC=$(printf '\033')
    echo "${ESC}[m ${ESC}[35m${icon[$count]}${ESC}[m ${ESC}[36m$((view-i)) seconds left...${ESC}[m ${ESC}[35m${icon[$count]}${ESC}[m" |
    while read line; do
        printf '\r%*s\r' ${lenLine:-${#line}}
        printf "%s" "$line"
        lenLine=${#line}
    done
    if [ $count = 7 ]; then
	count=0
    else
	count=$((count + 1))
    fi
done
echo ""
echo =================================
sh -c "/bin/echo -n \"complete time -> \""
date "+%Y-%m-%d %H:%M:%S"
echo =================================
osascript -e "display notification \"$Sec min.\" with title \"🍜 complete.\""
for i in `seq 6`
do
afplay /System/Library/Sounds/Purr.aiff
done

ちょっとだけ解説

まずclearコマンドで画面をクリア.

それから、readコマンドで入力受付
時間を入力し,
変数に格納する.

秒に変換後,

afplay /System/Library/Sounds/Hero.aiff

でサウンドを鳴らす.

開始時の日付時刻を出力する.

カウント中はtopコマンド風に表示させたいので,コマンド実行の際パイプで入力を受付,

その後前回の行を消して再配置します.

終了時の日付時刻を出力する.

最後に通知のポップアップを出し,サウンドを6回ほど鳴らし,完了です.

trapを仕掛け,Control + Cで時刻を表示できるので,お湯を入れたタイミングとずれた場合開始時刻から逆算できると思います.

trap 'date' 2

また時間がある際もうちょっと作り込んでいきたいと思います.
(いい息抜きになりました...笑)

MITです.自由に触って大丈夫です.
https://github.com/Iovesophy/Noodle-Timer

こんな機能があればいいのにとか,私だったらこうするなどありましたら,コメントくださいませ.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?