{"id":13995475,"url":"https://github.com/lukakerr/NSWindowStyles","last_synced_at":"2025-07-22T22:30:59.698Z","repository":{"id":45798333,"uuid":"123752986","full_name":"lukakerr/NSWindowStyles","owner":"lukakerr","description":"A showcase of the many different styles of windows possible with NSWindow on macOS","archived":false,"fork":false,"pushed_at":"2021-05-30T23:29:35.000Z","size":947,"stargazers_count":1180,"open_issues_count":2,"forks_count":37,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-05-24T00:06:04.940Z","etag":null,"topics":["cocoa","design","macos","nswindow","osx","swift","swift-4"],"latest_commit_sha":null,"homepage":"https://lukakerr.github.io/swift/nswindow-styles","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lukakerr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-03-04T03:24:10.000Z","updated_at":"2025-05-22T00:42:49.000Z","dependencies_parsed_at":"2022-07-17T01:15:59.275Z","dependency_job_id":null,"html_url":"https://github.com/lukakerr/NSWindowStyles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lukakerr/NSWindowStyles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukakerr%2FNSWindowStyles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukakerr%2FNSWindowStyles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukakerr%2FNSWindowStyles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukakerr%2FNSWindowStyles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lukakerr","download_url":"https://codeload.github.com/lukakerr/NSWindowStyles/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukakerr%2FNSWindowStyles/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266585663,"owners_count":23952163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cocoa","design","macos","nswindow","osx","swift","swift-4"],"created_at":"2024-08-09T14:03:25.881Z","updated_at":"2025-07-22T22:30:58.830Z","avatar_url":"https://github.com/lukakerr.png","language":"Swift","readme":"# Swift NSWindow Style Showcase\n\n[![Swift 5](https://img.shields.io/badge/swift-5-orange.svg?style=flat)](https://github.com/apple/swift)\n[![Platform](http://img.shields.io/badge/platform-macOS-red.svg?style=flat)](https://developer.apple.com/macos/)\n[![Github](http://img.shields.io/badge/github-lukakerr-green.svg?style=flat)](https://github.com/lukakerr)\n\nA showcase of many of the different styles of windows possible with NSWindow on MacOS. In some examples, NSToolbar, and NSVisualEffectView are used. No private API's are used.\n\nTo test each style, clone the project, open it in Xcode, uncomment each block of code in `WindowController.swift` and run. The numbers above each block correspond to each style below.\n\nAll code is in `WindowController.swift` in the `windowDidLoad` function. You should just be able to place each block inside that function to get the exact same result.\n\nIf you have a style to add, please make a pull request.\n\n### 1. Hide title\n\nDon't show the title text in the titlebar.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/1.png\" width=\"720\"\u003e\n\u003c/p\u003e\n\n```swift\nwindow?.titleVisibility = .hidden\n```\n\n### 2. Hide titlebar\n\nHide the titlebar completely.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/2.png\" width=\"620\"\u003e\n\u003c/p\u003e\n\n```swift\nwindow?.styleMask.remove(.titled)\n```\n\n### 3. Vibrant background\n\nCreate a vibrant background where whatever is behind the window can be slightly seen. This uses `NSVisualEffectView`.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/3.png\" width=\"620\"\u003e\n\u003c/p\u003e\n\n```swift\nlet visualEffect = NSVisualEffectView()\nvisualEffect.blendingMode = .behindWindow\nvisualEffect.state = .active\nvisualEffect.material = .dark\nwindow?.contentView = visualEffect\n```\n\n`visualEffect.material` can take multiple values including:\n\n- `.appearanceBased`: based on the views appearance\n- `.dark`: dark appearance\n- `.ultraDark`: ultra dark appearance\n- `.light`: light appearance\n- `.mediumLight`: medium light appearance\n- others such as `.menu`, `.popover`, `.selection`, `.sidebar` and `.titlebar`\n\n### 4. Vibrant background with transparent titlebar\n\nSame as above, with a transparent titlebar.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/4.png\" width=\"620\"\u003e\n\u003c/p\u003e\n\n```swift\nlet visualEffect = NSVisualEffectView()\nvisualEffect.blendingMode = .behindWindow\nvisualEffect.state = .active\nvisualEffect.material = .dark\nwindow?.contentView = visualEffect\n\nwindow?.titlebarAppearsTransparent = true\nwindow?.styleMask.insert(.fullSizeContentView)\n```\n\n### 5. Vibrant background without titlebar\n\nSame as above, without the titlebar.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/5.png\" width=\"620\"\u003e\n\u003c/p\u003e\n\n```swift\nlet visualEffect = NSVisualEffectView()\nvisualEffect.blendingMode = .behindWindow\nvisualEffect.state = .active\nvisualEffect.material = .dark\nwindow?.contentView = visualEffect\n\nwindow?.styleMask.remove(.titled)\nwindow?.isMovableByWindowBackground = true\n```\n\n### 6. Vibrant background with custom border radius and no titlebar\n\nA vibrant window with a custom border radius. The border radius value can be changed at `visualEffect.layer?.cornerRadius = 16.0`.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/6.png\" width=\"620\"\u003e\n\u003c/p\u003e\n\n```swift\nlet visualEffect = NSVisualEffectView()\nvisualEffect.translatesAutoresizingMaskIntoConstraints = false\nvisualEffect.material = .dark\nvisualEffect.state = .active\nvisualEffect.wantsLayer = true\nvisualEffect.layer?.cornerRadius = 16.0\n\nwindow?.titleVisibility = .hidden\nwindow?.styleMask.remove(.titled)\nwindow?.backgroundColor = .clear\nwindow?.isMovableByWindowBackground = true\n\nwindow?.contentView?.addSubview(visualEffect)\n\nguard let constraints = window?.contentView else {\n  return\n}\n\nvisualEffect.leadingAnchor.constraint(equalTo: constraints.leadingAnchor).isActive = true\nvisualEffect.trailingAnchor.constraint(equalTo: constraints.trailingAnchor).isActive = true\nvisualEffect.topAnchor.constraint(equalTo: constraints.topAnchor).isActive = true\nvisualEffect.bottomAnchor.constraint(equalTo: constraints.bottomAnchor).isActive = true\n```\n\n### 7. Vibrant background with transparent titlebar and no window controls\n\nA vibrant window with a standard border radius and no window controls or title.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./Images/vibrant-w-radius.png\" width=\"620\"\u003e\n\u003c/p\u003e\n\n```swift\nlet visualEffect = NSVisualEffectView()\nvisualEffect.blendingMode = .behindWindow\nvisualEffect.state = .active\nvisualEffect.material = .dark\nwindow?.contentView = visualEffect\n\nwindow?.styleMask.insert(.titled)\n\nwindow?.titlebarAppearsTransparent = true\nwindow?.titleVisibility = .hidden\n\nwindow?.standardWindowButton(.miniaturizeButton)?.isHidden = true\nwindow?.standardWindowButton(.closeButton)?.isHidden = true\nwindow?.standardWindowButton(.zoomButton)?.isHidden = true\n\nwindow?.isMovableByWindowBackground = true\n```\n\n\n### 8. Transparent titlebar\n\nA window with a transparent titlebar.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/7.png\" width=\"720\"\u003e\n\u003c/p\u003e\n\n```swift\nwindow?.titlebarAppearsTransparent = true\n```\n\n### 9. Transparent titlebar with background color\n\nSame as above with a background color.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/8.png\" width=\"720\"\u003e\n\u003c/p\u003e\n\n```swift\nwindow?.titlebarAppearsTransparent = true\nwindow?.backgroundColor = .red\n```\n\n### 10. Toolbar\n\nA window with a toolbar.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/9.png\" width=\"720\"\u003e\n\u003c/p\u003e\n\n```swift\nlet customToolbar = NSToolbar()\nwindow?.titleVisibility = .hidden\nwindow?.toolbar = customToolbar\n```\n\n### 11. Transparent toolbar\n\nSame as above, with the toolbar transparent.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/10.png\" width=\"720\"\u003e\n\u003c/p\u003e\n\n```swift\nlet customToolbar = NSToolbar()\nwindow?.titlebarAppearsTransparent = true\nwindow?.titleVisibility = .hidden\nwindow?.toolbar = customToolbar\n```\n\n### 12. Transparent toolbar without seperator\n\nSame as above, without the toolbar seperator.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/11.png\" width=\"720\"\u003e\n\u003c/p\u003e\n\n```swift\nlet customToolbar = NSToolbar()\ncustomToolbar.showsBaselineSeparator = false\nwindow?.titlebarAppearsTransparent = true\nwindow?.titleVisibility = .hidden\nwindow?.toolbar = customToolbar\n```\n\n### 13. Transparent toolbar with background color and without seperator\n\nSame as above, with a background color.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/12.png\" width=\"720\"\u003e\n\u003c/p\u003e\n\n```swift\nlet customToolbar = NSToolbar()\ncustomToolbar.showsBaselineSeparator = false\nwindow?.titlebarAppearsTransparent = true\nwindow?.titleVisibility = .hidden\nwindow?.backgroundColor = .red\nwindow?.toolbar = customToolbar\n```\n\n### 14. Translucent toolbar\n\nA translucent toolbar allowing for content behind the toolbar to be slightly seen.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/13.png\" width=\"720\"\u003e\n\u003c/p\u003e\n\n```swift\nlet customToolbar = NSToolbar()\nwindow?.titleVisibility = .hidden\nwindow?.styleMask.insert(.fullSizeContentView)\nwindow?.contentView?.wantsLayer = true\nwindow?.contentView?.layer?.contents = NSImage(named: NSImage.Name(\"Background\"))\nwindow?.toolbar = customToolbar\n```\n\n### 15. Translucent titlebar\n\nSame as above with a titlebar instead of a toolbar.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/14.png\" width=\"720\"\u003e\n\u003c/p\u003e\n\n```swift\nwindow?.titleVisibility = .hidden\nwindow?.styleMask.insert(.fullSizeContentView)\nwindow?.contentView?.wantsLayer = true\nwindow?.contentView?.layer?.contents = NSImage(named: NSImage.Name(\"Background\"))\n```\n\n### 16. Transparent titlebar without title\n\nSame as above with a transparent titlebar.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Images/15.png\" width=\"720\"\u003e\n\u003c/p\u003e\n\n```swift\nwindow?.titleVisibility = .hidden\nwindow?.styleMask.insert(.fullSizeContentView)\nwindow?.titlebarAppearsTransparent = true\nwindow?.contentView?.wantsLayer = true\nwindow?.contentView?.layer?.contents = NSImage(named: NSImage.Name(\"Background\"))\n```\n\n### 17. macOS Mojave dark mode\n\nThe macOS Mojave dark mode appearance.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"./Images/16.png\" width=\"720\"\u003e\n\u003c/p\u003e\n\n```swift\nif #available(OSX 10.14, *) {\n  window?.appearance = NSAppearance(named: .darkAqua)\n}\n```\n","funding_links":[],"categories":["Swift","swift-4"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukakerr%2FNSWindowStyles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flukakerr%2FNSWindowStyles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukakerr%2FNSWindowStyles/lists"}