將多台裝置的螢幕抽象成一個連續的工作空間,讓網址可以在裝置間無縫轉移。
- 🖥️ 設備連接 - 透過 IP 地址連接同一網路的裝置
- 🔗 URL 傳輸 - 一鍵將網址傳送到其他裝置
- 📐 佈局編輯 - 像 Windows 雙螢幕設定一樣排列設備位置
- ⚡ 快速傳送 - 根據設備位置顯示方向按鈕,快速傳送到相鄰設備
- 🔒 安全連接 - Zod 驗證所有訊息,contextIsolation 啟用
# 複製專案
git clone https://github.com/Jeffrey0117/SameScreen.git
cd SameScreen
# 安裝依賴
npm installnpm start設備 A(主機):
- 啟動應用程式
- 點擊「主持工作區」
- 記下側邊欄顯示的 IP 地址
設備 B(客戶端):
- 啟動應用程式
- 點擊「加入工作區」
- 輸入設備 A 的 IP 地址
- 點擊「連接」
- 在網址欄輸入要分享的 URL
- 點擊「新增 Panel」
- 在 Panel 卡片上:
- 使用方向按鈕快速傳送到相鄰設備
- 或在側邊欄選擇設備傳送
- 連接多台設備後,點擊「排列設備位置」
- 拖曳設備方塊來調整相對位置
- 綠色虛線表示設備相鄰,可以快速傳送
- 點擊「完成」儲存佈局
┌─────────┐ ┌─────────┐
│ 設備 A │ ←→ │ 設備 B │
│ (本機) │ │ │
└─────────┘ └─────────┘
↑
傳送方向
samescreen/
├── src/
│ ├── main/ # Electron 主進程
│ │ ├── workspace-server.ts # WebSocket 伺服器
│ │ ├── workspace-client.ts # WebSocket 客戶端
│ │ └── panel-manager.ts # Panel 狀態管理
│ ├── preload/ # 安全 IPC 橋接
│ ├── renderer/ # React UI
│ │ ├── components/ # UI 組件
│ │ ├── hooks/ # React Hooks
│ │ └── store/ # Zustand 狀態管理
│ └── shared/ # 共享類型和協議
│ ├── types.ts # TypeScript 類型
│ └── protocol.ts # Zod 訊息驗證
| 訊息類型 | 用途 |
|---|---|
HELLO |
設備註冊 |
HELLO_ACK |
確認連接 |
PANEL_TRANSFER_REQUEST |
請求傳輸 Panel |
PANEL_TRANSFER_ACK |
確認接收 |
PING/PONG |
心跳檢測 |
DEVICE_LIST |
設備列表更新 |
# 開發模式
npm start
# 類型檢查
npm run typecheck
# 打包應用
npm run package
# 建立安裝檔
npm run make- Node.js 18+
- npm 9+
- Windows / macOS / Linux
MIT License