macOS 상태 표시줄 앱을 Rumps로 쉽게 만들기
Rumps(Ridiculously Uncomplicated macOS Python Statusbar apps)는 Python을 사용하여 macOS 상태 표시줄 앱을 쉽게 개발할 수 있는 라이브러리입니다. 복잡한 PyObjC 구문 없이 몇 줄의 코드만으로도 완성된 메뉴 앱을 만들 수 있어 초보자와 간단한 도구를 필요로 하는 사용자에게 적합합니다.
Rumps를 선택해야 하는 이유
macOS 상태 표시줄 앱은 사용자들에게 매우 인기가 있으며, Rumps는 이러한 앱을 쉽게 개발할 수 있게 해줍니다. Rumps를 사용하면 다음과 같은 이점을 얻을 수 있습니다:
- 복잡한 PyObjC 코드 작성에서 벗어날 수 있음
- 메뉴, 버튼, 알림 등의 핵심 기능을 신속하게 구현 가능
- 독립 실행형 macOS 앱으로 패키징이 쉬움
- Python의 강력한 생태계를 통해 기능 확장이 용이
Rumps 앱 화면 예시
그림: Rumps로 만든 상태 표시줄 앱 예시(메뉴, 버튼, 알림 포함)
첫 번째 Rumps 앱 시작하기
환경 설정
Rumps 사용을 위해서는 다음 환경이 필요합니다:
- macOS 10.6+
- Python 2.6+(시스템에 기본 설치된 Python 대부분 충족)
- PyObjC(일반적으로 macOS 시스템 Python과 함께 제공)
Rumps 설치
pip를 이용해 Rumps를 설치하는 방법은 다음과 같습니다:
pip install rumps
소스코드에서 직접 설치하려면 아래 명령어를 사용하세요:
git clone https://gitcode.com/gh_mirrors/ru/rumps
cd rumps
python setup.py install
Hello World 앱 작성
간단한 Rumps 앱을 작성하는 것은 매우 쉽습니다:
import rumps
class MyStatusBarApp(rumps.App):
@rumps.clicked("인사하기")
def say_hello(self, _):
rumps.notification("안녕하세요", "환영 인사", "Rumps로부터 인사드립니다!")
if __name__ == "__main__":
MyStatusBarApp("인사 앱").run()
위 코드를 실행하면 macOS 상태 표시줄에 "인사 앱"이라는 이름의 아이콘이 나타나며, "인사하기" 항목을 클릭하면 시스템 알림이 표시됩니다.
Rumps 주요 기능 소개
메뉴 시스템
Rumps는 직관적인 메뉴 생성 방식을 제공하며, 다음과 같은 요소들을 지원합니다:
- 일반 메뉴 항목
- 체크박스 메뉴 항목
- 구분선
- 동적 메뉴 생성
상세한 메뉴 기능은 공식 문서를 참고하세요: docs/MenuItem.rst
알림 기능
macOS 알림 센터와 쉽게 통합할 수 있습니다:
rumps.notification(title="제목", subtitle="부제목", message="알림 내용")
더 많은 알림 기능은 여기서 확인 가능합니다: docs/notifications.rst
타이머 기능
주기적인 작업을 위해 타이머를 사용할 수 있습니다:
@rumps.timer(60) # 1분마다 실행
def update_info(self, _):
# 상태 표시줄 정보 업데이트 또는 작업 수행
self.title = "최신 데이터"
타이머 관련 자세한 내용은 docs/timers.rst에서 확인하세요.
독립 실행형 앱 패키징
py2app을 사용하여 Rumps 앱을 독립 실행형 macOS 앱으로 패키징하는 것이 좋습니다. setup.py 파일을 다음과 같이 작성합니다:
from setuptools import setup
APP = ['my_app.py']
DATA_FILES = []
OPTIONS = {
'argv_emulation': True,
'plist': {
'LSUIElement': True, # Dock 아이콘 미표시
},
'packages': ['rumps'],
}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
패키징 명령어는 다음과 같습니다:
python setup.py py2app
패키징된 앱은 dist 디렉토리에 생성됩니다.
Rumps 적용 사례 및 예제
Rumps는 다양한 경량 도구 개발에 적합합니다:
- 시스템 모니터링 도구
- 알림 센터 앱
- 빠른 실행기
- 주기적 알림 도구
- API 데이터 표시 도구
프로젝트에는 여러 예제 앱이 포함되어 있습니다: examples/