From 9717186c32c998a642af8f8c6c23aef0e84eb893 Mon Sep 17 00:00:00 2001 From: JiaWei Date: Fri, 22 Mar 2024 14:47:46 +0800 Subject: [PATCH] first commit --- .github/workflows/build.yml | 44 + .gitignore | 36 + .npmrc | 1 + .prettierrc | 3 + LICENSE | 21 + README.md | 30 + build/icon.icns | Bin 0 -> 125486 bytes build/icon.ico | Bin 0 -> 270398 bytes build/icon.png | Bin 0 -> 53087 bytes cross/consts.ts | 10 + cross/date.ts | 8 + cross/enums.ts | 81 + cross/interface.ts | 69 + cross/locale/en/index.ts | 78 + cross/locale/i-translation.ts | 76 + cross/locale/index.ts | 22 + cross/locale/zh-cn/index.ts | 78 + electron-builder.json5 | 47 + electron/electron-env.d.ts | 11 + electron/main/handlers.ts | 111 + electron/main/index.ts | 179 + electron/main/locale.ts | 17 + electron/main/services/db-service.ts | 60 + electron/main/services/utils.ts | 29 + electron/main/services/wallpaper-window.ts | 234 + electron/main/services/wallpaper.ts | 223 + electron/main/tray.ts | 118 + electron/main/update.ts | 86 + electron/preload/index.ts | 94 + index.html | 14 + package.json | 68 + playwright.config.ts | 54 + postcss.config.cjs | 8 + public/favicon.ico | Bin 0 -> 4286 bytes public/faviconTemplate.png | Bin 0 -> 2416 bytes src/App.css | 55 + src/App.tsx | 93 + src/components/CenterTable/index.tsx | 16 + .../PageContainer/index.module.less | 3 + src/components/PageContainer/index.tsx | 11 + src/components/ScaleModeComponent/index.tsx | 73 + .../SettingsModal/index.module.less | 3 + src/components/SettingsModal/index.tsx | 180 + src/components/Update/index.tsx | 144 + src/components/WeekComponent/index.tsx | 37 + src/index.css | 100 + src/main.tsx | 13 + .../home/components/WeekdayModal/index.tsx | 106 + src/pages/home/index.tsx | 109 + .../components/WallpaperRuleModal/index.tsx | 403 ++ src/pages/rule/index.tsx | 258 ++ .../LiveWallpaper/index.module.less | 7 + .../components/LiveWallpaper/index.tsx | 102 + .../StaticWallpaper/index.module.less | 27 + .../components/StaticWallpaper/index.tsx | 68 + src/pages/wallpaper/index.tsx | 71 + src/router.tsx | 21 + src/services/config-service.ts | 15 + src/services/emitter.ts | 7 + src/services/rule.ts | 70 + src/services/settings.ts | 30 + src/services/weekday.ts | 51 + src/type/electron-updater.d.ts | 10 + src/vite-env.d.ts | 1 + tailwind.config.js | 14 + tsconfig.json | 27 + tsconfig.node.json | 10 + vite.config.ts | 93 + yarn.lock | 4003 +++++++++++++++++ 69 files changed, 8141 insertions(+) create mode 100644 .github/workflows/build.yml create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .prettierrc create mode 100644 LICENSE create mode 100644 README.md create mode 100644 build/icon.icns create mode 100644 build/icon.ico create mode 100644 build/icon.png create mode 100644 cross/consts.ts create mode 100644 cross/date.ts create mode 100644 cross/enums.ts create mode 100644 cross/interface.ts create mode 100644 cross/locale/en/index.ts create mode 100644 cross/locale/i-translation.ts create mode 100644 cross/locale/index.ts create mode 100644 cross/locale/zh-cn/index.ts create mode 100644 electron-builder.json5 create mode 100644 electron/electron-env.d.ts create mode 100644 electron/main/handlers.ts create mode 100644 electron/main/index.ts create mode 100644 electron/main/locale.ts create mode 100644 electron/main/services/db-service.ts create mode 100644 electron/main/services/utils.ts create mode 100644 electron/main/services/wallpaper-window.ts create mode 100644 electron/main/services/wallpaper.ts create mode 100644 electron/main/tray.ts create mode 100644 electron/main/update.ts create mode 100644 electron/preload/index.ts create mode 100644 index.html create mode 100644 package.json create mode 100644 playwright.config.ts create mode 100644 postcss.config.cjs create mode 100644 public/favicon.ico create mode 100644 public/faviconTemplate.png create mode 100644 src/App.css create mode 100644 src/App.tsx create mode 100644 src/components/CenterTable/index.tsx create mode 100644 src/components/PageContainer/index.module.less create mode 100644 src/components/PageContainer/index.tsx create mode 100644 src/components/ScaleModeComponent/index.tsx create mode 100644 src/components/SettingsModal/index.module.less create mode 100644 src/components/SettingsModal/index.tsx create mode 100644 src/components/Update/index.tsx create mode 100644 src/components/WeekComponent/index.tsx create mode 100644 src/index.css create mode 100644 src/main.tsx create mode 100644 src/pages/home/components/WeekdayModal/index.tsx create mode 100644 src/pages/home/index.tsx create mode 100644 src/pages/rule/components/WallpaperRuleModal/index.tsx create mode 100644 src/pages/rule/index.tsx create mode 100644 src/pages/wallpaper/components/LiveWallpaper/index.module.less create mode 100644 src/pages/wallpaper/components/LiveWallpaper/index.tsx create mode 100644 src/pages/wallpaper/components/StaticWallpaper/index.module.less create mode 100644 src/pages/wallpaper/components/StaticWallpaper/index.tsx create mode 100644 src/pages/wallpaper/index.tsx create mode 100644 src/router.tsx create mode 100644 src/services/config-service.ts create mode 100644 src/services/emitter.ts create mode 100644 src/services/rule.ts create mode 100644 src/services/settings.ts create mode 100644 src/services/weekday.ts create mode 100644 src/type/electron-updater.d.ts create mode 100644 src/vite-env.d.ts create mode 100644 tailwind.config.js create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts create mode 100644 yarn.lock diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..6710282 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,44 @@ +name: Build + +on: + push: + tags: + - "v*" + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [macos-latest, windows-latest] + + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 20 + cache: "yarn" + + - name: Install Dependencies + run: yarn + + - name: Build Release Files + run: yarn build + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + + - name: Release + uses: softprops/action-gh-release@v1 + with: + files: | + release/*/*.dmg + release/*/*.exe + release/*/*.blockmap + release/*/latest*.yml + draft: false + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4ca0c3c --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +dist-electron +release +*.local + +# Editor directories and files +.vscode/.debug.env +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +#lockfile +pnpm-lock.yaml +/test-results/ +/playwright-report/ +/playwright/.cache/ + + + +/wallpaper +/userData diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..c483022 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +shamefully-hoist=true \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..544138b --- /dev/null +++ b/.prettierrc @@ -0,0 +1,3 @@ +{ + "singleQuote": true +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2876e67 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jarvay + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..0e3307b --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +
+

Workpaper

+ + + + + + + + + +
+ +## 一个定时换壁纸的软件,你可以在不同时间段设置不同的壁纸。 + +比如在工作日9:00-10:30显示壁纸[摸鱼中],
+10:31-11:59显示壁纸[今天吃什么],
+12:00开始显示[干饭],
+在周五整天显示[老子明天不上班]。 + +### 支持功能 +- 支持Mac及Windows +- 支持动态及静态壁纸 +- 支持不同屏幕显示不同壁纸 +- 支持按时间段显示固定壁纸或定时更换壁纸 + + +### 使用方法 +从[release](https://github.com/Jarvay/Workpaper/release)中下载并安装即可 + diff --git a/build/icon.icns b/build/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..bb89c5b17ff4228f37d7afc6941e98e924739f69 GIT binary patch literal 125486 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

m*9oQk>lvqG&YXR)bot^c1e%ka`tv+6 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 literal 0 HcmV?d00001 diff --git a/build/icon.ico b/build/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6eaf8df34b6af88eeef4ba30f389505ff76b1657 GIT binary patch literal 270398 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 JPDHLkV1j(qtjGWW literal 0 HcmV?d00001 diff --git a/cross/consts.ts b/cross/consts.ts new file mode 100644 index 0000000..7d0b06d --- /dev/null +++ b/cross/consts.ts @@ -0,0 +1,10 @@ +import { WallpaperType } from './enums'; + +export const IMAGE_EXT_LIST = ['jpg', 'jpeg', 'png', 'heic', 'webp']; + +export const VIDEO_EXT_LIST = ['mp4']; + +export const WALLPAPER_TYPE_ROUTES = { + [WallpaperType.Image]: 'static', + [WallpaperType.Video]: 'live', +}; diff --git a/cross/date.ts b/cross/date.ts new file mode 100644 index 0000000..094c303 --- /dev/null +++ b/cross/date.ts @@ -0,0 +1,8 @@ +import dayjs from 'dayjs'; + +export function timeToSeconds(timeStr: string) { + const day = '2001-01-01'; + const dateStart = dayjs(`${day} 00:00`); + const timeDayjs = dayjs(`${day} ${timeStr}`); + return timeDayjs.diff(dateStart, 'seconds'); +} diff --git a/cross/enums.ts b/cross/enums.ts new file mode 100644 index 0000000..5da98c9 --- /dev/null +++ b/cross/enums.ts @@ -0,0 +1,81 @@ +export enum ChangeType { + Fixed, + AutoChange, +} + +export enum FormMode { + Create, + Update, +} + +export enum Events { + SelectImage = 'SelectImage', + SelectVideo = 'SelectVideo', + SelectDir = 'SelectDir', + + ResetSchedule = 'ResetSchedule', + + SaveRules = 'SaveRules', + SaveWeekdays = 'SaveWeekdays', + + GetLocale = 'GetLocale', + SettingsChange = 'SettingsChange', + InitSettings = 'InitSettings', + + GetPlatform = 'GetPlatform', + + SetStaticWallpaper = 'SetStaticWallpaper', + SetLiveWallpaper = 'SetLiveWallpaper', + SetLiveWallpaperMuted = 'SetLiveWallpaperMuted', + SetLiveWallpaperVolume = 'SetLiveWallpaperVolume', + + SetDBItem = 'SetDBItem', + GetDBItem = 'GetDBItem', + + WallpaperWinReady = 'WallpaperWinReady', + LiveWallpaperLoaded = 'LiveWallpaperLoaded', + StaticWallpaperLoaded = 'StaticWallpaperLoaded', + + GetVersion = 'GetVersion', + OpenExternal = 'OpenExternal', +} + +export enum Locale { + zhCN = 'zhCN', + enUS = 'enUS', +} + +export enum WindowsScaleMode { + Center = 'center', + Stretch = 'stretch', + Fit = 'fit', + Fill = 'fill', + Span = 'span', + Tile = 'tile', +} + +export enum MacOSScaleMode { + Center = 'center', + Stretch = 'stretch', + Fit = 'fit', + Fill = 'fill', + Auto = 'auto', +} + +export enum WebScaleMode { + Fill = 'fill', + Contain = 'contain', + Cover = 'cover', + None = 'none', + ScaleDown = 'scale-down', +} + +export enum WallpaperType { + Image = 'Image', + Video = 'Video', +} + +export enum WallpaperMode { + Replace = 'replace', + Cover = 'cover', +} diff --git a/cross/interface.ts b/cross/interface.ts new file mode 100644 index 0000000..fe9cc14 --- /dev/null +++ b/cross/interface.ts @@ -0,0 +1,69 @@ +import { ModalProps } from 'antd'; +import { + ChangeType, + FormMode, + Locale, + MacOSScaleMode, + WallpaperMode, + WallpaperType, + WebScaleMode, + WindowsScaleMode, +} from './enums'; +import { ITranslation } from './locale/i-translation'; + +export interface ModalFormProps extends ModalProps { + values?: ValueType; + onChange?: (data?: ValueType) => Promise | void; + mode?: FormMode; +} + +export interface Rule { + start: string; + end: string; + wallpaperType: WallpaperType; + type: ChangeType; + path: string; + paths: string[]; + interval?: number; + id?: string; + weekdayId: Weekday['id']; + remark?: string; + isRandom?: boolean; + screenRandom?: boolean; +} + +export interface Weekday { + days: number[]; + id?: string | number; +} + +export interface Settings { + locale: Locale; + scaleMode?: WindowsScaleMode | MacOSScaleMode | null; + webScaleMode: WebScaleMode; + wallpaperMode: WallpaperMode; + volume: number; + muted: boolean; + autoCheckUpdate: boolean; + openAtLogin: boolean; +} + +export type TranslationFunc = (key: keyof ITranslation) => string; + +export interface DBData { + rules: Rule[]; + weekdays: Weekday[]; + settings: Settings; + currentIndex: number; +} + +export interface IDBService { + setItem( + key: Key, + data: DBData[Key], + ): void | Promise; + + getItem( + key: Key, + ): DBData[Key] | Promise; +} diff --git a/cross/locale/en/index.ts b/cross/locale/en/index.ts new file mode 100644 index 0000000..d54df0c --- /dev/null +++ b/cross/locale/en/index.ts @@ -0,0 +1,78 @@ +import { ITranslation } from '../i-translation'; + +export const en: ITranslation = { + showWindow: 'Show window', + startAtLogin: 'Start at login', + exit: 'Exit', + debug: 'Debug', + help: 'Help', + checkUpdate: 'Check update', + autoCheckUpdate: 'Auto check update', + download: 'Download', + update: 'Update', + currentVersion: 'Current version', + latestVersion: 'Latest version', + close: 'Close', + wallpaperMode: 'Wallpaper Mode', + 'wallpaperMode.replace': 'Replace system wallpaper', + 'wallpaperMode.cover': 'Cover on current wallpaper', + + check: 'Detail', + create: 'Create', + edit: 'Edit', + delete: 'Delete', + yes: 'Yes', + no: 'No', + + monday: 'Mon', + tuesday: 'Tue', + wednesday: 'Wed', + thursday: 'Thu', + friday: 'Fri', + saturday: 'Sat', + sunday: 'Sun', + + operationSuccess: 'Success', + deleteConfirmTips: 'Are you sure to delete this item?', + selectPeriodTips: 'Please select period', + + operation: 'Operation', + choose: 'Choose', + language: 'Language', + settings: 'Settings', + + 'rule.timeSlot': 'Time slot', + 'rule.period': 'Period', + 'rule.wallpaperType': 'Wallpaper type', + 'rule.wallpaperType.image': 'Image', + 'rule.wallpaperType.video': 'Video', + 'rule.type': 'Type', + 'rule.type.fixed': 'Fixed', + 'rule.type.autoChange': 'Auto change', + 'rule.path': 'Path/Directory', + 'rule.screen': 'Screen', + 'rule.interval': 'Change interval(seconds)', + 'rule.errMsg.interval.conflicts': 'Interval is conflicting', + 'rule.remark': 'Remark', + 'rule.isRandom': 'Random', + 'rule.screenRandom': 'Random alone every screen', + 'rule.addScreen': 'Add screen', + 'rule.paths.requiredMessage': 'Please select wallpaper', + + scaleMode: 'Scale Mode', + 'scaleMode.default': 'Default', + 'scaleMode.auto': 'Auto', + 'scaleMode.center': 'Center', + 'scaleMode.fill': 'Fill', + 'scaleMode.fit': 'Fit', + 'scaleMode.span': 'Span', + 'scaleMode.stretch': 'Stretch', + 'scaleMode.tile': 'Tile', + + 'webScaleMode.fill': 'Stretch', + 'webScaleMode.contain': 'Fit', + 'webScaleMode.cover': 'Fill', + + 'settings.mute': 'Mute', + 'settings.volume': 'Volume', +}; diff --git a/cross/locale/i-translation.ts b/cross/locale/i-translation.ts new file mode 100644 index 0000000..76180d5 --- /dev/null +++ b/cross/locale/i-translation.ts @@ -0,0 +1,76 @@ +export interface ITranslation { + showWindow: string; + startAtLogin: string; + exit: string; + debug: string; + help: string; + checkUpdate: string; + autoCheckUpdate: string; + download: string; + update: string; + currentVersion: string; + latestVersion: string; + close: string; + wallpaperMode: string; + 'wallpaperMode.replace': string; + 'wallpaperMode.cover': string; + + check: string; + create: string; + edit: string; + delete: string; + yes: string; + no: string; + + monday: string; + tuesday: string; + wednesday: string; + thursday: string; + friday: string; + saturday: string; + sunday: string; + + operationSuccess: string; + deleteConfirmTips: string; + selectPeriodTips: string; + + operation: string; + choose: string; + language: string; + settings: string; + + 'rule.timeSlot': string; + 'rule.period': string; + 'rule.wallpaperType': string; + 'rule.wallpaperType.image': string; + 'rule.wallpaperType.video': string; + 'rule.type': string; + 'rule.type.fixed': string; + 'rule.type.autoChange': string; + 'rule.path': string; + 'rule.screen': string; + 'rule.interval': string; + 'rule.errMsg.interval.conflicts': string; + 'rule.remark': string; + 'rule.isRandom': string; + 'rule.screenRandom': string; + 'rule.addScreen': string; + 'rule.paths.requiredMessage': string; + + scaleMode: string; + 'scaleMode.default': string; + 'scaleMode.fill': string; + 'scaleMode.fit': string; + 'scaleMode.stretch': string; + 'scaleMode.center': string; + 'scaleMode.span': string; + 'scaleMode.tile': string; + 'scaleMode.auto': string; + + 'webScaleMode.fill': string; + 'webScaleMode.contain': string; + 'webScaleMode.cover': string; + + 'settings.mute': string; + 'settings.volume': string; +} diff --git a/cross/locale/index.ts b/cross/locale/index.ts new file mode 100644 index 0000000..4419e22 --- /dev/null +++ b/cross/locale/index.ts @@ -0,0 +1,22 @@ +import i18n from 'i18next'; +import { initReactI18next } from 'react-i18next'; +import { en } from './en'; +import { zhCN } from './zh-cn'; +import { settingsService } from '@/services/settings'; +import { Locale } from '../enums'; + +async function initI18next() { + i18n.use(initReactI18next).init({ + resources: { + [Locale.enUS]: { + translation: en, + }, + [Locale.zhCN]: { + translation: zhCN, + }, + }, + lng: (await settingsService.get()).locale, + }); +} + +initI18next(); diff --git a/cross/locale/zh-cn/index.ts b/cross/locale/zh-cn/index.ts new file mode 100644 index 0000000..61ff2c4 --- /dev/null +++ b/cross/locale/zh-cn/index.ts @@ -0,0 +1,78 @@ +import { ITranslation } from '../i-translation'; + +export const zhCN: ITranslation = { + showWindow: '显示界面', + startAtLogin: '开机启动', + exit: '退出', + debug: '调试', + help: '帮助', + checkUpdate: '检查更新', + autoCheckUpdate: '自动检查更新', + download: '下载', + update: '更新', + currentVersion: '当前版本', + latestVersion: '最新版本', + close: '关闭', + wallpaperMode: '壁纸模式', + 'wallpaperMode.replace': '替换原壁纸', + 'wallpaperMode.cover': '覆盖在原壁纸上', + + check: '查看', + create: '创建', + edit: '编辑', + delete: '删除', + yes: '是', + no: '否', + + monday: '星期一', + tuesday: '星期二', + wednesday: '星期三', + thursday: '星期四', + friday: '星期五', + saturday: '星期六', + sunday: '星期日', + + operationSuccess: '操作成功', + deleteConfirmTips: '确定要删除此项吗?', + selectPeriodTips: '请选择周期', + + operation: '操作', + choose: '选择', + language: '语言', + settings: '设置', + + 'rule.timeSlot': '时间段', + 'rule.period': '周期', + 'rule.wallpaperType': '壁纸类型', + 'rule.wallpaperType.image': '图片', + 'rule.wallpaperType.video': '视频', + 'rule.type': '类型', + 'rule.type.fixed': '固定壁纸', + 'rule.type.autoChange': '自动换', + 'rule.path': '壁纸目录/路径', + 'rule.screen': '屏幕', + 'rule.interval': '更换间隔(秒)', + 'rule.errMsg.interval.conflicts': '时间段冲突', + 'rule.remark': '备注', + 'rule.isRandom': '随机切换', + 'rule.screenRandom': '屏幕各自随机', + 'rule.addScreen': '添加屏幕', + 'rule.paths.requiredMessage': '请选择壁纸', + + scaleMode: '缩放模式', + 'scaleMode.default': '默认', + 'scaleMode.auto': '自动', + 'scaleMode.center': '居中', + 'scaleMode.fill': '填充', + 'scaleMode.fit': '适应', + 'scaleMode.span': '跨区', + 'scaleMode.stretch': '拉伸', + 'scaleMode.tile': '平铺', + + 'webScaleMode.fill': '拉伸', + 'webScaleMode.contain': '适应', + 'webScaleMode.cover': '填充', + + 'settings.mute': '静音', + 'settings.volume': '音量', +}; diff --git a/electron-builder.json5 b/electron-builder.json5 new file mode 100644 index 0000000..ca66802 --- /dev/null +++ b/electron-builder.json5 @@ -0,0 +1,47 @@ +/** + * @see https://www.electron.build/configuration/configuration + */ +{ + "appId": "YourAppID", + "productName": "Workpaper", + "asar": true, + "directories": { + "output": "release/${version}" + }, + "files": [ + "dist-electron", + "dist" + ], + "mac": { + "artifactName": "${productName}_${version}.${ext}", + "target": [ + "dmg", + ] + }, + "win": { + "target": [ + { + "target": "nsis", + "arch": [ + "x64" + ] + } + ], + "artifactName": "${productName}_${version}.${ext}" + }, + "nsis": { + "oneClick": false, + "perMachine": false, + "allowToChangeInstallationDirectory": true, + "deleteAppDataOnUninstall": false + }, + "publish": [ + "github" + ], + "extraResources": [ + { + "from": "wallpaper/${platform}", + "to": "app/wallpaper/${platform}" + } + ] +} diff --git a/electron/electron-env.d.ts b/electron/electron-env.d.ts new file mode 100644 index 0000000..2ed41e2 --- /dev/null +++ b/electron/electron-env.d.ts @@ -0,0 +1,11 @@ +/// + +declare namespace NodeJS { + interface ProcessEnv { + VSCODE_DEBUG?: 'true'; + DIST_ELECTRON: string; + DIST: string; + /** /dist/ or /public/ */ + VITE_PUBLIC: string; + } +} diff --git a/electron/main/handlers.ts b/electron/main/handlers.ts new file mode 100644 index 0000000..f99342c --- /dev/null +++ b/electron/main/handlers.ts @@ -0,0 +1,111 @@ +import { + app, + BrowserWindow, + dialog, + ipcMain, + powerMonitor, + shell, +} from 'electron'; +import { Events } from '../../cross/enums'; +import { + Rule, + Settings, + TranslationFunc, + Weekday, +} from '../../cross/interface'; +import { resetSchedule } from './services/wallpaper'; +import { IMAGE_EXT_LIST, VIDEO_EXT_LIST } from '../../cross/consts'; +import { platform } from 'os'; +import { t as _t, changeLanguage } from 'i18next'; +import { configServiceMain } from './services/db-service'; +import { setLiveWallpaperVolume } from './services/wallpaper-window'; +import { setTray } from './tray'; + +const t = _t as TranslationFunc; + +export function registerHandlers(createWindow: () => Promise) { + ipcMain.handle(Events.SelectImage, () => { + return dialog.showOpenDialogSync({ + filters: [ + { name: t('rule.wallpaperType.image'), extensions: IMAGE_EXT_LIST }, + ], + properties: ['openFile'], + }); + }); + + ipcMain.handle(Events.SelectVideo, () => { + return dialog.showOpenDialogSync({ + filters: [ + { name: t('rule.wallpaperType.video'), extensions: VIDEO_EXT_LIST }, + ], + properties: ['openFile'], + }); + }); + + ipcMain.handle(Events.SelectDir, () => { + return dialog.showOpenDialogSync({ + properties: ['openDirectory'], + }); + }); + + ipcMain.handle(Events.ResetSchedule, async (event) => { + await resetSchedule(); + }); + + ipcMain.handle(Events.SaveRules, (event, rules: Rule[]) => { + configServiceMain.setItem('rules', rules); + }); + + ipcMain.handle(Events.SaveWeekdays, (event, weekdays: Weekday[]) => { + configServiceMain.setItem('weekdays', weekdays); + }); + + ipcMain.handle(Events.GetLocale, () => { + return app.getLocale(); + }); + + ipcMain.handle(Events.GetPlatform, () => { + return platform(); + }); + + ipcMain.handle(Events.SettingsChange, async (_, settings: Settings) => { + const oldSettings = configServiceMain.getItem('settings'); + configServiceMain.setItem('settings', settings); + if (settings.locale !== oldSettings.locale) { + await changeLanguage(settings.locale); + setTray(process.env.VITE_PUBLIC, createWindow); + } + if (settings.scaleMode !== oldSettings.scaleMode) { + await resetSchedule(); + } + }); + + ipcMain.handle(Events.InitSettings, (_, settings: Settings) => { + configServiceMain.setItem('settings', settings); + }); + + ipcMain.handle(Events.SetDBItem, (_, ...args) => { + const [key, data] = args; + configServiceMain.setItem(key, data); + }); + + ipcMain.handle(Events.GetDBItem, (_, key) => { + return configServiceMain.getItem(key); + }); + + ipcMain.handle(Events.SetLiveWallpaperVolume, (_, volume) => { + setLiveWallpaperVolume(volume); + }); + + ipcMain.handle(Events.GetVersion, () => { + return app.getVersion(); + }); + + ipcMain.handle(Events.OpenExternal, (_, url) => { + shell.openExternal(url); + }); + + powerMonitor.on('resume', async () => { + await resetSchedule(); + }); +} diff --git a/electron/main/index.ts b/electron/main/index.ts new file mode 100644 index 0000000..9c3d062 --- /dev/null +++ b/electron/main/index.ts @@ -0,0 +1,179 @@ +import { app, BrowserWindow, ipcMain, Menu, shell } from 'electron'; +import { release } from 'node:os'; +import { join } from 'node:path'; +import { registerHandlers } from './handlers'; +import './locale'; +import { setTray } from './tray'; +import { resetSchedule } from './services/wallpaper'; +import { indexHtml, url } from './services/utils'; +import { + closeWallpaperWin, + createWallpaperWin, + detachWallpaperWin, +} from './services/wallpaper-window'; +import { t as _t } from 'i18next'; +import { TranslationFunc } from '../../cross/interface'; +import { update } from './update'; +import installExtension, { + REACT_DEVELOPER_TOOLS, +} from 'electron-devtools-installer'; +import { configServiceMain } from './services/db-service'; +import { WallpaperMode } from '../../cross/enums'; + +const t: TranslationFunc = _t; + +// The built directory structure +// +// ├─┬ dist-electron +// │ ├─┬ main +// │ │ └── index.js > Electron-Main +// │ └─┬ preload +// │ └── index.js > Preload-Scripts +// ├─┬ dist +// │ └── index.html > Electron-Renderer +// + +// Disable GPU Acceleration for Windows 7 +if (release().startsWith('6.1')) app.disableHardwareAcceleration(); + +// Set application name for Windows 10+ notifications +if (process.platform === 'win32') app.setAppUserModelId(app.getName()); + +if (!app.requestSingleInstanceLock()) { + app.quit(); + process.exit(0); +} + +// Remove electron security warnings +// This warning only shows in development mode +// Read more on https://www.electronjs.org/docs/latest/tutorial/security +// process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true' + +let win: BrowserWindow | null = null; +// Here, you can also use other preload +const preload = join(__dirname, '../preload/index.js'); + +const template: any[] = [ + { + label: t('help'), + role: 'help', + submenu: [ + { + label: 'Github', + click: function () { + shell.openExternal('https://github.com/Jarvay'); + }, + }, + { + label: t('debug'), + click: function () { + if (win !== null) win.webContents.openDevTools(); + }, + }, + ], + }, +]; + +async function createWindow() { + if (win) { + return win; + } + + const menu = Menu.buildFromTemplate(template); + Menu.setApplicationMenu(menu); + + win = new BrowserWindow({ + title: 'Main window', + icon: join(process.env.VITE_PUBLIC, 'favicon.ico'), + maximizable: true, + webPreferences: { + preload, + // Warning: Enable nodeIntegration and disable contextIsolation is not secure in production + // Consider using contextBridge.exposeInMainWorld + // Read more on https://www.electronjs.org/docs/latest/tutorial/context-isolation + nodeIntegration: true, + contextIsolation: false, + webSecurity: false, + }, + }); + + win.on('closed', () => { + win = null; + }); + + if (url) { + // electron-vite-vue#298 + win.loadURL(url); + // Open devTool if the app is not packaged + win.webContents.openDevTools(); + } else { + win.loadFile(indexHtml); + } + + win.maximize(); + + // Test actively push message to the Electron-Renderer + win.webContents.on('did-finish-load', () => {}); + + // Make all links open with the browser, not with the application + win.webContents.setWindowOpenHandler(({ url }) => { + if (url.startsWith('https:')) shell.openExternal(url); + return { action: 'deny' }; + }); + + // Apply electron-updater + update(win); + + return win; +} + +app.whenReady().then(async () => { + registerHandlers(createWindow); + + setTray(process.env.VITE_PUBLIC, createWindow); + + await resetSchedule(); +}); + +app.on('window-all-closed', () => { + win = null; +}); + +app.on('second-instance', () => { + if (win) { + // Focus on the main window if the user tried to open another + if (win.isMinimized()) win.restore(); + win.focus(); + } +}); + +app.on('activate', () => { + const allWindows = BrowserWindow.getAllWindows(); + if (allWindows.length) { + allWindows[0].focus(); + } else { + createWindow(); + } +}); + +app.on('before-quit', () => { + detachWallpaperWin(); + closeWallpaperWin(); +}); + +// New window example arg: new windows url +ipcMain.handle('open-win', (_, arg) => { + const childWindow = new BrowserWindow({ + webPreferences: { + preload, + nodeIntegration: true, + contextIsolation: false, + }, + }); + + if (process.env.VITE_DEV_SERVER_URL) { + childWindow.loadURL(`${url}#${arg}`); + } else { + childWindow.loadFile(indexHtml, { hash: arg }); + } +}); diff --git a/electron/main/locale.ts b/electron/main/locale.ts new file mode 100644 index 0000000..b67d630 --- /dev/null +++ b/electron/main/locale.ts @@ -0,0 +1,17 @@ +import i18n from 'i18next'; +import { Locale } from '../../cross/enums'; +import { en } from '../../cross/locale/en'; +import { zhCN } from '../../cross/locale/zh-cn'; +import { configServiceMain } from './services/db-service'; + +i18n.init({ + resources: { + [Locale.enUS]: { + translation: en, + }, + [Locale.zhCN]: { + translation: zhCN, + }, + }, + lng: configServiceMain.getItem('settings')?.locale || Locale.zhCN, +}); diff --git a/electron/main/services/db-service.ts b/electron/main/services/db-service.ts new file mode 100644 index 0000000..896344c --- /dev/null +++ b/electron/main/services/db-service.ts @@ -0,0 +1,60 @@ +import { DBData, IDBService } from '../../../cross/interface'; +import { JSONSyncPreset } from 'lowdb/node'; +import { join } from 'node:path'; +import { + Locale, + MacOSScaleMode, + WallpaperMode, + WebScaleMode, + WindowsScaleMode, +} from '../../../cross/enums'; +import { LowSync } from 'lowdb'; +import { userDataDir } from './utils'; +import { platform } from 'os'; +import { merge } from 'lodash'; + +export class DBServiceMain implements IDBService { + private db: LowSync; + + constructor(db: LowSync) { + this.db = db; + } + + setItem(key: Key, data: DBData[Key]) { + this.db.data[key] = data; + this.db.write(); + } + + getItem(key: Key) { + return this.db.data[key]; + } +} + +const defaultData: DBData = { + rules: [], + weekdays: [], + settings: { + locale: Locale.zhCN, + volume: 100, + muted: true, + scaleMode: undefined, + webScaleMode: WebScaleMode.Cover, + wallpaperMode: WallpaperMode.Cover, + autoCheckUpdate: true, + openAtLogin: true, + }, + currentIndex: 0, +}; + +if (platform() === 'darwin') { + defaultData.settings.scaleMode = MacOSScaleMode.Auto; +} else if (platform() === 'win32') { + defaultData.settings.scaleMode = WindowsScaleMode.Span; +} + +const db = JSONSyncPreset(join(userDataDir, 'config.json'), defaultData); +const migratedData = merge(defaultData, db.data); +db.data = migratedData; +db.write(); + +export const configServiceMain = new DBServiceMain(db); diff --git a/electron/main/services/utils.ts b/electron/main/services/utils.ts new file mode 100644 index 0000000..9b2c455 --- /dev/null +++ b/electron/main/services/utils.ts @@ -0,0 +1,29 @@ +import { join } from 'node:path'; +import { app, ipcMain } from 'electron'; +import { mkdirSync } from 'node:fs'; + +process.env.DIST_ELECTRON = join(__dirname, '../'); +process.env.DIST = join(process.env.DIST_ELECTRON, '../dist'); +process.env.VITE_PUBLIC = process.env.VITE_DEV_SERVER_URL + ? join(process.env.DIST_ELECTRON, '../public') + : process.env.DIST; + +export const url = process.env.VITE_DEV_SERVER_URL; +export const indexHtml = join(process.env.DIST, 'index.html'); + +const userDataParentDir = !app.isPackaged + ? app.getAppPath() + : app.getPath('userData'); +export const userDataDir = join(userDataParentDir, 'userData'); + +try { + mkdirSync(userDataDir, { + recursive: true, + }); +} catch (e) {} + +export function randomByRange(min: number, max: number) { + const range = max - min; + const randNum = Math.random(); + return min + Math.round(randNum * range); +} diff --git a/electron/main/services/wallpaper-window.ts b/electron/main/services/wallpaper-window.ts new file mode 100644 index 0000000..c75d696 --- /dev/null +++ b/electron/main/services/wallpaper-window.ts @@ -0,0 +1,234 @@ +import { + BrowserWindow, + ipcMain, + screen, + IpcMainEvent, + BrowserWindowConstructorOptions, + Rectangle, + Display, +} from 'electron'; +import { platform } from 'os'; +import { Events } from '../../../cross/enums'; +import { indexHtml, url } from './utils'; +import { Subject } from 'rxjs'; +import { omit } from 'lodash'; + +const windowsMap: Map = new Map(); + +const defaultWinOptions: Electron.BrowserWindowConstructorOptions = { + autoHideMenuBar: true, + frame: false, + focusable: false, + resizable: false, + show: false, + webPreferences: { + nodeIntegration: true, + webSecurity: false, + contextIsolation: false, + }, +}; + +const subject = new Subject(); + +function loadUrl(win: BrowserWindow, displayId: number) { + let pageUrl = ''; + if (url) { + pageUrl = `${url}#/wallpaper/${displayId}`; + } else { + pageUrl = `file://${indexHtml}#/wallpaper/${displayId}`; + } + + return win.loadURL(pageUrl); +} + +async function createWindows( + displayId: number, + winOptions: (bounds: Rectangle) => BrowserWindowConstructorOptions, +) { + if (windowsMap.size === screen.getAllDisplays().length) { + return; + } + const displays = screen.getAllDisplays(); + + const loadedDisplayIdSet: Set = new Set(); + const loadedListener: (event: IpcMainEvent, ...args: any[]) => void = ( + _, + displayId: number, + ) => { + if (loadedDisplayIdSet.size === displays.length) { + ipcMain.off(Events.StaticWallpaperLoaded, loadedListener); + ipcMain.off(Events.LiveWallpaperLoaded, loadedListener); + return; + } + const win = windowsMap.get(displayId) as BrowserWindow; + + if (platform() === 'win32') { + win.maximize(); + const { attach } = require('electron-as-wallpaper'); + attach(win); + } + if (platform() === 'linux') { + win.maximize(); + } + setTimeout(() => { + win.setOpacity(1); + }, 600); + loadedDisplayIdSet.add(displayId); + }; + + ipcMain.on(Events.StaticWallpaperLoaded, loadedListener); + ipcMain.on(Events.LiveWallpaperLoaded, loadedListener); + + ipcMain.on(Events.WallpaperWinReady, (_, displayId) => { + subject.next(windowsMap.get(displayId) as BrowserWindow); + }); + + const display = screen + .getAllDisplays() + .find((item) => item.id === displayId) as Display; + const childWin = new BrowserWindow({ + ...winOptions(display.bounds), + }); + windowsMap.set(display.id, childWin); + // childWin.webContents.openDevTools(); + // childWin.setFocusable(true); + childWin.setIgnoreMouseEvents(true); + + await loadUrl(childWin, display.id); +} + +async function createDarwinWin(displayId: number) { + await createWindows(displayId, ({ width, height, x, y }) => { + return { + ...defaultWinOptions, + fullscreen: false, + type: 'desktop', + x: x - 4, + y: y - 2, + width: width + 8, + height: height + 4, + enableLargerThanScreen: true, + opacity: 0, + transparent: true, + show: true, + }; + }); +} + +async function createWin32Win(displayId: number) { + await createWindows(displayId, ({ width, height, x, y }) => { + return { + ...defaultWinOptions, + skipTaskbar: true, + show: true, + opacity: 0, + transparent: true, + x: x - 4, + y: y - 2, + width: width + 8, + height: height + 4, + }; + }); +} + +async function createLinuxWin(displayId: number) { + await createWindows(displayId, ({ width, height, x, y }) => { + return { + ...omit(defaultWinOptions, ['frame', 'focusable', 'resizable']), + type: 'desktop', + width: width, + height: height, + opacity: 0, + transparent: true, + show: true, + }; + }); +} + +export function createWallpaperWin(displayId: number) { + if (platform() === 'darwin') { + return createDarwinWin(displayId); + } else if (platform() === 'win32') { + return createWin32Win(displayId); + } else if (platform() === 'linux') { + return createLinuxWin(displayId); + } +} + +export function setLiveWallpaper(paths: string[], displayId: number) { + paths = paths.map((path) => { + if (!path.startsWith('file://')) { + return `file://${path}`; + } + return path; + }); + + subject.subscribe({ + next: (value) => { + const win = windowsMap.get(displayId); + if (win === value) { + value?.webContents.send(Events.SetLiveWallpaper, paths); + } + }, + }); + + windowsMap.forEach((win, dId) => { + if (displayId === dId) { + win.webContents.send(Events.SetLiveWallpaper, paths); + } + }); + + return createWallpaperWin(displayId); +} + +export function setStaticWallpaper(path: string, displayId: number) { + subject.subscribe({ + next: (value) => { + const win = windowsMap.get(displayId); + if (win === value) { + value?.webContents.send(Events.SetStaticWallpaper, path); + } + }, + }); + + windowsMap.forEach((win, dId) => { + if (displayId === dId) { + win.webContents.send(Events.SetStaticWallpaper, path); + } + }); + + return createWallpaperWin(displayId); +} + +export function detachWallpaperWin() { + windowsMap.forEach((win) => { + if (platform() === 'win32') { + const { detach } = require('electron-as-wallpaper'); + detach(win); + } + win.hide(); + }); +} + +export function closeWallpaperWin() { + windowsMap.forEach((win) => { + win.close(); + win.destroy(); + if (platform() === 'win32') { + const { refresh } = require('electron-as-wallpaper'); + refresh(); + } + }); +} + +export function setLiveWallpaperMuted(muted: boolean) { + windowsMap.forEach((win) => { + win?.webContents.send(Events.SetLiveWallpaperMuted, muted); + }); +} + +export function setLiveWallpaperVolume(volume: number) { + windowsMap.forEach((win) => { + win.webContents.send(Events.SetLiveWallpaperVolume, volume); + }); +} diff --git a/electron/main/services/wallpaper.ts b/electron/main/services/wallpaper.ts new file mode 100644 index 0000000..719ec9e --- /dev/null +++ b/electron/main/services/wallpaper.ts @@ -0,0 +1,223 @@ +import { readdirSync } from 'fs'; +import { join } from 'node:path'; +import { IMAGE_EXT_LIST, VIDEO_EXT_LIST } from '../../../cross/consts'; +import { Rule } from '../../../cross/interface'; +import { ChangeType, WallpaperMode, WallpaperType } from '../../../cross/enums'; +import { + detachWallpaperWin, + setLiveWallpaper, + setStaticWallpaper, +} from './wallpaper-window'; +import { gracefulShutdown, RecurrenceRule, scheduleJob } from 'node-schedule'; +import { timeToSeconds } from '../../../cross/date'; +import dayjs from 'dayjs'; +import { configServiceMain } from './db-service'; +import { SetOptions } from 'wallpaper'; +import { randomByRange } from './utils'; +import { screen } from 'electron'; +import { platform } from 'os'; + +const timerMap: Map = new Map(); + +const typeExtMap = new Map([ + [ + WallpaperType.Image, + IMAGE_EXT_LIST.filter((ext) => { + return !(platform() === 'linux' && ext === 'heic'); + }), + ], + [WallpaperType.Video, VIDEO_EXT_LIST], +]); + +export async function setWallpaper( + rule: Rule, + filePath: string, + displayId: number, + currentIndex: number, +) { + switch (rule.wallpaperType) { + case WallpaperType.Image: + const { wallpaperMode, scaleMode } = + configServiceMain.getItem('settings'); + const wallpaper = await import('wallpaper'); + if (wallpaperMode === WallpaperMode.Replace) { + await wallpaper.setWallpaper(filePath, { + scale: scaleMode as SetOptions['scale'], + screen: 'all', + }); + detachWallpaperWin(); + } else { + await setStaticWallpaper(filePath, displayId); + } + configServiceMain.setItem('currentIndex', currentIndex); + break; + case WallpaperType.Video: + await setLiveWallpaper([filePath], displayId); + break; + } +} + +export async function updateWallpaper(rule: Rule, currentIndex: number) { + const extList = typeExtMap.get(rule.wallpaperType) as string[]; + if (rule.type !== ChangeType.Fixed && rule.isRandom) { + const max = readRuleFilePaths(rule, extList).length - 1; + currentIndex = randomByRange(0, max); + } + + let filePath = readRuleFilePaths(rule, extList)[currentIndex]; + + const displays = screen.getAllDisplays(); + for (const display of displays) { + if (rule.type !== ChangeType.Fixed && rule.screenRandom) { + const max = readRuleFilePaths(rule, extList).length - 1; + currentIndex = randomByRange(0, max); + filePath = readRuleFilePaths(rule, extList)[currentIndex]; + } + await setWallpaper(rule, filePath, display.id, currentIndex); + } +} + +function increaseImgIndex(currentIndex: number, rule: Rule) { + const total = readRuleFilePaths(rule, IMAGE_EXT_LIST).length; + + if (currentIndex + 1 === total) { + return 0; + } + return currentIndex + 1; +} + +function readRuleFilePaths(rule: Rule, extList: string[]) { + const filePaths = readdirSync(rule.path) || []; + return filePaths + .filter((item) => !/(^|\/)\.[^\/.]/g.test(item)) + .filter((item) => extList.some((ext) => item.endsWith(ext))) + .map((item) => { + return join(rule.path, item); + }); +} + +export async function createWallpaperTimer(rule: Rule) { + let currentIndex = increaseImgIndex( + configServiceMain.getItem('currentIndex'), + rule, + ); + await updateWallpaper(rule, currentIndex); + return setInterval( + async () => { + currentIndex = increaseImgIndex(currentIndex, rule); + await updateWallpaper(rule, currentIndex); + }, + (rule.interval || 60) * 1000, + ); +} + +function isCurrentRule(rule: Rule, day: number) { + let dayOfWeek = new Date().getDay(); + dayOfWeek = dayOfWeek || 7; + if (dayOfWeek !== day) { + return false; + } + + const now = timeToSeconds(dayjs().format('HH:mm')); + const start = timeToSeconds(rule.start); + const end = timeToSeconds(rule.end); + return start <= now && end >= now; +} + +function getWeekdayById(id: string) { + return configServiceMain.getItem('weekdays').find((item) => { + return item.id === id; + }); +} + +export async function resetSchedule() { + await gracefulShutdown(); + + for (const timerMapElement of timerMap) { + const [id, timer] = timerMapElement; + clearInterval(timer); + } + timerMap.clear(); + + const rules = configServiceMain.getItem('rules'); + + rules.forEach((rule) => { + const [startHour, startMinute] = rule.start.split(':'); + const [endHour, endMinute] = rule.end.split(':'); + + async function createIntervalPlan(dayOfWeek: number) { + clearInterval(timerMap.get(rule.id as string)); + timerMap.set(rule.id as string, await createWallpaperTimer(rule)); + + const stopRule = new RecurrenceRule(); + stopRule.second = 59; + stopRule.minute = endMinute; + stopRule.hour = endHour; + stopRule.dayOfWeek = dayOfWeek; + scheduleJob(stopRule, () => { + clearInterval(timerMap.get(rule.id as string)); + }); + } + + const weekday = getWeekdayById(rule.weekdayId as string); + const days = weekday?.days || []; + days.forEach((day) => { + const isCurrent = isCurrentRule(rule, day); + + const jobRule = new RecurrenceRule(); + jobRule.second = 0; + jobRule.minute = startMinute; + jobRule.hour = startHour; + jobRule.dayOfWeek = day; + + function setFixedWallpaper() { + let index = 0; + for (const display of screen.getAllDisplays()) { + const path = rule.paths?.[index] || rule.paths?.[0]; + setWallpaper(rule, path, display.id, 0); + index++; + } + } + + function setAutoChangeLiveWallpapers() { + let index = 0; + for (const display of screen.getAllDisplays()) { + setLiveWallpaper(readRuleFilePaths(rule, VIDEO_EXT_LIST), display.id); + index++; + } + } + + switch (rule.type) { + default: + case ChangeType.Fixed: + if (isCurrent) { + setFixedWallpaper(); + } else { + scheduleJob(jobRule, () => { + setFixedWallpaper(); + }); + } + break; + case ChangeType.AutoChange: + if (rule.wallpaperType === WallpaperType.Image) { + if (isCurrent) { + createIntervalPlan(day); + } else { + scheduleJob(jobRule, () => { + createIntervalPlan(day); + }); + } + } else if (rule.wallpaperType === WallpaperType.Video) { + if (isCurrent) { + setAutoChangeLiveWallpapers(); + } else { + scheduleJob(jobRule, () => { + setAutoChangeLiveWallpapers(); + }); + } + } + break; + } + }); + }); +} diff --git a/electron/main/tray.ts b/electron/main/tray.ts new file mode 100644 index 0000000..a8da766 --- /dev/null +++ b/electron/main/tray.ts @@ -0,0 +1,118 @@ +import { platform } from 'os'; +import { app, BrowserWindow, Menu, Tray } from 'electron'; +import { join } from 'node:path'; +import { t as _t } from 'i18next'; +import { TranslationFunc } from '../../cross/interface'; +import { configServiceMain } from './services/db-service'; +import { setLiveWallpaperMuted } from './services/wallpaper-window'; + +const t: TranslationFunc = _t; + +let tray: Tray; + +enum TrayMenuItem { + OpenAtLogin = 1, + Muted = 2, + AutoCheckUpdate = 4, +} + +export function setTray( + publicDir: string, + createWindow: () => Promise, +) { + const trayIcon = + platform() === 'win32' ? 'favicon.ico' : 'faviconTemplate.png'; + if (!tray) { + tray = new Tray(join(publicDir, trayIcon)); + } + + tray.on('double-click', () => { + createWindow(); + }); + + const openAtLogin = configServiceMain.getItem('settings').openAtLogin; + if (app.isPackaged) { + app.setLoginItemSettings({ + openAtLogin, + }); + } + + const contextMenu = Menu.buildFromTemplate([ + { + label: t('showWindow'), + type: 'normal', + click: () => { + createWindow(); + }, + }, + { + label: t('startAtLogin'), + type: 'checkbox', + checked: openAtLogin, + click: () => { + if (app.isPackaged) { + const newOpenAtLogin = + !configServiceMain.getItem('settings').openAtLogin; + app.setLoginItemSettings({ + openAtLogin: newOpenAtLogin, + }); + contextMenu.items[TrayMenuItem.OpenAtLogin].checked = newOpenAtLogin; + tray?.setContextMenu(contextMenu); + configServiceMain.setItem('settings', { + ...configServiceMain.getItem('settings'), + openAtLogin: newOpenAtLogin, + }); + } + }, + }, + { + label: t('settings.mute'), + type: 'checkbox', + checked: configServiceMain.getItem('settings').muted, + click: () => { + const muted = !configServiceMain.getItem('settings').muted; + contextMenu.items[TrayMenuItem.Muted].checked = muted; + tray?.setContextMenu(contextMenu); + setLiveWallpaperMuted(muted); + configServiceMain.setItem('settings', { + ...configServiceMain.getItem('settings'), + muted, + }); + }, + }, + { + label: t('checkUpdate'), + type: 'normal', + click: async () => { + await createWindow(); + }, + }, + { + label: t('autoCheckUpdate'), + type: 'checkbox', + checked: configServiceMain.getItem('settings').autoCheckUpdate, + click: () => { + const autoCheckUpdate = + !configServiceMain.getItem('settings').autoCheckUpdate; + contextMenu.items[TrayMenuItem.AutoCheckUpdate].checked = + autoCheckUpdate; + tray?.setContextMenu(contextMenu); + setLiveWallpaperMuted(autoCheckUpdate); + configServiceMain.setItem('settings', { + ...configServiceMain.getItem('settings'), + autoCheckUpdate, + }); + }, + }, + { + label: t('exit'), + type: 'normal', + click: () => { + app.quit(); + }, + }, + ]); + tray.setContextMenu(contextMenu); + + return tray; +} diff --git a/electron/main/update.ts b/electron/main/update.ts new file mode 100644 index 0000000..d363c9e --- /dev/null +++ b/electron/main/update.ts @@ -0,0 +1,86 @@ +import { app, ipcMain } from 'electron'; +import { + type ProgressInfo, + type UpdateDownloadedEvent, + autoUpdater, +} from 'electron-updater'; + +export function update(win: Electron.BrowserWindow) { + // When set to false, the update download will be triggered through the API + autoUpdater.autoDownload = false; + autoUpdater.disableWebInstaller = false; + autoUpdater.allowDowngrade = false; + + // start check + autoUpdater.on('checking-for-update', function () { + console.info('checking-for-update'); + }); + // update available + autoUpdater.on('update-available', (arg) => { + console.log('update-available', arg); + win.webContents.send('update-can-available', { + update: true, + version: app.getVersion(), + newVersion: arg?.version, + }); + }); + // update not available + autoUpdater.on('update-not-available', (arg) => { + console.log('update-not-available', arg); + win.webContents.send('update-can-available', { + update: false, + version: app.getVersion(), + newVersion: arg?.version, + }); + }); + + // Checking for updates + ipcMain.handle('check-update', async () => { + if (!app.isPackaged) { + const error = new Error( + 'The update feature is only available after the package.', + ); + return { message: error.message, error }; + } + + try { + return await autoUpdater.checkForUpdatesAndNotify(); + } catch (error) { + return { message: 'Network error', error }; + } + }); + + // Start downloading and feedback on progress + ipcMain.handle('start-download', (event) => { + startDownload( + (error, progressInfo) => { + if (error) { + // feedback download error message + event.sender.send('update-error', { message: error.message, error }); + } else { + // feedback update progress message + event.sender.send('download-progress', progressInfo); + } + }, + () => { + // feedback update downloaded message + event.sender.send('update-downloaded'); + }, + ); + }); + + // Install now + ipcMain.handle('quit-and-install', () => { + autoUpdater.quitAndInstall(false, true); + }); +} + +function startDownload( + callback: (error: Error | null, info: ProgressInfo | null) => void, + complete: (event: UpdateDownloadedEvent) => void, +) { + autoUpdater.on('download-progress', (info) => callback(null, info)); + autoUpdater.on('error', (error) => callback(error, null)); + autoUpdater.on('update-downloaded', complete); + autoUpdater.downloadUpdate(); +} diff --git a/electron/preload/index.ts b/electron/preload/index.ts new file mode 100644 index 0000000..ebd1e48 --- /dev/null +++ b/electron/preload/index.ts @@ -0,0 +1,94 @@ +function domReady( + condition: DocumentReadyState[] = ['complete', 'interactive'], +) { + return new Promise((resolve) => { + if (condition.includes(document.readyState)) { + resolve(true); + } else { + document.addEventListener('readystatechange', () => { + if (condition.includes(document.readyState)) { + resolve(true); + } + }); + } + }); +} + +const safeDOM = { + append(parent: HTMLElement, child: HTMLElement) { + if (!Array.from(parent.children).find((e) => e === child)) { + return parent.appendChild(child); + } + }, + remove(parent: HTMLElement, child: HTMLElement) { + if (Array.from(parent.children).find((e) => e === child)) { + return parent.removeChild(child); + } + }, +}; + +/** + * https://tobiasahlin.com/spinkit + * https://connoratherton.com/loaders + * https://projects.lukehaas.me/css-loaders + * https://matejkustec.github.io/SpinThatShit + */ +function useLoading() { + const className = `loaders-css__square-spin`; + const styleContent = ` +@keyframes square-spin { + 25% { transform: perspective(100px) rotateX(180deg) rotateY(0); } + 50% { transform: perspective(100px) rotateX(180deg) rotateY(180deg); } + 75% { transform: perspective(100px) rotateX(0) rotateY(180deg); } + 100% { transform: perspective(100px) rotateX(0) rotateY(0); } +} +.${className} > div { + animation-fill-mode: both; + width: 50px; + height: 50px; + background: #fff; + animation: square-spin 3s 0s cubic-bezier(0.09, 0.57, 0.49, 0.9) infinite; +} +.app-loading-wrap { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + display: flex; + align-items: center; + justify-content: center; + background: #282c34; + z-index: 9; +} + `; + const oStyle = document.createElement('style'); + const oDiv = document.createElement('div'); + + oStyle.id = 'app-loading-style'; + oStyle.innerHTML = styleContent; + oDiv.className = 'app-loading-wrap'; + oDiv.innerHTML = `

`; + + return { + appendLoading() { + safeDOM.append(document.head, oStyle); + safeDOM.append(document.body, oDiv); + }, + removeLoading() { + safeDOM.remove(document.head, oStyle); + safeDOM.remove(document.body, oDiv); + }, + }; +} + +// ---------------------------------------------------------------------- + +const { appendLoading, removeLoading } = useLoading(); +domReady().then(appendLoading); + +window.onmessage = (ev) => { + ev.data.payload === 'removeLoading' && removeLoading(); +}; + +setTimeout(removeLoading, 4999); diff --git a/index.html b/index.html new file mode 100644 index 0000000..ba93854 --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + + + Workpaper + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..4eedb4a --- /dev/null +++ b/package.json @@ -0,0 +1,68 @@ +{ + "name": "workpaper", + "version": "0.0.1", + "main": "dist-electron/main/index.js", + "license": "MIT", + "private": true, + "debug": { + "env": { + "VITE_DEV_SERVER_URL": "http://127.0.0.1:7777/" + } + }, + "scripts": { + "dev": "vite", + "build": "tsc && vite build && electron-builder", + "preview": "vite preview", + "pree2e": "vite build --mode=test", + "e2e": "playwright test" + }, + "dependencies": { + "electron-as-wallpaper": "1.0.3", + "electron-updater": "^6.1.1", + "wallpaper": "^7.2.1" + }, + "devDependencies": { + "@ant-design/icons": "^5.2.6", + "@playwright/test": "^1.37.1", + "@types/lodash": "^4.14.200", + "@types/node-schedule": "^2.1.2", + "@types/react": "^18.2.20", + "@types/react-dom": "^18.2.7", + "@vitejs/plugin-react": "^4.0.4", + "ahooks": "^3.7.8", + "animate.css": "^4.1.1", + "antd": "^5.10.2", + "autoprefixer": "^10.4.16", + "dayjs": "^1.11.10", + "electron": "29.0.0-alpha.5", + "electron-builder": "^24.6.3", + "electron-devtools-installer": "^3.2.0", + "i18next": "^23.6.0", + "less": "^4.2.0", + "less-loader": "^11.1.3", + "lodash": "^4.17.21", + "lowdb": "^6.1.1", + "mitt": "^3.0.1", + "node-schedule": "^2.1.1", + "postcss": "^8.4.31", + "prettier": "^3.0.3", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-i18next": "^13.3.1", + "react-router-dom": "^6.18.0", + "rxjs": "^7.8.1", + "tailwindcss": "^3.3.3", + "typescript": "^5.1.6", + "vite": "5.0.5", + "vite-plugin-electron": "^0.13.0-beta.3", + "vite-plugin-electron-renderer": "^0.14.5", + "vite-plugin-esmodule": "^1.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "repository": { + "type": "git", + "url": "git@github.com:Jarvay/workpaper.git" + } +} diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 0000000..d323551 --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,54 @@ +import type { PlaywrightTestConfig } from "@playwright/test"; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +const config: PlaywrightTestConfig = { + testDir: "./e2e", + /* Maximum time one test can run for. */ + timeout: 30 * 1000, + expect: { + /** + * Maximum time expect() should wait for the condition to be met. + * For example in `await expect(locator).toHaveText();` + */ + timeout: 5000, + }, + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: "html", + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ + actionTimeout: 0, + /* Base URL to use in actions like `await page.goto('/')`. */ + // baseURL: 'http://localhost:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: "on-first-retry", + }, + + /* Folder for test artifacts such as screenshots, videos, traces, etc. */ + // outputDir: 'test-results/', + + /* Run your local dev server before starting the tests */ + // webServer: { + // command: 'npm run start', + // port: 3000, + // }, +}; + +export default config; diff --git a/postcss.config.cjs b/postcss.config.cjs new file mode 100644 index 0000000..825cb18 --- /dev/null +++ b/postcss.config.cjs @@ -0,0 +1,8 @@ +module.exports = { + plugins: { + 'postcss-import': {}, + 'tailwindcss/nesting': {}, + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..906d24ab53ca16687f115a41da3778c650780792 GIT binary patch literal 4286 zcmc(jYitx%6vs#Oqlr-a*wTobhSJtnXn`%1ht$wk3Ka<`0@_#tDxZvxKuoGwLR&OS zHIY(@Z7~r^W71Ht?iT6NhlnqPT@y@%w5bV(habT0Bi-)f?>Tp8rgygcY_jn-|Gjt4 zJ#&BOo;f?SQ$@Lt{>)~DKb7{`ijt}*N)CxkN(qVWqS0KW1|XBPhqONddWY70g)}cX z2C_Xs`jq4&CAxVCaELTZi-X3WhlBe4e)xSp_*C)O@7F|gJTLj^$ErQtx@7;5`P45C z0t02`_F_E>6|bz>?3xo%ufVciz`G7&BQ*g@!4;5WCSB5 z?uAB2G0Ng&G3GwtGvaayU)^8xjnD_hVBo*KZ!b*ANiaP;hctUiNi=2&8_gxpL3&CO zGSX5oH#He)_eBk2ich(poSa0- zs+H*K{2Gp5FX(b!x&R^7=Dc(ftCm~Pe)224-%yY0su!cyYvbXM41O|SuDR2lohV(i zns`5`QrTJzWN$lm1WOARian2yk7H$#1>H6)eBRLC*Wuw|^(hLwxkeaRCijf%l)qEmncsShPiNjKCjzm zLza0Sdb-aTVqktp`$wu zUWSe9pTh5#f20@!*T6x!uiEx3?S(nUbN;?@1NqrmxPI+VJ%)*i39MdGjIM9aO!JS( zr?qWXD;`Zx1J}7$3+Jq-MP6>-zBO$pPvQtZ@g&d^0h50Tm+}Xf&AQT{BiYaTx?!ne*Or4968|gzi4Yi<|7$6@ZSEo z+3MaIt3Q8d62rOg&VrwR(efqF^KWOV8Tf3MeG@U3_Rcuw|KGnq4|5=L;~3+q$5`?d zv~LY}fClB-fuZLZ;;hL~aR@H06Q&iBo!^1%Vdg~)f%h%-Jxh&C4+09fNnf&c&j literal 0 HcmV?d00001 diff --git a/public/faviconTemplate.png b/public/faviconTemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..62aa41903a304f8ad93029bc443950526f79c6b8 GIT binary patch literal 2416 zcmb_e4Nw$i7+%PbP|W`!EL#>S1^4#n{#OnZ4!MI46)z+IKX$)6F79rx+r1wk4Q;a2 zG^NxDX&i>6Cd#t0Ci}yz)P5)`(P|2CvW&?jQ#4JnZ;#{BhJL2$X7+aX+vj_q=Y8Mj z`*zpPEh$V+N=?ErEZJ%?m!k7%w{TyInXgP_rC)zfj7X4Mp}rdTye8#t|wQ|s~Qk3e*O!NHZ9XGh7yGNgh{WIJ{Z9aCEoAy$u7~0D-l7t7?4c_ zk~)xs#}^Chm7;Y*6{EtyM=>f|$teO9_!!O?@Vg`A0#89V^gypHAuJQa`YJ?Olq$r( z2pxNT4FRgH%@*SrQj5nEqmbl+AW9=zkRj2My~+ovQYeW5KMxCnNM^c{jgQOsLm-QO zyC}K`J2iJuGR|sLI(+I~F0UYlq-j@8fMy^=6M?#>A!&wW)OJS0(KN>zvQYbIdH`w@ z1(&1hS}3bmpe)TX>@`s283D-PAHf38IYhq)poCo>;DnUV>m=}48M%DXE&35LQm2ln zu-Q1PSCWC3hgP$RKsl>iE`ftu#sRcCnxt8+ffTeFBMBfVC)H4JsI_{vVBll(%_1LA zI;+edaJeAzD8?VGYQ4aevkpM=jKfGGQ$x~N&gw{pW(B=b2O!jF2Gz{*yU;=d?yI9J zsst2~)$(dRjSQ^kwHgxYG!D{WFc?WR$S_6?t!H&WadX5VoW&)f)>TE<$9#Bi^vdnR zBc9*@uXx==@Jf@RKtzXKL)7D6F-PZzDj*8_H_ablmqdpg0)9BliE8(c=A!;eyaa-O zFC8!tu#nM^ydDUoL(s5fxt7+DS~Wlg0|o#LsFeenhLo;HjvX}Pe~})I%~t@g6QZ4y zBK~_a|IU{~B{Rgz`u~!ll>KtRVbq_^7kPHo-ijI-8A2Pjav6J7pqtps26|DQ{ODD( z=JNMW42!R|nrGP!8&=F;X8C+xis`%~!T5Fa$Dd7p?&(7hSC5`>F}-obYWkk6!oJZ( zw~ZKoUr*z~rI}~b+Lt~x^^rsUxY@ks{ugauw12v6K}y?V$@_V8i*5Vvn(8lBW^TFV zRbT6wZ+gF$a^K3b#P2J>ZpV&emSb1ShU25Ub862$cgN`ormIK)F z_}bE8!?1WPZRg^N8GFX3J$TsMoKc(nRod>wBQ4X$j4I4q`)*!d;_i<|BtA1?+m9Kw z1$B7b*iEG~i&o9VN58o6`NC7dP*=&KIVT#8*5SDs3sg&1cG>BalRun%qw`4T5$2Yp zwvjis%88pN_P6A(Ybc&p@Sdi=zCIO8eBt~%GwRNUv-!3*l6<>cp0an(<5R3V$8RZ} za$!Qzy{aum+vfb5Q+Reww!3ThxV7Pi)Q0r*jdgX;Z$BBVX*%GFU%gHmmYkQ^@Y0tX zJ(~K=53@2u2b;j0%E})zFdz5i#{T|Q&gwTi?e;xY>)RYH#rh?~X0k+AoYnaiMvVF&nH0$e^SFdmcbwzc3eSOaK&4=6v9$pr|3H!PGSX1Y>fu~+U?A|#;f0BHH>dn?tLYwNRr4pu z&UN(true); + const [updateAvailable, setUpdateAvailable] = useState(false); + const [versionInfo, setVersionInfo] = useState(); + + const [locale, setLocale] = useState(); + + const onUpdateCanAvailable = useCallback( + (_event: Electron.IpcRendererEvent, arg1: VersionInfo) => { + if (arg1.update) { + setUpdateAvailable(true); + setVersionInfo(arg1); + } + }, + [], + ); + + useMount(async () => { + emitter.on('setSettingsBtnShow', (visible: boolean) => { + setSettingsBtnShow(visible); + }); + + const settings = await settingsService.get(); + setLocale(LOCALE_MAP.get(settings.locale)); + + if (window.location.hash.includes('/wallpaper')) { + ipcRenderer.on('update-can-available', onUpdateCanAvailable); + if (settings.autoCheckUpdate) { + try { + await ipcRenderer.invoke('check-update'); + } catch (e) { + console.warn(e); + } + } + } + }); + + useUnmount(() => { + ipcRenderer.off('update-can-available', onUpdateCanAvailable); + }); + + return ( + + + + <> + {settingsBtnShow && ( + } + badge={updateAvailable ? { dot: true } : undefined} + onClick={() => { + setSettingsOpen(true); + }} + /> + )} + + setSettingsOpen(false)} + onChange={(settings) => { + setLocale(LOCALE_MAP.get(settings?.locale as Settings['locale'])); + }} + versionInfo={versionInfo} + /> + + + ); +} + +export default App; diff --git a/src/components/CenterTable/index.tsx b/src/components/CenterTable/index.tsx new file mode 100644 index 0000000..fed8b95 --- /dev/null +++ b/src/components/CenterTable/index.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import { Table } from 'antd'; +import type { TableProps } from 'antd'; +import { AnyObject } from 'antd/es/_util/type'; + +const CenterTable = (props: TableProps) => { + if (Array.isArray(props.columns)) { + props.columns.forEach((column) => { + column.align = 'center'; + }); + } + + return ; +}; + +export default CenterTable; diff --git a/src/components/PageContainer/index.module.less b/src/components/PageContainer/index.module.less new file mode 100644 index 0000000..82f0d3a --- /dev/null +++ b/src/components/PageContainer/index.module.less @@ -0,0 +1,3 @@ +.app-layout { + padding: 2em; +} diff --git a/src/components/PageContainer/index.tsx b/src/components/PageContainer/index.tsx new file mode 100644 index 0000000..b094c5c --- /dev/null +++ b/src/components/PageContainer/index.tsx @@ -0,0 +1,11 @@ +import React, { ReactNode } from 'react'; +import styles from './index.module.less'; + +export interface PageContainerProps { + children?: React.JSX.Element | ReactNode; +} +const PageContainer: React.FC = (props) => { + return
{props.children}
; +}; + +export default PageContainer; diff --git a/src/components/ScaleModeComponent/index.tsx b/src/components/ScaleModeComponent/index.tsx new file mode 100644 index 0000000..0e1ac80 --- /dev/null +++ b/src/components/ScaleModeComponent/index.tsx @@ -0,0 +1,73 @@ +import React, { useState } from 'react'; +import { DefaultOptionType } from 'rc-select/lib/Select'; +import { useTranslation } from 'react-i18next'; +import { useMount } from 'ahooks'; +import { ipcRenderer } from 'electron'; +import { + Events, + MacOSScaleMode, + WallpaperMode, + WebScaleMode, + WindowsScaleMode, +} from '../../../cross/enums'; +import { Settings, TranslationFunc } from '../../../cross/interface'; +import { settingsService } from '@/services/settings'; + +export interface ScaleModeComponentProps { + children?: ( + scaleModeOptions: DefaultOptionType[], + ) => React.ReactNode | JSX.Element; +} + +const ScaleModeComponent: React.FC = (props) => { + const { t }: { t: TranslationFunc } = useTranslation(); + + const [platform, setPlatform] = useState(); + const [settings, setSettings] = useState(); + + useMount(async () => { + setPlatform(await ipcRenderer.invoke(Events.GetPlatform)); + + setSettings(await settingsService.get()); + }); + + let scaleModeOptions: DefaultOptionType[] = []; + + if (settings?.wallpaperMode === WallpaperMode.Cover) { + scaleModeOptions = [ + { label: t('scaleMode.default'), value: undefined }, + { label: t('webScaleMode.fill'), value: WebScaleMode.Fill }, + { label: t('webScaleMode.contain'), value: WebScaleMode.Contain }, + { label: t('webScaleMode.cover'), value: WebScaleMode.Cover }, + ]; + } else { + switch (platform) { + default: + case 'win32': + scaleModeOptions = [ + { label: t('scaleMode.default'), value: undefined }, + { label: t('scaleMode.fit'), value: WindowsScaleMode.Fit }, + { label: t('scaleMode.center'), value: WindowsScaleMode.Center }, + { label: t('scaleMode.stretch'), value: WindowsScaleMode.Stretch }, + { label: t('scaleMode.fill'), value: WindowsScaleMode.Fill }, + { label: t('scaleMode.tile'), value: WindowsScaleMode.Tile }, + { label: t('scaleMode.span'), value: WindowsScaleMode.Span }, + ]; + break; + case 'darwin': + scaleModeOptions = [ + { label: t('scaleMode.default'), value: undefined }, + { label: t('scaleMode.fit'), value: MacOSScaleMode.Fit }, + { label: t('scaleMode.center'), value: MacOSScaleMode.Center }, + { label: t('scaleMode.stretch'), value: MacOSScaleMode.Stretch }, + { label: t('scaleMode.fill'), value: MacOSScaleMode.Fill }, + { label: t('scaleMode.auto'), value: MacOSScaleMode.Auto }, + ]; + break; + } + } + + return props.children?.(scaleModeOptions) || null; +}; + +export default ScaleModeComponent; diff --git a/src/components/SettingsModal/index.module.less b/src/components/SettingsModal/index.module.less new file mode 100644 index 0000000..c95d684 --- /dev/null +++ b/src/components/SettingsModal/index.module.less @@ -0,0 +1,3 @@ +.form-item { + width: 200px !important; +} diff --git a/src/components/SettingsModal/index.tsx b/src/components/SettingsModal/index.tsx new file mode 100644 index 0000000..e37d258 --- /dev/null +++ b/src/components/SettingsModal/index.tsx @@ -0,0 +1,180 @@ +import React, { useState } from 'react'; +import { Badge, Button, Form, Modal, Select, Slider, Space } from 'antd'; +import { + ModalFormProps, + Settings, + TranslationFunc, +} from '../../../cross/interface'; +import { debounce, omit } from 'lodash'; +import { useMount, useUpdateEffect } from 'ahooks'; +import { settingsService } from '@/services/settings'; +import { Events, Locale, WallpaperMode } from '../../../cross/enums'; +import { useTranslation } from 'react-i18next'; +import ScaleModeComponent from '@/components/ScaleModeComponent'; +import styles from './index.module.less'; +import { ipcRenderer } from 'electron'; +import Update from '@/components/Update'; + +export interface SettingsModalProps extends ModalFormProps { + versionInfo?: VersionInfo; +} + +const SettingsModal: React.FC = (props) => { + const [form] = Form.useForm(); + const [version, setVersion] = useState(''); + const [versionInfo, setVersionInfo] = useState(); + const [settings, setSettings] = useState(); + const [platform, setPlatform] = useState(); + + const { t }: { t: TranslationFunc } = useTranslation(); + + async function getVersion() { + const ver = await ipcRenderer.invoke(Events.GetVersion); + setVersion(ver); + } + + useMount(async () => { + setPlatform(await ipcRenderer.invoke(Events.GetPlatform)); + }); + + useUpdateEffect(() => { + if (props.open) { + settingsService.get().then((settings) => { + setSettings(settings); + form.resetFields(); + form.setFieldsValue({ + ...settings, + }); + }); + + getVersion(); + + if (props.versionInfo) { + setVersionInfo(props.versionInfo); + } + } + }, [props.open]); + + return ( + + props.onCancel?.( + event as React.MouseEvent, + ) + } + > + {t('close')} + + } + destroyOnClose + title={t('settings')} + > +
{ + await settingsService.save(values); + await props.onChange?.(values as Settings); + }} + > + + + + + + {({ getFieldsValue }) => { + const { wallpaperMode } = getFieldsValue() as Settings; + if ( + wallpaperMode === WallpaperMode.Replace && + platform === 'linux' + ) { + return null; + } + return ( + + {(scaleModeOptions) => { + const name = + settings?.wallpaperMode === WallpaperMode.Cover + ? 'webScaleMode' + : 'scaleMode'; + return ( + + + + +
+ ); +}; + +export default WallpaperRuleModal; diff --git a/src/pages/rule/index.tsx b/src/pages/rule/index.tsx new file mode 100644 index 0000000..075778b --- /dev/null +++ b/src/pages/rule/index.tsx @@ -0,0 +1,258 @@ +import React, { useState } from 'react'; +import { ruleService } from '@/services/rule'; +import { useMount, useUnmount } from 'ahooks'; +import { ipcRenderer } from 'electron'; +import { + ChangeType, + Events, + FormMode, + WallpaperType, +} from '../../../cross/enums'; +import { ColumnsType } from 'antd/es/table/InternalTable'; +import { Button, Image, Popconfirm, Space } from 'antd'; +import WallpaperRule from './components/WallpaperRuleModal'; +import { useNavigate, useParams } from 'react-router-dom'; +import { ArrowLeftOutlined } from '@ant-design/icons'; +import { weekdayService } from '@/services/weekday'; +import { Rule, TranslationFunc, Weekday } from '../../../cross/interface'; +import { useTranslation } from 'react-i18next'; +import WeekComponent from '@/components/WeekComponent'; +import PageContainer from '@/components/PageContainer'; +import CenterTable from '@/components/CenterTable'; + +const RuleIndex: React.FC = () => { + const [dataSource, setDataSource] = useState([]); + const [createModalOpen, setCreateModalOpen] = useState(false); + const [updateModalOpen, setUpdateModalOpen] = useState(false); + const [currentRow, setCurrentRow] = useState(); + const [weekday, setWeekday] = useState(); + + const navigate = useNavigate(); + const { id: weekdayId } = useParams(); + + const { t }: { t: TranslationFunc } = useTranslation(); + + async function refresh() { + const rules = await ruleService.get(); + setDataSource(rules.filter((rule) => rule.weekdayId === weekdayId)); + } + + useMount(async () => { + refresh(); + setWeekday( + (await weekdayService.get()).find((item) => item.id === weekdayId), + ); + }); + + useUnmount(() => { + ipcRenderer.removeAllListeners(Events.ResetSchedule); + }); + + const columns: ColumnsType = [ + { + title: t('rule.timeSlot'), + dataIndex: 'time', + width: 180, + render: (value, record) => { + return ( + + {record.start} - {record.end} + + ); + }, + }, + { + title: t('rule.period'), + dataIndex: 'days', + width: 200, + render: (value, record) => { + return ( + + {(weekMap) => { + return weekday?.days?.map((day) => weekMap.get(day)).join(', '); + }} + + ); + }, + }, + { + title: t('rule.wallpaperType'), + dataIndex: 'wallpaperType', + width: 120, + render: (value) => { + switch (value) { + default: + case WallpaperType.Image: + return t('rule.wallpaperType.image'); + case WallpaperType.Video: + return t('rule.wallpaperType.video'); + } + }, + }, + { + title: t('rule.type'), + dataIndex: 'type', + width: 120, + render: (value) => { + switch (value) { + default: + case ChangeType.Fixed: + return t('rule.type.fixed'); + case ChangeType.AutoChange: + return t('rule.type.autoChange'); + } + }, + }, + { + title: t('rule.path'), + dataIndex: 'path', + width: 250, + ellipsis: true, + render: (value, record) => { + switch (record.type) { + default: + case ChangeType.Fixed: + switch (record.wallpaperType) { + default: + case WallpaperType.Image: + return ( + + {record.paths?.map((item) => { + return ( + + ); + })} + + ); + case WallpaperType.Video: + return ( + + {record.paths?.map((item) => { + return ( + + ); + } + + case ChangeType.AutoChange: + return {value}; + } + }, + }, + { + title: t('rule.interval'), + dataIndex: 'interval', + width: 120, + render: (value, record) => { + if (record.wallpaperType === WallpaperType.Video) { + return '-'; + } + return value || '-'; + }, + }, + { + title: t('rule.isRandom'), + dataIndex: 'isRandom', + width: 120, + render: (value) => { + return value ? t('yes') : t('no'); + }, + }, + { + title: t('operation'), + dataIndex: 'options', + width: 180, + fixed: 'right', + render: (value, record) => { + return ( + + { + setCurrentRow(record); + setUpdateModalOpen(true); + }} + > + {t('edit')} + + + { + await ruleService.delete(record.id as string); + refresh(); + }} + > + {t('delete')} + + + ); + }, + }, + ]; + + return ( + + +
+ + + + + setCreateModalOpen(false)} + onChange={async () => { + setCreateModalOpen(false); + refresh(); + }} + /> +
+ + + + setUpdateModalOpen(false)} + values={currentRow} + mode={FormMode.Update} + onChange={() => { + setUpdateModalOpen(false); + refresh(); + }} + /> +
+
+ ); +}; + +export default RuleIndex; diff --git a/src/pages/wallpaper/components/LiveWallpaper/index.module.less b/src/pages/wallpaper/components/LiveWallpaper/index.module.less new file mode 100644 index 0000000..2fbcf05 --- /dev/null +++ b/src/pages/wallpaper/components/LiveWallpaper/index.module.less @@ -0,0 +1,7 @@ +.live-wallpaper-container { + position: absolute; + left: 0; + top: 0; + min-width: 100vw; + min-height: 100vh; +} diff --git a/src/pages/wallpaper/components/LiveWallpaper/index.tsx b/src/pages/wallpaper/components/LiveWallpaper/index.tsx new file mode 100644 index 0000000..6738000 --- /dev/null +++ b/src/pages/wallpaper/components/LiveWallpaper/index.tsx @@ -0,0 +1,102 @@ +import React, { LegacyRef, useRef, useState } from 'react'; +import { ipcRenderer, type IpcRendererEvent } from 'electron'; +import { Events, WallpaperType } from '../../../../../cross/enums'; +import { useParams } from 'react-router-dom'; +import { useMount, useUnmount, useUpdateEffect } from 'ahooks'; +import styles from './index.module.less'; + +export interface LiveWallpaperProps { + style?: React.CSSProperties; +} + +const LiveWallpaper: React.FC = (props) => { + const [paths, setPaths] = useState([]); + const [currentIndex, setCurrentIndex] = useState(0); + const { displayId } = useParams(); + + const videoRef = useRef(); + + const liveWallpaperHandler: ( + event: IpcRendererEvent, + ...args: any[] + ) => void = (_, _paths: string[]) => { + setPaths(_paths); + setCurrentIndex(0); + }; + + const liveWallpaperMutedHandler: ( + event: IpcRendererEvent, + ...args: any[] + ) => void = (_, muted: boolean) => { + if (videoRef.current) { + videoRef.current.muted = muted; + } + }; + + const liveWallpaperVolumeHandler: ( + event: IpcRendererEvent, + ...args: any[] + ) => void = (_, volume: number) => { + if (videoRef.current) { + videoRef.current.volume = volume; + } + }; + + function registerLiveWallpaperEvents() { + ipcRenderer.on(Events.SetLiveWallpaper, liveWallpaperHandler); + + ipcRenderer.on(Events.SetLiveWallpaperMuted, liveWallpaperMutedHandler); + + ipcRenderer.on(Events.SetLiveWallpaperVolume, liveWallpaperVolumeHandler); + } + + function unregisterLiveWallpaperEvents() { + ipcRenderer.off(Events.SetLiveWallpaper, liveWallpaperHandler); + + ipcRenderer.off(Events.SetLiveWallpaperMuted, liveWallpaperMutedHandler); + + ipcRenderer.off(Events.SetLiveWallpaperVolume, liveWallpaperVolumeHandler); + } + + useMount(() => { + registerLiveWallpaperEvents(); + }); + + useUnmount(() => { + unregisterLiveWallpaperEvents(); + }); + + useUpdateEffect(() => { + if (!videoRef.current) return; + videoRef.current.src = paths[currentIndex]; + videoRef.current.load(); + videoRef.current.play(); + }, [currentIndex]); + + return ( +