WebDesigner's Memorandumウェブデザイナーの備忘録

Bartender 4のShow for Updates機能を使って、平日の指定時間の間だけメニューアイコンを表示させる

Bartender 4のShow for Updates機能を使って、平日の指定した時刻の間だけメニューアイコンを表示させる

Bartender 4のShow for Updates機能を使うと、シェルスクリプトを実行して結果に応じてメニューアイコンの表示・非表示を切り替えられます。

Show for Updates自体の説明は過去に記事にしているので、そちらをご覧ください。

今回はこの機能を使って、平日の指定時間だけメニューアイコンを表示させるようにしてみます。

Show for Updatesの追加

今回は、Google Driveのアイコンを平日9時から18時の業務時間中にだけ表示させるようにします。

Show for Updatesを追加してGoogle Driveを選択し、「script returns true」を選択します。

Google Driveのアイコン選択

「show for」の設定は「While comparison is true」を選択して、trueの間は常にアイコンが表示されるようにします。

実行するシェルスクリプト

実行するシェルスクリプトは下記になります。

平日の指定時間の間だけメニューアイコンを表示

currentDay=$(date +"%u")
currentTime=$(date +"%H:%M")
isShow=false

startTime=$(date +"09:00")
endTime=$(date +"18:00")

if [[ "$currentDay" > 0 ]] && [[ "$currentDay" < 6 ]]; then
	if [[ "$currentTime" > $startTime ]] && [[ "$currentTime" < $endTime ]]; then
		isShow=true
	fi
fi

if [[ "$isShow" = true ]]; then
	echo 1
else
	echo 0
fi

これはBartenderの公式ブログで紹介されていたシェルスクリプトを自分用にシンプルに改良したのと、開始時間と終了時間を変数にしたものになります。

下記の「startTime」に開始時間、「endTime」に終了時間を指定します。

startTime=$(date +"09:00")
endTime=$(date +"18:00")

平日ではなく、毎日指定時間にしたい場合

今回は「平日」という条件を加えましたが、「毎日指定した時間」にしたい場合は下記のコードにすればOKです。

currentTime=$(date +"%H:%M")
isShow=false

startTime=$(date +"09:00")
endTime=$(date +"18:00")

if [[ "$currentTime" > $startTime ]] && [[ "$currentTime" < $endTime ]]; then
	isShow=true
fi

if [[ "$isShow" = true ]]; then
	echo 1
else
	echo 0
fi

実際の動作

設定できたら「Done」をクリックして、実際に指定時間内に表示されていることを確認しましょう。

ちなみに、そこまで厳密さを求めていない人であれば、「run script every」を「1 Minute」から「10 Minutes」などにしておきましょう。

そこまで負荷はかかりませんし神経質かもしれませんが、今後どんどん増えていくことを考えたり、他のアプリケーションの自動発火もあることを考えると、発火間隔は長い方がいいのかなと思います。

著者について

プロフィール画像

サイトウ マサカズ@31mskz10

1997年生まれ。2016年から専門学校でデザインについて勉強。卒業後は神戸の制作会社「N'sCreates」にウェブデザイナーとして入社。このブログでは自分の備忘録も兼ねて、ウェブに関する記事や制作環境を効率的に行うための記事を書いています。

Twitterをフォロー Facebookでいいね