Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jaredks/rumps
Ridiculously Uncomplicated macOS Python Statusbar apps
https://github.com/jaredks/rumps
Last synced: 2 days ago
JSON representation
Ridiculously Uncomplicated macOS Python Statusbar apps
- Host: GitHub
- URL: https://github.com/jaredks/rumps
- Owner: jaredks
- License: bsd-3-clause
- Created: 2013-07-31T09:12:53.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2024-04-02T18:50:28.000Z (8 months ago)
- Last Synced: 2024-11-25T21:05:29.441Z (17 days ago)
- Language: Python
- Homepage:
- Size: 279 KB
- Stars: 3,110
- Watchers: 46
- Forks: 179
- Open Issues: 71
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGES.rst
- License: LICENSE
Awesome Lists containing this project
- starred-awesome - rumps - Ridiculously Uncomplicated macOS Python Statusbar apps (Python)
README
rumps
=====**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!
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 timerNot good for:
* Any app that is first and foremost a GUI application
Required
--------* 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!Recommended
-----------* 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']
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
Installation
------------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.
Virtual Environments
--------------------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
-------------Documentation is available at http://rumps.readthedocs.org
License
-------"Modified BSD License". See LICENSE for details. Copyright Jared Suttles, 2020.
Works Made With rumps
---------------------`20twenty20 - eohomegrownapps
`_`42-CanITakeCoffee - avallete
`_`air-quality-app - grtfou
`_`Airplane - C-Codes
`_`allbar - raphaelhuefner
`_`allofthelights - kenkeiter
`_`attendee-tool-mlh - Bucknalla
`_`Auroratain - Matt-McConway
`_`AutoSSP - viktyz
`_`AutoVPN - shadyabhi
`_`BackgroundsForReddit - karlaugsten
`_`bink - e40
`_`bitracker - JZChen
`_`BluetoothEvent - lostman-github
`_`break-timer - jjmojojjmojo
`_`breaker - amloewi
`_`bundle-checker - jeffgodwyll
`_`c1t1 - e9t
`_`CamAlert - MrBananaPants
`_`camsketch - pdubroy
`_`casita - david-kuehn
`_`ChargeMon - RhetTbull
`_`ComicStreamer - beville
`_`commitwatch - chrisfosterelli
`_`ComMute - cwverhey
`_`computer-time - rbrich
`_`crypto-ticker-macOS - mqulateen
`_`cryptocoin-quotes - Sayan98
`_`cuco - jjuanda
`_`currency-converter - ahmedelgohary
`_`dns.app - damln
`_`Dokky - rogierkn
`_`dolar_bitcoin - celis
`_`duplicati - duplicati
`_`dysonMacOS - fhenwood
`_`earth - nickrobson
`_`ForceNapClone - hroftgit
`_`freelan-bar - privacee
`_`g-assistant-mac - agucova
`_`gapa - ozlerhakan
`_`GitSyncApp - jachin
`_`Gumpy - RobGraham
`_`Habitus - kmundnic
`_`HalfCaff - dougn
`_`happymac - laffra
`_`harmenubar - vekkt0r
`_`hatarake - kfdm-archive
`_`HipStatus - jamfit
`_`hp-lorem - jamesrampton
`_`hs100-status-bar - craig-davis
`_`iBatteryStats - saket13
`_`iBrew - Tristan79
`_`idiot - snare
`_`interlocking - jrauch
`_`istat - Lingdu0
`_`keynote_snap - sasn0
`_`Keypad - jelmer04
`_`keyringo - tokenizecx
`_`kizkiz - TkTech
`_`koinex-status-ticker - kirantambe
`_`leaguefriend - pandarison
`_`LifxController - mitchmcdee
`_`lil_ip_toolbar - mchlrtkwski
`_`mac-shrew - mejmo
`_`MacFaceID - vkalia602
`_`majo-v - r4lv
`_`MBatteryApp - Elliot-Potts
`_`McBing - bagabont
`_`Memcode - aroraenterprise
`_`memdam - joshalbrecht
`_`MenuBarGmail - rcmdnk
`_`MenuPing - Julien Bordet
`_`midi2dmx - davidbistolas
`_`monero-ticker - Cisplatin
`_`MoodLight - kretash
`_`MoonTicker - skxu
`_`musicbar - russelg
`_`narcissist - helmholtz
`_`Noise-Line - Dnncha
`_`nowplaying_statusbar - MataiulS
`_`obmenka - vlakin
`_`OnAir - henrik242
`_`org-clock-dashboard - srid
`_`osx-bamboo-plan-status - spalter
`_`osx-myair - CameronEx
`_`PennAppsX - yousufmsoliman
`_`phd - ChrisCummins
`_`pokemon-go-status - pboardman
`_`polly - interrogator
`_`pompy - camilopayan
`_`project_screen_to_lifx - emiraga
`_`PSPEWC-mac - jacquesCedric
`_`py-Timey - asakasinsky
`_`pymodoro - volflow
`_`pySplash - Egregors
`_`quick-grayscale - shubhamjain
`_`quiet - hiroshi
`_`Radio-Crowd - EliMendelson
`_`RadioBar - wass3r
`_`RadioBar (fork) - mdbraber
`_`rescuetime_statusbar - MauriceZ
`_`rideindegochecker - josepvalls
`_`RitsWifi - fang2hou
`_`safety-bar - pyupio
`_`SAT-Vocab-Quizzer - Legoben
`_`sb-translate - leandroltavares
`_`sharfoo - furqan-shakoor
`_
`ShortyURLShortener - Naktrem
`_`shotput - amussey
`_`SingMenuData - ponyfleisch
`_`slack-status-bar - ericwb
`_`slackify - nikodraca
`_`Snapgrid - VladUsatii
`_`snippets - quillford
`_`sonostus - sarkkine
`_`Spaceapi-Desktop - UrLab
`_`SpaceSwitcher - SankaitLaroiya
`_`Speck - misternate
`_`SpotifyLyrics - yask123
`_`Statusbar Converter - mindaugasw
`_`steemticker-osx - ZachC16
`_`Timebar - devonkong
`_`Timebox - visini
`_`Telkom-ADSL-Data-Usage - parautenbach
`_`Telton - Yywww
`_`Textinator - RhetTbull
`_`these-days - hahayes
`_`time-tracking - willsgrigg
`_`timerbar - uberalex
`_`tracker - jtxx000
`_`TrojanA - chrisxiao
`_`umma - mankoff
`_`upbrew - stchris
`_`uptimeIndicator - paulaborde
`_`urstatus - kysely
`_`uStatus - kdungs
`_`VagrantBar - kingsdigitallab
`_`voiceplay - tb0hdan
`_`volsbb - akigugale
`_`Volumio_bar - volderette
`_`votingpowerbar - therealwolf42
`_`VPN Handler - tsarenkotxt
`_`WakeTime App - dleicht
`_`WallpDesk - L3rchal
`_`webcronic - josselinauguste
`_`Whale - amka
`_`WhyFi - OzTamir
`_`WordTime - Demonstrandum
`_`work_time_percent_applet - Benhgift
`_`WorkWise - 8ern4ard
`_`xCodea - lowne
`_`yaca - drproteus
`_`Zero - beejhuff
`_Submit a pull request to add your own!
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Contributing
------------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)