Xamarin.MacでDockアイコンを非表示にする

提供: MonoBook
2015年5月25日 (月) 04:50時点における153.220.40.226 (トーク)による版 (→‎その他)
ナビゲーションに移動 検索に移動

Mac OS XシステムステータスバーWindowsでいうタスクトレイ)にアイコンを表示する、いわゆる常駐アプリケーションではドックWindowsでいうタスクバー)のアイコンは非表示にしたい。

実装1

プリファレンスファイルで設定する[1]

  1. info.plistファイルを開く
  2. 下部にあるタブで「ソース」を選ぶ
  3. Add new entryをクリックして以下の一行をする
    • プロパティに「LSUIElement」(Application is agentと表示される)
    • 型に「Boolean」
    • 値に「Yes」

実装2: 動的に制御する

info.plistでドックアイコンを非表示にする方法では常に非表示になってしまい使いにくい場面も多い。 ソースコードで動的に制御できると捗る。 この例ではAppDelegateのDidFinishLaunchingメソッドでドックアイコンを消しているがこれに限らず、たとえばNSApplicationのインスタンスを生成しているMainメソッドでいきなり叩いても動くようだ。

    public partial class AppDelegate : NSApplicationDelegate
    {
        // 〜〜〜中略〜〜〜

        public override void DidFinishLaunching(NSNotification notification)
        {
            // NSApplicationのActivationPolicyプロパティに
            // AccessoryまたはProhibitedを設定するとドックアイコンが非表示になり、
            // Regularを設定するとドックアイコンが表示になる。
            var app = NSApplication.SharedApplication;
            app.ActivationPolicy = NSApplicationActivationPolicy.Accessory;
        }
    }

その他

Xamarin.MacではHIServices.frameworkが使えないのでソースコードレベルで動的に制御することはできない[2]

関連項目

参考文献