{"id":301626,"date":"2025-06-19T06:29:10","date_gmt":"2025-06-19T06:29:10","guid":{"rendered":"https:\/\/peraltafinancing.com\/apple-2\/michael-tsai-blog-showing-settings-from-macos-menu-bar-items\/"},"modified":"2025-06-19T06:29:10","modified_gmt":"2025-06-19T06:29:10","slug":"michael-tsai-blog-showing-settings-from-macos-menu-bar-items","status":"publish","type":"post","link":"https:\/\/fivemor.com\/?p=301626","title":{"rendered":"Michael Tsai &#8211; Blog &#8211; Showing Settings From macOS Menu Bar Items"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p><a href=\"https:\/\/steipete.me\/posts\/2025\/showing-settings-from-macos-menu-bar-items\">Peter Steinberger<\/a> (<a href=\"https:\/\/mastodon.social\/@steipete\/114700485373812538\">Mastodon<\/a>):<\/p>\n<blockquote cite=\"https:\/\/steipete.me\/posts\/2025\/showing-settings-from-macos-menu-bar-items\">\n<p>SwiftUI provides <a href=\"https:\/\/developer.apple.com\/documentation\/swiftui\/settingslink\"><code>SettingsLink<\/code><\/a> for opening settings[\u2026] Simple, right? Except it doesn\u2019t work reliably in <a href=\"https:\/\/developer.apple.com\/documentation\/swiftui\/menubarextra\"><code>MenuBarExtra<\/code><\/a>. The documentation doesn\u2019t mention this limitation.<\/p>\n<p>[\u2026]<\/p>\n<p>The root issue is that <a href=\"https:\/\/developer.apple.com\/documentation\/appkit\/nsapplication\"><code>NSApplication<\/code><\/a> treats menu bar apps as background utilities, not foreground applications. This affects how windows are ordered and receive events.<\/p>\n<p>[\u2026]<\/p>\n<p>Apple provides an <a href=\"https:\/\/developer.apple.com\/documentation\/swiftui\/opensettingsaction\"><code>openSettings<\/code> environment action<\/a> for programmatic access (available since macOS 14.0+)[\u2026] This currently works on macOS 15, but doesn\u2019t work on macOS Tahoe (26). The logic needs an existing SwiftUI render tree, and simply calling the environment variable does nothing if none is found.<\/p>\n<p>[\u2026]<\/p>\n<p>This shouldn\u2019t be so hard. Opening a settings window is one of the most basic operations any app needs to perform. The fact that it requires hidden windows, activation policy juggling, and precise timing delays in 2025 is a testament to how menu bar apps remain second-class citizens in SwiftUI.<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/mastodon.social\/@bwebster\/114700837681836964\">Brian Webster<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@bwebster\/114700837681836964\">\n<p>Anyone who\u2019s done any amount of SwiftUI on the Mac would not be at all surprised at the amount of hoops required to jump through for things that seem like they should be quite simple.<\/p>\n<\/blockquote>\n<p>Previously:<\/p>\n<p class=\"tags\"><a rel=\"tag\" href=\"https:\/\/mjtsai.com\/blog\/tag\/cocoa\/\">Cocoa<\/a> <a rel=\"tag\" href=\"https:\/\/mjtsai.com\/blog\/tag\/mac\/\">Mac<\/a> <a rel=\"tag\" href=\"https:\/\/mjtsai.com\/blog\/tag\/macos-15-sequoia\/\">macOS 15 Sequoia<\/a> <a rel=\"tag\" href=\"https:\/\/mjtsai.com\/blog\/tag\/macos-tahoe-26\/\">macOS Tahoe 26<\/a> <a rel=\"tag\" href=\"https:\/\/mjtsai.com\/blog\/tag\/menu-bar\/\">Menu Bar<\/a> <a rel=\"tag\" href=\"https:\/\/mjtsai.com\/blog\/tag\/programming\/\">Programming<\/a> <a rel=\"tag\" href=\"https:\/\/mjtsai.com\/blog\/tag\/swift-programming-language\/\">Swift Programming Language<\/a> <a rel=\"tag\" href=\"https:\/\/mjtsai.com\/blog\/tag\/swiftui\/\">SwiftUI<\/a><\/p>\n<h2><a id=\"respond\"><\/a><br \/>\nComments<br \/>\n <\/h2>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Peter Steinberger (Mastodon): SwiftUI provides SettingsLink for opening settings[\u2026] Simple, right? Except it doesn\u2019t work reliably in MenuBarExtra. The documentation doesn\u2019t mention this limitation. [\u2026] The root issue is that NSApplication treats menu bar apps as background utilities, not foreground applications. This affects how windows are ordered and receive events. [\u2026] Apple provides an openSettings [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11768],"tags":[1449,3767,3033,16746,1633,1823,5501,16568,17088],"dealstore":[],"offerexpiration":[],"class_list":["post-301626","post","type-post","status-publish","format-standard","hentry","category-apple-2","tag-bar","tag-blog","tag-items","tag-macos","tag-menu","tag-michael","tag-settings","tag-showing","tag-tsai"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Michael Tsai - Blog - Showing Settings From macOS Menu Bar Items - Som2ny Network<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fivemor.com\/?p=301626\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Michael Tsai - Blog - Showing Settings From macOS Menu Bar Items - Som2ny Network\" \/>\n<meta property=\"og:description\" content=\"Peter Steinberger (Mastodon): SwiftUI provides SettingsLink for opening settings[\u2026] Simple, right? Except it doesn\u2019t work reliably in MenuBarExtra. The documentation doesn\u2019t mention this limitation. [\u2026] The root issue is that NSApplication treats menu bar apps as background utilities, not foreground applications. This affects how windows are ordered and receive events. [\u2026] Apple provides an openSettings [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fivemor.com\/?p=301626\" \/>\n<meta property=\"og:site_name\" content=\"Som2ny Network\" \/>\n<meta property=\"article:published_time\" content=\"2025-06-19T06:29:10+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fivemor.com\/?p=301626#article\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/?p=301626\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\"},\"headline\":\"Michael Tsai &#8211; Blog &#8211; Showing Settings From macOS Menu Bar Items\",\"datePublished\":\"2025-06-19T06:29:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=301626\"},\"wordCount\":208,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"keywords\":[\"Bar\",\"Blog\",\"Items\",\"macos\",\"menu\",\"Michael\",\"Settings\",\"Showing\",\"Tsai\"],\"articleSection\":[\"Apple\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fivemor.com\/?p=301626#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fivemor.com\/?p=301626\",\"url\":\"https:\/\/fivemor.com\/?p=301626\",\"name\":\"Michael Tsai - Blog - Showing Settings From macOS Menu Bar Items - Som2ny Network\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/#website\"},\"datePublished\":\"2025-06-19T06:29:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fivemor.com\/?p=301626#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fivemor.com\/?p=301626\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fivemor.com\/?p=301626#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fivemor.com\/?bp_activities=1\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Michael Tsai &#8211; Blog &#8211; Showing Settings From macOS Menu Bar Items\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fivemor.com\/#website\",\"url\":\"https:\/\/fivemor.com\/\",\"name\":\"Som2ny Network\",\"description\":\"Daily Deals\",\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fivemor.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/fivemor.com\/#organization\",\"name\":\"Som2ny Network\",\"url\":\"https:\/\/fivemor.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"width\":300,\"height\":86,\"caption\":\"Som2ny Network\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/fivemor.com\"],\"url\":\"https:\/\/fivemor.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Michael Tsai - Blog - Showing Settings From macOS Menu Bar Items - Som2ny Network","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fivemor.com\/?p=301626","og_locale":"en_US","og_type":"article","og_title":"Michael Tsai - Blog - Showing Settings From macOS Menu Bar Items - Som2ny Network","og_description":"Peter Steinberger (Mastodon): SwiftUI provides SettingsLink for opening settings[\u2026] Simple, right? Except it doesn\u2019t work reliably in MenuBarExtra. The documentation doesn\u2019t mention this limitation. [\u2026] The root issue is that NSApplication treats menu bar apps as background utilities, not foreground applications. This affects how windows are ordered and receive events. [\u2026] Apple provides an openSettings [&hellip;]","og_url":"https:\/\/fivemor.com\/?p=301626","og_site_name":"Som2ny Network","article_published_time":"2025-06-19T06:29:10+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fivemor.com\/?p=301626#article","isPartOf":{"@id":"https:\/\/fivemor.com\/?p=301626"},"author":{"name":"admin","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371"},"headline":"Michael Tsai &#8211; Blog &#8211; Showing Settings From macOS Menu Bar Items","datePublished":"2025-06-19T06:29:10+00:00","mainEntityOfPage":{"@id":"https:\/\/fivemor.com\/?p=301626"},"wordCount":208,"commentCount":0,"publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"keywords":["Bar","Blog","Items","macos","menu","Michael","Settings","Showing","Tsai"],"articleSection":["Apple"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fivemor.com\/?p=301626#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fivemor.com\/?p=301626","url":"https:\/\/fivemor.com\/?p=301626","name":"Michael Tsai - Blog - Showing Settings From macOS Menu Bar Items - Som2ny Network","isPartOf":{"@id":"https:\/\/fivemor.com\/#website"},"datePublished":"2025-06-19T06:29:10+00:00","breadcrumb":{"@id":"https:\/\/fivemor.com\/?p=301626#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fivemor.com\/?p=301626"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fivemor.com\/?p=301626#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fivemor.com\/?bp_activities=1"},{"@type":"ListItem","position":2,"name":"Michael Tsai &#8211; Blog &#8211; Showing Settings From macOS Menu Bar Items"}]},{"@type":"WebSite","@id":"https:\/\/fivemor.com\/#website","url":"https:\/\/fivemor.com\/","name":"Som2ny Network","description":"Daily Deals","publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fivemor.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fivemor.com\/#organization","name":"Som2ny Network","url":"https:\/\/fivemor.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","width":300,"height":86,"caption":"Som2ny Network"},"image":{"@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","caption":"admin"},"sameAs":["https:\/\/fivemor.com"],"url":"https:\/\/fivemor.com\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/301626","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=301626"}],"version-history":[{"count":0,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/301626\/revisions"}],"wp:attachment":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=301626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=301626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=301626"},{"taxonomy":"dealstore","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdealstore&post=301626"},{"taxonomy":"offerexpiration","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fofferexpiration&post=301626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}