[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)
を追加しvalue
にYES
を設定します。
Application is agent (UIElement)
を設定すると、Dockやアプリケーションスイッチャーにアプリアイコンは表示されなくなりました。