Compare commits

..

7 Commits

Author SHA1 Message Date
muwoo
a0644c0ccf 🐛 fix #333, fix #327 2023-12-27 11:34:55 +08:00
muwoo
583e9934fa icon 替换 2023-11-18 13:49:35 +08:00
muwoo
7e66b3f3e9 linux 构建包修复 2023-11-16 15:54:58 +08:00
muwoo
342f0f36a5 linux 构建包修复 2023-11-16 15:38:06 +08:00
muwoo
2a75e440ad linux 构建包修复 2023-11-16 15:25:33 +08:00
muwoo
11f53d1e07 linux 构建包修复 2023-11-16 15:19:37 +08:00
muwoo
beb8134539 linux 构建包修复 2023-11-16 15:03:50 +08:00
28 changed files with 49 additions and 118 deletions

View File

@@ -46,6 +46,7 @@ jobs:
run: | run: |
sudo apt-get install libxtst-dev libpng++-dev sudo apt-get install libxtst-dev libpng++-dev
sudo apt-get install --no-install-recommends -y icnsutils graphicsmagick xz-utils sudo apt-get install --no-install-recommends -y icnsutils graphicsmagick xz-utils
sudo snap install snapcraft --classic
# step3: yarn # step3: yarn
- name: Yarn install - name: Yarn install
run: | run: |

3
.gitignore vendored
View File

@@ -1,6 +1,7 @@
.DS_Store .DS_Store
node_modules node_modules
/build build/*
!build/icons
# local env files # local env files

View File

@@ -2,7 +2,7 @@ English | [简体中文](./README.zh-CN.md)
<div align= "center"> <div align= "center">
<img align="center" width=200 src="https://user-images.githubusercontent.com/21073039/128333805-73e086f0-5523-46a3-a096-cba80b904c46.png" /> <img align="center" width=200 src="./public/logo.png" />
</div> </div>

View File

@@ -2,10 +2,9 @@
<div align= "center"> <div align= "center">
<img align="center" width=200 src="https://user-images.githubusercontent.com/21073039/128333805-73e086f0-5523-46a3-a096-cba80b904c46.png" /> <img align="center" width=200 src="./public/logo.png" />
</div> </div>
<div align= "center"> <div align= "center">
<h1>Rubick</h1> <h1>Rubick</h1>
@@ -14,7 +13,7 @@
<img alt="release" src="https://img.shields.io/github/package-json/v/rubickCenter/rubick" /> <img alt="release" src="https://img.shields.io/github/package-json/v/rubickCenter/rubick" />
</a> </a>
<a href="https://github.com/rubickCenter/rubick/actions"> <a href="https://github.com/rubickCenter/rubick/actions">
<img alt=building src=https://img.shields.io/github/workflow/status/rubickCenter/rubick/Build> <img alt=building src=https://img.shields.io/github/actions/workflow/status/rubickCenter/rubick/main.yml>
</a> </a>
<a href="https://github.com/rubickCenter/rubick/blob/master/LICENSE"> <a href="https://github.com/rubickCenter/rubick/blob/master/LICENSE">
<img alt="npm" src="https://img.shields.io/github/license/rubickCenter/rubick" /> <img alt="npm" src="https://img.shields.io/github/license/rubickCenter/rubick" />

View File

@@ -5864,7 +5864,7 @@ lodash.memoize@^4.1.2:
lodash.throttle@^4.1.1: lodash.throttle@^4.1.1:
version "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== integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==
lodash.transform@^4.6.0: lodash.transform@^4.6.0:

View File

@@ -3,7 +3,7 @@
"pluginName": "系统菜单", "pluginName": "系统菜单",
"description": "系统菜单", "description": "系统菜单",
"main": "index.html", "main": "index.html",
"logo": "https://pic1.zhimg.com/80/v2-c09780808301668a82e6646cb42f0806_720w.png", "logo": "https://pic1.zhimg.com/80/v2-29152fe716010751db835adf591421f8_720w.png",
"version": "0.0.0", "version": "0.0.0",
"preload":"preload.js", "preload":"preload.js",
"pluginType": "ui", "pluginType": "ui",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -283,14 +283,15 @@ state.local = perf.local;
state.global = defaultGlobal; state.global = defaultGlobal;
const setConfig = debounce(() => { const setConfig = debounce(() => {
const { perf } = localConfig.getConfig();
localConfig.setConfig( localConfig.setConfig(
JSON.parse( JSON.parse(
JSON.stringify({ JSON.stringify({
perf: { perf: {
...perf,
shortCut: state.shortCut, shortCut: state.shortCut,
common: state.common, common: state.common,
local: state.local, local: state.local,
custom: state.custom,
}, },
global: state.global, global: state.global,
}) })

View File

@@ -64,6 +64,8 @@ const theme = ref(perf.custom.theme);
state.custom = perf.custom || {}; state.custom = perf.custom || {};
const setConfig = debounce(() => { const setConfig = debounce(() => {
const { perf } = localConfig.getConfig();
localConfig.setConfig( localConfig.setConfig(
JSON.parse( JSON.parse(
JSON.stringify({ JSON.stringify({

View File

@@ -1,6 +1,6 @@
{ {
"name": "rubick", "name": "rubick",
"version": "4.1.6", "version": "4.2.1",
"author": "muwoo <2424880409@qq.com>", "author": "muwoo <2424880409@qq.com>",
"private": true, "private": true,
"scripts": { "scripts": {

View File

@@ -3,7 +3,7 @@
"pluginName": "系统菜单", "pluginName": "系统菜单",
"description": "系统菜单", "description": "系统菜单",
"main": "index.html", "main": "index.html",
"logo": "https://pic1.zhimg.com/80/v2-c09780808301668a82e6646cb42f0806_720w.png", "logo": "https://pic1.zhimg.com/80/v2-29152fe716010751db835adf591421f8_720w.png",
"version": "0.0.0", "version": "0.0.0",
"preload":"preload.js", "preload":"preload.js",
"pluginType": "ui", "pluginType": "ui",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
public/icons/shield@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 828 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -1,5 +1,5 @@
export default { export default {
version: 4, version: 6,
perf: { perf: {
custom: { custom: {
theme: 'SPRING', theme: 'SPRING',

View File

@@ -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) => { const tiffToPng = (iconFile, pngFileOutput) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
exec( exec(

View File

@@ -1,23 +1,23 @@
import { spawn } from "child_process"; import { spawn } from 'child_process';
import plist from "plist"; import plist from 'plist';
export default function getApps(resolve, reject, filterByAppName = false) { export default function getApps(resolve, reject, filterByAppName = false) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore // @ts-ignore
let resultBuffer = new Buffer.from([]); let resultBuffer = new Buffer.from([]);
const profileInstalledApps = spawn("/usr/sbin/system_profiler", [ const profileInstalledApps = spawn('/usr/sbin/system_profiler', [
"-xml", '-xml',
"-detailLevel", '-detailLevel',
"mini", 'mini',
"SPApplicationsDataType", 'SPApplicationsDataType',
]); ]);
profileInstalledApps.stdout.on("data", (chunckBuffer) => { profileInstalledApps.stdout.on('data', (chunckBuffer) => {
resultBuffer = Buffer.concat([resultBuffer, chunckBuffer]); resultBuffer = Buffer.concat([resultBuffer, chunckBuffer]);
}); });
profileInstalledApps.on("exit", (exitCode) => { profileInstalledApps.on('exit', (exitCode) => {
if (exitCode !== 0) { if (exitCode !== 0) {
reject([]); reject([]);
return; return;
@@ -37,7 +37,7 @@ export default function getApps(resolve, reject, filterByAppName = false) {
} }
}); });
profileInstalledApps.on("error", (err) => { profileInstalledApps.on('error', (err) => {
reject(err); reject(err);
}); });
} }

View File

@@ -61,7 +61,7 @@ class AdapterHandler {
const packageJSON = JSON.parse( const packageJSON = JSON.parse(
fs.readFileSync(`${this.baseDir}/package.json`, 'utf-8') fs.readFileSync(`${this.baseDir}/package.json`, 'utf-8')
); );
const registryUrl = `https://registry.npm.taobao.org/${name}`; const registryUrl = `${this.registry}${name}`;
// 从npm源中获取依赖包的最新版本 // 从npm源中获取依赖包的最新版本
try { try {
@@ -185,40 +185,6 @@ class AdapterHandler {
console.log(message); 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 }); // 如果报错就输出报错日志
// }
// });
}); });
} }
} }

View File

@@ -139,6 +139,7 @@ class API extends DBInstance {
public hideMainWindow(arg, window) { public hideMainWindow(arg, window) {
window.hide(); window.hide();
} }
public showMainWindow(arg, window) { public showMainWindow(arg, window) {
window.show(); window.show();
} }
@@ -156,6 +157,15 @@ class API extends DBInstance {
if (!originWindow) return; if (!originWindow) return;
const targetHeight = height; const targetHeight = height;
originWindow.setSize(originWindow.getSize()[0], targetHeight); 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) { public setSubInput({ data }, window, e) {
@@ -326,6 +336,7 @@ class API extends DBInstance {
shell.showItemInFolder(data.path); shell.showItemInFolder(data.path);
return true; return true;
} }
public async getFileIcon({ data }) { public async getFileIcon({ data }) {
const nativeImage = await app.getFileIcon(data.path, { size: 'normal' }); const nativeImage = await app.getFileIcon(data.path, { size: 'normal' });
return nativeImage.toDataURL(); return nativeImage.toDataURL();

View File

@@ -9,7 +9,7 @@ function createTray(window: BrowserWindow): Promise<Tray> {
return new Promise((resolve) => { return new Promise((resolve) => {
let icon; let icon;
if (commonConst.macOS()) { if (commonConst.macOS()) {
icon = './icons/icon@3x.png'; icon = './icons/iconTemplate@2x.png';
} else if (commonConst.windows()) { } else if (commonConst.windows()) {
icon = icon =
parseInt(os.release()) < 10 parseInt(os.release()) < 10

View File

@@ -35,6 +35,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { watch, ref, toRaw } from 'vue'; import { watch, ref, toRaw } from 'vue';
import { exec } from 'child_process';
import Result from './components/result.vue'; import Result from './components/result.vue';
import Search from './components/search.vue'; import Search from './components/search.vue';
import getWindowHeight from '../common/utils/getWindowHeight'; import getWindowHeight from '../common/utils/getWindowHeight';
@@ -142,6 +143,12 @@ const choosePlugin = (plugin) => {
const localPlugins = getGlobal('LOCAL_PLUGINS').getLocalPlugins(); const localPlugins = getGlobal('LOCAL_PLUGINS').getLocalPlugins();
const currentChoose = plugin || pluginHistory.value[currentSelect.value]; const currentChoose = plugin || pluginHistory.value[currentSelect.value];
let hasRemove = true; let hasRemove = true;
if (currentChoose.pluginType === 'app') {
hasRemove = false;
changePluginHistory(currentChoose);
exec(currentChoose.action);
return;
}
localPlugins.find((plugin) => { localPlugins.find((plugin) => {
if (plugin.name === currentChoose.originName) { if (plugin.name === currentChoose.originName) {
hasRemove = false; hasRemove = false;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -33,10 +33,10 @@ module.exports = {
productName: 'rubick', productName: 'rubick',
appId: 'com.muwoo.rubick', appId: 'com.muwoo.rubick',
compression: 'maximum', compression: 'maximum',
afterPack: './release.js', // afterPack: './release.js',
afterAllArtifactBuild: () => { // afterAllArtifactBuild: () => {
return ['./build/app.asar.gz']; // return ['./build/app.asar.gz'];
}, // },
directories: { directories: {
output: 'build', output: 'build',
}, },