Menumeters

Aug 01, 2015 Menumeters no longer works on El Capitan (see here), what are some alternatives? I just want to see my network and CPU stats. Mar 23, 2021 MenuMeters is a set of CPU, memory, disk, and network monitoring tools for Mac OS X. Although there are numerous other programs which do the same thing, none had quite the feature set I was looking for. MenuMeters used this to inject their own NSMenuExtra's to SystemUIServer; in fact MenuMeters' author is one of the main authors of MenuCracker. Essentially, until Yosemite, SystemUIServer had a fixed list of allowed NSMenuExtras. My fork of MenuMeters by https://github.com/yujitach/MenuMeters.

MenuMeters cannot be used on 10.11 El Capitan, please see 'System Requirements' below.
MenumetersMenumeters

MenuMeters is a set of CPU, memory, disk, and network monitoring tools for Mac OS X. Although there are numerous other programs which do the same thing, none had quite the feature set I was looking for. Most were windows that sat in a corner or on the desktop, which are inevitably obscured by document windows on a laptop's small screen. Those monitors which used the menubar mostly used the NSStatusItem API, which has the annoying tendency to totally reorder my menubar on every login.

The MenuMeters monitors are true SystemUIServer plugins (also known as Menu Extras). This means they can be reordered using command-drag and remember their positions in the menubar across logins and restarts.

  • The CPU Meter can display system load both as a total percentage, or broken out as user and system time. It can also graph user and system load and display the load as a 'thermometer'. The menu for the CPU Meter contains several pieces of information I like to have a single click away.

  • The Disk Activity Meter displays disk activity to local disks on the system (anything that is a IOKit BlockStorage driver). It is hotplug aware, and will show activity on FireWire and USB disks as they are mounted. The Disk Meter menu shows volume space details for local drives (it does not display mounted network volumes for performance reasons).

  • The Memory Meter can display current memory usage as either a pie chart, thermometer, history graph, or as used/free totals. The Memory Meter menu shows a breakdown of current memory usage and VM statistics. The Memory Meter can optionally display a paging indicator light.

  • The Net Meter can display network throughput as arrows, bytes per second, and/or as a graph. Both the arrows and the graph are scaled using a user-selected scaling factor and calculation. Scaling can be done on the basis of actual link speed reported by the network interface or peak traffic and can use one of several scaling calculations. The Net Meter menu shows current interfaces and their status. Interface information is gathered from the SystemConfiguraton framework and thus is Mac OS X network location aware (to prevent interfaces from appearing in this menu see the FAQ).

MenuMeters comes without warranty or support. That said, if it causes you problems I'd like to hear about it so that I may be able to track down the bug. Even better, since this is open source, you can fix the bug yourself. Patches are accepted.

Screenshots

MenuMeters is released under the GNU General Public License (GPL). This makes it both 'free' as in beer and 'free' as in speech, for those who partition the world using that terminology (I am not one of them). MenuMeters is open source mostly because there isn't a good reason for it not to be, except, perhaps, saving myself the embarrassment of having others look at my first C code from a long time ago.

See the 'GNU General Public License.rtf' file for full license terms.

System Requirements

Due to new Apple-enforced code signature restrictions, MenuMeters is not compatible with the OS X 10.11 'El Capitan' public beta. Although the restriction is similar, this is not directly related to 10.11's 'System Integrity Protection' (SIP, aka 'rootless') feature and disabling SIP has no effect on MenuMeters.

Unless Apple makes the signature restriction optional, it is not clear that MenuMeters in its present form can ever be made compatible with OS X 10.11.

In the meantime I can only suggest that you do not install 10.11 if you wish to use MenuMeters.

  • Mac OS X 10.4 or later (10.10 supported, 10.11 incompatible)
  • PowerPC or Intel based Macintosh (Universal Binary)
Menumeters

NOTE: IF YOU ARE INSTALLING OVER AN OLDER VERSION OF MENUMETERS YOU MUST LOGOUT AND LOGIN AFTER INSTALLATION IN ORDER TO LOAD THE NEW VERSION.


MenuMeters 1.8.1 compressed disk image (dmg)
MenuMeters 1.8.1 source code (tar.gz)

As you very well know and is shown in the screenshot above, there can be various utilities put on the right hand side of the menu bar. There are in fact two types of such menu bar items, one known as NSMenuExtra'>NSMenuExtra's and another known as NSStatusItem'>NSStatusItem's. The former are loaded and displayed by SystemUIServer'>SystemUIServer, a process provided by the system. The latter can be displayed by any app written by any developer. One good thing about the former is that you can rearrange them by ⌘-dragging the menu items. I have no idea why ⌘-dragging was not provided for the latter by the system. (On macOS Sierra 10.12, Apple finally implemented and enabled ⌘-dragging for all NSStatusItem's, including this port of MenuMeters. But this happened later than the need to port MenuMeters to El Capitan 10.11.)

Anyway, due to this better behavior of NSMenuExtra's, people often wanted to write their own. In fact until and including OS X 10.1, Apple allowed it. But since 10.2, Apple had a code that blocked SystemUIServer to load non-system-provided NSMenuExtra's. But until Yosemite, there was a known way to work around it, available as an open-source code as MenuCracker. MenuMeters used this to inject their own NSMenuExtra's to SystemUIServer; in fact MenuMeters' author is one of the main authors of MenuCracker.

Menumeters osxMenumeters mojave

Essentially, until Yosemite, SystemUIServer had a fixed list of allowed NSMenuExtras. MenuCracker was an NSMenuExtra that pretended to be one of those allowed ones, which, once loaded inside SystemUIServer, removed these checks, so that more NSMenuExtras can be loaded without any problem. In El Capitan, Apple added a more stringent check of the allowed NSMenuExtra's, and MenuCracker no longer works.

So, how did I port MenuMeters to El Capitan, then? Well, I just gave up having ⌘-dragging. Then all I had to do was to, basically speaking, replace the occurrences of 'NSMenuExtra' by 'NSStatusItem', since the two APIs are almost the same.