Simple network activity monitor for macOS

Related tags

Loading
Overview

Loading See when Mac apps are using your network

Similar to the network activity indicator on iOS, Loading shows a spinning progress wheel in your menu bar when your network is being used. Clicking the icon shows the apps that are using your network, and holding down the option key shows the individual processes.

The original project required OS X 10.7 or newer, but that was only because it used 10.7's NSPopover for the licensing functionality. Support for older versions of OS X remains untested.


Most of the functionality in this app was reverse-engineered from the private NetworkStatistics framework found here:

/System/Library/PrivateFrameworks/NetworkStatistics.framework

And it uses the private [NSStatusBarButtonCell _button] selector on OS X 10.9 and earlier, as [NSStatusBarButtonCell button] was not available until Yosemite.


Lastly, OS X has a large number of bugs regarding NSMenus:

  • [NSMenuItem setView:] is currently broken, as it will cause the keyboard controls to stop working after using the menu for the first time.

  • Using setView on an NSTextView to have wrapped text causes the selection background to render incorrectly, ignores the first mouse click on the menu item, and has the same broken keyboard controls as above. The workaround was to wrap the text using CTFramesetter and \n newlines.

  • NSStatusItem's menu will be drawn in the wrong position if you follow the recommended behavior of using [NSMenuDelegate menuNeedsUpdate:] OR menu:updateItem:atIndex:shouldCancel:. The only workaround I was able to find was swizzling [NSStatusBarButtonCell trackMouse:inRect:ofView:untilMouseUp:] and updating the menu there.

  • NSMenuItems with attributed titles cannot be updated when the item is selected or deselected, so you can't for example have a gray menu item that turns white when selected. Since the icons can be updated in the select/deselect event for some reason, one proposed workaround is to render the text into a large NSImage and set that as the icon for the menu item.

  • the NSMenuItem checked state can be modified when selected or deselected, but it causes the entire menu to flicker and redraw improperly.

  • [NSMenuItem setMixedStateImage:] has been available since 10.0 and has not been deprecated, but has never actually done anything.

  • "Cocoa" NSMenus are actually built entirely on Carbon, and even the Apple menu items are subclassed directly from IBCarbonMenuItem, but in 64-bit mode kEventParamMenuContextHeight is always 0.0 in both draw events. This is needed to flip the coordinate system on the CGContextRef for drawing into the menu (the alternative of using GetPortBounds is only available in 32-bit mode), so without it the feature seems useless? Combine that with the setView bugs and I have no clue how they're drawing the 1 new text next to the App Store menu item.


Website
https://bonzaiapps.com/loading/

Download
https://bonzaiapps.com/loading/Loading.zip

Language
English, Français, Deutsch, 汉语, 漢語, 日本語, Español, Italiano, Nederlands, 한국어, Português, Dansk, Suomi, Norsk bokmål, Svenska, Pу́сский, Polski, Türkçe, العربية, ภาษาไทย, Čeština, Magyar, Català, Hrvatski, Ελληνικά, עברית, Român, Slovenský jazyk, Yкраїнська мова, Bahasa Indonesia, Bahasa melayu, Tiếng việt

Issues
  • Better German translation for Loading/loaded. Maybe it should be even…

    Better German translation for Loading/loaded. Maybe it should be even…

    … more elaborately like "Apps currently loading data" and "Apps recently loading data"?

    opened by menkej 9
  • Update FR Localizable.strings

    Update FR Localizable.strings

    I had to replace %@ because it was not showing the 'untranslated' app name, "Loading".

    It is better to keep one name for the application in all languages. like all the apps on Mac.

    To avoid French nightmare with pluralsssss I have replaced "loading/loaded" header menu items by Currently and Recently.

    So I had to change infoplist too.

    CFBundleName = "Loading"; CFBundleDisplayName = "Loading"; NSHumanReadableCopyright = "© 2015 Mike McFadden / Bonzai Applications\nTous droits réservés.";

    opened by TraderStf 7
  • Optionally ignore specific apps/processes, however...

    Optionally ignore specific apps/processes, however...

    The actual logic for ignoring the apps/processes is straightforward, but I'm stuck trying to get the NSMenu APIs to do what I want.

    Ideally there would be a minimalist checkbox next to an app or process when mousing over the menu item, but I can't use setView to add a checkbox since that breaks the keyboard controls, can't use setState to add a check mark as that causes the menu to flicker, and can't use custom drawing without proper access to the height of the CGContextRef.

    The height of the context could be retrieved using GetPortBounds, but Apple removed the header files and symbols for QuickDraw from the HIToolbox.framework that's included with the Xcode SDKs. The HIToolbox that's in your /System/Library/Frameworks folder has all of the QuickDraw functionality there, since it's still used by the menu APIs, but I can't figure out how to get Xcode to link against that one.

    I'm close to just switching to a fake NSWindow-based menu, like Apple did with the old Spotlight menu in Mavericks, or switching to a less-intuitive design just to get something implemented.

    enhancement 
    opened by BonzaiThePenguin 5
  • Website - French Translation

    Website - French Translation

    Hi, I have sent an email with the correct French strings and the html page to you by email, perhaps miss it.

    For the strings, I have pulled a request.

    For the html page, where do you want to receive it ?

    enhancement 
    opened by TraderStf 4
  • System processes stop showing up after about a day

    System processes stop showing up after about a day

    Someone just brought this to my attention via email – if you've been running Loading for a while without restarting, you might not have any System processes listed anymore. I certainly don't, and it's strange since they're very common when the app first launches. Need to look into this one further.

    bug 
    opened by BonzaiThePenguin 3
  • Icon is missing for some apps

    Icon is missing for some apps

    For some reason some apps aren't assigned an icon so there's just a blank spot next to their name, even though Loading is supposed to assign a generic app icon in those situations. Haven't yet looked into this one.

    bug 
    opened by BonzaiThePenguin 3
  • update loaded and LOADING_INTRO

    update loaded and LOADING_INTRO

    update loaded and LOADING_INTRO

    opened by ryh 2
  • Update for German Localizable.strings

    Update for German Localizable.strings

    The original German (machine?) translation wasn’t very good and only just intelligible. I tried to enhance it as good as I could in a first attempt. (I am a German native speaker.) I sticked with "Loading" as a) it is well known as a term for the process of downloading data in German and "Laden" does not convey that it is something that is going on right now and b) the "LOADING" string obviously is used as name of the app in the Options > About menu. (The actual fix would be to differentiate here between strings for the process of loading and the name Loading. Once these strings are differentiated, another way to translate "loading" and "loaded" more elegantly might be "Aktiv" and "Zuvor aktiv".) I haven’t checked where "DOWNLOAD" is used, but I guess it is for the download of an update, so "Laden" is okay, I guess, at least in contemporary colloquial German. (Finally, may I add that the German app description on the app’s homepage is quite horrible as well?)

    opened by philippgeisler 2
  • Added an

    Added an "Animate" menu. On by default, but less distracting when off.

    Quite useful for users with Dropbox, Slack type services that are always online. This way providing the power of knowing who is doing what with a click, but without the constant call for attention.

    **. Does not include any localizations.

    opened by Farranco 2
  • Tune Russian phrases a bit

    Tune Russian phrases a bit

    :ru:

    opened by rodionovd 2
  • Checkboxes not visible when using Dark Menus

    Checkboxes not visible when using Dark Menus

    Only visible briefly when checking/unchecking....requiring lots of extra clicking to see which are set/not set....so to uncheck the one that's keeping it spinning....

    Also would be nice if checking/unchecking the box doesn't close the menu....

    opened by TheDreamer 0
  • Possible workarounds for bug regarding NSMenus

    Possible workarounds for bug regarding NSMenus

    I read your impressive readme on bugs regarding NSMenus and I would like to share my knowledge with you, regarding the bug:

    • NSStatusItem's menu will be drawn in the wrong position if you follow the recommended behavior of using [NSMenuDelegate menuNeedsUpdate:] OR menu:updateItem:atIndex:shouldCancel:. The only workaround I was able to find was swizzling [NSStatusBarButtonCell trackMouse:inRect:ofView:untilMouseUp:] and updating the menu there.

    Here are two proposed alternatives, workarounds, to avoid having to swizzle the method:

    • Populate the menu with at least one menu item which will have the longest length (longest title plus image plus indentation if any) among all menu items to be added
    • Call [NSMenuDelegate menuNeedsUpdate:] right after app initialization is complete, once only, important is that the menu is pre-populated before the user actually tries to display the menu

    The goal in both cases is to pre-populate the menu, making sure it is not empty, and that it contains the menu item which has the longest possible length, this apparently gives the system a hint as to where to draw the menu and it will draw the menu in the right position if you do this. Leaving the menu empty is not the best option.

    opened by 1951FDG 0
  • I have to say the main website was terrible

    I have to say the main website was terrible

    Please find a Chinese to translate the website. And I very like your app!

    opened by lizhaode 0
  • Checkboxes don't really convey what they're supposed to do

    Checkboxes don't really convey what they're supposed to do

    The current design of using checkboxes next to each app and process doesn't really convey what clicking them will do. It'd probably make a lot more sense to have a tiny progress wheel icon when animations are enabled, and a progress wheel with a slash through it when it's disabled.

    The checkboxes were only there to get version 1.1 out the door as soon as possible. :P

    enhancement 
    opened by BonzaiThePenguin 5
  • New icon in menu bar

    New icon in menu bar

    Spinning icon is cute but it reminder me web page with BLINK tags :-1: After a while I get hypnotized.

    Few ideas. icon as light bulb, down-arrow like in safari, Some might need 2 colors (green-red or black-grey...) others just 2 shapes ⚫︎⚪︎ ⬛︎⬜︎

    top of the top... user-defined emoji or symbol

    👣🐫 🏃🏻🚀⛵️💡🚥🐠

    Later if some needs, in-out traffic icons... starts to look like littlesntich ;-) Or with 2 small counters in the menu bar 4 Now | N | ● | ▼ 6 Recent | R | ○ | ▽

    enhancement 
    opened by TraderStf 2
  • Individual Processes in a submenu

    Individual Processes in a submenu

    I don't know if it will solve what we have now, a process which is 1111 cm high in the menu. If when the option key is hold, each app is now with its own submenu.

    If some prefer the current version, option-shift can be used for one of these two.

    enhancement 
    opened by TraderStf 0
  • Preferences - Recent List - Duration

    Preferences - Recent List - Duration

    Add the possibility to choose the duration, it is not a good word... dooo I need to sleep... since, back-to, until...

    Several possibilities

    • x seconds defined in preference dialog (when there is one)
    • submenu with few predefined values (1 min, 3 min, 5 min, 15 min...) for this submenu, changing for 5-to-1 and then 1-to-5, for example, will not delete/hide/remove the Loaded between 1 and 5, in other words, the entire history must be kept for the longest duration that can be defined.
    enhancement 
    opened by TraderStf 1
  • Show consumed traffic amount?

    Show consumed traffic amount?

    It would be really lovely to see amount of traffic for each app, or is it out of scope for Loading?

    enhancement 
    opened by delebedev 7
Releases(1.2.6)
  • 1.2.4(May 23, 2015)

    Public changes: https://github.com/BonzaiThePenguin/Loading/commit/ed5c7d0530cd332928f0b65abd75a6d3e053f8d9 Added support for showing the iOS Simulator https://github.com/BonzaiThePenguin/Loading/commit/a568f74383934f422fcc0d122ba49209d8840f2d Fixed a bug with the System app disappearing

    Source code changes: https://github.com/BonzaiThePenguin/Loading/commit/801c98c8475c9f4d33b290600a2e421d5db5a849 There's now a .gitignore

    Source code(tar.gz)
    Source code(zip)
  • 1.2.3(May 10, 2015)

    Public changes:

    • https://github.com/BonzaiThePenguin/Loading/commit/3b02a27383ea7a2c821fd962040a858af09be9a4 Fixed support for OS X 10.9 and older
    • https://github.com/BonzaiThePenguin/Loading/commit/3c950ceb61ff5f19fb6aae3662bbfe5c8385df68 Changed the icon for System so it doesn't look the same as the Finder
    Source code(tar.gz)
    Source code(zip)
  • 1.2.2(May 9, 2015)

    • https://github.com/BonzaiThePenguin/Loading/commit/2ca69431f0cc0f5431a10f79303e32f525308b8a Inactive processes are now colored gray
    • https://github.com/BonzaiThePenguin/Loading/commit/57445b90290780b368d478800025f4f650e44d9a Added an option to visit the website
    • https://github.com/BonzaiThePenguin/Loading/commit/e9dd56ee55010646705829440a4184139d2806d7 Better layout for Arabic and Hebrew
    • https://github.com/BonzaiThePenguin/Loading/commit/e369b234bf5a37972b8c8c65ded3820d5f3b557e Fixed a problem with missing Korean translations
    • https://github.com/BonzaiThePenguin/Loading/commit/d0cb275cd6fb68da021dc32284c9a3c574e6f9e8 Improved German translations
    Source code(tar.gz)
    Source code(zip)
  • 1.2.1(May 9, 2015)

    Public changes:

    • https://github.com/BonzaiThePenguin/Loading/commit/582489fbe0eb2a3bc273eab5bf2a9367e5f29a2d Made a new menu icon that's a bit smaller and brighter
    • https://github.com/BonzaiThePenguin/Loading/commit/1a9d6337e3c318385a29757c3432d42eaf8d86ff Fixed an important memory leak
    • https://github.com/BonzaiThePenguin/Loading/commit/122d745efb561b433c4dffacadeeff11d2312f14 Fixed a bug with missing app icons
    • https://github.com/BonzaiThePenguin/Loading/commit/b0cc8e39dc1d6a518d76203cdba264b306b5987f Improved the French translation
    Source code(tar.gz)
    Source code(zip)
  • 1.2(May 8, 2015)

    Public changes:

    • https://github.com/BonzaiThePenguin/Loading/commit/0e970186a1f63e45811b8daf0877c1435da05f98 Some processes will now show up under Notification Center, Contacts, Calendar, or Flash Player
    • https://github.com/BonzaiThePenguin/Loading/commit/d34735491b18eab636496872e37cbceebed90783 The checkboxes for disabling the spinning animation are now shown more often
    • Changed the product name to Loading in the About menu
    • Fixed a problem with missing French translations
    • https://github.com/BonzaiThePenguin/Loading/commit/e3eb90f565dbb4b40b6852b79d685524ed45c12c Better Norwegian translations

    Source code changes:

    • https://github.com/BonzaiThePenguin/Loading/commit/65f2ccb9a4309ed0c6995e3d06991fc6520aca3b https://github.com/BonzaiThePenguin/Loading/commit/849cb44bdef3a81b4c6ad6d2ab8613c927716939 Fixed the line endings on the strings files
    • https://github.com/BonzaiThePenguin/Loading/commit/5415a920a6071d60945c16ba9333edff2b953e92 Added the Options menu to make it closer to the release build (only difference now is the removed "Check for Updates" item)
    • https://github.com/BonzaiThePenguin/Loading/commit/ed590106937eb0c3dc50b6084aaa674072df998a The mapping property is used to manually map processes to apps, using their file path.
    Source code(tar.gz)
    Source code(zip)
Owner
Mike McFadden
Mike McFadden
Easily disable or enable a monitor on your Mac.

DisableMonitor Adds the missing feature to disable a monitor on your Mac! Easily disable, enable or change the resolution of a monitor! Warning It has

Tobias Salzmann 1.2k Jul 21, 2021
Intelligent adaptive brightness for your external monitors

Lunar Intelligent adaptive brightness for your external display M1 doesn't provide DDC support so Lunar can't work on those devices yet. Note: Lunar c

Alin Panaitiu 2.5k Aug 5, 2021
macOS system monitor in your menu bar

Stats macOS system monitor in your menu bar Installation Manually You can download the latest version here. This will download a file called Stats.dmg

Serhiy Mytrovtsiy 5.1k Jul 27, 2021
Encrypted file transfer over ad hoc WiFi. No network infrastructure required, just two laptops in close range. Linux, Mac, and Windows.

Flying Carpet To download, visit the releases page! Wireless, encrypted file transfer over automatically configured ad hoc networking. No network infr

Theron Spiegl 821 Jul 31, 2021
Monitor your Mac's fan speed and CPU/GPU temperature from your Notification Center.

Fanny Monitor your Mac's fan speed and CPU/GPU temperature from your Notification Center. If you're looking to download this application, please visit

Daniel Storm 869 Jul 28, 2021
A simple app made to fix the sound issues that sometimes happen while using an external HDMI monitor on macOS (not tested after Mojave).

?? Mac Sound Re-Enabler ??‍♂️ Simple stupid app used to fix the sound issues (read below) while using an external HDMI monitor on macOS for video only

Nikola 17 Jul 24, 2021
🖥 Control your external monitor brightness volume on your Mac

MonitorControl Control your external monitor brightness, contrast or volume directly from a menulet or with keyboard native keys. Translations: ???? ?

null 8.4k Jul 28, 2021
Read-only mirror of Wireshark's Git repository at https://gitlab.com/wireshark/wireshark. GitHub won't let us disable pull requests. ☞ THEY WILL BE IGNORED HERE ☜ Please upload them at GitLab.

General Information Wireshark is a network traffic analyzer, or "sniffer", for Linux, macOS, *BSD and other Unix and Unix-like operating systems and f

Wireshark Foundation 3.5k Jul 22, 2021
macOS app which assembles and disassembles animated png files

Over 11k downloads* ?? APNGb 2.0.1 (Download) APNGb is a macOS app which creates animated png from a series of png frames and disassembles animated pn

Ștefan Godoroja 229 Jul 29, 2021
Simple macOS GateKeeper script.

macOS GateKeeper Helper Simple macOS GateKeeper script. ?? Table of Contents About Usage Tips ?? About This is a simple useful tool for users which al

Bahadır A. Güder 128 Jul 16, 2021
A simple but highly customizable `UICollectionViewLayout` for `UICollectionView`.

CollectionViewPagingLayout Layout Designer SnapshotTransformView ScaleTransformView StackTransformView Custom implementations About This is a simple b

Amir Khorsandi 1.3k Jul 31, 2021
OS X menubar status indicator

AnyBar: OS X menubar status indicator AnyBar is a small indicator for your menubar that does one simple thing: it displays a colored dot. What the dot

Nikita Prokopov 5.6k Jul 31, 2021
A Dimness and Night Shift menu bar app for macOS 🌙

Nocturnal Have more control over your screen at night About Nocturnal is a menu bar app for macOS that allows you to go the extra mile in controlling

Joshua Jon 216 Jul 15, 2021
Sigil is a multi-platform EPUB ebook editor

Sigil Sigil is a free, open source, multi-platform ebook editor that uses Qt (and QtWebEngine). It is designed to edit books in ePub format (both ePub

null 4.2k Jul 26, 2021