Can I set a fixed order for non-apple icons on the menu bar of my MacBook?

Short Answer

Apple has enabled drag and drop functionality menubar icons since OS X 10.12, but the order will not persist across reboot. Without preferences being provided by the developer, the only way to reorder them is by opening the apps in a specific order, where those opened first will appear to the right. On occasion, some vendors write code that forces the icon to appear at one end or the other, giving you zero control over its position.


Errata

There are two types of icons in the OS X menu bar:

  • MenuExtra: Apple's private class to develop their own menu icons.
  • StatusItem: A class provided for third-party developers to create menu icons.

MenuExtras

Apple's private class have a number of built-in perks, including:

  • If you double-click them (in the finder) they will load in the menubar and open automatically at login.
  • You can command-click them (in the menubar) and drag to reorder them.
  • To remove them you can command-click and drag them off the bar (similar to dock items).

Unfortunately Apple doesn't officially sanction the development of 3rd-party MenuExtras. The reason given is that they operate as plugins in the SystemUIServer and faulty code could cause instability in a core part of the operating system.

StatusItems

The class for developers doesn't provide such functionality out of the box (as of 10.6 Snow Leopard) and unfortunately there are currently no open source classes that permit commercial use.

Thus, developers typically do the following, in order of general occurrence:

  • Ignore the issue all together
  • Force a preset position
  • Provide a few basic preferences; or
  • Must write their own classes to duplicate the MenuExtra functionality

For a list of available MenuExtras, navigate in the Finder to:

/System/Library/CoreServices/Menu Extras

For a well kept list of free and commercial StatusItems, visit:

Super OS X menubar items


Bartender will let you do that.

Disclosure: I am the developer of Bartender.


I can answer the part about launching applications in order when you log in: first, open AppleScript Editor and create a script along these lines:

tell application "Address Book" to activate
delay 10
tell application "Chess" to activate

(for whatever programs you actually want to launch). Save this script as an Application (the default is to save as a script, in which case it'll open in the editor rather than running). Then open System Preferences, Accounts pane, select your account, select the Login Items tab, and drag the script into the item list. That should do it.

Tags:

Macos