Close icon
2023月10日29日

[macOS]MenuBarExtraを使用してメニューバーに常駐するアプリを作ってみる

macOS 13から利用できるMenuBarExtraを使用してSwiftUIでメニューバーに常駐するアプリを作ってみます。

確認した環境

  • macOS 14
  • Version 15.0.1

参考

プロジェクトを作成

プロジェクトのテンプレートを選択

Xcodeでプロジェクトのテンプレートを選択しプロジェクトを作成します。
macOSのAppを選択して「Next」ボタンで次に進みます。

Product Nameを入力

プロダクト名を入力し「Next」ボタンで次に進むとプロジェクトが作成されます。

プロジェクトが作成される

作成時の状態

ビルドして実行

この状態でビルドして実行すると、デフォルトのHello, World! 画面が表示されます。

アプリケーションクラスをカスタマイズ

アプリケーションクラスを編集

アプリケーションクラスを編集し、メニューを選択するとデフォルトのHello, World!を表示するように修正してみます。

修正前

import SwiftUI

@main
struct SwiftuiMenuBarExtraSampleApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

修正後

import SwiftUI

@main
struct SwiftuiMenuBarExtraSampleApp: App {
    var body: some Scene {
        MenuBarExtra ("Hello", systemImage: "person.fill"){
            ContentView()
        }
        .menuBarExtraStyle(.window)
    }
}

SF Symbol

MenuBarExtraのsystemImageで指定しているアイコンは、SF Symbolのアイコンです。
アプリで使用可能なシンボルセットが公開されています。
どのようなアイコンが利用できるかは、SF Symbolsアプリで確認できます。

実行してみる

実行するとメニューバーに、personアイコンが表示されます。

アイコンをクリックすると、Hello, World!が表示されました。

常駐アプリの設定

このままではDockやアプリケーションスイッチャーにアプリアイコンが表示されてしまいます。
メニューバーのみ表示される常駐アプリにする場合は、Application is agent (UIElement)を設定します。

TARGETの設定

TARGETの設定でApplication is agent (UIElement)を追加しvalueYESを設定します。

Application is agent (UIElement)を設定すると、Dockやアプリケーションスイッチャーにアプリアイコンは表示されなくなりました。



アトトックラボとは

株式会社アトトックメンバー が技術の話、デザインの話、キャラクターの話、ときどき脱線してガジェットの話やライフハックの話など好きなことを書いています。


連載記事


最近の記事


タグ