Ridiculously Uncomplicated macOS Python Statusbar apps
Switch branches/tags
Nothing to show
Clone or download
jaredks Merge pull request #63 from chadselph/less-dependencies
only need pyobjc-framework-Cocoa, not whole pyobjc
Latest commit 8c3d642 Apr 30, 2017



Ridiculously Uncomplicated macOS Python Statusbar apps.


import rumps

class AwesomeStatusBarApp(rumps.App):
    def prefs(self, _):
        rumps.alert("jk! no preferences available!")

    @rumps.clicked("Silly button")
    def onoff(self, sender):
        sender.state = not sender.state

    @rumps.clicked("Say hi")
    def sayhi(self, _):
        rumps.notification("Awesome title", "amazing subtitle", "hi!!1")

if __name__ == "__main__":
    AwesomeStatusBarApp("Awesome App").run()

How fun!?

rumps can greatly shorten the code required to generate a working app. No PyObjC underscore syntax required!

Use case

rumps is for any console-based program that would benefit from a simple configuration toolbar or launch menu.

Good for:

  • Notification-center-based app
  • Controlling daemons / launching separate programs
  • Updating simple info from web APIs on a timer

Not good for:

  • Any app that is first and foremost a GUI application


  • PyObjC
  • Python 2.6+

Mac OS X 10.6 was shipped with Python 2.6 as the default version and PyObjC has been included in the default Python since Mac OS X 10.5. If you're using Mac OS X 10.6+ and the default Python that came with it, then rumps should be good to go!


  • py2app

For creating standalone apps, just make sure to include rumps in the packages list. Most simple statusbar-based apps are just "background" apps (no icon in the dock; inability to tab to the application) so it is likely that you would want to set 'LSUIElement' to True. A basic setup.py would look like,

from setuptools import setup

APP = ['example_class.py']
    'argv_emulation': True,
    'plist': {
        'LSUIElement': True,
    'packages': ['rumps'],

    options={'py2app': OPTIONS},

With this you can then create a standalone,

python setup.py py2app


Using pip,

pip install rumps

Or from source,

python setup.py install

Both of which will require sudo if installing in a system-wide location.


Documentation is available at http://rumps.readthedocs.org


"Modified BSD License". See LICENSE for details. Copyright Jared Suttles, 2017.