| | |
| | | <meta name="viewport" content="width=device-width, initial-scale=1"> |
| | | <title>TagLauncher — Tag-based Mac app launcher</title> |
| | | <meta name="description" content="TagLauncher organizes Mac apps with tags: scrollable grid, multi-tag apps, searchable notes, JSON layout backup—beyond Launchpad folders and pages."> |
| | | <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-design-original.jpg"> |
| | | <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg"> |
| | | <link rel="stylesheet" href="styles.css"> |
| | | <link rel="alternate" hreflang="en" href="index-en.html"> |
| | | <link rel="alternate" hreflang="zh-Hans" href="index.html"> |
| | |
| | | <div class="layout hero__split"> |
| | | <div class="hero__copy"> |
| | | <h1 class="hero__headline">Possibly the best Mac app launcher—in the world</h1> |
| | | <p class="hero__lead">Don't mourn Launchpad on macOS 26 Tahoe. It was never truly good—it was only barely usable.</p> |
| | | <p class="hero__lead">Don't mourn Launchpad on macOS 26 Tahoe—it was never truly good anyway.</p> |
| | | </div> |
| | | |
| | | <figure class="hero__art"> |
| | | <img |
| | | src="assets/hero-visual-only.jpg" |
| | | alt="" |
| | | width="592" |
| | | height="544" |
| | | src="assets/hero-visual.jpg" |
| | | alt="TagLauncher App Grid with stacked 3D window presentation" |
| | | width="1024" |
| | | height="908" |
| | | fetchpriority="high" |
| | | decoding="async"> |
| | | </figure> |
| | | </div> |
| | | </section> |
| | | |
| | | <section class="views" aria-label="Five view modes"> |
| | | <div class="layout views__split"> |
| | | <div class="views__gallery"> |
| | | <figure class="views__shot"> |
| | | <img src="assets/views/view-01.jpg" alt="Flat view" width="720" height="468" loading="lazy" decoding="async"> |
| | | </figure> |
| | | <figure class="views__shot"> |
| | | <img src="assets/views/view-02.jpg" alt="Plain container view" width="720" height="468" loading="lazy" decoding="async"> |
| | | </figure> |
| | | <figure class="views__shot"> |
| | | <img src="assets/views/view-03.jpg" alt="Colored container view" width="720" height="468" loading="lazy" decoding="async"> |
| | | </figure> |
| | | <figure class="views__shot"> |
| | | <img src="assets/views/view-04.jpg" alt="Plain grid view" width="720" height="468" loading="lazy" decoding="async"> |
| | | </figure> |
| | | </div> |
| | | |
| | | <div class="views__copy"> |
| | | <h2 class="views__headline">Five views—everything on one screen</h2> |
| | | <p class="views__lead">No more opening folders one by one or flipping through pages. You're just finding an app—it shouldn't feel like a trek.</p> |
| | | <hr class="views__rule" aria-hidden="true"> |
| | | <p class="views__label">5 view modes</p> |
| | | <ul class="views__modes"> |
| | | <li>Flat</li> |
| | | <li>Plain containers</li> |
| | | <li>Colored containers</li> |
| | | <li>Plain grid</li> |
| | | <li>Colored grid</li> |
| | | </ul> |
| | | <div class="views__shortcut"> |
| | | <span class="views__shortcut-label">Quick launch</span> |
| | | <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </section> |
| | | |
| | | <section class="tags" aria-label="Tag-based organization"> |
| | | <div class="layout tags__split"> |
| | | <div class="tags__copy"> |
| | | <h2 class="tags__headline">Tag-based organization</h2> |
| | | <ul class="tags__points"> |
| | | <li>No more choosing just one folder—an app can belong to multiple tags at once.</li> |
| | | <li><strong>Multi-color tag system</strong> with custom colors</li> |
| | | <li>Drag to categorize: drop on a tag name or container; drop on empty space to remove</li> |
| | | </ul> |
| | | </div> |
| | | |
| | | <figure class="tags__art"> |
| | | <img |
| | | src="assets/tags-management.jpg" |
| | | alt="TagLauncher tag management with multi-tag apps and custom colors" |
| | | width="880" |
| | | height="572" |
| | | loading="lazy" |
| | | decoding="async"> |
| | | </figure> |
| | | </div> |
| | | </section> |
| | | |
| | | <section class="memo" aria-label="App memos"> |
| | | <div class="layout memo__split"> |
| | | <figure class="memo__art"> |
| | | <img |
| | | src="assets/app-memo.jpg" |
| | | alt="TagLauncher app memo shown on hover" |
| | | width="880" |
| | | height="572" |
| | | loading="lazy" |
| | | decoding="async"> |
| | | </figure> |
| | | |
| | | <div class="memo__copy"> |
| | | <h2 class="memo__headline">Write memos for your apps</h2> |
| | | <p class="memo__lead">Edit usage notes. Hover to reveal—clear at a glance.</p> |
| | | </div> |
| | | </div> |
| | | </section> |
| | | |
| | | <section class="search" aria-label="Global Quick Search"> |
| | | <div class="layout search__split"> |
| | | <div class="search__copy"> |
| | | <h2 class="search__headline">Global Quick Search</h2> |
| | | <p class="search__lead">Search app names, tags, and memos—instantly.</p> |
| | | <p class="search__tagline">The experience macOS never gave you—we do.</p> |
| | | <div class="search__shortcut"> |
| | | <span class="search__shortcut-label">Shortcut</span> |
| | | <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span> |
| | | </div> |
| | | </div> |
| | | |
| | | <figure class="search__art"> |
| | | <img |
| | | src="assets/quick-search.jpg" |
| | | alt="TagLauncher Quick Search for apps, tags, and memos" |
| | | width="503" |
| | | height="383" |
| | | loading="lazy" |
| | | decoding="async"> |
| | | </figure> |
| | | </div> |
| | | </section> |
| | | |
| | | <section class="backup" aria-label="Backup & Restore"> |
| | | <div class="layout backup__split"> |
| | | <figure class="backup__art"> |
| | | <img |
| | | src="assets/backup-restore.jpg" |
| | | alt="TagLauncher JSON backup and restore for tags and layout" |
| | | width="1024" |
| | | height="558" |
| | | loading="lazy" |
| | | decoding="async"> |
| | | </figure> |
| | | |
| | | <div class="backup__copy"> |
| | | <h2 class="backup__headline">Backup & Restore</h2> |
| | | <p class="backup__lead"><strong>Tags and layout data</strong> support JSON <strong>backup</strong>—export / import so you never lose your setup.</p> |
| | | </div> |
| | | </div> |
| | | </section> |
| | | |
| | | <section class="privacy" aria-label="Offline privacy"> |
| | | <div class="layout privacy__split"> |
| | | <div class="privacy__copy"> |
| | | <h2 class="privacy__headline">100% offline, 100% ad-free</h2> |
| | | <p class="privacy__lead">Data stays on your device—no analytics SDK, no ads. Never needs the network.</p> |
| | | |
| | | <div class="privacy__feature"> |
| | | <h3 class="privacy__feature-title">Privacy matters</h3> |
| | | <p class="privacy__feature-text">TagLauncher never touches your privacy. Every line of code is built for local efficiency.</p> |
| | | </div> |
| | | |
| | | <div class="privacy__feature"> |
| | | <h3 class="privacy__feature-title privacy__feature-title--accent"> |
| | | <span class="privacy__feature-icon" aria-hidden="true"></span> |
| | | Pure & native |
| | | </h3> |
| | | <p class="privacy__feature-text">No bloated network components—fast launch, zero background footprint.</p> |
| | | </div> |
| | | |
| | | <p class="privacy__protocol">TagLauncher Security Protocol</p> |
| | | </div> |
| | | |
| | | <figure class="privacy__art"> |
| | | <img |
| | | src="assets/shield-check.png" |
| | | alt="" |
| | | width="379" |
| | | height="437" |
| | | loading="lazy" |
| | | decoding="async" |
| | | role="presentation"> |
| | | </figure> |