Actual macOS capture 실제 macOS 캡처

BarShelf

One native popover for the menu bar tools you check all day. Turn commands, workflows, and TypeScript scripts into glanceable macOS widgets.

하루 종일 확인하는 메뉴바 도구들을 하나의 네이티브 팝오버로 모읍니다. 명령어, 워크플로, TypeScript 스크립트를 macOS 위젯으로 바꾸세요.

1menu bar icon메뉴바 아이콘 하나
0dependencies for native widgets · Deno for scripts네이티브 위젯 의존성 · 스크립트는 Deno
3widget authoring paths위젯 제작 방식
MITopen source오픈소스
What It Fixes해결하는 문제

Your menu bar should not be a junk drawer.

메뉴바가 잡동사니 서랍이 될 필요는 없습니다.

BarShelf keeps glanceable tools close without spreading them across a row of tiny icons, browser tabs, and terminal windows.

BarShelf는 자주 보는 정보를 작은 아이콘, 브라우저 탭, 터미널 창에 흩뿌리지 않고 가까운 곳에 정리합니다.

01

One organized surface

정리된 하나의 표면

Pages, pinned widgets, refresh controls, and search live in one popover. The menu bar stays quiet.

페이지, 고정 위젯, 새로고침, 검색이 하나의 팝오버에 있습니다. 메뉴바는 조용하게 유지됩니다.

02

CLI-first by design

CLI 중심 설계

If a command can emit JSON, BarShelf can render it as native UI with scheduling and permission gates.

명령어가 JSON을 출력할 수 있다면, BarShelf는 스케줄링과 권한 게이트가 있는 네이티브 UI로 렌더링합니다.

03

Native macOS feel

네이티브 macOS 감각

SwiftUI, SF Symbols, dark mode, app settings, and a real status item. No browser shell.

SwiftUI, SF Symbols, 다크모드, 설정 화면, 실제 status item. 브라우저 껍데기가 아닙니다.

Best Practice구성 예시

A finished shelf, ready at a glance.

열자마자 읽히는 완성형 위젯 선반.

A strong setup combines one primary status widget, two glance widgets, and one operational list so the popover feels useful the moment it opens.

좋은 구성은 큰 상태 위젯 하나, 빠른 확인 위젯 두 개, 운영 리스트 하나를 섞어 팝오버를 여는 순간 바로 쓸모가 보이게 합니다.

01

Lead with the widget you check most.

가장 자주 보는 위젯을 먼저 배치하세요.

Use the largest slot for usage, revenue, build health, or any state that decides your next action.

사용량, 매출, 빌드 상태처럼 다음 행동을 결정하는 정보를 가장 큰 영역에 둡니다.

02

Pair small glance widgets.

작은 확인 위젯을 쌍으로 묶으세요.

Weather, calendars, quotas, and inbox counts work best as compact cards with one clear number.

날씨, 캘린더, quota, inbox count는 숫자 하나가 분명한 작은 카드로 잘 맞습니다.

03

Keep lists for operational context.

리스트는 운영 맥락에 사용하세요.

Deployments, tasks, alerts, and recently changed files are easier to scan as short native lists.

배포, 작업, 알림, 최근 변경 파일은 짧은 네이티브 리스트로 훨씬 빠르게 읽힙니다.

04

Use color only for meaning.

색상은 의미가 있을 때만 쓰세요.

Reserve accents for success, warning, and active state so the shelf stays calm and professional.

성공, 경고, 활성 상태에만 포인트 색을 써서 차분하고 전문적인 인상을 유지합니다.

The Widgets위젯

From clock to quota, in one popover.

시계부터 사용량까지, 팝오버 하나에.

Time, weather, battery, recent files, LLM usage, OTP codes — each a native card you can arrange into your own shelf.

시간·날씨·배터리·최근 파일·LLM 사용량·OTP 코드 — 각각 네이티브 카드로, 원하는 대로 선반에 배치하세요.

Widget Builder위젯 빌더

Build a widget without hand-writing JSON.

JSON 없이 위젯을 만드세요.

Choose a source, pick a display shape, then save. The live preview is rendered by the same engine used in the popover.

소스를 고르고, 표시 방식을 선택한 뒤 저장하세요. 라이브 프리뷰는 팝오버와 같은 엔진으로 렌더링됩니다.

1

Source

소스

Run a command, call HTTP, watch files, or start from static data.

명령 실행, HTTP 호출, 파일 감시, 정적 데이터에서 시작할 수 있습니다.

2

Display

표시

List, table, single value, or plain text with native controls.

리스트, 테이블, 단일 값, 텍스트를 네이티브 컨트롤로 표시합니다.

3

Ship

배포

Validate, hot-reload, package, and install from a repo URL.

검증, 핫 리로드, 패키징, repo URL 설치까지 이어집니다.

BarShelf widget builder with source, display, and details steps
Widget Model위젯 모델

Three authoring modes. One renderer.

제작 방식은 세 가지, 렌더러는 하나.

Each widget goes through the same scheduler, permission store, cache, and native renderer. Only the data source changes.

모든 위젯은 같은 스케줄러, 권한 저장소, 캐시, 네이티브 렌더러를 거칩니다. 달라지는 것은 데이터 소스뿐입니다.

exec

Run commands

명령 실행

Wrap tools like gh, aas, or your own script. Declare exactly what can run.

gh, aas, 직접 만든 스크립트를 감쌉니다. 실행 가능한 것을 명확히 선언합니다.

workflow

Describe views

뷰 선언

A JSON workflow can fetch, transform, interpolate, and render without custom code.

JSON workflow로 fetch, transform, interpolate, render를 코드 없이 처리합니다.

script

Keep state

상태 유지

TypeScript widgets run out-of-process with host-mediated storage, secrets, timers, and exec.

TypeScript 위젯은 별도 프로세스에서 storage, secret, timer, exec를 호스트 중개로 사용합니다.

Install설치

Get the app, then add widgets.

앱을 설치하고 위젯을 추가하세요.

BarShelf is open source and ships with checksums plus CLI tooling for widget authors. v0.1.3 is Developer ID signed, notarized, and stapled.

BarShelf는 오픈소스이며 체크섬과 위젯 제작용 CLI를 함께 제공합니다. v0.1.3은 Developer ID 서명·Apple 공증·티켓 스테이플을 통과했습니다.

Direct download

직접 다운로드

BarShelf-*.zip
→ /Applications
→ Open normally (v0.1.3)

Download from GitHub Releases and verify SHA256SUMS before installing.

GitHub Releases에서 받은 뒤 설치 전에 SHA256SUMS를 확인하세요.

Homebrew

brew tap Open330/barshelf \
  https://github.com/Open330/barshelf
brew install --cask barshelf

Install the same notarized v0.1.3 archive through the project tap.

프로젝트 tap에서도 동일한 공증 v0.1.3 아카이브를 설치합니다.

Widget CLI

위젯 CLI

barshelf new my-widget
barshelf validate ./my-widget
barshelf pack ./my-widget

Scaffold, validate, and package widgets locally.

로컬에서 위젯을 생성, 검증, 패키징합니다.

Make the menu bar useful again.

메뉴바를 다시 유용하게.

One icon, native widgets, scriptable from the tools you already trust.

아이콘 하나, 네이티브 위젯, 이미 신뢰하는 도구로 스크립팅하세요.