Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


Ridiculously Uncomplicated macOS Python Statusbar apps

Subscribe to updates I use rumps

Statistics on rumps

Number of watchers on Github 1873
Number of open issues 42
Average time to close an issue 3 months
Main language Python
Average time to merge a PR about 2 months
Open pull requests 16+
Closed pull requests 3+
Last commit about 3 years ago
Repo Created almost 7 years ago
Repo Last Updated about 2 years ago
Size 173 KB
Organization / Authorjaredks
Page Updated
Do you use rumps? Leave a review!
View open issues (42)
View rumps activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating rumps for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


R\ idiculously U\ ncomplicated m\ acOS P\ ython S\ tatusbar apps.

.. image:: https://raw.github.com/jaredks/rumps/master/examples/rumps_example.png

.. code-block:: python

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,

.. code-block:: python

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,

.. code-block:: bash

python setup.py py2app


Using pip,

.. code-block:: bash

pip install rumps

Or from source,

.. code-block:: bash

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.

rumps open issues Ask a question     (View All Issues)
  • almost 4 years 'TypeError' object has no attribute 'message'
  • almost 4 years Default sender state.
  • almost 4 years Tests
  • about 4 years Action when clicking on status bar?
  • over 4 years crashes python in case of menu changing while it opened by user
  • over 4 years Any chance to display an image?
  • over 4 years Package breaking in El Capitan
  • almost 5 years Request: update title
  • almost 5 years Allow Icon adjustment for dark theme mode
  • about 5 years Icons in notification
  • over 5 years Bug: callbacks not being registered or saved correctly
  • over 5 years Feature Request: Set default icon size
  • over 5 years Bug: Unicode Decode Error
  • over 5 years Handler for opening URLs
  • over 5 years Is it possible to select the font for title?
  • over 5 years paste with keyboard shortcut into window not possible
  • over 5 years Loss of focus on startup
  • over 5 years Notifications not always working
  • over 5 years Can't run in a thread?
  • over 5 years Timer object callbacks aren't executed asynchronously
  • almost 6 years Request: Access Cocoa Asynchronous Progress Indicator?
  • almost 6 years Request: Right-Click support
  • almost 6 years Menu items disabled
  • over 6 years AttributeError: 'NoneType' object has no attribute 'setDelegate_'
  • over 6 years Customizing application startup and termination, defining custom delegates
  • about 3 years memory leak for dynamically generated menus
  • about 3 years Slider in menu
  • over 3 years Notification does not work (with mac 10.12.2)?
rumps open pull requests (View All Pulls)
  • 'Secured' option for Window
  • Added Py3 compatibility workarounds. Tested on 3.4.
  • Improved icon display on dark menubar theme.
  • adding .gitignore with some basic directories and binary py[co] files
  • support for icons in notification #38
  • Add support for secure text entry in rumps.Window
  • Workaround for pyobjc/pyinstaller compatibility.
  • remove Mac from OS X
  • More capable notifications
  • OS X -> macOS
  • (Fix) String compatibility for python3:
  • Added slider menu items
  • Add 'other' button to alert
  • Fixed ListDict for 3.5+ by using python collections over c collections
  • Escape percent sign to prevent a ValueError
  • Add 'other' button and icon_path to alert
rumps questions on Stackoverflow (View All Questions)
  • Python rumps MAC refresh
  • RUMPS Updating Application Title
  • Creating Sub Menu for Menu item using Rumps python on Mac OS
  • Using Rumps in Python and OS X Without Creating a Class
  • python rumps not working on OS X 10.10 - AttributeError: 'module' object has no attribute 'App'
rumps list of languages used
More projects by jaredks View all
Other projects in Python