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):
@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:
Not good for:
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!
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']
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,
.. 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.
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
.
.. code-block:: bash
python3 -m venv env
Documentation is available at http://rumps.readthedocs.org
"Modified BSD License". See LICENSE for details. Copyright Jared Suttles, 2020.
20twenty20 - eohomegrownapps <https://github.com/eohomegrownapps/20twenty20/>
_
42-CanITakeCoffee - avallete <https://github.com/avallete/42-CanITakeCoffee/>
_
air-quality-app - grtfou <https://github.com/grtfou/air-quality-app/>
_
Airplane - C-Codes <https://github.com/C-Codes/Airplane/>
_
allbar - raphaelhuefner <https://github.com/raphaelhuefner/allbar/>
_
allofthelights - kenkeiter <https://github.com/kenkeiter/allofthelights/>
_
attendee-tool-mlh - Bucknalla <https://github.com/Bucknalla/attendee-tool-mlh/>
_
Auroratain - Matt-McConway <https://github.com/Matt-McConway/Auroratain/>
_
AutoSSP - viktyz <https://github.com/viktyz/AutoSSP/>
_
AutoVPN - shadyabhi <https://github.com/shadyabhi/AutoVPN/>
_
BackgroundsForReddit - karlaugsten <https://github.com/karlaugsten/BackgroundsForReddit/>
_
bink - e40 <https://github.com/e40/bink/>
_
bitracker - JZChen <https://github.com/JZChen/bitracker/>
_
BluetoothEvent - lostman-github <https://github.com/lostman-github/BluetoothEvent/>
_
break-timer - jjmojojjmojo <https://github.com/jjmojojjmojo/break-timer/>
_
breaker - amloewi <https://github.com/amloewi/breaker/>
_
bundle-checker - jeffgodwyll <https://github.com/jeffgodwyll/bundle-checker/>
_
c1t1 - e9t <https://github.com/e9t/c1t1/>
_
CamAlert - MrBananaPants <https://github.com/MrBananaPants/CamAlert/>
_
camsketch - pdubroy <https://github.com/pdubroy/camsketch/>
_
casita - david-kuehn <https://github.com/david-kuehn/casita/>
_
ChargeMon - RhetTbull <https://github.com/RhetTbull/ChargeMon/>
_
ComicStreamer - beville <https://github.com/beville/ComicStreamer/>
_
commitwatch - chrisfosterelli <https://github.com/chrisfosterelli/commitwatch/>
_
ComMute - cwverhey <https://github.com/cwverhey/ComMute/>
_
computer-time - rbrich <https://github.com/rbrich/computer-time/>
_
crypto-ticker-macOS - mqulateen <https://github.com/mqulateen/crypto-ticker-macOS/>
_
cryptocoin-quotes - Sayan98 <https://github.com/Sayan98/cryptocoin-quotes/>
_
cuco - jjuanda <https://github.com/jjuanda/cuco/>
_
currency-converter - ahmedelgohary <https://github.com/ahmedelgohary/currency-converter/>
_
dns.app - damln <https://github.com/damln/dns.app/>
_
Dokky - rogierkn <https://github.com/rogierkn/Dokky/>
_
dolar_bitcoin - celis <https://github.com/celis/dolar_bitcoin/>
_
duplicati - duplicati <https://github.com/duplicati/duplicati/>
_
dysonMacOS - fhenwood <https://github.com/fhenwood/dysonMacOS>
_
earth - nickrobson <https://github.com/nickrobson/earth/>
_
ForceNapClone - hroftgit <https://github.com/hroftgit/ForceNapClone/>
_
freelan-bar - privacee <https://github.com/privacee/freelan-bar/>
_
g-assistant-mac - agucova <https://github.com/agucova/g-assistant-mac/>
_
gapa - ozlerhakan <https://github.com/ozlerhakan/gapa/>
_
GitSyncApp - jachin <https://github.com/jachin/GitSyncApp/>
_
Gumpy - RobGraham <https://github.com/RobGraham/Gumpy/>
_
Habitus - kmundnic <https://github.com/kmundnic/Habitus/>
_
HalfCaff - dougn <https://github.com/dougn/HalfCaff/>
_
happymac - laffra <https://github.com/laffra/happymac/>
_
harmenubar - vekkt0r <https://github.com/vekkt0r/harmenubar/>
_
hatarake - kfdm-archive <https://github.com/kfdm-archive/hatarake/>
_
HipStatus - jamfit <https://github.com/jamfit/HipStatus/>
_
hp-lorem - jamesrampton <https://github.com/jamesrampton/hp-lorem/>
_
hs100-status-bar - craig-davis <https://github.com/craig-davis/hs100-status-bar/>
_
iBatteryStats - saket13 <https://github.com/saket13/iBatteryStats/>
_
iBrew - Tristan79 <https://github.com/Tristan79/iBrew/>
_
idiot - snare <https://github.com/snare/idiot/>
_
interlocking - jrauch <https://github.com/jrauch/interlocking/>
_
istat - Lingdu0 <https://github.com/Lingdu0/istat/>
_
keynote_snap - sasn0 <https://github.com/sasn0/keynote_snap/>
_
Keypad - jelmer04 <https://github.com/jelmer04/Keypad/>
_
keyringo - tokenizecx <https://github.com/tokenizecx/keyringo/>
_
kizkiz - TkTech <https://github.com/TkTech/kizkiz/>
_
koinex-status-ticker - kirantambe <https://github.com/kirantambe/koinex-status-ticker/>
_
leaguefriend - pandarison <https://github.com/pandarison/leaguefriend/>
_
LifxController - mitchmcdee <https://github.com/mitchmcdee/LifxController/>
_
lil_ip_toolbar - mchlrtkwski <https://github.com/mchlrtkwski/lil_ip_toolbar/>
_
mac-shrew - mejmo <https://github.com/mejmo/mac-shrew/>
_
MacFaceID - vkalia602 <https://github.com/vkalia602/MacFaceID/>
_
majo-v - r4lv <https://github.com/r4lv/majo-v/>
_
MBatteryApp - Elliot-Potts <https://github.com/Elliot-Potts/MBatteryApp/>
_
McBing - bagabont <https://github.com/bagabont/McBing/>
_
Memcode - aroraenterprise <https://github.com/aroraenterprise/Memcode/>
_
memdam - joshalbrecht <https://github.com/joshalbrecht/memdam/>
_
MenuBarGmail - rcmdnk <https://github.com/rcmdnk/MenuBarGmail/>
_
MenuPing - Julien Bordet <https://github.com/julienbordet/MenuPing/>
_
midi2dmx - davidbistolas <https://github.com/davidbistolas/midi2dmx/>
_
monero-ticker - Cisplatin <https://github.com/Cisplatin/monero-ticker/>
_
MoodLight - kretash <https://github.com/kretash/MoodLight/>
_
MoonTicker - skxu <https://github.com/skxu/MoonTicker/>
_
musicbar - russelg <https://github.com/russelg/musicbar/>
_
narcissist - helmholtz <https://github.com/helmholtz/narcissist/>
_
Noise-Line - Dnncha <https://github.com/Dnncha/Noise-Line/>
_
nowplaying_statusbar - MataiulS <https://github.com/MataiulS/nowplaying>
_
obmenka - vlakin <https://github.com/vlakin/obmenka/>
_
OnAir - henrik242 <https://github.com/henrik242/OnAir/>
_
org-clock-dashboard - srid <https://github.com/srid/org-clock-dashboard/>
_
osx-bamboo-plan-status - spalter <https://github.com/spalter/osx-bamboo-plan-status/>
_
osx-myair - CameronEx <https://github.com/CameronEx/osx-myair/>
_
PennAppsX - yousufmsoliman <https://github.com/yousufmsoliman/PennAppsX/>
_
phd - ChrisCummins <https://github.com/ChrisCummins/phd/>
_
pokemon-go-status - pboardman <https://github.com/pboardman/pokemon-go-status/>
_
polly - interrogator <https://github.com/interrogator/polly/>
_
pompy - camilopayan <https://github.com/camilopayan/pompy/>
_
project_screen_to_lifx - emiraga <https://github.com/emiraga/project_screen_to_lifx/>
_
PSPEWC-mac - jacquesCedric <https://github.com/jacquesCedric/PSPEWC-mac/>
_
py-Timey - asakasinsky <https://github.com/asakasinsky/py-Timey/>
_
pymodoro - volflow <https://github.com/volflow/pymodoro/>
_
pySplash - Egregors <https://github.com/Egregors/pySplash/>
_
quick-grayscale - shubhamjain <https://github.com/shubhamjain/quick-grayscale/>
_
quiet - hiroshi <https://github.com/hiroshi/quiet/>
_
Radio-Crowd - EliMendelson <https://github.com/EliMendelson/Radio-Crowd/>
_
RadioBar - wass3r <https://github.com/wass3r/RadioBar/>
_
RadioBar (fork) - mdbraber <https://github.com/mdbraber/radiobar/>
_
rescuetime_statusbar - MauriceZ <https://github.com/MauriceZ/rescuetime_statusbar/>
_
rideindegochecker - josepvalls <https://github.com/josepvalls/rideindegochecker/>
_
RitsWifi - fang2hou <https://github.com/fang2hou/RitsWifi/>
_
safety-bar - pyupio <https://github.com/pyupio/safety-bar/>
_
SAT-Vocab-Quizzer - Legoben <https://github.com/Legoben/SAT-Vocab-Quizzer/>
_
sb-translate - leandroltavares <https://github.com/leandroltavares/sb-translate>
_
sharfoo - furqan-shakoor <https://github.com/furqan-shakoor/sharfoo/>
_
ShortyURLShortener - Naktrem <https://github.com/Naktrem/ShortyURLShortener/>
_
shotput - amussey <https://github.com/amussey/shotput/>
_
SingMenuData - ponyfleisch <https://github.com/ponyfleisch/SingMenuData/>
_
slack-status-bar - ericwb <https://github.com/ericwb/slack-status-bar/>
_
slackify - nikodraca <https://github.com/nikodraca/slackify/>
_
Snapgrid - VladUsatii <https://github.com/VladUsatii/snapgrid/>
_
snippets - quillford <https://github.com/quillford/snippets/>
_
sonostus - sarkkine <https://github.com/sarkkine/sonostus/>
_
Spaceapi-Desktop - UrLab <https://github.com/UrLab/Spaceapi-Desktop/>
_
SpaceSwitcher - SankaitLaroiya <https://github.com/SankaitLaroiya/SpaceSwitcher/>
_
Speck - misternate <https://github.com/misternate/speck/>
_
SpotifyLyrics - yask123 <https://github.com/yask123/SpotifyLyrics/>
_
Statusbar Converter - mindaugasw <https://github.com/mindaugasw/statusbar-converter/>
_
steemticker-osx - ZachC16 <https://github.com/ZachC16/steemticker-osx/>
_
Timebar - devonkong <https://github.com/devonkong/timebar>
_
Timebox - visini <https://github.com/visini/timebox/>
_
Telkom-ADSL-Data-Usage - parautenbach <https://github.com/parautenbach/Telkom-ADSL-Data-Usage/>
_
Telton - Yywww <https://github.com/Yywww/Telton/>
_
Textinator - RhetTbull <https://github.com/RhetTbull/textinator/>
_
these-days - hahayes <https://github.com/hahayes/these-days/>
_
time-tracking - willsgrigg <https://github.com/willsgrigg/time-tracking/>
_
timerbar - uberalex <https://github.com/uberalex/timerbar/>
_
tracker - jtxx000 <https://github.com/jtxx000/tracker/>
_
TrojanA - chrisxiao <https://github.com/chrisxiao/TrojanA/>
_
umma - mankoff <https://github.com/mankoff/umma/>
_
upbrew - stchris <https://github.com/stchris/upbrew/>
_
uptimeIndicator - paulaborde <https://github.com/paulaborde/uptimeIndicator/>
_
urstatus - kysely <https://github.com/kysely/urstatus/>
_
uStatus - kdungs <https://github.com/kdungs/uStatus/>
_
VagrantBar - kingsdigitallab <https://github.com/kingsdigitallab/VagrantBar/>
_
voiceplay - tb0hdan <https://github.com/tb0hdan/voiceplay/>
_
volsbb - akigugale <https://github.com/akigugale/volsbb/>
_
Volumio_bar - volderette <https://github.com/volderette/Volumio_bar/>
_
votingpowerbar - therealwolf42 <https://github.com/therealwolf42/votingpowerbar/>
_
VPN Handler - tsarenkotxt <https://github.com/tsarenkotxt/vpn-handler/>
_
WakeTime App - dleicht <https://github.com/dleicht/waketime/>
_
WallpDesk - L3rchal <https://github.com/L3rchal/WallpDesk/>
_
webcronic - josselinauguste <https://github.com/josselinauguste/webcronic/>
_
Whale - amka <https://github.com/amka/Whale/>
_
WhyFi - OzTamir <https://github.com/OzTamir/WhyFi/>
_
WordTime - Demonstrandum <https://github.com/Demonstrandum/WordTime/>
_
work_time_percent_applet - Benhgift <https://github.com/Benhgift/work_time_percent_applet/>
_
WorkWise - 8ern4ard <https://github.com/8ern4ard/WorkWise/>
_
xCodea - lowne <https://github.com/lowne/xCodea/>
_
yaca - drproteus <https://github.com/drproteus/yaca/>
_
Zero - beejhuff <https://github.com/beejhuff/Zero/>
_
Submit a pull request to add your own! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you've submitted a pull request and need it reviewed, please request a review from @daredoes <https://github.com/daredoes/>
_ (contributing in free time, so please be patient)