TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
macOS에서 텍스트를 번역·다듬기·요약하고, 메뉴바·단축키·클립보드·OCR·PopClip으로 사용할 수 있습니다
Translate, polish, and summarize text from anywhere on macOS. Use the menu bar, a global shortcut, clipboard input, on-screen OCR, or PopClip. Bring your own API key — or run Apple's on-device model w
생산성Swift · ShellGitHub @iuhoay온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Native macOS text assistant for translating, polishing, and summarizing with your own LLM provider.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Translate, polish, and summarize text anywhere on macOS with your own LLM
provider.
Lumo is a lightweight menu-bar app for everyday text work. Open it with a global
shortcut, paste from the clipboard, or trigger it from
PopClip when you select text in another app.
Results stream into a native macOS window, stay in history, and can be read
aloud.README 전문 보기 ↗Translate, polish, and summarize text anywhere on macOS with your own LLM provider.
Lumo is a lightweight menu-bar app for everyday text work. Open it with a global shortcut, paste from the clipboard, or trigger it from PopClip when you select text in another app. Results stream into a native macOS window, stay in history, and can be read aloud.
Lumo can be opened directly from the menu bar, a global shortcut, the clipboard, or an optional PopClip action.
LSUIElement) — no Dock icon, stays out of the way.Download Lumo.zip,
unzip it, and move Lumo.app to /Applications. The app is unsigned, so clear
the quarantine flag once before the first launch:
xattr -dr com.apple.quarantine /Applications/Lumo.app
On first launch it runs as a menu-bar item — look for it in the status bar, not the Dock.
From then on Lumo keeps itself up to date: it checks in the background, and you
can trigger a check yourself from the menu bar via 检查更新…. Updates are
verified by signature and installed in place without re-triggering quarantine —
so you only ever run the xattr command this one time.
Open the app from its menu-bar item and set, in Settings:
| Setting | Notes |
|---|---|
| Provider | OpenAI, Anthropic, or OpenAI-compatible |
| Base URL | Defaults per provider (e.g. https://api.deepseek.com) |
| Model | e.g. an OpenAI / Claude / DeepSeek model name |
| API key | Stored per provider |
| Target (from 中文) | Language to translate into when the input is Chinese |
| Target (other) | Language to translate into when the input is not Chinese |
| Shortcut | Optional global hotkey for opening a new translation window |
Note on the API key: because the app is unsigned, it stores the API key in its own
UserDefaults(plaintext) rather than the Keychain — an unsigned binary has no stable code identity for the Keychain to bind an "Always Allow" grant to, so the Keychain would prompt on every launch. This is the accepted trade-off for a local personal tool. The key is not stored in the PopClip extension.
Use Lumo in whichever way fits the text you are working with:
The result streams into the window and is saved to history.
If you use PopClip, install
Lumo.popclipext
to send selected text to Lumo in one click. The extension is only a trigger; the
native app still handles the provider, API key, model, streaming result, and
history.
Lumo moves in small, shippable steps. The current focus is the v0.2.0 — UX milestone, all on the translation result window:
Ideas and bug reports are welcome in the issue tracker.
Lumo.popclipext/ PopClip extension (trigger only)
Config.json Extension manifest + the "App URL Scheme" option
translate.js Builds the lumo:// URL for each action
mac-app/ Native macOS app (Swift, SwiftUI + AppKit)
project.yml XcodeGen project spec
Lumo/ App sources (models, services, views, URL routing)
Building from source requires XcodeGen
and Xcode 26 or later. The Xcode project is generated from project.yml (it is
not committed). From mac-app/:
brew install xcodegen # if you don't have it
cd mac-app
xcodegen generate # creates Lumo.xcodeproj
open Lumo.xcodeproj # then build & run the "Lumo" scheme in Xcode
The project defines two coexisting build configurations so a dev build doesn't clobber the release one:
| Config | Bundle ID | App name | URL scheme |
|---|---|---|---|
| Release | com.iuhoay.lumo | Lumo | lumo:// |
| Debug | com.iuhoay.lumo.dev | Lumo Dev | lumo-dev:// |
Distinct bundle IDs and URL schemes keep their settings isolated and prevent
LaunchServices from routing the scheme to the wrong build. Point the PopClip
extension at a build with its App URL Scheme option (lumo or lumo-dev).
MIT © iuhoay