I've got an app that uses a Toolbar in a NSWindow. I don't want users to be able to customize this toolbar for aesthetic reasons. In Sierra there's a new Menu option that gets inserted into "Menu > View" called Show Tab Bar
. How do I disable this? Enabling it only seems to increase the tool bar's height as I don't have extra labels showing under the icons.
Asked
Active
Viewed 5,789 times
20

strangetimes
- 4,953
- 1
- 34
- 62
6 Answers
33

leonaka
- 868
- 1
- 6
- 12
-
Thanks a lot. This helped me. – Tommy Jul 09 '17 at 05:18
-
where exactly this screen is located at? – Haardik Dharma May 01 '21 at 11:18
-
You can also do it programmatically using the following code ```window.tabbingMode = NSWindowTabbingModeDisallowed``` – Elviss Strazdins Apr 12 '22 at 14:08
17
On 10.12, you need to now set the following when the window is created as Tab Bar is now available by default:
[NSWindow setAllowsAutomaticWindowTabbing: NO];
The answer is the same in Swift and SwiftUI
func applicationWillFinishLaunching(_ notification: Notification) {
NSWindow.allowsAutomaticWindowTabbing = false
}
Note that the call is made on the class NSWindow
not on an instance of NSWindow

JuJoDi
- 14,627
- 23
- 80
- 126

strangetimes
- 4,953
- 1
- 34
- 62
-
4On 10.15 this method no longer seems to exist. Instead you can set the `tabbingMode` of the window to `.disallowed`. Specifically adding `window.tabbingMode = .disallowed` to the `applicationDidFinishLaunching` method of the `NSApplicationDelegate` seems to work. – Steven W. Klassen Feb 14 '20 at 15:24
-
The above comment is not true, it seems like they may have been trying to call `allowsAutomaticWindowTabbing` on an instance of a window rather than on NSWindow the class. In swift and swiftui you can still call `NSWindow.allowsAutomaticWindowTabbing = false` to remove these items entirely in all app windows rather than disabling them for individual windows. – JuJoDi Jan 08 '21 at 19:11
5
To disable tabbing on individual windows call setTabbingMode:
if([window respondsToSelector:@selector(setTabbingMode:)]) {
// this particular window doesn't support tabbing in Sierra.
[window setTabbingMode:NSWindowTabbingModeDisallowed];
}

adib
- 8,285
- 6
- 52
- 91
4
If you don't want to compile against the latest frameworks, you can use the following code in your NSWindowsController sub classes:
Swift:
override func awakeFromNib() {
if NSAppKitVersionNumber > 1500 {
self.window?.setValue(2, forKey: "tabbingMode")
}
}
Objective-C:
- (void)awakeFromNib {
if (NSAppKitVersionNumber > 1500) {
[self.window setValue:[NSNumber numberWithInt:2] forKey:@"tabbingMode"];
}
}

Ely
- 8,259
- 1
- 54
- 67
-
It's `NSAppKitVersion.current.rawValue > NSAppKitVersion.macOS10_12.rawValue` with Swift 4 – ctietze Mar 17 '18 at 08:20
-
@ctietze: my answer os only relevant when using older versions of Xcode and Swift – Ely Mar 17 '18 at 14:14
4
Swift solution:
override func awakeFromNib() {
super.awakeFromNib()
if #available(OSX 10.12, *) {
tabbingMode = .disallowed
}
}

Matej Ukmar
- 2,157
- 22
- 27
-
1Or, if you have an app delegate, add the line `window.tabbingMode = .disallowed` after the NSWindow has been created. – Steven W. Klassen Feb 14 '20 at 15:25