diff --git a/detach/yarn.lock b/detach/yarn.lock index 82bcd74..4ba4411 100644 --- a/detach/yarn.lock +++ b/detach/yarn.lock @@ -5864,7 +5864,7 @@ lodash.memoize@^4.1.2: lodash.throttle@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + resolved "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== lodash.transform@^4.6.0: diff --git a/feature/src/views/settings/index.vue b/feature/src/views/settings/index.vue index 6c5a826..d24b206 100644 --- a/feature/src/views/settings/index.vue +++ b/feature/src/views/settings/index.vue @@ -283,14 +283,15 @@ state.local = perf.local; state.global = defaultGlobal; const setConfig = debounce(() => { + const { perf } = localConfig.getConfig(); localConfig.setConfig( JSON.parse( JSON.stringify({ perf: { + ...perf, shortCut: state.shortCut, common: state.common, local: state.local, - custom: state.custom, }, global: state.global, }) diff --git a/feature/src/views/settings/user-info.vue b/feature/src/views/settings/user-info.vue index 53c2720..b486443 100644 --- a/feature/src/views/settings/user-info.vue +++ b/feature/src/views/settings/user-info.vue @@ -64,6 +64,8 @@ const theme = ref(perf.custom.theme); state.custom = perf.custom || {}; const setConfig = debounce(() => { + const { perf } = localConfig.getConfig(); + localConfig.setConfig( JSON.parse( JSON.stringify({ diff --git a/package.json b/package.json index d4c9d24..a69712f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rubick", - "version": "4.2.0-beta.1", + "version": "4.2.1", "author": "muwoo <2424880409@qq.com>", "private": true, "scripts": { diff --git a/public/icons/icon.icns b/public/icons/icon.icns index 61e33a8..5721fad 100644 Binary files a/public/icons/icon.icns and b/public/icons/icon.icns differ diff --git a/public/icons/shield@2x.png b/public/icons/shield@2x.png new file mode 100644 index 0000000..073fe5c Binary files /dev/null and b/public/icons/shield@2x.png differ diff --git a/src/core/app-search/get-mac-app/app2png.ts b/src/core/app-search/get-mac-app/app2png.ts index 6211715..bfa9f57 100644 --- a/src/core/app-search/get-mac-app/app2png.ts +++ b/src/core/app-search/get-mac-app/app2png.ts @@ -32,63 +32,6 @@ const getIconFile = (appFileInput) => { }); }; -// const sortIcons = (icons) => { -// const aWins = -1; -// const bWins = 1; -// const catWins = 0; -// return icons.sort((a, b) => { -// const aSize = parseInt(a.match(/(\d+)x\1/)[1], 10); -// const bSize = parseInt(b.match(/(\d+)x\1/)[1], 10); -// if (aSize === bSize) { -// if (a.indexOf('@2x') > -1) return aWins; -// if (b.indexOf('@2x') > -1) return bWins; -// return catWins; -// } -// if (aSize > bSize) return aWins; -// if (aSize < bSize) return bWins; -// return catWins; -// }); -// }; - -// const icnsToPng = (iconFile, pngFileOutput) => { -// const outputDir = pngFileOutput.split('.')[0] + '.iconset' -// return new Promise((resolve, reject) => { -// exec(`iconutil --convert iconset '${iconFile}' --output '${outputDir}'`, (error) => { -// if (error) return reject(error) -// fs.readdir(outputDir, (error, files) => { -// if (error) { -// return resolve(tiffToPng(iconFile, pngFileOutput)) -// } -// const realIcons = files.map((file) => { -// return path.join(outputDir, file) -// }) -// const biggestIcon = sortIcons(realIcons).find(Boolean) -// fs.rename(biggestIcon, pngFileOutput, (error) => { -// error ? reject(error) : resolve(realIcons.filter((file) => { -// return file !== biggestIcon -// })) -// }) -// }) -// }) -// }).then((files) => { -// // Cleanup temp icons -// return Promise.all(files.map((file) => { -// return new Promise((resolve, reject) => { -// fs.unlink(file, (error) => { -// error ? reject(error) : resolve() -// }) -// }) -// })) -// }).then(() => { -// // Cleanup temp directory -// return new Promise((resolve, reject) => { -// fs.rmdir(outputDir, (error) => { -// error ? reject(error) : resolve() -// }) -// }) -// }) -// } - const tiffToPng = (iconFile, pngFileOutput) => { return new Promise((resolve, reject) => { exec( diff --git a/src/core/app-search/get-mac-app/getApps.ts b/src/core/app-search/get-mac-app/getApps.ts index 7bad053..4e41d59 100644 --- a/src/core/app-search/get-mac-app/getApps.ts +++ b/src/core/app-search/get-mac-app/getApps.ts @@ -1,23 +1,23 @@ -import { spawn } from "child_process"; -import plist from "plist"; +import { spawn } from 'child_process'; +import plist from 'plist'; export default function getApps(resolve, reject, filterByAppName = false) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore let resultBuffer = new Buffer.from([]); - const profileInstalledApps = spawn("/usr/sbin/system_profiler", [ - "-xml", - "-detailLevel", - "mini", - "SPApplicationsDataType", + const profileInstalledApps = spawn('/usr/sbin/system_profiler', [ + '-xml', + '-detailLevel', + 'mini', + 'SPApplicationsDataType', ]); - profileInstalledApps.stdout.on("data", (chunckBuffer) => { + profileInstalledApps.stdout.on('data', (chunckBuffer) => { resultBuffer = Buffer.concat([resultBuffer, chunckBuffer]); }); - profileInstalledApps.on("exit", (exitCode) => { + profileInstalledApps.on('exit', (exitCode) => { if (exitCode !== 0) { reject([]); return; @@ -37,7 +37,7 @@ export default function getApps(resolve, reject, filterByAppName = false) { } }); - profileInstalledApps.on("error", (err) => { + profileInstalledApps.on('error', (err) => { reject(err); }); } diff --git a/src/core/plugin-handler/index.ts b/src/core/plugin-handler/index.ts index d60b20c..11e397f 100644 --- a/src/core/plugin-handler/index.ts +++ b/src/core/plugin-handler/index.ts @@ -61,7 +61,7 @@ class AdapterHandler { const packageJSON = JSON.parse( fs.readFileSync(`${this.baseDir}/package.json`, 'utf-8') ); - const registryUrl = `https://registry.npm.taobao.org/${name}`; + const registryUrl = `${this.registry}${name}`; // 从npm源中获取依赖包的最新版本 try { @@ -185,40 +185,6 @@ class AdapterHandler { console.log(message); }); }); - - // if (cmd !== 'link') { - // args = args - // .concat('--color=always') - // .concat('--save') - // .concat(`--registry=${this.registry}`); - // } - - // const npm = spawn('npm', args, { - // cwd: this.baseDir, - // }); - // - // console.log(args); - // - // let output = ''; - // npm.stdout - // .on('data', (data: string) => { - // output += data; // 获取输出日志 - // }) - // .pipe(process.stdout); - // - // npm.stderr - // .on('data', (data: string) => { - // output += data; // 获取报错日志 - // }) - // .pipe(process.stderr); - // - // npm.on('close', (code: number) => { - // if (!code) { - // resolve({ code: 0, data: output }); // 如果没有报错就输出正常日志 - // } else { - // reject({ code: code, data: output }); // 如果报错就输出报错日志 - // } - // }); }); } } diff --git a/src/main/common/api.ts b/src/main/common/api.ts index 73bd370..e08f9f3 100644 --- a/src/main/common/api.ts +++ b/src/main/common/api.ts @@ -139,6 +139,7 @@ class API extends DBInstance { public hideMainWindow(arg, window) { window.hide(); } + public showMainWindow(arg, window) { window.show(); } @@ -156,6 +157,15 @@ class API extends DBInstance { if (!originWindow) return; const targetHeight = height; originWindow.setSize(originWindow.getSize()[0], targetHeight); + const screenPoint = screen.getCursorScreenPoint(); + const display = screen.getDisplayNearestPoint(screenPoint); + const position = + originWindow.getPosition()[1] + targetHeight > display.bounds.height + ? height - 60 + : 0; + originWindow.webContents.executeJavaScript( + `window.setPosition && typeof window.setPosition === "function" && window.setPosition(${position})` + ); } public setSubInput({ data }, window, e) { @@ -326,6 +336,7 @@ class API extends DBInstance { shell.showItemInFolder(data.path); return true; } + public async getFileIcon({ data }) { const nativeImage = await app.getFileIcon(data.path, { size: 'normal' }); return nativeImage.toDataURL(); diff --git a/src/renderer/App.vue b/src/renderer/App.vue index 5d9f6f7..be72932 100644 --- a/src/renderer/App.vue +++ b/src/renderer/App.vue @@ -35,6 +35,7 @@