締切りまでの時間をカウントダウンしてくれる zsh プロンプト 君
はじめに
学生や社会人の皆様は,
- 20xx 年 x 月 x 日の xx 時 xx 分 までに締切りが
- 締切り間近だけど,やる気が..
なんてこともあるはずです.
そんなときに,ターミナルのどこかに締切りまでの時間をカウントダウンしてくれる人がいれば,
少しはやる気がでるのでは無いでしょうか?
今回は,zle の機能を使用し,zsh ターミナルに 締切りまでの時間をカウントダウンしてくれるスクリプトを書きました.
実装
- 基本, $DEADLINE を変更すれば,締切りまでをカウントダウンしてくれる
- PROMPTの部分の $TIMEREMAIN にカウントダウンの日数が格納され,ターミナルに表示される
- 締切り後は,その部分がジョブ数 %j に変わる
- 締切りの 1,2,3,4,5 週間前には,表示の色が変わり,警告してくれる
- 好きな日にち,好きな色に変えてお楽しみください
.zshTimeRemain
function getTimeRemain(){
DEADLINE="2018/12/16 00:00:00" # 締切り日
ALL=$(expr \( `date --date $DEADLINE +%s` - `date +%s` \)) # 合計秒数
DAY=$(expr $ALL / 86400)
HOR=$(expr $ALL % 86400 / 3600)
MIN=$(expr $ALL % 86400 % 3600 / 60)
SEC=$(expr $ALL % 86400 % 3600 % 60)
# 残りの日数に応じて,色を変更
if [ $DAY -le 7 ]; then COLOR="%F{1}" # red
elif [ $DAY -le 14 ]; then COLOR="%F{5}" # magenta
elif [ $DAY -le 21 ]; then COLOR="%F{3}" # yellow
elif [ $DAY -le 28 ]; then COLOR="%F{2}" # green
elif [ $DAY -le 35 ]; then COLOR="%F{6}" # cyan
elif [ $DAY -le 42 ]; then COLOR="%F{4}" # blue
else COLOR="%F{7}" # white
fi
if [ $ALL -le 0 ]; then
TIMEREMAIN="%j"
else
TIMEREMAIN=$COLOR$(printf "%d %.2d:%.2d:%.2d" $DAY $HOR $MIN $SEC)"%f"
fi
}
setopt PROMPT_SUBST
PROMPT='%U%B$promptname%b [ %m : $TIMEREMAIN : %~ ] %u
'
getTimeRemain
TRAPALRM () {
getTimeRemain
zle reset-prompt
}
TMOUT=1 # 1s
.zshrc
if [ -f ~/.zshTimeRemain ]; then
source ~/.zshTimeRemain
fi
結果
user_name [ host_name : 3 14:15:26 : ~ ] # 締切りまで 3日と 14時間 15分 26秒
最後に
- 好きな日にち,好きな色に変えてお楽しみください
.zshTimeRemain
function getTimeRemain(){
DEADLINE="2018/12/16 00:00:00" # 締切り日
ALL=$(expr \( `date --date $DEADLINE +%s` - `date +%s` \)) # 合計秒数
DAY=$(expr $ALL / 86400)
HOR=$(expr $ALL % 86400 / 3600)
MIN=$(expr $ALL % 86400 % 3600 / 60)
SEC=$(expr $ALL % 86400 % 3600 % 60)
# 残りの日数に応じて,色を変更
if [ $DAY -le 7 ]; then COLOR="%F{1}" # red
elif [ $DAY -le 14 ]; then COLOR="%F{5}" # magenta
elif [ $DAY -le 21 ]; then COLOR="%F{3}" # yellow
elif [ $DAY -le 28 ]; then COLOR="%F{2}" # green
elif [ $DAY -le 35 ]; then COLOR="%F{6}" # cyan
elif [ $DAY -le 42 ]; then COLOR="%F{4}" # blue
else COLOR="%F{7}" # white
fi
if [ $ALL -le 0 ]; then
TIMEREMAIN="%j"
else
TIMEREMAIN=$COLOR$(printf "%d %.2d:%.2d:%.2d" $DAY $HOR $MIN $SEC)"%f"
fi
}
setopt PROMPT_SUBST
PROMPT='%U%B$promptname%b [ %m : $TIMEREMAIN : %~ ] %u
'
getTimeRemain
TRAPALRM () {
getTimeRemain
zle reset-prompt
}
TMOUT=1 # 1s
.zshrc
if [ -f ~/.zshTimeRemain ]; then
source ~/.zshTimeRemain
fi
結果
user_name [ host_name : 3 14:15:26 : ~ ] # 締切りまで 3日と 14時間 15分 26秒
正直,普段は bash を使っているので, zsh について詳しく分からないため,
- 正しい動作か
- ターミナル処理への弊害の有無
については分かりません.
あと,bash でも同じことがしたいんですが,そんな機能が bash にあるのだろうか?
知ってる人がいたら教えてください.
Author And Source
この問題について(締切りまでの時間をカウントダウンしてくれる zsh プロンプト 君), 我々は、より多くの情報をここで見つけました https://qiita.com/TomKid/items/92fdf26707b21a723669著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .