# Bartender 4のShow for Updates機能を使って、平日の指定時間の間だけメニューアイコンを表示させる URL: https://webrandum.net/bartender4-show-specific-time/ 公開日: 2022-03-13 更新日: 2022-03-13 カテゴリー: 作業環境整備 タグ: Bartender 出典: Webrandum(著者: サイトウ マサカズ) Bartender 4のShow for Updates機能を使うと、シェルスクリプトを実行して結果に応じてメニューアイコンの表示・非表示を切り替えられます。 Show for Updates自体の説明は[過去に記事](https://webrandum.net/bartender4-show-for-updates/)にしているので、そちらをご覧ください。 [Bartender 4の「Show for Updates」機能で、特定条件でメニューアイコンが表示されるようにする](https://webrandum.net/bartender4-show-for-updates) 今回はこの機能を使って、平日の指定時間だけメニューアイコンを表示させるようにしてみます。 ## Show for Updatesの追加 今回は、Google Driveのアイコンを平日9時から18時の業務時間中にだけ表示させるようにします。 Show for Updatesを追加してGoogle Driveを選択し、「script returns true」を選択します。 ![Google Driveのアイコン選択](https://webrandum.net/mskz/wp-content/uploads/2022/03/image_1-10.png) 「show for」の設定は「While comparison is true」を選択して、trueの間は常にアイコンが表示されるようにします。 ### 実行するシェルスクリプト 実行するシェルスクリプトは下記になります。 ![平日の指定時間の間だけメニューアイコンを表示](https://webrandum.net/mskz/wp-content/uploads/2022/03/image_2-8.png) ``` 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の[公式ブログ](https://www.macbartender.com/b4blog/users-setups/)で紹介されていたシェルスクリプトを自分用にシンプルに改良したのと、開始時間と終了時間を変数にしたものになります。 [Bartender 4 - Users' setups](https://www.macbartender.com/b4blog/users-setups/) 下記の「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」などにしておきましょう。 そこまで負荷はかかりませんし神経質かもしれませんが、今後どんどん増えていくことを考えたり、他のアプリケーションの自動発火もあることを考えると、発火間隔は長い方がいいのかなと思います。