diff --git a/package.json b/package.json
index bde0ec8..662c376 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "piclist",
-  "version": "1.5.2",
+  "version": "1.5.3",
   "author": {
     "name": "Kuingsmile",
     "email": "msq@msq.pub"
diff --git a/public/i18n/en.yml b/public/i18n/en.yml
index 95d50da..b43081b 100644
--- a/public/i18n/en.yml
+++ b/public/i18n/en.yml
@@ -1,6 +1,7 @@
 LANG_DISPLAY_LABEL: 'English'
 ABOUT: About
 OPEN_MAIN_WINDOW: Open Main Window
+OPEN_MINI_WINDOW: Open Mini Window
 CHOOSE_DEFAULT_PICBED: Choose Default Picbed
 OPEN_UPDATE_HELPER: Open Update Helper
 PRIVACY_AGREEMENT: Privacy Agreement
@@ -111,6 +112,10 @@ SETTINGS_MIGRATE_FROM_PICGO_TITLE: Notice
 SETTINGS_MIGRATE_FROM_PICGO_CONTENT: Migrate from PicGo will overwrite your current settings and gallery, do you want to continue?
 SETTINGS_MIGRATE_FROM_PICGO_SUCCESS: Import succeed, please restart PicList
 SETTINGS_MIGRATE_FROM_PICGO_FAILED: Import failed
+SETTINGS_START_MODE: Default Start Mode
+SETTINGS_START_MODE_MINI: Mini Window
+SETTINGS_START_MODE_MAIN: Main Window
+SETTINGS_START_MODE_QUIET: Quiet Mode
 SETTINGS_CLICK_TO_OPEN: Click to Open
 SETTINGS_SET_LOG_FILE: Set Log File
 SETTINGS_CLICK_TO_SET: Click to Set
diff --git a/public/i18n/zh-CN.yml b/public/i18n/zh-CN.yml
index f3533b0..a9c3fc8 100644
--- a/public/i18n/zh-CN.yml
+++ b/public/i18n/zh-CN.yml
@@ -1,6 +1,7 @@
 LANG_DISPLAY_LABEL: 中文
 ABOUT: 关于
 OPEN_MAIN_WINDOW: 打开主窗口
+OPEN_MINI_WINDOW: 打开mini窗口
 CHOOSE_DEFAULT_PICBED: 选择默认图床
 OPEN_UPDATE_HELPER: 打开更新助手
 PRIVACY_AGREEMENT: 隐私协议
@@ -111,6 +112,10 @@ SETTINGS_MIGRATE_FROM_PICGO_TITLE: 通知
 SETTINGS_MIGRATE_FROM_PICGO_CONTENT: 即将导入PicGo的配置文件和相册, 这将覆盖当前的配置文件和相册, 是否继续?
 SETTINGS_MIGRATE_FROM_PICGO_SUCCESS: 导入成功, 请重启PicList生效
 SETTINGS_MIGRATE_FROM_PICGO_FAILED: 导入失败
+SETTINGS_START_MODE: 启动模式
+SETTINGS_START_MODE_MINI: mini窗口
+SETTINGS_START_MODE_MAIN: 主窗口
+SETTINGS_START_MODE_QUIET: 静默启动
 SETTINGS_CLICK_TO_OPEN: 点击打开
 SETTINGS_SET_LOG_FILE: 设置日志文件
 SETTINGS_CLICK_TO_SET: 点击设置
diff --git a/public/i18n/zh-TW.yml b/public/i18n/zh-TW.yml
index d378e78..3f187a9 100644
--- a/public/i18n/zh-TW.yml
+++ b/public/i18n/zh-TW.yml
@@ -1,6 +1,7 @@
 LANG_DISPLAY_LABEL: 繁體中文
 ABOUT: 關於
 OPEN_MAIN_WINDOW: 打開主視窗
+OPEN_MINI_WINDOW: 打開mini視窗
 CHOOSE_DEFAULT_PICBED: 選擇預設圖床
 OPEN_UPDATE_HELPER: 開啟更新助手
 PRIVACY_AGREEMENT: 隱私協議
@@ -111,6 +112,10 @@ SETTINGS_MIGRATE_FROM_PICGO_TITLE: 通知
 SETTINGS_MIGRATE_FROM_PICGO_CONTENT: 即將導入PicGo的設定文件和相冊, 這將會覆蓋當前的設定, 是否繼續?
 SETTINGS_MIGRATE_FROM_PICGO_SUCCESS: 導入成功, 請重啟應用
 SETTINGS_MIGRATE_FROM_PICGO_FAILED: 導入失敗
+SETTINGS_START_MODE: 啟動模式
+SETTINGS_START_MODE_MINI: mini窗口
+SETTINGS_START_MODE_MAIN: 主窗口
+SETTINGS_START_MODE_QUIET: 靜默啟動
 SETTINGS_CLICK_TO_OPEN: 點擊打開
 SETTINGS_SET_LOG_FILE: 設定記錄檔案
 SETTINGS_CLICK_TO_SET: 點擊設定
diff --git a/src/main/apis/app/system/index.ts b/src/main/apis/app/system/index.ts
index e0069eb..1c04212 100644
--- a/src/main/apis/app/system/index.ts
+++ b/src/main/apis/app/system/index.ts
@@ -6,7 +6,8 @@ import {
   dialog,
   clipboard,
   systemPreferences,
-  Notification
+  Notification,
+  screen
 } from 'electron'
 import uploader from 'apis/app/uploader'
 import db, { GalleryDB } from '~/main/apis/core/datastore'
@@ -15,7 +16,6 @@ import { IWindowList } from '#/types/enum'
 import pasteTemplate from '~/main/utils/pasteTemplate'
 import pkg from 'root/package.json'
 import { ensureFilePath, handleCopyUrl } from '~/main/utils/common'
-// import { T } from '#/i18n'
 import { T } from '~/main/i18n'
 import { isMacOSVersionGreaterThanOrEqualTo } from '~/main/utils/getMacOSVersion'
 import { buildPicBedListMenu } from '~/main/events/remotes/menu'
@@ -80,7 +80,7 @@ export function createMenu () {
 export function createContextMenu () {
   if (process.platform === 'darwin' || process.platform === 'win32') {
     const submenu = buildPicBedListMenu()
-    contextMenu = Menu.buildFromTemplate([
+    const template = [
       {
         label: T('ABOUT'),
         click () {
@@ -120,7 +120,39 @@ export function createContextMenu () {
         role: 'quit',
         label: T('QUIT')
       }
-    ])
+    ] as any
+    if (process.platform === 'win32') {
+      template.splice(2, 0,
+        {
+          label: T('OPEN_MINI_WINDOW'),
+          click () {
+            const miniWindow = windowManager.get(IWindowList.MINI_WINDOW)!
+
+            if (db.get('settings.miniWindowOntop')) {
+              miniWindow.setAlwaysOnTop(true)
+            }
+            const { width, height } = screen.getPrimaryDisplay().workAreaSize
+            const lastPosition = db.get('settings.miniWindowPosition')
+            if (lastPosition) {
+              miniWindow.setPosition(lastPosition[0], lastPosition[1])
+            } else {
+              miniWindow.setPosition(width - 100, height - 100)
+            }
+            miniWindow.on('close', () => {
+              const position = miniWindow.getPosition()
+              db.set('settings.miniWindowPosition', position)
+            })
+            miniWindow.on('move', () => {
+              const position = miniWindow.getPosition()
+              db.set('settings.miniWindowPosition', position)
+            })
+            miniWindow.show()
+            miniWindow.focus()
+          }
+        }
+      )
+    }
+    contextMenu = Menu.buildFromTemplate(template)
   } else if (process.platform === 'linux') {
     // TODO 图床选择功能
     // 由于在Linux难以像在Mac和Windows上那样在点击时构造ContextMenu,
@@ -141,6 +173,33 @@ export function createContextMenu () {
           }
         }
       },
+      {
+        label: T('OPEN_MINI_WINDOW'),
+        click () {
+          const miniWindow = windowManager.get(IWindowList.MINI_WINDOW)!
+
+          if (db.get('settings.miniWindowOntop')) {
+            miniWindow.setAlwaysOnTop(true)
+          }
+          const { width, height } = screen.getPrimaryDisplay().workAreaSize
+          const lastPosition = db.get('settings.miniWindowPosition')
+          if (lastPosition) {
+            miniWindow.setPosition(lastPosition[0], lastPosition[1])
+          } else {
+            miniWindow.setPosition(width - 100, height - 100)
+          }
+          miniWindow.on('close', () => {
+            const position = miniWindow.getPosition()
+            db.set('settings.miniWindowPosition', position)
+          })
+          miniWindow.on('move', () => {
+            const position = miniWindow.getPosition()
+            db.set('settings.miniWindowPosition', position)
+          })
+          miniWindow.show()
+          miniWindow.focus()
+        }
+      },
       {
         label: T('ABOUT'),
         click () {
diff --git a/src/main/events/ipcList.ts b/src/main/events/ipcList.ts
index 81db845..8222463 100644
--- a/src/main/events/ipcList.ts
+++ b/src/main/events/ipcList.ts
@@ -4,7 +4,8 @@ import {
   shell,
   Notification,
   IpcMainEvent,
-  BrowserWindow
+  BrowserWindow,
+  screen
 } from 'electron'
 import windowManager from 'apis/app/window/windowManager'
 import { IWindowList } from '#/types/enum'
@@ -170,7 +171,21 @@ export default {
       if (db.get('settings.miniWindowOntop')) {
         miniWindow.setAlwaysOnTop(true)
       }
-
+      const { width, height } = screen.getPrimaryDisplay().workAreaSize
+      const lastPosition = db.get('settings.miniWindowPosition')
+      if (lastPosition) {
+        miniWindow.setPosition(lastPosition[0], lastPosition[1])
+      } else {
+        miniWindow.setPosition(width - 100, height - 100)
+      }
+      miniWindow.on('close', () => {
+        const position = miniWindow.getPosition()
+        db.set('settings.miniWindowPosition', position)
+      })
+      miniWindow.on('move', () => {
+        const position = miniWindow.getPosition()
+        db.set('settings.miniWindowPosition', position)
+      })
       miniWindow.show()
       miniWindow.focus()
       settingWindow.hide()
diff --git a/src/main/events/remotes/menu.ts b/src/main/events/remotes/menu.ts
index 4e0457f..9737adc 100644
--- a/src/main/events/remotes/menu.ts
+++ b/src/main/events/remotes/menu.ts
@@ -49,12 +49,6 @@ const buildMiniPageMenu = () => {
         BrowserWindow.getFocusedWindow()!.hide()
       }
     },
-    {
-      label: T('PRIVACY_AGREEMENT'),
-      click () {
-        privacyManager.show(false)
-      }
-    },
     {
       label: T('RELOAD_APP'),
       click () {
diff --git a/src/main/lifeCycle/index.ts b/src/main/lifeCycle/index.ts
index 3fd15c6..39f9a1e 100644
--- a/src/main/lifeCycle/index.ts
+++ b/src/main/lifeCycle/index.ts
@@ -5,7 +5,8 @@ import {
   protocol,
   Notification,
   Menu,
-  dialog
+  dialog,
+  screen
 } from 'electron'
 import {
   createProtocol
@@ -174,6 +175,34 @@ class LifeCycle {
       }
       await remoteNoticeHandler.init()
       remoteNoticeHandler.triggerHook(IRemoteNoticeTriggerHook.APP_START)
+      if (db.get('settings.startMode') === 'mini') {
+        windowManager.create(IWindowList.MINI_WINDOW)
+        const miniWindow = windowManager.get(IWindowList.MINI_WINDOW)!
+        if (db.get('settings.miniWindowOntop')) {
+          miniWindow.setAlwaysOnTop(true)
+        }
+        const { width, height } = screen.getPrimaryDisplay().workAreaSize
+        const lastPosition = db.get('settings.miniWindowPosition')
+        if (lastPosition) {
+          miniWindow.setPosition(lastPosition[0], lastPosition[1])
+        } else {
+          miniWindow.setPosition(width - 100, height - 100)
+        }
+        miniWindow.on('close', () => {
+          const position = miniWindow.getPosition()
+          db.set('settings.miniWindowPosition', position)
+        })
+        miniWindow.on('move', () => {
+          const position = miniWindow.getPosition()
+          db.set('settings.miniWindowPosition', position)
+        })
+        miniWindow.show()
+        miniWindow.focus()
+      } else if (db.get('settings.startMode') === 'main') {
+        const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW)!
+        settingWindow.show()
+        settingWindow.focus()
+      }
     }
     app.whenReady().then(readyFunction)
   }
diff --git a/src/renderer/pages/PicGoSetting.vue b/src/renderer/pages/PicGoSetting.vue
index aabe1e3..fb44740 100644
--- a/src/renderer/pages/PicGoSetting.vue
+++ b/src/renderer/pages/PicGoSetting.vue
@@ -42,6 +42,34 @@
                 />
               </el-select>
             </el-form-item>
+            <el-form-item
+              :label="$T('SETTINGS_START_MODE')"
+            >
+              <el-select
+                v-model="currentStartMode"
+                size="small"
+                style="width: 50%"
+                :placeholder="$T('SETTINGS_START_MODE')"
+                @change="handleStartModeChange"
+              >
+                <el-option
+                  key="quiet"
+                  :label="$T('SETTINGS_START_MODE_QUIET')"
+                  :value="'quiet'"
+                />
+                <el-option
+                  v-if="os !== 'darwin'"
+                  key="mini"
+                  :label="$T('SETTINGS_START_MODE_MINI')"
+                  :value="'mini'"
+                />
+                <el-option
+                  key="main"
+                  :label="$T('SETTINGS_START_MODE_MAIN')"
+                  :value="'main'"
+                />
+              </el-select>
+            </el-form-item>
             <el-form-item
               :label="$T('SETTINGS_MIGRATE_FROM_PICGO')"
             >
@@ -233,6 +261,17 @@
                 @change="handleMiniWindowOntop"
               />
             </el-form-item>
+            <el-form-item
+              v-if="os !== 'darwin'"
+              :label="$T('SETTINGS_CUSTOM_MINI_ICON')"
+            >
+              <el-switch
+                v-model="form.isCustomMiniIcon"
+                :active-text="$T('SETTINGS_OPEN')"
+                :inactive-text="$T('SETTINGS_CLOSE')"
+                @change="handleIsCustomMiniIcon"
+              />
+            </el-form-item>
             <el-form-item
               v-if="os !== 'darwin' && form.isCustomMiniIcon"
               :label="$T('SETTINGS_CUSTOM_MINI_ICON_PATH')"
@@ -246,18 +285,6 @@
                 {{ $T('SETTINGS_CLICK_TO_SET') }}
               </el-button>
             </el-form-item>
-            <el-form-item
-              v-if="os !== 'darwin'"
-              :label="$T('SETTINGS_CUSTOM_MINI_ICON')"
-            >
-              <el-switch
-                v-model="form.isCustomMiniIcon"
-                :active-text="$T('SETTINGS_OPEN')"
-                :inactive-text="$T('SETTINGS_CLOSE')"
-                @change="handleIsCustomMiniIcon"
-              />
-            </el-form-item>
-
             <el-form-item
               :label="$T('SETTINGS_AUTO_COPY_URL_AFTER_UPLOAD')"
             >
@@ -1004,6 +1031,7 @@ const languageList = i18nManager.languageList.map(item => ({
 }))
 
 const currentLanguage = ref('zh-CN')
+const currentStartMode = ref('quiet')
 
 const picBed = ref<IPicBedType[]>([])
 
@@ -1090,6 +1118,7 @@ async function initData () {
     form.isCustomMiniIcon = settings.isCustomMiniIcon || false
     form.customMiniIcon = settings.customMiniIcon || ''
     currentLanguage.value = settings.language ?? 'zh-CN'
+    currentStartMode.value = settings.startMode || 'quiet'
     customLink.value = settings.customLink || '$url'
     shortKey.upload = settings.shortKey.upload
     proxy.value = picBed.proxy || ''
@@ -1403,6 +1432,12 @@ function handleLanguageChange (val: string) {
   sendToMain(GET_PICBEDS)
 }
 
+function handleStartModeChange (val: 'quiet' | 'mini' | 'main') {
+  saveConfig({
+    'settings.startMode': val
+  })
+}
+
 function goConfigPage () {
   sendToMain(OPEN_URL, 'https://piclist.cn/configure.html')
 }
diff --git a/src/universal/types/i18n.d.ts b/src/universal/types/i18n.d.ts
index 39ab4e3..ef33ba6 100644
--- a/src/universal/types/i18n.d.ts
+++ b/src/universal/types/i18n.d.ts
@@ -2,6 +2,7 @@ interface ILocales {
   LANG_DISPLAY_LABEL: string
   ABOUT: string
   OPEN_MAIN_WINDOW: string
+  OPEN_MINI_WINDOW: string
   CHOOSE_DEFAULT_PICBED: string
   OPEN_UPDATE_HELPER: string
   PRIVACY_AGREEMENT: string
@@ -105,6 +106,10 @@ interface ILocales {
   SETTINGS_MIGRATE_FROM_PICGO_CONTENT: string
   SETTINGS_MIGRATE_FROM_PICGO_SUCCESS: string
   SETTINGS_MIGRATE_FROM_PICGO_FAILED: string
+  SETTINGS_START_MODE: string
+  SETTINGS_START_MODE_MINI: string
+  SETTINGS_START_MODE_MAIN: string
+  SETTINGS_START_MODE_QUIET: string
   SETTINGS_CLICK_TO_OPEN: string
   SETTINGS_SET_LOG_FILE: string
   SETTINGS_CLICK_TO_SET: string
diff --git a/src/universal/types/types.d.ts b/src/universal/types/types.d.ts
index 0f5a0d4..c48b6f4 100644
--- a/src/universal/types/types.d.ts
+++ b/src/universal/types/types.d.ts
@@ -115,6 +115,7 @@ interface IBrowserWindowOptions {
   icon?: string
   skipTaskbar?: boolean
   alwaysOnTop?: boolean
+  [propName: string]: any
 }
 
 interface IFileWithPath {