Ridiculously Uncomplicated macOS Python Statusbar apps.
import rumps
class AwesomeStatusBarApp(rumps.App):
@rumps.clicked("Preferences")
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!
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']
DATA_FILES = []
OPTIONS = {
'argv_emulation': True,
'plist': {
'LSUIElement': True,
},
'packages': ['rumps'],
}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
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.
There are issues with using virtualenv
because of the way the Python
executable is copied. Although rumps
attempts to apply a fix (hack) during
the install process, it is not suggested to use virtualenv
.
To ensure proper functionality, either use venv
(packaged with Python 3) or
create a standalone app using py2app
.
python3 -m venv env
Documentation is available at http://rumps.readthedocs.org
"Modified BSD License". See LICENSE for details. Copyright Jared Suttles, 2020.
BackgroundsForReddit - karlaugsten
BluetoothEvent - lostman-github
crypto-ticker-macOS - mqulateen
currency-converter - ahmedelgohary
hs100-status-bar - craig-davis
koinex-status-ticker - kirantambe
nowplaying_statusbar - MataiulS
osx-bamboo-plan-status - spalter
project_screen_to_lifx - emiraga
rescuetime_statusbar - MauriceZ
rideindegochecker - josepvalls
sb-translate - leandroltavares
SpaceSwitcher - SankaitLaroiya
Telkom-ADSL-Data-Usage - parautenbach
votingpowerbar - therealwolf42
work_time_percent_applet - Benhgift
If you've submitted a pull request and need it reviewed, please request a review from @daredoes (contributing in free time, so please be patient)