WallpaperMachine
당신이 사랑하는 배경화면, 맥에서 새롭게 만나보세요
Mac 메뉴바 앱 LidShutter, 노트북 뚜껍 열고 닫을 때 소리를 재생, 22가지 원음, 오프라인 사용, 일회성 가격
LidShutter is a Mac menu bar app that plays a sound when you open or close your MacBook lid. 22 original sounds, works offline, one-time price.
라이프스타일Astro · TypeScriptGitHub @MohammadAshfaque온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗The landing page for LidShutter, built with Astro, GSAP and plain CSS.
npm install
npm run dev
Then open http://localhost:4321.
src/data/site.ts: prices, launch slots, downloadUrl (your notarized DMG) and supportEmail.POLAR-SETUP.md to set up payments and license keys, and copy .env.example for the environment variables.| Path | What it is |
|---|---|
src/components/Hero.astro | The MacBook lid that opens as you scroll, with the app running inside it |
src/components/DiceRoll.astro | The dice that plays the 22 sounds |
src/components/AppDashboard.astro | Working copy of the app's menu bar menu and dashboard (shown inside the hero lid) |
src/components/Pricing.astro | Launch pricing, country prices and the Buy button |
src/scripts/synth.ts | Port of SoundSynth.swift: the sounds, generated in the browser |
src/data/sounds.ts | Sound names, subtitles and groups (mirrors the app) |
src/styles/global.css | Design tokens taken from Theme.swift |
src/pages/privacy.astro, support.astro, thanks.astro | Privacy policy, feedback form, and the page buyers land on after paying |
src/pages/api/ | Checkout, the Polar sales webhook, sold count, country, feedback |
If you add or change a sound in the app, update synth.ts and sounds.ts to match.
Push to GitHub and import the repo in Vercel. Astro is detected automatically.
The counter at the top of the page counts every sound visitors play. It needs a free Upstash Redis database:
KV_REST_API_URL / KV_REST_API_TOKEN (or UPSTASH_REDIS_REST_*) environment variables for you.Until a database is connected, the page shows the regular "A tiny menu bar app for MacBook" pill instead, so it never displays a made-up number. Locally, npm run dev uses a temporary in-memory counter that resets on restart.
The API lives in src/pages/api/plays.ts: at most 25 plays per request and 150 per minute per visitor.