Skip to content

Commit 00de83a

Browse files
committed
Upload Descript
1 parent 2d11939 commit 00de83a

5 files changed

Lines changed: 120 additions & 0 deletions

File tree

Example.jpg

648 KB
Loading

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Launchpad_Back
2+
3+
A SwiftUI application for macOS that replicates the functionality of the native Launchpad.
4+
5+
## Documentation
6+
7+
* [English](./README_en.md)
8+
* [中文 (Traditional Chinese)](./README_zh-TW.md)
9+
* [简体中文 (Simplified Chinese)](./README_zh-CN.md)

README_en.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Launchpad_Back (English)
2+
3+
## Description
4+
5+
As macOS 26 Tahoe removed the native Launchpad, this SwiftUI application was created for convenience to replicate its core functionality. It provides a user-friendly interface to view, search, and launch installed applications in a familiar grid-based, paginated layout.
6+
7+
![Example](./Example.jpg)
8+
9+
## Features
10+
11+
* **Application Discovery**: Automatically scans and displays all applications from standard macOS directories (`/Applications`, `/System/Applications`, and `/System/Applications/Utilities`).
12+
* **Grid Layout & Pagination**: Arranges apps in a clean grid. If there are more apps than can fit on one screen, they are organized into multiple pages.
13+
* **Smooth Navigation**: Users can navigate between pages using:
14+
* A two-finger swipe gesture on the trackpad.
15+
* A click-and-drag gesture with the mouse.
16+
* Arrow keys.
17+
* **Real-time Search**: A search bar at the top allows users to instantly filter applications by name.
18+
* **Visual Appeal**: Features a blurred, translucent background effect that mimics the native macOS Launchpad (an attempt was made to create a Liquid Glass effect, but it proved too difficult).
19+
* **Keyboard Shortcuts**:
20+
* `Cmd + W`: Close the Launchpad window.
21+
* `Cmd + Q`: Quit the application.
22+
* `Esc`: Clear the search field or close the window if the search is empty.
23+
* `Arrow Keys`: Switch pages.
24+
* **Performance**:
25+
* App scanning is performed on a background thread to keep the UI responsive.
26+
* App icons are loaded asynchronously and cached.
27+
28+
## How It Works
29+
30+
* **`LaunchpadViewModel`**: This is the core of the application's logic. It's responsible for finding all `.app` bundles, parsing their `Info.plist` to get metadata (like name and bundle ID), handling duplicates, and providing the final list of apps to the view.
31+
* **`ContentView`**: This file contains all the SwiftUI views that make up the user interface.
32+
* `LaunchpadView`: The main view that orchestrates all other components.
33+
* `PageView`: Represents a single page in the grid.
34+
* `AppIcon`: A view for an individual application icon and its name.
35+
* `SearchBar`: The search component.
36+
* `PageIndicator`: The dots at the bottom indicating the current page.
37+
* **Gesture & Event Handling**: The app uses a combination of `DragGesture` for mouse dragging, a custom `NSViewRepresentable` (`TouchpadScrollView`) to detect trackpad scrolling, and `NSEvent.addLocalMonitorForEvents` to listen for global keyboard events.

README_zh-CN.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Launchpad_Back (简体中文)
2+
3+
## 描述
4+
5+
这是一个使用 SwiftUI 开发的 macOS 应用程序,因为 macOS 26 Tahoe 的启动台被移除,为了使用方便,就写了这个 App,模拟原本启动台的功能,包含搜索、浏览和启动已安装的应用程序,提供熟悉的网格布局和分页界面。
6+
7+
![示例](./Example.jpg)
8+
9+
## 主要功能
10+
11+
* **应用程序探索**:自动扫描并显示来自标准 macOS 目录 (`/Applications`, `/System/Applications`, `/System/Applications/Utilities`) 的所有应用程序。
12+
* **网格布局与分页**:将应用程序整齐地排列在网格中。如果应用程序数量超过单一屏幕的容量,会自动整理成多个页面。
13+
* **流畅的导航**:用户可以通过多种方式在页面之间切换:
14+
* 在触控板上使用双指滑动收拾。
15+
* 使用鼠标点击并拖拽。
16+
* 使用左、右方向键。
17+
* **即时搜索**:顶部的搜索栏让用户可以依名称即时筛选应用程序。
18+
* **视觉风格**:采用了模仿原生 macOS Launchpad 的模糊半透明背景效果(有想办法做得像 Liquid Glass 的效果但太难了)。
19+
* **键盘快捷键**
20+
* `Cmd + W`:关闭 Launchpad 窗口。
21+
* `Cmd + Q`:结束应用程序。
22+
* `Esc`:清除搜索内容,或在搜索框为空时关闭窗口。
23+
* `方向键`:切换页面。
24+
* **性能优化**
25+
* 应用程序扫描在后台线程中进行,以保持 UI 的流畅响应。
26+
* 应用程序图标被异步加载并进行缓存。
27+
28+
## 运作原理
29+
30+
* **`LaunchpadViewModel`**:这是应用程序的逻辑核心。它负责寻找所有的 `.app` 套件,解析其 `Info.plist` 以获取元数据(如名称和 Bundle ID),处理重复的项目,并将最终的应用程序列表提供给视图。
31+
* **`ContentView`**:此文件包含了构成用户界面的所有 SwiftUI 视图。
32+
* `LaunchpadView`:组合所有其他组件的主视图。
33+
* `PageView`:代表网格中的单一页面。
34+
* `AppIcon`:用于显示单个应用程序图标及其名称的视图。
35+
* `SearchBar`:搜索组件。
36+
* `PageIndicator`:底部用于指示当前页面的圆点。
37+
* **手势与事件处理**:应用程序结合了 `DragGesture`(用于鼠标拖拽)、一个自定义的 `NSViewRepresentable` (`TouchpadScrollView`,用于侦测触控板滚动),以及 `NSEvent.addLocalMonitorForEvents`(用于监听全局键盘事件)。

README_zh-TW.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Launchpad_Back (中文)
2+
3+
## 描述
4+
5+
這是一個使用 SwiftUI 開發的 macOS 應用程式,因為MacOS 26 Tahoe的啟動台被移除,為了使用方便,就寫了這個App,模擬原本啟動台的功能,包含搜尋、瀏覽和啟動已安裝的應用程式,提供熟悉的網格佈局和分頁介面。
6+
7+
![範例](./Example.jpg)
8+
9+
## 主要功能
10+
11+
* **應用程式探索**:自動掃描並顯示來自標準 macOS 目錄 (`/Applications`, `/System/Applications`, `/System/Applications/Utilities`) 的所有應用程式。
12+
* **網格佈局與分頁**:將應用程式整齊地排列在網格中。如果應用程式數量超過單一螢幕的容量,會自動整理成多個頁面。
13+
* **流暢的導覽**:使用者可以透過多種方式在頁面之間切換:
14+
* 在觸控板上使用雙指滑動手勢。
15+
* 使用滑鼠點擊並拖曳。
16+
* 使用左、右方向鍵。
17+
* **即時搜尋**:頂部的搜尋欄讓使用者可以依名稱即時篩選應用程式。
18+
* **視覺風格**:採用了模仿原生 macOS Launchpad 的模糊半透明背景效果(有想辦法做得像Liquid Glass的效果但太難了)
19+
* **鍵盤快捷鍵**
20+
* `Cmd + W`:關閉 Launchpad 視窗。
21+
* `Cmd + Q`:結束應用程式。
22+
* `Esc`:清除搜尋內容,或在搜尋框為空時關閉視窗。
23+
* `方向鍵`:切換頁面。
24+
* **效能優化**
25+
* 應用程式掃描在背景執行緒中進行,以保持 UI 的流暢回應。
26+
* 應用程式圖示被非同步載入並進行快取。
27+
28+
## 運作原理
29+
30+
* **`LaunchpadViewModel`**:這是應用程式的邏輯核心。它負責尋找所有的 `.app` 套件,解析其 `Info.plist` 以獲取元數據(如名稱和 Bundle ID),處理重複的項目,並將最終的應用程式列表提供給視圖。
31+
* **`ContentView`**:此檔案包含了構成使用者介面的所有 SwiftUI 視圖。
32+
* `LaunchpadView`:組合所有其他元件的主視圖。
33+
* `PageView`:代表網格中的單一頁面。
34+
* `AppIcon`:用於顯示單個應用程式圖示及其名稱的視圖。
35+
* `SearchBar`:搜尋元件。
36+
* `PageIndicator`:底部用於指示目前頁面的圓點。
37+
* **手勢與事件處理**:應用程式結合了 `DragGesture`(用於滑鼠拖曳)、一個自訂的 `NSViewRepresentable` (`TouchpadScrollView`,用於偵測觸控板滾動),以及 `NSEvent.addLocalMonitorForEvents`(用於監聽全域鍵盤事件)。

0 commit comments

Comments
 (0)