From ae1a6c201bf0f439f0ee57875c865bb15830baa1 Mon Sep 17 00:00:00 2001
From: npmrun <62639956+npmrun@users.noreply.github.com>
Date: Mon, 2 Aug 2021 00:29:56 +0800
Subject: [PATCH] add

---
 .gitignore                                   |   1 +
 a.md                                         |   6 +-
 resource/electron/static/font/Mouse.otf      | Bin 0 -> 10760 bytes
 resource/electron/static/font/bb3273.ttf     | Bin 0 -> 16600 bytes
 resource/electron/static/icon.png            | Bin 18332 -> 13816 bytes
 src/main/disk.ts                             |  63 ---------
 src/main/facilities/float/index.ts           | 120 +++++++++++++++++
 src/main/facilities/index.ts                 | 100 ++++++++++++--
 src/main/facilities/main/index.ts            |  31 +++++
 src/main/facilities/tray/index.ts            |  64 +++++++++
 src/main/float.ts                            | 119 -----------------
 src/main/index.dev.ts                        |   4 +-
 src/main/index.ts                            | 169 ++++++++++++------------
 src/main/menu copy.ts                        |  66 ----------
 src/main/menu.ts                             | 189 ---------------------------
 src/main/share/index.ts                      |  17 ++-
 src/render/assets/style/_font.scss           |   7 +
 src/render/views/Home/index.module.scss      |  14 ++
 src/render/views/Home/index.tsx              |  37 ++----
 src/render/views/Home/usePositionElectron.ts |  32 +++++
 src/render/views/Home/useTime.ts             |  55 ++++++++
 21 files changed, 528 insertions(+), 566 deletions(-)
 create mode 100644 resource/electron/static/font/Mouse.otf
 create mode 100644 resource/electron/static/font/bb3273.ttf
 delete mode 100644 src/main/disk.ts
 create mode 100644 src/main/facilities/float/index.ts
 create mode 100644 src/main/facilities/main/index.ts
 create mode 100644 src/main/facilities/tray/index.ts
 delete mode 100644 src/main/float.ts
 delete mode 100644 src/main/menu copy.ts
 delete mode 100644 src/main/menu.ts
 create mode 100644 src/render/views/Home/index.module.scss
 create mode 100644 src/render/views/Home/usePositionElectron.ts
 create mode 100644 src/render/views/Home/useTime.ts

diff --git a/.gitignore b/.gitignore
index 4444cf2..7aa3eac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@ out
 .idea
 .vscode
 dist/electron
+计划.md
diff --git a/a.md b/a.md
index a78bee5..cd154ec 100644
--- a/a.md
+++ b/a.md
@@ -12,4 +12,8 @@ https://www.jianshu.com/p/4699b825d285
 <!-- 切换 -->
     https://github.com/webpack/webpack/issues/11767
 
-    https://vite-rollup-plugins.patak.dev/
\ No newline at end of file
+    https://vite-rollup-plugins.patak.dev/
+    
+    
+    https://www.npmjs.com/package/node-schedule
+    https://www.electronjs.org/community
\ No newline at end of file
diff --git a/resource/electron/static/font/Mouse.otf b/resource/electron/static/font/Mouse.otf
new file mode 100644
index 0000000000000000000000000000000000000000..d4ebdac1083258d27979aab1a76f326b581c4872
GIT binary patch
literal 10760
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
AYXATM

literal 0
HcmV?d00001

diff --git a/resource/electron/static/font/bb3273.ttf b/resource/electron/static/font/bb3273.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..563bee52291a869ecd21d21fadc8737923ce891c
GIT binary patch
literal 16600
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

literal 0
HcmV?d00001

diff --git a/resource/electron/static/icon.png b/resource/electron/static/icon.png
index b3ab3b8fecc7be9493f89bea4e44cb47eb9aa5e8..7c43276a1e6c4fb719f06cd480958abcdc431b38 100644
GIT binary patch
literal 13816
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
Szo%mX0J4&b64hcxf&T+CwjIa-

literal 18332
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
Qr|vL#y85}Sb4q9e0A~G3KL7v#

diff --git a/src/main/disk.ts b/src/main/disk.ts
deleted file mode 100644
index a6e82e8..0000000
--- a/src/main/disk.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import Shared from "./share"
-import { Menu, Tray, ipcMain, BrowserWindow, App } from "electron"
-const path = require("path")
-
-// 隐藏主窗口,并创建托盘,绑定关闭事件
-export default function setTray(app: App, mainWindow: BrowserWindow) {
-  if (Shared.data.miniWindow) {
-    mainWindow.hide()
-    return
-  }
-  // 用一个 Tray 来表示一个图标,这个图标处于正在运行的系统的通知区
-  // 通常被添加到一个 context menu 上.
-  // 系统托盘右键菜单
-  const trayMenuTemplate = [
-    {
-      // 系统托盘图标目录
-      label: "打开主窗口",
-      click: () => {
-        mainWindow.show()
-      },
-    },
-    {
-      // 系统托盘图标目录
-      label: "打开悬浮窗",
-      click: () => {
-        ipcMain.emit("showSuspensionWindow")
-      },
-    },
-    {
-      // 系统托盘图标目录
-      label: "退出",
-      click: () => {
-        Shared.data.forceClose = true
-        app.quit()
-      },
-    },
-  ]
-  // 设置系统托盘图标
-  const iconPath = path.join(__static, "/icon.png")
-
-  Shared.data.miniWindow = new Tray(iconPath)
-
-  // 图标的上下文菜单
-  const contextMenu = Menu.buildFromTemplate(trayMenuTemplate)
-
-  // 展示主窗口,隐藏主窗口 mainWindow.hide()
-  mainWindow.hide()
-
-  // 设置托盘悬浮提示
-  Shared.data.miniWindow.setToolTip("never forget")
-
-  // 设置托盘菜单
-  Shared.data.miniWindow.setContextMenu(contextMenu)
-
-  // 单击托盘小图标显示应用
-  Shared.data.miniWindow.on("double-click", () => {
-    // 显示主程序
-    mainWindow.show()
-    // 关闭托盘显示
-    // Shared.data.miniWindow.destroy();
-  })
-  return Shared.data.miniWindow
-}
diff --git a/src/main/facilities/float/index.ts b/src/main/facilities/float/index.ts
new file mode 100644
index 0000000..335d989
--- /dev/null
+++ b/src/main/facilities/float/index.ts
@@ -0,0 +1,120 @@
+import { app, BrowserWindow, ipcMain, Menu, screen, shell } from "electron"
+import Shared from "@main/share"
+import { getFileUrl } from "@main/util"
+// webContents
+// console.log(webContents.getAllWebContents())
+
+const window: any = null //BrowserWindow.fromWebContents(webContents.getFocusedWebContents())
+
+ipcMain.on("@float:setPosition", (event, x, y) => {
+  Shared.data.floatWindow?.setPosition(x, y)
+})
+
+ipcMain.on("showSuspensionWindow", () => {
+  if (Shared.data.floatWindow) {
+    if (Shared.data.floatWindow.isVisible()) {
+      // createSuspensionWindow()
+    } else {
+      Shared.data.floatWindow.showInactive()
+    }
+  } else {
+    createSuspensionWindow()
+  }
+})
+
+ipcMain.on("createSuspensionMenu", e => {
+  const rightM = Menu.buildFromTemplate([
+    { label: "添加闹钟", enabled: false },
+    { label: "暂停全部任务", enabled: false },
+    {
+      label: "本次传输完自动关机",
+      click: () => {
+        ipcMain.emit("@func:buildin:saveData", 32232)
+      }
+    },
+    { type: "separator" },
+    {
+      label: "隐藏悬浮窗",
+      click: () => {
+        if (window) {
+          window.webContents.send("hideSuspension", false)
+        }
+        Shared.data.floatWindow?.hide()
+      }
+    },
+    {
+      label: "打开主窗口",
+      click: () => {
+        //  && !Shared.data.mainWindow.isVisible()
+        if (Shared.data.mainWindow) {
+          Shared.data.mainWindow.show()
+        }
+        // window.webContents.send('hideSuspension', false)
+      }
+    },
+    { type: "separator" },
+    {
+      label: "加入qq群",
+      click: () => {
+        shell.openExternal(
+          "tencent://groupwpa/?subcmd=all&param=7B2267726F757055696E223A3831343237303636392C2274696D655374616D70223A313533393531303138387D0A"
+        )
+      }
+    },
+    {
+      label: "GitHub地址",
+      click: () => {
+        shell.openExternal("https://github.com/lihaotian0607/auth")
+      }
+    },
+    {
+      label: "退出软件",
+      click: () => {
+        Shared.data.forceClose = true
+        app.quit()
+      }
+    }
+  ])
+  rightM.popup({})
+})
+
+function createSuspensionWindow() {
+  Shared.data.floatWindow = new BrowserWindow({
+    width: 260, // 悬浮窗口的宽度 比实际DIV的宽度要多2px 因为有1px的边框
+    height: 95, // 悬浮窗口的高度 比实际DIV的高度要多2px 因为有1px的边框
+    type: "toolbar", // 创建的窗口类型为工具栏窗口
+    frame: false, // 要创建无边框窗口
+    resizable: false, // 禁止窗口大小缩放
+    show: false, // 先不让窗口显示
+    webPreferences: {
+      devTools: false, // 关闭调试工具
+      nodeIntegration: true,
+      contextIsolation: false
+    },
+    transparent: true, // 设置透明
+    alwaysOnTop: true // 窗口是否总是显示在其他窗口之前
+  })
+  const size = screen.getPrimaryDisplay().workAreaSize // 获取显示器的宽高
+  const winSize = Shared.data.floatWindow.getSize() // 获取窗口宽高
+  // 设置窗口的位置 注意x轴要桌面的宽度 - 窗口的宽度
+  Shared.data.floatWindow.setPosition(size.width - winSize[0], size.height - winSize[1] - 40)
+  // Shared.data.floatWindow.setPosition(size.width / 2, size.height / 2)
+
+  Shared.data.floatWindow.loadURL(getFileUrl(""))
+
+  Shared.data.floatWindow.once("ready-to-show", () => {
+    Shared.data.floatWindow?.show()
+  })
+  // Shared.data.floatWindow.on("double-click", () => {
+  //   alert(123)
+  // })
+  Shared.data.floatWindow.on("close", () => {
+    Shared.data.floatWindow = null
+  })
+}
+
+ipcMain.on("hideSuspensionWindow", () => {
+  if (Shared.data.floatWindow) {
+    Shared.data.floatWindow.hide()
+  }
+})
diff --git a/src/main/facilities/index.ts b/src/main/facilities/index.ts
index b624373..ce4889a 100644
--- a/src/main/facilities/index.ts
+++ b/src/main/facilities/index.ts
@@ -1,20 +1,92 @@
-import { ipcMain, dialog } from "electron"
+import Shared from "@main/share"
+import setTray from "@main/facilities/tray"
+import { app, dialog, ipcMain } from "electron"
+import Share from "../share"
 
 /**
  * 格式:@类型:扩展:函数
  */
 
-// 保存数据
-ipcMain.on("@func:buildin:close", data => {
-  // dialog.showMessageBox(
-  //   {
-  //     type: "info",
-  //     title: "Information",
-  //     defaultId: 0,
-  //     cancelId: 0,
-  //     message: "确定要关闭吗?" + data,
-  //     buttons: ["没事", "最小化到托盘", "直接退出"],
-  //   },
-  //   index => {}
-  // )
+/**
+ * @方法:内置:设置窗口位置
+ */
+ipcMain.on("@func:buildin:setPosition", (event, x, y) => {
+  Share.data.floatWindow?.setPosition(x, y)
+})
+/**
+ * @方法:内置:磁盘化
+ */
+ipcMain.on("@func:buildin:setTray", (event, x, y) => {
+  if (Shared.data.trayWindow) {
+    Shared.data.mainWindow?.hide() // 调用 最小化实例方法
+  } else {
+    setTray(Shared.data.mainWindow)
+  }
+})
+
+/**
+ * @方法:内置:退出或者磁盘化
+ */
+ipcMain.on("@func:buildin:quitOrTray", (event) => {
+  if (Shared.data.forceClose) {
+    Shared.data.mainWindow?.destroy()
+    Shared.data.mainWindow = null
+    app.quit()
+  } else if (Shared.data.mainWindow) {
+    if (Shared.data.lastChoice === 1) {
+      ipcMain.emit("@func:buildin:setTray")
+      event.preventDefault()
+    } else {
+      const choice = dialog.showMessageBoxSync(Shared.data.mainWindow, {
+        type: "info",
+        title: "Information",
+        defaultId: 0,
+        cancelId: 0,
+        message: "确定要关闭吗?",
+        buttons: ["没事", "最小化到托盘", "直接退出"]
+      })
+      if (choice === 1) {
+        Shared.data.lastChoice = 1
+        ipcMain.emit("@func:buildin:setTray")
+        event.preventDefault()
+      } else if (choice === 2) {
+        Shared.data.mainWindow = null
+        // app.quit()
+        // 不要用quit();试了会弹两次
+        Shared.data.forceClose = true
+        app.quit() // exit()直接关闭客户端,不会执行quit();
+      } else {
+        event.preventDefault()
+      }
+    }
+  }
+})
+
+
+/**
+ * @方法:内置:退出
+ */
+ipcMain.on("@func:buildin:quit", (event) => {
+  if (Shared.data.forceClose) {
+    Shared.data.mainWindow = null
+    app.quit()
+  } else if (Shared.data.mainWindow) {
+    const choice = dialog.showMessageBoxSync({
+      type: "info",
+      title: "Information",
+      defaultId: 0,
+      cancelId: 0,
+      message: "确定要关闭吗?",
+      buttons: ["没事", "直接退出"]
+    })
+    if (choice === 1) {
+      Shared.data.mainWindow = null
+      // app.quit()
+      // 不要用quit();试了会弹两次
+      Shared.data.forceClose = true
+      app.quit() // exit()直接关闭客户端,不会执行quit();
+    } else {
+
+    }
+  }
 })
diff --git a/src/main/facilities/main/index.ts b/src/main/facilities/main/index.ts
new file mode 100644
index 0000000..176f1ba
--- /dev/null
+++ b/src/main/facilities/main/index.ts
@@ -0,0 +1,31 @@
+import { app, BrowserWindow, dialog, ipcMain } from "electron"
+import Shared from "@main/share"
+import { getFileUrl } from "@main/util"
+
+function createWindow() {
+  /**
+   * Initial window options
+   */
+  Shared.data.mainWindow = new BrowserWindow({
+    height: 95,
+    useContentSize: true,
+    width: 260,
+    resizable: false,
+    minWidth: 260,
+    minHeight: 95,
+    icon: __static + "/icon.png",
+    show: false,
+    frame: false, // 去除原生的菜单
+    transparent: true, // 背景透明
+    alwaysOnTop: true,
+    webPreferences: {
+      nodeIntegration: true,
+      contextIsolation: false
+    }
+  })
+
+  Shared.data.mainWindow.loadURL(getFileUrl(""))
+  Shared.data.mainWindow.on("close", (event: any) => {
+   ipcMain.emit("@func:buildin:quitOrTray")
+  })
+}
diff --git a/src/main/facilities/tray/index.ts b/src/main/facilities/tray/index.ts
new file mode 100644
index 0000000..f3e0583
--- /dev/null
+++ b/src/main/facilities/tray/index.ts
@@ -0,0 +1,64 @@
+import Shared from "@main/share"
+import { app, BrowserWindow, ipcMain, Menu, Tray } from "electron"
+
+const path = require("path")
+
+// 隐藏主窗口,并创建托盘,绑定关闭事件
+export default function setTray(mainWindow?: BrowserWindow | null) {
+  if (Shared.data.trayWindow) {
+    mainWindow?.hide()
+    return
+  }
+  // 用一个 Tray 来表示一个图标,这个图标处于正在运行的系统的通知区
+  // 通常被添加到一个 context menu 上.
+  // 系统托盘右键菜单
+  const trayMenuTemplate = [
+    {
+      // 系统托盘图标目录
+      label: "打开主窗口",
+      click: () => {
+        mainWindow?.show()
+      }
+    },
+    {
+      // 系统托盘图标目录
+      label: "打开悬浮窗",
+      click: () => {
+        ipcMain.emit("showSuspensionWindow")
+      }
+    },
+    {
+      // 系统托盘图标目录
+      label: "退出",
+      click: () => {
+        Shared.data.forceClose = true
+        app.quit()
+      }
+    }
+  ]
+  // 设置系统托盘图标
+  const iconPath = path.join(__static, "/icon.png")
+
+  Shared.data.trayWindow = new Tray(iconPath)
+
+  // 图标的上下文菜单
+  const contextMenu = Menu.buildFromTemplate(trayMenuTemplate)
+
+  // 展示主窗口,隐藏主窗口 mainWindow.hide()
+  mainWindow?.hide()
+
+  // 设置托盘悬浮提示
+  Shared.data.trayWindow.setToolTip("never forget")
+
+  // 设置托盘菜单
+  Shared.data.trayWindow.setContextMenu(contextMenu)
+
+  // 单击托盘小图标显示应用
+  Shared.data.trayWindow.on("double-click", () => {
+    // 显示主程序
+    mainWindow?.show()
+    // 关闭托盘显示
+    // Shared.data.trayWindow.destroy();
+  })
+  return Shared.data.trayWindow
+}
diff --git a/src/main/float.ts b/src/main/float.ts
deleted file mode 100644
index baa4ffe..0000000
--- a/src/main/float.ts
+++ /dev/null
@@ -1,119 +0,0 @@
-import Shared from "./share"
-import { getFileUrl } from './util'
-import { BrowserWindow, ipcMain, screen, Menu, shell, webContents, app } from "electron"
-// webContents
-console.log(webContents.getAllWebContents())
-
-const window: any = null //BrowserWindow.fromWebContents(webContents.getFocusedWebContents())
-
-ipcMain.on("@float:setPosition", (event, x, y) => {
-  Shared.data.floatWindow?.setPosition(x, y)
-})
-
-ipcMain.on("showSuspensionWindow", () => {
-  if (Shared.data.floatWindow) {
-    if (Shared.data.floatWindow.isVisible()) {
-      // createSuspensionWindow()
-    } else {
-      Shared.data.floatWindow.showInactive()
-    }
-  } else {
-    createSuspensionWindow()
-  }
-})
-
-ipcMain.on("createSuspensionMenu", e => {
-  const rightM = Menu.buildFromTemplate([
-    { label: "开始全部任务", enabled: false },
-    { label: "暂停全部任务", enabled: false },
-    {
-      label: "本次传输完自动关机",
-      click: () => {
-        ipcMain.emit("@func:buildin:saveData", 32232)
-      },
-    },
-    { type: "separator" },
-    {
-      label: "隐藏悬浮窗",
-      click: () => {
-        if (window) {
-          window.webContents.send("hideSuspension", false)
-        }
-        Shared.data.floatWindow.hide()
-      },
-    },
-    {
-      label: "打开主窗口",
-      click: () => {
-        //  && !Shared.data.mainWindow.isVisible()
-        if (Shared.data.mainWindow) {
-          Shared.data.mainWindow.show()
-        }
-        // window.webContents.send('hideSuspension', false)
-      },
-    },
-    { type: "separator" },
-    {
-      label: "加入qq群",
-      click: () => {
-        shell.openExternal(
-          "tencent://groupwpa/?subcmd=all&param=7B2267726F757055696E223A3831343237303636392C2274696D655374616D70223A313533393531303138387D0A"
-        )
-      },
-    },
-    {
-      label: "GitHub地址",
-      click: () => {
-        shell.openExternal("https://github.com/lihaotian0607/auth")
-      },
-    },
-    {
-      label: "退出软件",
-      click: () => {
-        Shared.data.forceClose = true
-        app.quit()
-      },
-    },
-  ])
-  rightM.popup({})
-})
-
-function createSuspensionWindow() {
-  Shared.data.floatWindow = new BrowserWindow({
-    width: 102, // 悬浮窗口的宽度 比实际DIV的宽度要多2px 因为有1px的边框
-    height: 27, // 悬浮窗口的高度 比实际DIV的高度要多2px 因为有1px的边框
-    type: "toolbar", // 创建的窗口类型为工具栏窗口
-    frame: false, // 要创建无边框窗口
-    resizable: false, // 禁止窗口大小缩放
-    show: false, // 先不让窗口显示
-    webPreferences: {
-      devTools: false, // 关闭调试工具
-      nodeIntegration: true,
-      contextIsolation: false,
-    },
-    transparent: true, // 设置透明
-    alwaysOnTop: true, // 窗口是否总是显示在其他窗口之前
-  })
-  const size = screen.getPrimaryDisplay().workAreaSize // 获取显示器的宽高
-  const winSize = Shared.data.floatWindow.getSize() // 获取窗口宽高
-  // 设置窗口的位置 注意x轴要桌面的宽度 - 窗口的宽度
-  Shared.data.floatWindow.setPosition(size.width - winSize[0], 100)
-  Shared.data.floatWindow.setPosition(size.width / 2, size.height / 2)
-  Shared.data.floatWindow.loadURL(getFileUrl("float"))
-
-  Shared.data.floatWindow.once("ready-to-show", () => {
-    Shared.data.floatWindow.show()
-  })
-  Shared.data.floatWindow.on("double-click", () => {
-    alert(123)
-  })
-  Shared.data.floatWindow.on("close", () => {
-    Shared.data.floatWindow = null
-  })
-}
-
-ipcMain.on("hideSuspensionWindow", () => {
-  if (Shared.data.floatWindow) {
-    Shared.data.floatWindow.hide()
-  }
-})
diff --git a/src/main/index.dev.ts b/src/main/index.dev.ts
index 3240246..9dc7172 100644
--- a/src/main/index.dev.ts
+++ b/src/main/index.dev.ts
@@ -2,7 +2,7 @@
 // Install `electron-debug` with `devtron`
 import electronDebug from "electron-debug"
 
-electronDebug({ showDevTools: true })
+electronDebug({ showDevTools: false })
 
 // Install `vue-devtools`
 require('electron').app.on('ready', () => {
@@ -15,4 +15,4 @@ require('electron').app.on('ready', () => {
 })
 
 // Require `main` process to boot app
-import './index'
\ No newline at end of file
+import './index'
diff --git a/src/main/index.ts b/src/main/index.ts
index d429f1e..68a6f6a 100644
--- a/src/main/index.ts
+++ b/src/main/index.ts
@@ -2,21 +2,12 @@
  * electron 主文件
  */
 "use strict"
-import Shared from "./share"
-import setTray from "./disk"
-import { getFileUrl } from "./util"
-// import '../renderer/store'
-import "./facilities"
-import { app, BrowserWindow, dialog } from "electron"
+import "@main/facilities/float/float"
+import setTray from "@main/facilities/tray"
+import { app, ipcMain } from "electron"
+import "@main/facilities"
+import Shared from "@main/share"
 
-Shared.data = {
-  mainWindow: null, // 主窗口
-  floatWindow: null, // 浮动窗口
-  miniWindow: null,
-  forceClose: false,
-  lastChoice: -1, // 做过的选择
-}
-console.log("asdasadsads")
 /**
  * Set `__static` path to static files in production
  * https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-static-assets.html
@@ -28,88 +19,93 @@ if (!isDev) {
   global.__static = require("path").join(__dirname, "/static").replace(/\\/g, "\\\\")
 }
 
-function createWindow() {
-  /**
-   * Initial window options
-   */
-  Shared.data.mainWindow = new BrowserWindow({
-    height: 400,
-    useContentSize: true,
-    width: 600,
-    resizable: true,
-    minWidth: 450,
-    minHeight: 400,
-    icon: __static + "/icon.png",
-    // frame: false,
-    // transparent: true,
-    alwaysOnTop: false,
-    webPreferences: {
-      nodeIntegration: true,
-      contextIsolation: false,
-    },
-  })
 
-  Shared.data.mainWindow.loadURL(getFileUrl(""))
-  Shared.data.mainWindow.on("close", (event: any) => {
-    if (Shared.data.forceClose) {
-      Shared.data.mainWindow = null
-      app.quit()
-    } else if (Shared.data.mainWindow) {
-      if (Shared.data.lastChoice === 1) {
-        if (Shared.data.miniWindow) {
-          Shared.data.mainWindow.hide() // 调用 最小化实例方法
-        } else {
-          setTray(app, Shared.data.mainWindow)
-        }
-        event.preventDefault()
-      } else {
-        const choice = dialog.showMessageBoxSync(Shared.data.mainWindow, {
-          type: "info",
-          title: "Information",
-          defaultId: 0,
-          cancelId: 0,
-          message: "确定要关闭吗?",
-          buttons: ["没事", "最小化到托盘", "直接退出"],
-        })
-        if (choice === 1) {
-          Shared.data.lastChoice = 1
-          if (Shared.data.miniWindow) {
-            Shared.data.mainWindow.hide() // 调用 最小化实例方法
-          } else {
-            setTray(app, Shared.data.mainWindow)
-          }
-          event.preventDefault()
-        } else if (choice === 2) {
-          Shared.data.mainWindow = null
-          // app.quit()
-          // 不要用quit();试了会弹两次
-          Shared.data.forceClose = true
-          app.quit() // exit()直接关闭客户端,不会执行quit();
-        } else {
-          event.preventDefault()
-        }
-      }
-    }
-  })
-}
+// function createWindow() {
+//   /**
+//    * Initial window options
+//    */
+//   Shared.data.mainWindow = new BrowserWindow({
+//     height: 95,
+//     useContentSize: true,
+//     width: 260,
+//     resizable: false,
+//     minWidth: 260,
+//     minHeight: 95,
+//     icon: __static + "/icon.png",
+//     show: false,
+//     frame: false, // 去除原生的菜单
+//     transparent: true, // 背景透明
+//     alwaysOnTop: true,
+//     webPreferences: {
+//       nodeIntegration: true,
+//       contextIsolation: false,
+//     },
+//   })
+//
+//   Shared.data.mainWindow.loadURL(getFileUrl(""))
+//   Shared.data.mainWindow.on("close", (event: any) => {
+//     if (Shared.data.forceClose) {
+//       Shared.data.mainWindow = null
+//       app.quit()
+//     } else if (Shared.data.mainWindow) {
+//       if (Shared.data.lastChoice === 1) {
+//         if (Shared.data.miniWindow) {
+//           Shared.data.mainWindow.hide() // 调用 最小化实例方法
+//         } else {
+//           setTray(app, Shared.data.mainWindow)
+//         }
+//         event.preventDefault()
+//       } else {
+//         const choice = dialog.showMessageBoxSync(Shared.data.mainWindow, {
+//           type: "info",
+//           title: "Information",
+//           defaultId: 0,
+//           cancelId: 0,
+//           message: "确定要关闭吗?",
+//           buttons: ["没事", "最小化到托盘", "直接退出"],
+//         })
+//         if (choice === 1) {
+//           Shared.data.lastChoice = 1
+//           if (Shared.data.miniWindow) {
+//             Shared.data.mainWindow.hide() // 调用 最小化实例方法
+//           } else {
+//             setTray(app, Shared.data.mainWindow)
+//           }
+//           event.preventDefault()
+//         } else if (choice === 2) {
+//           Shared.data.mainWindow = null
+//           // app.quit()
+//           // 不要用quit();试了会弹两次
+//           Shared.data.forceClose = true
+//           app.quit() // exit()直接关闭客户端,不会执行quit();
+//         } else {
+//           event.preventDefault()
+//         }
+//       }
+//     }
+//   })
+// }
 
 const gotTheLock = app.requestSingleInstanceLock()
 if (!gotTheLock) {
   app.exit()
 } else {
-  require("./menu")
-  require("./float")
-
+  function createWindow() {
+    setTray() // 初始化磁盘
+    ipcMain.emit("showSuspensionWindow") //展示悬浮窗
+  }
   app.on("second-instance", (event, commandLine, workingDirectory) => {
     // 当运行第二个实例时,将会聚焦到mainWindow这个窗口
-    if (Shared.data.mainWindow) {
-      if (Shared.data.mainWindow.isMinimized()) Shared.data.mainWindow.restore()
-      Shared.data.mainWindow.focus()
-      Shared.data.mainWindow.show()
-    }
+    // if (Shared.data.mainWindow) {
+    //   if (Shared.data.mainWindow.isMinimized()) Shared.data.mainWindow.restore()
+    //   Shared.data.mainWindow.focus()
+    //   Shared.data.mainWindow.show()
+    // }
   })
 
-  app.on("ready", createWindow)
+  app.on("ready", () => {
+
+  })
 
   app.on("before-quit", event => {
     if (Shared.data.forceClose) {
@@ -126,6 +122,7 @@ if (!gotTheLock) {
   })
 
   app.on("activate", () => {
+
     if (Shared.data.mainWindow === null) {
       createWindow()
     }
diff --git a/src/main/menu copy.ts b/src/main/menu copy.ts
deleted file mode 100644
index 3f003e6..0000000
--- a/src/main/menu copy.ts	
+++ /dev/null
@@ -1,66 +0,0 @@
-import electron from "electron"
-
-const BrowserWindow = electron.BrowserWindow
-const Menu = electron.Menu
-const app = electron.app
-const dialog = electron.dialog
-const ipcMain = electron.ipcMain
-
-let newwin:electron.BrowserWindow|null = null
-
-let template = [
-  {
-    label: "关于",
-    click: function (item:any, focusedWindow:any) {
-      // https://www.electronjs.org/docs/api/browser-window#winsetmenubarvisibilityvisible-windows-linux
-      if (focusedWindow && !newwin) {
-        newwin = new BrowserWindow({
-          width: 600,
-          height: 200,
-          // modal: true,
-          show: false,
-          resizable: true,
-          parent: focusedWindow, // win是主窗口
-          // 
-          webPreferences: {
-            // 下面两个必须这么用,看a.md的文档
-            nodeIntegration: true, 
-            contextIsolation: false,
-            // 预加载动画
-            // preload: join(__dirname, "../../src/preload/index.js"),
-          },
-        })
-        // 隐藏菜单
-        newwin.setMenuBarVisibility(false)
-        newwin.loadURL(process.env.NODE_ENV === "development" ? `http://localhost:${process.env.PORT}/#/about` : `file://${__dirname}/index.html#/about`);
-        newwin.on("ready-to-show", () => {
-          newwin?.show()
-        })
-        newwin.on("closed", () => {
-          newwin = null
-        })
-      }
-    },
-  },
-]
-
-// if (process.platform === 'darwin') {
-//
-// }
-//
-// if (process.platform === 'win32') {
-//
-// }
-app.on("ready", function () {
-  const menu = Menu.buildFromTemplate(template)
-  Menu.setApplicationMenu(menu)
-})
-app.on("browser-window-created", function () {
-  // let reopenMenuItem = findReopenMenuItem()
-  // if (reopenMenuItem) reopenMenuItem.enabled = false
-})
-app.on("window-all-closed", function () {
-  app.exit()
-  // let reopenMenuItem = findReopenMenuItem()
-  // if (reopenMenuItem) reopenMenuItem.enabled = true
-})
diff --git a/src/main/menu.ts b/src/main/menu.ts
deleted file mode 100644
index fe14adb..0000000
--- a/src/main/menu.ts
+++ /dev/null
@@ -1,189 +0,0 @@
-// const path = require('path')
-import { BrowserWindow } from "electron"
-import Shared from "./share"
-import { getFileUrl } from "./util"
-const electron = require("electron")
-const setTray = require("./disk").default
-// const BrowserWindow = electron.BrowserWindow
-const Menu = electron.Menu
-const app = electron.app
-const dialog = electron.dialog
-const ipcMain = electron.ipcMain
-
-let newwin: BrowserWindow | null
-
-let template = [
-  {
-    label: "选择保存目录",
-    click: function (item: any, focusedWindow: BrowserWindow) {
-      dialog
-        .showOpenDialog(focusedWindow, {
-          properties: ["openDirectory"],
-        })
-        .then(result => {
-          ipcMain.emit("@menu:selectDir", result)
-        })
-        .catch(err => {
-          throw err
-        })
-    },
-  },
-  {
-    label: "置顶",
-    key: "alwaysTop",
-    click: function (item: any, focusedWindow: BrowserWindow) {
-      if (Shared.data.mainWindow.isAlwaysOnTop()) {
-        Shared.data.mainWindow.setAlwaysOnTop(false)
-      } else {
-        Shared.data.mainWindow.setAlwaysOnTop(true)
-      }
-    },
-  },
-  {
-    label: "重载",
-    accelerator: "CmdOrCtrl+R",
-    click: function (item: any, focusedWindow: BrowserWindow) {
-      if (focusedWindow) {
-        // 重载之后, 刷新并关闭所有的次要窗体
-        if (focusedWindow.id === 1) {
-          BrowserWindow.getAllWindows().forEach(function (win) {
-            if (win.id > 1) {
-              win.close()
-            }
-          })
-        }
-        focusedWindow.reload()
-      }
-    },
-  },
-  {
-    label: "功能",
-    submenu: [
-      {
-        label: "悬浮窗",
-        click: function (item: any, focusedWindow: BrowserWindow) {
-          ipcMain.emit("showSuspensionWindow")
-        },
-      },
-      {
-        label: "最小化到托盘",
-        click: function (item: any, focusedWindow: BrowserWindow) {
-          Shared.data.lastChoice = 1
-          if (Shared.data.miniWindow) {
-            Shared.data.mainWindow.hide() // 调用 最小化实例方法
-          } else {
-            setTray(app, Shared.data.mainWindow)
-          }
-        },
-      },
-      {
-        label: "切换全屏",
-        accelerator: (function () {
-          if (process.platform === "darwin") {
-            return "Ctrl+Command+F"
-          } else {
-            return "F11"
-          }
-        })(),
-        click: function (item: any, focusedWindow: BrowserWindow) {
-          if (focusedWindow) {
-            focusedWindow.setFullScreen(!focusedWindow.isFullScreen())
-          }
-        },
-      },
-    ],
-  },
-  {
-    label: "开发者",
-    submenu: [
-      {
-        label: "切换开发者工具",
-        accelerator: (function () {
-          if (process.platform === "darwin") {
-            return "Alt+Command+I"
-          } else {
-            return "Ctrl+Shift+I"
-          }
-        })(),
-        click: function (item: any, focusedWindow: BrowserWindow) {
-          if (focusedWindow) {
-            // @ts-ignore
-            focusedWindow.toggleDevTools()
-          }
-        },
-      },
-    ],
-  },
-  // {
-  //   label: '重新启动',
-  //   click: function(item, focusedWindow) {
-  //     app.exit()
-  //     app.relaunch()
-  //     // app.relaunch({ args: process.argv.slice(1).concat(['--relaunch']) })
-  //     // app.quit()
-  //   }
-  // },
-  {
-    label: "关于",
-    click: function (item: any, focusedWindow: BrowserWindow) {
-      // https://www.electronjs.org/docs/api/browser-window#winsetmenubarvisibilityvisible-windows-linux
-      if (focusedWindow && !newwin) {
-        newwin = new BrowserWindow({
-          width: 600,
-          height: 200,
-          minimizable: false,
-          darkTheme: true,
-          modal: true,
-          show: false,
-          resizable: false,
-          webPreferences: {
-            nodeIntegration: true,
-            contextIsolation: false,
-          },
-          // parent: focusedWindow // win是主窗口
-        })
-        // 隐藏菜单
-        newwin.setMenuBarVisibility(false)
-        // vue是单页面,需要改成多页面才行
-        newwin.loadURL(getFileUrl("about"))
-        newwin.on("ready-to-show", () => {
-          newwin?.show()
-        })
-        newwin.on("close", () => {
-          newwin = null
-        })
-      }
-    },
-  },
-]
-// function findTopItem() {
-//   const menu = Menu.getApplicationMenu()
-//   if (!menu) return
-//   let reopenMenuItem
-//   menu.items.forEach(function(item) {
-//     if (item.key === 'alwaysTop') {
-//       reopenMenuItem = item
-//     }
-//     // if (item.submenu) {
-//     // item.submenu.items.forEach(function(item) {
-//     //   if (item.key === 'alwaysTop') {
-//     //     reopenMenuItem = item
-//     //   }
-//     // })
-//     // }
-//   })
-//   console.log(reopenMenuItem)
-//   return reopenMenuItem
-// }
-app.on("ready", function () {
-  const menu = Menu.buildFromTemplate(<any>template)
-  Menu.setApplicationMenu(menu)
-})
-app.on("browser-window-created", function () {
-  // let reopenMenuItem = findReopenMenuItem()
-  // if (reopenMenuItem) reopenMenuItem.enabled = false
-})
-app.on("window-all-closed", function () {
-  // let reopenMenuItem = findReopenMenuItem()
-  // if (reopenMenuItem) reopenMenuItem.enabled = true
-})
diff --git a/src/main/share/index.ts b/src/main/share/index.ts
index 118d9bd..708b231 100644
--- a/src/main/share/index.ts
+++ b/src/main/share/index.ts
@@ -1,12 +1,25 @@
+import { BrowserWindow, Tray } from "electron"
+
 interface IPayload{
   data: {
+    mainWindow: BrowserWindow|null;
+    floatWindow: BrowserWindow|null;
+    trayWindow: Tray|null;
+    forceClose: boolean;
+    lastChoice: number;
     [propName:string]: any;
   };
   [propName:string]: any;
 }
 
 const payload:IPayload = {
-  data: {}
+  data: {
+    mainWindow: null, // 主窗口
+    floatWindow: null, // 浮动窗口
+    trayWindow: null,
+    forceClose: false,
+    lastChoice: -1 // 做过的选择
+  }
 }
 
-export default payload
\ No newline at end of file
+export default payload
diff --git a/src/render/assets/style/_font.scss b/src/render/assets/style/_font.scss
index ea6d3d7..e251421 100644
--- a/src/render/assets/style/_font.scss
+++ b/src/render/assets/style/_font.scss
@@ -110,3 +110,10 @@
   src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2) format('woff2');
   unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
 }
+
+@font-face {
+  font-family: 'pixi';
+  src:url('__static/font/bb3273.ttf') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
diff --git a/src/render/views/Home/index.module.scss b/src/render/views/Home/index.module.scss
new file mode 100644
index 0000000..d616625
--- /dev/null
+++ b/src/render/views/Home/index.module.scss
@@ -0,0 +1,14 @@
+.clock {
+  position: fixed;
+  left: 0;
+  top: 0;
+  transform: translate(-50% -50%);
+  font-size: 40px;
+  font-weight: bolder;
+  text-align: center;
+  line-height: 1.3;
+  color: #CD1110;
+  font-family: "pixi";
+  user-select: none;
+  pointer-events: none;
+}
diff --git a/src/render/views/Home/index.tsx b/src/render/views/Home/index.tsx
index 08eb200..0ac89fc 100644
--- a/src/render/views/Home/index.tsx
+++ b/src/render/views/Home/index.tsx
@@ -1,49 +1,38 @@
 import { addTodo, removeTodo } from "@/store/action/todo"
-import React, { FormEvent, useRef, useContext } from "react"
+import React from "react"
 import { connect } from "react-redux"
-import { NavLink } from "react-router-dom"
+import style from "./index.module.scss"
+import useTime from "./useTime"
+import usePositionElectron from "./usePositionElectron"
 
 export interface HomeProps {
   add(text: string): void
+
   todo: ITodo[]
+
   remove(id: number): void
 }
 
 function Home(props: HomeProps) {
-  const { todo, add, remove } = props
-  const inputRef = useRef<HTMLInputElement>(null)
-
-  function addOne(e: FormEvent) {
-    e.preventDefault()
-    let text = inputRef.current!.value
-    if (text) {
-      inputRef.current!.value = ""
-      add(text)
-    }
-  }
-
+  let [nowDate] = useTime()
+  usePositionElectron()
   return (
-    <div>
-      <NavLink to="/home">首页</NavLink> <br />
-      <NavLink to="/about">关于</NavLink><br />
-      <NavLink to="/login">登录</NavLink><br />
-      <NavLink to="/float">Float</NavLink><br />
-      <div>
-        <img src='__static/icon.png' style={{width:"50px",height: "50px"}} alt=""/>
-      </div>
+    <div className={style.clock}>
+      <div>{nowDate.year}-{nowDate.month}-{nowDate.day}</div>
+      <div>{nowDate.hour}:{nowDate.minute}:{nowDate.second}</div>
     </div>
   )
 }
 
 const mapStateToProps = (state: any) => {
   return {
-    todo: state.todo,
+    todo: state.todo
   }
 }
 
 const mapDispatchToProps = (dispatch: any) => ({
   add: (text: string) => dispatch(addTodo(text)),
-  remove: (id: string | number) => dispatch(removeTodo(id)),
+  remove: (id: string | number) => dispatch(removeTodo(id))
 })
 
 export default connect(mapStateToProps, mapDispatchToProps)(Home)
diff --git a/src/render/views/Home/usePositionElectron.ts b/src/render/views/Home/usePositionElectron.ts
new file mode 100644
index 0000000..0cb63fe
--- /dev/null
+++ b/src/render/views/Home/usePositionElectron.ts
@@ -0,0 +1,32 @@
+import electron from "@/plugins/electron"
+import { useEffect } from "react"
+
+
+export default function() {
+  useEffect(() => {
+    let biasX = 0
+    let biasY = 0
+    document.addEventListener("mousedown", function(e) {
+      switch (e.button) {
+        case 0:
+          biasX = e.x
+          biasY = e.y
+          document.addEventListener("mousemove", moveEvent)
+          break
+        case 2:
+          electron.ipcRenderer.send("createSuspensionMenu")
+          break
+      }
+    })
+
+    document.addEventListener("mouseup", function() {
+      biasX = 0
+      biasY = 0
+      document.removeEventListener("mousemove", moveEvent)
+    })
+
+    function moveEvent(e: any) {
+      electron.ipcRenderer.send("@func:buildin:setPosition", e.screenX - biasX, e.screenY - biasY)
+    }
+  }, [])
+}
diff --git a/src/render/views/Home/useTime.ts b/src/render/views/Home/useTime.ts
new file mode 100644
index 0000000..a05340c
--- /dev/null
+++ b/src/render/views/Home/useTime.ts
@@ -0,0 +1,55 @@
+import { Dispatch, SetStateAction, useEffect, useState } from "react"
+
+type ITime<T = string | number> = {
+  year?: T;
+  month?: T;
+  day?: T;
+  hour?: T;
+  minute?: T;
+  second?: T;
+}
+
+function isLow10(value:string | number) {
+  if (+value< 10){
+    return "0"+value
+  }
+  return value
+}
+
+
+export default function(isUpdate = true): [ITime, Dispatch<SetStateAction<ITime>>] {
+  let [nowDate, setNowDate] = useState<ITime>({})
+
+  function updateTime() {
+    let date: ITime = {}
+    let newDate = new Date()
+    date.year = isLow10(newDate.getFullYear())
+    date.month = isLow10(newDate.getMonth() + 1)
+    date.day = isLow10(newDate.getDate())
+    date.hour = isLow10(newDate.getHours())
+    date.minute = isLow10(newDate.getMinutes())
+    date.second = isLow10(newDate.getSeconds())
+    setNowDate(date)
+    return newDate.getMilliseconds()
+  }
+
+  if (isUpdate) {
+    useEffect(() => {
+
+      function cicleCall(millis: number): NodeJS.Timeout {
+        let timeID = setTimeout(() => {
+          let millis = 1000 - updateTime()
+          cicleCall(millis)
+        }, millis)
+        return timeID
+      }
+
+      let millis = 1000 - updateTime()
+      let timeID = cicleCall(millis)
+      return () => {
+        clearTimeout(timeID)
+      }
+    }, [])
+  }
+  return [nowDate, setNowDate]
+}