diff --git a/package.json b/package.json
index bde0ec84..662c3764 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 95d50dad..b43081bd 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 f3533b0e..a9c3fc81 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 d378e78b..3f187a9e 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 e0069ebc..1c04212a 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 81db845a..82224631 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 4e0457f9..9737adc3 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 3fd15c6b..39f9a1e0 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 aabe1e33..fb447407 100644
--- a/src/renderer/pages/PicGoSetting.vue
+++ b/src/renderer/pages/PicGoSetting.vue
@@ -42,6 +42,34 @@
/>
+
+
+
+
+
+
+
@@ -233,6 +261,17 @@
@change="handleMiniWindowOntop"
/>
+
+
+
-
-
-
-
@@ -1004,6 +1031,7 @@ const languageList = i18nManager.languageList.map(item => ({
}))
const currentLanguage = ref('zh-CN')
+const currentStartMode = ref('quiet')
const picBed = ref([])
@@ -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 39ab4e3b..ef33ba64 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 0f5a0d4c..c48b6f4d 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 {