mirror of
https://github.com/rubickCenter/rubick
synced 2026-03-06 22:14:16 +08:00
Compare commits
42 Commits
v4.2.2
...
47359308fc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
47359308fc | ||
|
|
3f03e5578e | ||
|
|
73cef1512c | ||
|
|
42aec3403a | ||
|
|
8c15dba68d | ||
|
|
37647de7a8 | ||
|
|
1b2c9b3577 | ||
|
|
7cb832829d | ||
|
|
02da06c450 | ||
|
|
e613fc19d4 | ||
|
|
c7807aeb3f | ||
|
|
9813573679 | ||
|
|
61ec18f0dc | ||
|
|
5ca1ba1271 | ||
|
|
8c3186afef | ||
|
|
de0e9ed8f2 | ||
|
|
ef85084730 | ||
|
|
b4b7c81b60 | ||
|
|
4b79cce2f4 | ||
|
|
ae10dac5f7 | ||
|
|
1e0babe22d | ||
|
|
5ec18caa72 | ||
|
|
b7d8932291 | ||
|
|
5608a147f7 | ||
|
|
132fb94289 | ||
|
|
bb1a74b3b9 | ||
|
|
bf9da854c7 | ||
|
|
a2c5bcc90c | ||
|
|
b9f4333c01 | ||
|
|
bbeddb3fe6 | ||
|
|
4a2ca33e02 | ||
|
|
0578c7c7eb | ||
|
|
ef34452a4f | ||
|
|
286d9da8d1 | ||
|
|
6b9d5182bf | ||
|
|
2053491782 | ||
|
|
e128d01b81 | ||
|
|
c3bc0bdb9e | ||
|
|
f1f4e62177 | ||
|
|
c07d4bae55 | ||
|
|
c78dd9c4b6 | ||
|
|
472879f9b2 |
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [macos-11, windows-2019, ubuntu-latest]
|
os: [macos-latest, windows-2019, ubuntu-latest]
|
||||||
|
|
||||||
# create steps
|
# create steps
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
39
README.md
39
README.md
@@ -1,36 +1,22 @@
|
|||||||
English | [简体中文](./README.zh-CN.md)
|
English | [简体中文](./README.zh-CN.md)
|
||||||
|
|
||||||
|
|
||||||
<div align= "center">
|
<div align= "center">
|
||||||
<img align="center" width=200 src="./public/logo.png" />
|
<img align="center" width=200 src="./public/logo.png" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
<div align= "center">
|
<h1>Rubick</h1>
|
||||||
<h1>Rubick</h1>
|
<img alt="downloads" src="https://img.shields.io/github/downloads/rubickCenter/rubick/total" />
|
||||||
|
<a href="https://github.com/rubickCenter/rubick/releases"><img alt="latest release" src="https://img.shields.io/github/package-json/v/rubickCenter/rubick" /></a>
|
||||||
<img alt="release" src="https://img.shields.io/github/downloads/rubickCenter/rubick/total" />
|
<a href="https://github.com/rubickCenter/rubick/actions"><img alt="github action building" src="https://img.shields.io/github/actions/workflow/status/rubickCenter/rubick/main.yml" /></a>
|
||||||
<a href="https://github.com/rubickCenter/rubick/releases">
|
<a href="https://github.com/rubickCenter/rubick/blob/master/LICENSE"><img alt="license" src="https://img.shields.io/github/license/rubickCenter/rubick" /></a>
|
||||||
<img alt="release" src="https://img.shields.io/github/package-json/v/rubickCenter/rubick" />
|
<a href="https://github.com/rubickCenter/rubick/stargazers"><img alt="github stars" src="https://img.shields.io/github/stars/rubickCenter/rubick?style=social" /></a>
|
||||||
</a>
|
<a href="https://gitee.com/monkeyWang/rubick"><img alt="gitee mirror" src="https://img.shields.io/badge/Gitee--yellow.svg?style=social&logo=data:image/svg+xml;base64,PHN2ZyB0PSIxNTc0ODM3MTM4ODM3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE3NzAiICAgICB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPiAgICA8cGF0aCBkPSJNODkxIDQyOC44SDQ2NS44Yy0yMC40IDAtMzcgMTYuNS0zNyAzN3Y5Mi40YzAgMjAuNCAxNi41IDM3IDM3IDM3aDI1OC45YzIwLjQgMCAzNyAxNi42IDM3IDM3djE4LjRjMCA2MS4zLTQ5LjcgMTEwLjktMTEwLjkgMTEwLjlIMjk5LjRjLTIwLjQgMC0zNy0xNi42LTM3LTM3VjM3My4yYzAtNjEuMyA0OS43LTExMC45IDExMC45LTExMC45aDUxNy42YzIwLjQgMCAzNy0xNi41IDM3LTM3bDAuMS05Mi4zYzAtMjAuNC0xNi41LTM3LTM3LTM3SDM3My4zQzIyMC4yIDk2IDk2IDIyMC4yIDk2IDM3My4zVjg5MWMwIDIwLjQgMTYuNiAzNyAzNyAzN2g1NDUuNEM4MTYuMiA5MjggOTI4IDgxNi4zIDkyOCA2NzguNFY0NjUuOGMwLTIwLjQtMTYuNi0zNy0zNy0zN3oiICAgICAgICAgIGZpbGw9IiNkODFlMDYiIHAtaWQ9IjE3NzEiPjwvcGF0aD48L3N2Zz4=" /></a>
|
||||||
<a href="https://github.com/rubickCenter/rubick/actions">
|
|
||||||
<img alt=building src=https://img.shields.io/github/actions/workflow/status/rubickCenter/rubick/main.yml>
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/rubickCenter/rubick/blob/master/LICENSE">
|
|
||||||
<img alt="npm" src="https://img.shields.io/github/license/rubickCenter/rubick" />
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/rubickCenter/rubick/stargazers">
|
|
||||||
<img alt="star" src="https://img.shields.io/github/stars/rubickCenter/rubick?style=social">
|
|
||||||
</a>
|
|
||||||
<a href="https://gitee.com/monkeyWang/rubick">
|
|
||||||
<img alt="码云" src="https://img.shields.io/badge/Gitee--yellow.svg?style=social&logo=data:image/svg+xml;base64,PHN2ZyB0PSIxNTc0ODM3MTM4ODM3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE3NzAiICAgICB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPiAgICA8cGF0aCBkPSJNODkxIDQyOC44SDQ2NS44Yy0yMC40IDAtMzcgMTYuNS0zNyAzN3Y5Mi40YzAgMjAuNCAxNi41IDM3IDM3IDM3aDI1OC45YzIwLjQgMCAzNyAxNi42IDM3IDM3djE4LjRjMCA2MS4zLTQ5LjcgMTEwLjktMTEwLjkgMTEwLjlIMjk5LjRjLTIwLjQgMC0zNy0xNi42LTM3LTM3VjM3My4yYzAtNjEuMyA0OS43LTExMC45IDExMC45LTExMC45aDUxNy42YzIwLjQgMCAzNy0xNi41IDM3LTM3bDAuMS05Mi4zYzAtMjAuNC0xNi41LTM3LTM3LTM3SDM3My4zQzIyMC4yIDk2IDk2IDIyMC4yIDk2IDM3My4zVjg5MWMwIDIwLjQgMTYuNiAzNyAzNyAzN2g1NDUuNEM4MTYuMiA5MjggOTI4IDgxNi4zIDkyOCA2NzguNFY0NjUuOGMwLTIwLjQtMTYuNi0zNy0zNy0zN3oiICAgICAgICAgIGZpbGw9IiNkODFlMDYiIHAtaWQ9IjE3NzEiPjwvcGF0aD48L3N2Zz4="/>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div align= "center">
|
<div align= "center">
|
||||||
<img align="center" src="https://picx.zhimg.com/80/v2-f8fe09ef125dac5fdcbef3fe00f92b21_720w.png" />
|
<img align="center" src="https://picx.zhimg.com/80/v2-f8fe09ef125dac5fdcbef3fe00f92b21_720w.png" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Open-source plugin-based desktop efficiency toolbox. The plugins are installed and uninstalled based on npm, which is very lightweight. The plugin data supports webdav multi-terminal synchronization, which is very secure. It supports internal network deployment and can be customized for further development, which is very flexible.
|
Open-source plugin-based desktop efficiency toolbox. The plugins are installed and uninstalled based on npm, which is very lightweight. The plugin data supports webdav multi-terminal synchronization, which is very secure. It supports internal network deployment and can be customized for further development, which is very flexible.
|
||||||
|
|
||||||
## Get Rubick
|
## Get Rubick
|
||||||
@@ -104,11 +90,20 @@ If the project is helpful to you, you can buy me a cup of coffee as a reward!
|
|||||||
<img width="180" src="https://picx.zhimg.com/80/v2-3160247d6099053405e6cd2cb6afb5e5_720w.png">
|
<img width="180" src="https://picx.zhimg.com/80/v2-3160247d6099053405e6cd2cb6afb5e5_720w.png">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
## 友情链接
|
||||||
|
|
||||||
|
<a href="https://pro.kuaitu.cc/" target="_blank">
|
||||||
|
<img width="100" src="https://github.com/user-attachments/assets/6127488e-466b-4e71-98ab-00fb3c76553e" />
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
## Feedback
|
## Feedback
|
||||||
Those who are interested in this project or want to exchange and learn can scan the QR code and add the following WeChat, with the comment rubick, to help us grow better.
|
Those who are interested in this project or want to exchange and learn can scan the QR code and add the following WeChat, with the comment rubick, to help us grow better.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
<a href="https://hellogithub.com/repository/0a3e2484b44e481e9dcf1850e45193cd" target="_blank"><img src="https://api.hellogithub.com/v1/widgets/recommend.svg?rid=0a3e2484b44e481e9dcf1850e45193cd&claim_uid=vXGwjpmYNsBex0C" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" /></a>
|
||||||
|
|
||||||
## Contribute
|
## Contribute
|
||||||
This project exists thanks to all the people who contribute. [[Contribute](https://github.com/rubickCenter/rubick/graphs/contributors)]. <a href="https://github.com/rubickCenter/rubick/graphs/contributors"><img src="https://opencollective.com/rubick/contributors.svg?width=890&button=false" /></a>
|
This project exists thanks to all the people who contribute. [[Contribute](https://github.com/rubickCenter/rubick/graphs/contributors)]. <a href="https://github.com/rubickCenter/rubick/graphs/contributors"><img src="https://opencollective.com/rubick/contributors.svg?width=890&button=false" /></a>
|
||||||
|
|
||||||
|
|||||||
@@ -5,25 +5,14 @@
|
|||||||
<img align="center" width=200 src="./public/logo.png" />
|
<img align="center" width=200 src="./public/logo.png" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div align= "center">
|
<div align="center">
|
||||||
<h1>Rubick</h1>
|
<h1>Rubick</h1>
|
||||||
|
<img alt="累计下载数" src="https://img.shields.io/github/downloads/rubickCenter/rubick/total" />
|
||||||
<img alt="release" src="https://img.shields.io/github/downloads/rubickCenter/rubick/total" />
|
<a href="https://github.com/rubickCenter/rubick/releases"><img alt="最新发布版本" src="https://img.shields.io/github/package-json/v/rubickCenter/rubick" /></a>
|
||||||
<a href="https://github.com/rubickCenter/rubick/releases">
|
<a href="https://github.com/rubickCenter/rubick/actions"><img alt="github action 构建" src="https://img.shields.io/github/actions/workflow/status/rubickCenter/rubick/main.yml" /></a>
|
||||||
<img alt="release" src="https://img.shields.io/github/package-json/v/rubickCenter/rubick" />
|
<a href="https://github.com/rubickCenter/rubick/blob/master/LICENSE"><img alt="许可证" src="https://img.shields.io/github/license/rubickCenter/rubick" /></a>
|
||||||
</a>
|
<a href="https://github.com/rubickCenter/rubick/stargazers"><img alt="github 收藏数" src="https://img.shields.io/github/stars/rubickCenter/rubick?style=social" /></a>
|
||||||
<a href="https://github.com/rubickCenter/rubick/actions">
|
<a href="https://gitee.com/monkeyWang/rubick"><img alt="gitee 镜像源" src="https://img.shields.io/badge/Gitee--yellow.svg?style=social&logo=data:image/svg+xml;base64,PHN2ZyB0PSIxNTc0ODM3MTM4ODM3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE3NzAiICAgICB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPiAgICA8cGF0aCBkPSJNODkxIDQyOC44SDQ2NS44Yy0yMC40IDAtMzcgMTYuNS0zNyAzN3Y5Mi40YzAgMjAuNCAxNi41IDM3IDM3IDM3aDI1OC45YzIwLjQgMCAzNyAxNi42IDM3IDM3djE4LjRjMCA2MS4zLTQ5LjcgMTEwLjktMTEwLjkgMTEwLjlIMjk5LjRjLTIwLjQgMC0zNy0xNi42LTM3LTM3VjM3My4yYzAtNjEuMyA0OS43LTExMC45IDExMC45LTExMC45aDUxNy42YzIwLjQgMCAzNy0xNi41IDM3LTM3bDAuMS05Mi4zYzAtMjAuNC0xNi41LTM3LTM3LTM3SDM3My4zQzIyMC4yIDk2IDk2IDIyMC4yIDk2IDM3My4zVjg5MWMwIDIwLjQgMTYuNiAzNyAzNyAzN2g1NDUuNEM4MTYuMiA5MjggOTI4IDgxNi4zIDkyOCA2NzguNFY0NjUuOGMwLTIwLjQtMTYuNi0zNy0zNy0zN3oiICAgICAgICAgIGZpbGw9IiNkODFlMDYiIHAtaWQ9IjE3NzEiPjwvcGF0aD48L3N2Zz4=" /></a>
|
||||||
<img alt=building src=https://img.shields.io/github/actions/workflow/status/rubickCenter/rubick/main.yml>
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/rubickCenter/rubick/blob/master/LICENSE">
|
|
||||||
<img alt="npm" src="https://img.shields.io/github/license/rubickCenter/rubick" />
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/rubickCenter/rubick/stargazers">
|
|
||||||
<img alt="star" src="https://img.shields.io/github/stars/rubickCenter/rubick?style=social">
|
|
||||||
</a>
|
|
||||||
<a href="https://gitee.com/monkeyWang/rubick">
|
|
||||||
<img alt="码云" src="https://img.shields.io/badge/Gitee--yellow.svg?style=social&logo=data:image/svg+xml;base64,PHN2ZyB0PSIxNTc0ODM3MTM4ODM3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE3NzAiICAgICB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPiAgICA8cGF0aCBkPSJNODkxIDQyOC44SDQ2NS44Yy0yMC40IDAtMzcgMTYuNS0zNyAzN3Y5Mi40YzAgMjAuNCAxNi41IDM3IDM3IDM3aDI1OC45YzIwLjQgMCAzNyAxNi42IDM3IDM3djE4LjRjMCA2MS4zLTQ5LjcgMTEwLjktMTEwLjkgMTEwLjlIMjk5LjRjLTIwLjQgMC0zNy0xNi42LTM3LTM3VjM3My4yYzAtNjEuMyA0OS43LTExMC45IDExMC45LTExMC45aDUxNy42YzIwLjQgMCAzNy0xNi41IDM3LTM3bDAuMS05Mi4zYzAtMjAuNC0xNi41LTM3LTM3LTM3SDM3My4zQzIyMC4yIDk2IDk2IDIyMC4yIDk2IDM3My4zVjg5MWMwIDIwLjQgMTYuNiAzNyAzNyAzN2g1NDUuNEM4MTYuMiA5MjggOTI4IDgxNi4zIDkyOCA2NzguNFY0NjUuOGMwLTIwLjQtMTYuNi0zNy0zNy0zN3oiICAgICAgICAgIGZpbGw9IiNkODFlMDYiIHAtaWQ9IjE3NzEiPjwvcGF0aD48L3N2Zz4="/>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div align= "center">
|
<div align= "center">
|
||||||
|
|||||||
@@ -8,37 +8,37 @@
|
|||||||
>
|
>
|
||||||
<a-menu-item key="finder">
|
<a-menu-item key="finder">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<StarOutlined style="font-size: 18px;" />
|
<StarOutlined style="font-size: 16px" />
|
||||||
</template>
|
</template>
|
||||||
{{ $t('feature.market.explore') }}
|
{{ $t('feature.market.explore') }}
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
<a-menu-item key="worker">
|
<a-menu-item key="worker">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<SendOutlined style="transform: rotate(-45deg); font-size: 18px;" />
|
<SendOutlined style="transform: rotate(-45deg); font-size: 16px" />
|
||||||
</template>
|
</template>
|
||||||
{{ $t('feature.market.efficiency') }}
|
{{ $t('feature.market.efficiency') }}
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
<a-menu-item key="tools">
|
<a-menu-item key="tools">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<SearchOutlined style="font-size: 18px;" />
|
<SearchOutlined style="font-size: 16px" />
|
||||||
</template>
|
</template>
|
||||||
{{ $t('feature.market.searchTool') }}
|
{{ $t('feature.market.searchTool') }}
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
<a-menu-item key="image">
|
<a-menu-item key="image">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<FileImageOutlined style="font-size: 18px;" />
|
<FileImageOutlined style="font-size: 16px" />
|
||||||
</template>
|
</template>
|
||||||
{{ $t('feature.market.imageTool') }}
|
{{ $t('feature.market.imageTool') }}
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
<a-menu-item key="devPlugin">
|
<a-menu-item key="devPlugin">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<CodeOutlined style="font-size: 18px;" />
|
<CodeOutlined style="font-size: 16px" />
|
||||||
</template>
|
</template>
|
||||||
{{ $t('feature.market.developTool') }}
|
{{ $t('feature.market.developTool') }}
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
<a-menu-item key="system">
|
<a-menu-item key="system">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<DatabaseOutlined style="font-size: 18px;" />
|
<DatabaseOutlined style="font-size: 16px" />
|
||||||
</template>
|
</template>
|
||||||
{{ $t('feature.market.systemTool') }}
|
{{ $t('feature.market.systemTool') }}
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
@@ -72,7 +72,21 @@
|
|||||||
</a-sub-menu>
|
</a-sub-menu>
|
||||||
</a-menu>
|
</a-menu>
|
||||||
</div>
|
</div>
|
||||||
<div :class="['finder', 'result', 'devPlugin', 'image', 'tools', 'worker', 'system'].includes(active[0]) ? 'container' : 'more'">
|
<div
|
||||||
|
:class="
|
||||||
|
[
|
||||||
|
'finder',
|
||||||
|
'result',
|
||||||
|
'devPlugin',
|
||||||
|
'image',
|
||||||
|
'tools',
|
||||||
|
'worker',
|
||||||
|
'system',
|
||||||
|
].includes(active[0])
|
||||||
|
? 'container'
|
||||||
|
: 'more'
|
||||||
|
"
|
||||||
|
>
|
||||||
<keep-alive>
|
<keep-alive>
|
||||||
<router-view />
|
<router-view />
|
||||||
</keep-alive>
|
</keep-alive>
|
||||||
@@ -103,14 +117,14 @@ const active = computed(() => store.state.active);
|
|||||||
const { perf } = localConfig.getConfig();
|
const { perf } = localConfig.getConfig();
|
||||||
|
|
||||||
const changeMenu = (key: any) => {
|
const changeMenu = (key: any) => {
|
||||||
store.commit('commonUpdate', {active: [key]})
|
store.commit('commonUpdate', { active: [key] });
|
||||||
router.push(key);
|
router.push(key);
|
||||||
};
|
};
|
||||||
|
|
||||||
window.rubick.onPluginEnter(({ code }: { code: string }) => {
|
window.rubick.onPluginEnter(({ code }: { code: string }) => {
|
||||||
code = code === '已安装插件' ? 'installed' : code;
|
code = code === '已安装插件' ? 'installed' : code;
|
||||||
changeMenu(code);
|
changeMenu(code);
|
||||||
store.commit('commonUpdate', {active: [code]})
|
store.commit('commonUpdate', { active: [code] });
|
||||||
});
|
});
|
||||||
|
|
||||||
window.rubick.setSubInput((e: any) => {
|
window.rubick.setSubInput((e: any) => {
|
||||||
@@ -129,7 +143,7 @@ window.rubick.setSubInput((e: any) => {
|
|||||||
store.commit('setSearchValue', e.text);
|
store.commit('setSearchValue', e.text);
|
||||||
router.push('result');
|
router.push('result');
|
||||||
} else {
|
} else {
|
||||||
store.commit('commonUpdate', {active: ['finder']})
|
store.commit('commonUpdate', { active: ['finder'] });
|
||||||
router.push('finder');
|
router.push('finder');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -144,13 +158,16 @@ init();
|
|||||||
background: var(--color-body-bg2) !important;
|
background: var(--color-body-bg2) !important;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
border-right: none;
|
border-right: none;
|
||||||
.ant-menu-item, .ant-menu-submenu, .ant-menu-submenu-arrow {
|
.ant-menu-item,
|
||||||
|
.ant-menu-submenu,
|
||||||
|
.ant-menu-submenu-arrow {
|
||||||
color: var(--color-text-content);
|
color: var(--color-text-content);
|
||||||
&:active {
|
&:active {
|
||||||
background: none;
|
background: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.ant-menu-item-selected, .ant-menu-submenu-selected {
|
.ant-menu-item-selected,
|
||||||
|
.ant-menu-submenu-selected {
|
||||||
background-color: var(--color-list-hover);
|
background-color: var(--color-list-hover);
|
||||||
color: var(--ant-primary-color);
|
color: var(--ant-primary-color);
|
||||||
.ant-menu-submenu-arrow {
|
.ant-menu-submenu-arrow {
|
||||||
@@ -203,9 +220,12 @@ init();
|
|||||||
background: var(--color-body-bg2);
|
background: var(--color-body-bg2);
|
||||||
}
|
}
|
||||||
.left-menu {
|
.left-menu {
|
||||||
padding: 24px 16px;
|
padding: 16px;
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
|
:deep(.ant-menu) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
:deep(.ant-menu-item) {
|
:deep(.ant-menu-item) {
|
||||||
padding-left: 12px !important;
|
padding-left: 12px !important;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -219,7 +239,14 @@ init();
|
|||||||
}
|
}
|
||||||
:deep(.user-info) {
|
:deep(.user-info) {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 32px;
|
bottom: 16px;
|
||||||
|
width: calc(100% - 32px);
|
||||||
|
.ant-menu-submenu-title {
|
||||||
|
padding: 0 32px 0 8px;
|
||||||
|
.ant-menu-title-content {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
:deep(.ant-avatar) {
|
:deep(.ant-avatar) {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
|
||||||
let baseURL = 'https://gitcode.net/rubickcenter/rubick-database/-/raw/master';
|
let baseURL = 'https://gitee.com/monkeyWang/rubickdatabase/raw/master';
|
||||||
let access_token = '';
|
let access_token = '';
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -14,7 +14,7 @@ try {
|
|||||||
const instance = axios.create({
|
const instance = axios.create({
|
||||||
timeout: 4000,
|
timeout: 4000,
|
||||||
baseURL:
|
baseURL:
|
||||||
baseURL || 'https://gitcode.net/rubickcenter/rubick-database/-/raw/master',
|
baseURL || 'https://gitee.com/monkeyWang/rubickdatabase/raw/master',
|
||||||
});
|
});
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -23,9 +23,10 @@ export default {
|
|||||||
if (access_token) {
|
if (access_token) {
|
||||||
targetPath = `${encodeURIComponent(
|
targetPath = `${encodeURIComponent(
|
||||||
targetPath
|
targetPath
|
||||||
)}/raw?access_token=${access_token}&ref=master`;
|
)}?access_token=${access_token}&ref=master`;
|
||||||
}
|
}
|
||||||
const res = await instance.get(targetPath);
|
const res = await instance.get(targetPath);
|
||||||
|
console.log('total plugsin', res);
|
||||||
return res.data;
|
return res.data;
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -34,7 +35,7 @@ export default {
|
|||||||
if (access_token) {
|
if (access_token) {
|
||||||
targetPath = `${encodeURIComponent(
|
targetPath = `${encodeURIComponent(
|
||||||
targetPath
|
targetPath
|
||||||
)}/raw?access_token=${access_token}&ref=master`;
|
)}?access_token=${access_token}&ref=master`;
|
||||||
}
|
}
|
||||||
const res = await instance.get(targetPath);
|
const res = await instance.get(targetPath);
|
||||||
return res.data;
|
return res.data;
|
||||||
@@ -45,7 +46,7 @@ export default {
|
|||||||
if (access_token) {
|
if (access_token) {
|
||||||
targetPath = `${encodeURIComponent(
|
targetPath = `${encodeURIComponent(
|
||||||
targetPath
|
targetPath
|
||||||
)}/raw?access_token=${access_token}&ref=master`;
|
)}?access_token=${access_token}&ref=master`;
|
||||||
}
|
}
|
||||||
const res = await instance.get(targetPath);
|
const res = await instance.get(targetPath);
|
||||||
return res.data;
|
return res.data;
|
||||||
@@ -55,7 +56,7 @@ export default {
|
|||||||
if (access_token) {
|
if (access_token) {
|
||||||
targetPath = `${encodeURIComponent(
|
targetPath = `${encodeURIComponent(
|
||||||
targetPath
|
targetPath
|
||||||
)}/raw?access_token=${access_token}&ref=master`;
|
)}?access_token=${access_token}&ref=master`;
|
||||||
}
|
}
|
||||||
const res = await instance.get(targetPath);
|
const res = await instance.get(targetPath);
|
||||||
return res.data;
|
return res.data;
|
||||||
@@ -71,7 +72,7 @@ export default {
|
|||||||
if (access_token) {
|
if (access_token) {
|
||||||
targetPath = `${encodeURIComponent(
|
targetPath = `${encodeURIComponent(
|
||||||
targetPath
|
targetPath
|
||||||
)}/raw?access_token=${access_token}&ref=master`;
|
)}?access_token=${access_token}&ref=master`;
|
||||||
}
|
}
|
||||||
const res = await instance.get(targetPath);
|
const res = await instance.get(targetPath);
|
||||||
return res.data;
|
return res.data;
|
||||||
@@ -81,7 +82,7 @@ export default {
|
|||||||
if (access_token) {
|
if (access_token) {
|
||||||
targetPath = `${encodeURIComponent(
|
targetPath = `${encodeURIComponent(
|
||||||
targetPath
|
targetPath
|
||||||
)}/raw?access_token=${access_token}&ref=master`;
|
)}?access_token=${access_token}&ref=master`;
|
||||||
}
|
}
|
||||||
const res = await instance.get(targetPath);
|
const res = await instance.get(targetPath);
|
||||||
return res.data;
|
return res.data;
|
||||||
@@ -91,7 +92,7 @@ export default {
|
|||||||
if (access_token) {
|
if (access_token) {
|
||||||
targetPath = `${encodeURIComponent(
|
targetPath = `${encodeURIComponent(
|
||||||
targetPath
|
targetPath
|
||||||
)}/raw?access_token=${access_token}&ref=master`;
|
)}?access_token=${access_token}&ref=master`;
|
||||||
}
|
}
|
||||||
const res = await instance.get(targetPath);
|
const res = await instance.get(targetPath);
|
||||||
return res.data;
|
return res.data;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
name="register"
|
name="register"
|
||||||
>
|
>
|
||||||
<a-input
|
<a-input
|
||||||
placeholder="https://registry.npm.taobao.org"
|
placeholder="https://registry.npmmirror.com"
|
||||||
v-model:value="formState.register"
|
v-model:value="formState.register"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
name="database"
|
name="database"
|
||||||
>
|
>
|
||||||
<a-input
|
<a-input
|
||||||
placeholder="https://gitcode.net/rubickcenter/rubick-database/-/raw/master"
|
placeholder="https://gitee.com/monkeyWang/rubickdatabase/raw/master"
|
||||||
v-model:value="formState.database"
|
v-model:value="formState.database"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
@@ -54,8 +54,8 @@ import { message } from 'ant-design-vue';
|
|||||||
let _rev: any;
|
let _rev: any;
|
||||||
|
|
||||||
let defaultConfig = {
|
let defaultConfig = {
|
||||||
register: 'https://registry.npm.taobao.org',
|
register: 'https://registry.npmmirror.com',
|
||||||
database: 'https://gitcode.net/rubickcenter/rubick-database/-/raw/master',
|
database: 'https://gitee.com/monkeyWang/rubickdatabase/raw/master',
|
||||||
access_token: '',
|
access_token: '',
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ const layout = {
|
|||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
formState.value = {
|
formState.value = {
|
||||||
register: 'https://registry.npmmirror.com',
|
register: 'https://registry.npmmirror.com',
|
||||||
database: 'https://gitcode.net/rubickcenter/rubick-database/-/raw/master',
|
database: 'https://gitee.com/monkeyWang/rubickdatabase/raw/master',
|
||||||
access_token: '',
|
access_token: '',
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "rubick",
|
"name": "rubick",
|
||||||
"version": "4.2.2",
|
"version": "4.3.3",
|
||||||
"author": "muwoo <2424880409@qq.com>",
|
"author": "muwoo <2424880409@qq.com>",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -7,11 +7,10 @@ import path from 'path';
|
|||||||
import got from 'got';
|
import got from 'got';
|
||||||
import fixPath from 'fix-path';
|
import fixPath from 'fix-path';
|
||||||
|
|
||||||
|
import spawn from 'cross-spawn';
|
||||||
import { ipcRenderer } from 'electron';
|
import { ipcRenderer } from 'electron';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
|
||||||
import npm from 'npm';
|
|
||||||
|
|
||||||
fixPath();
|
fixPath();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -42,7 +41,7 @@ class AdapterHandler {
|
|||||||
}
|
}
|
||||||
this.baseDir = options.baseDir;
|
this.baseDir = options.baseDir;
|
||||||
|
|
||||||
let register = options.registry || 'https://registry.npmmirror.com/';
|
let register = options.registry || 'https://registry.npmmirror.com';
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const dbdata = ipcRenderer.sendSync('msg-trigger', {
|
const dbdata = ipcRenderer.sendSync('msg-trigger', {
|
||||||
@@ -61,7 +60,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 = `${this.registry}${name}`;
|
const registryUrl = `https://registry.npmmirror.com/${name}`;
|
||||||
|
|
||||||
// 从npm源中获取依赖包的最新版本
|
// 从npm源中获取依赖包的最新版本
|
||||||
try {
|
try {
|
||||||
@@ -158,32 +157,43 @@ class AdapterHandler {
|
|||||||
*/
|
*/
|
||||||
private async execCommand(cmd: string, modules: string[]): Promise<string> {
|
private async execCommand(cmd: string, modules: string[]): Promise<string> {
|
||||||
return new Promise((resolve: any, reject: any) => {
|
return new Promise((resolve: any, reject: any) => {
|
||||||
const module =
|
let args: string[] = [cmd].concat(
|
||||||
cmd !== 'uninstall' && cmd !== 'link'
|
cmd !== 'uninstall' && cmd !== 'link'
|
||||||
? modules.map((m) => `${m}@latest`)
|
? modules.map((m) => `${m}@latest`)
|
||||||
: modules;
|
: modules
|
||||||
const config: any = {
|
);
|
||||||
prefix: this.baseDir,
|
|
||||||
save: true,
|
|
||||||
cache: path.join(this.baseDir, 'cache'),
|
|
||||||
};
|
|
||||||
if (cmd !== 'link') {
|
if (cmd !== 'link') {
|
||||||
config.registry = this.registry;
|
args = args
|
||||||
|
.concat('--color=always')
|
||||||
|
.concat('--save')
|
||||||
|
.concat(`--registry=${this.registry}`);
|
||||||
}
|
}
|
||||||
npm.load(config, function (err) {
|
|
||||||
npm.commands[cmd](module, function (er, data) {
|
|
||||||
if (!err) {
|
|
||||||
console.log(data);
|
|
||||||
resolve({ code: -1, data });
|
|
||||||
} else {
|
|
||||||
reject({ code: -1, data: err });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
npm.on('log', function (message) {
|
const npm = spawn('npm', args, {
|
||||||
// log installation progress
|
cwd: this.baseDir,
|
||||||
console.log(message);
|
});
|
||||||
});
|
|
||||||
|
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 }); // 如果报错就输出报错日志
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,31 +175,29 @@ export default () => {
|
|||||||
|
|
||||||
const removeView = (window: BrowserWindow) => {
|
const removeView = (window: BrowserWindow) => {
|
||||||
if (!view) return;
|
if (!view) return;
|
||||||
window.removeBrowserView(view);
|
|
||||||
if (!view.inDetach) {
|
|
||||||
window.setBrowserView(null);
|
|
||||||
view.webContents?.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
// window.setSize(800, 60);
|
|
||||||
executeHooks('PluginOut', null);
|
executeHooks('PluginOut', null);
|
||||||
window.webContents?.executeJavaScript(`window.initRubick()`);
|
setTimeout(() => {
|
||||||
view = undefined;
|
window.removeBrowserView(view);
|
||||||
|
if (!view.inDetach) {
|
||||||
|
window.setBrowserView(null);
|
||||||
|
view.webContents?.destroy();
|
||||||
|
}
|
||||||
|
window.webContents?.executeJavaScript(`window.initRubick()`);
|
||||||
|
view = undefined;
|
||||||
|
}, 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
const getView = () => view;
|
const getView = () => view;
|
||||||
|
|
||||||
const executeHooks = (hook, data) => {
|
const executeHooks = (hook, data) => {
|
||||||
setTimeout(() => {
|
if (!view) return;
|
||||||
if (!view) return;
|
const evalJs = `if(window.rubick && window.rubick.hooks && typeof window.rubick.hooks.on${hook} === 'function' ) {
|
||||||
const evalJs = `if(window.rubick && window.rubick.hooks && typeof window.rubick.hooks.on${hook} === 'function' ) {
|
|
||||||
try {
|
try {
|
||||||
window.rubick.hooks.on${hook}(${data ? JSON.stringify(data) : ''});
|
window.rubick.hooks.on${hook}(${data ? JSON.stringify(data) : ''});
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
view.webContents?.executeJavaScript(evalJs);
|
view.webContents?.executeJavaScript(evalJs);
|
||||||
}, 300);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -128,8 +128,8 @@ class API extends DBInstance {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public removePlugin(e, window) {
|
public removePlugin(e, window) {
|
||||||
this.currentPlugin = null;
|
|
||||||
runnerInstance.removeView(window);
|
runnerInstance.removeView(window);
|
||||||
|
this.currentPlugin = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public openPluginDevTools() {
|
public openPluginDevTools() {
|
||||||
@@ -211,11 +211,10 @@ class API extends DBInstance {
|
|||||||
if (!Notification.isSupported()) return;
|
if (!Notification.isSupported()) return;
|
||||||
'string' != typeof body && (body = String(body));
|
'string' != typeof body && (body = String(body));
|
||||||
const plugin = this.currentPlugin;
|
const plugin = this.currentPlugin;
|
||||||
if (!plugin) return;
|
|
||||||
const notify = new Notification({
|
const notify = new Notification({
|
||||||
title: plugin.pluginName,
|
title: plugin ? plugin.pluginName : null,
|
||||||
body,
|
body,
|
||||||
icon: plugin.logo,
|
icon: plugin ? plugin.logo : null,
|
||||||
});
|
});
|
||||||
notify.show();
|
notify.show();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,6 +93,12 @@ const registerHotKey = (mainWindow: BrowserWindow): void => {
|
|||||||
// mainWindow.show();
|
// mainWindow.show();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
globalShortcut.register('CommandOrControl+W', () => {
|
||||||
|
if (mainWindow && !mainWindow.isDestroyed() && mainWindow.isFocused()) {
|
||||||
|
mainWindow.hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// 注册自定义全局快捷键
|
// 注册自定义全局快捷键
|
||||||
config.global.forEach((sc) => {
|
config.global.forEach((sc) => {
|
||||||
if (!sc.key || !sc.value) return;
|
if (!sc.key || !sc.value) return;
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div
|
<div id="components-layout" @mousedown="onMouseDown">
|
||||||
id="components-layout"
|
|
||||||
@mousedown="onMouseDown"
|
|
||||||
>
|
|
||||||
<Search
|
<Search
|
||||||
:currentPlugin="currentPlugin"
|
:currentPlugin="currentPlugin"
|
||||||
@changeCurrent="changeIndex"
|
@changeCurrent="changeIndex"
|
||||||
@@ -94,7 +91,9 @@ watch(
|
|||||||
window.rubick.setExpendHeight(
|
window.rubick.setExpendHeight(
|
||||||
getWindowHeight(
|
getWindowHeight(
|
||||||
options.value,
|
options.value,
|
||||||
(pluginLoading.value || !config.value.perf.common.history) ? [] : pluginHistory.value
|
pluginLoading.value || !config.value.perf.common.history
|
||||||
|
? []
|
||||||
|
: pluginHistory.value
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -104,26 +103,15 @@ watch(
|
|||||||
);
|
);
|
||||||
|
|
||||||
const changeIndex = (index) => {
|
const changeIndex = (index) => {
|
||||||
if (!options.value.length) {
|
const len = options.value.length || pluginHistory.value.length;
|
||||||
if (!pluginHistory.value.length) return;
|
if (!len) return;
|
||||||
if (
|
if (currentSelect.value + index > len - 1) {
|
||||||
currentSelect.value + index > pluginHistory.value.length - 1 ||
|
|
||||||
currentSelect.value + index < 0
|
|
||||||
) {
|
|
||||||
currentSelect.value = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
currentSelect.value = currentSelect.value + index;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
currentSelect.value + index > options.value.length - 1 ||
|
|
||||||
currentSelect.value + index < 0
|
|
||||||
) {
|
|
||||||
currentSelect.value = 0;
|
currentSelect.value = 0;
|
||||||
return;
|
} else if (currentSelect.value + index < 0) {
|
||||||
|
currentSelect.value = len - 1;
|
||||||
|
} else {
|
||||||
|
currentSelect.value = currentSelect.value + index;
|
||||||
}
|
}
|
||||||
currentSelect.value = currentSelect.value + index;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const openMenu = (ext) => {
|
const openMenu = (ext) => {
|
||||||
@@ -161,7 +149,9 @@ const choosePlugin = (plugin) => {
|
|||||||
});
|
});
|
||||||
if (hasRemove) {
|
if (hasRemove) {
|
||||||
const result = window.rubick.db.get(PLUGIN_HISTORY) || {};
|
const result = window.rubick.db.get(PLUGIN_HISTORY) || {};
|
||||||
const history = result.data.filter(item => item.originName !== currentChoose.originName);
|
const history = result.data.filter(
|
||||||
|
(item) => item.originName !== currentChoose.originName
|
||||||
|
);
|
||||||
setPluginHistory(history);
|
setPluginHistory(history);
|
||||||
return message.warning('插件已被卸载!');
|
return message.warning('插件已被卸载!');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-show="!currentPlugin.name && config.perf.common.history" class="options">
|
<div v-show="!currentPlugin.name" class="options">
|
||||||
<div
|
<div
|
||||||
class="history-plugins"
|
class="history-plugins"
|
||||||
v-if="!options.length || !(searchValue || !!clipboardFile.length)"
|
v-if="
|
||||||
|
!options.length &&
|
||||||
|
!searchValue &&
|
||||||
|
!clipboardFile.length &&
|
||||||
|
config.perf.common.history
|
||||||
|
"
|
||||||
>
|
>
|
||||||
<a-row>
|
<a-row>
|
||||||
<a-col
|
<a-col
|
||||||
|
|||||||
@@ -25,6 +25,8 @@
|
|||||||
ref="mainInput"
|
ref="mainInput"
|
||||||
class="main-input"
|
class="main-input"
|
||||||
@input="(e) => changeValue(e)"
|
@input="(e) => changeValue(e)"
|
||||||
|
@keydown.left="(e) => keydownEvent(e, 'left')"
|
||||||
|
@keydown.right="(e) => keydownEvent(e, 'right')"
|
||||||
@keydown.down="(e) => keydownEvent(e, 'down')"
|
@keydown.down="(e) => keydownEvent(e, 'down')"
|
||||||
@keydown.tab="(e) => keydownEvent(e, 'down')"
|
@keydown.tab="(e) => keydownEvent(e, 'down')"
|
||||||
@keydown.up="(e) => keydownEvent(e, 'up')"
|
@keydown.up="(e) => keydownEvent(e, 'up')"
|
||||||
@@ -41,10 +43,7 @@
|
|||||||
>
|
>
|
||||||
<template #suffix>
|
<template #suffix>
|
||||||
<div class="suffix-tool">
|
<div class="suffix-tool">
|
||||||
<MoreOutlined
|
<MoreOutlined @click="showSeparate()" class="icon-more" />
|
||||||
@click="showSeparate()"
|
|
||||||
class="icon-more"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</a-input>
|
</a-input>
|
||||||
@@ -96,7 +95,7 @@ const emit = defineEmits([
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
const keydownEvent = (e, key: string) => {
|
const keydownEvent = (e, key: string) => {
|
||||||
e.preventDefault();
|
key !== 'space' && e.preventDefault();
|
||||||
const { ctrlKey, shiftKey, altKey, metaKey } = e;
|
const { ctrlKey, shiftKey, altKey, metaKey } = e;
|
||||||
const modifiers: Array<string> = [];
|
const modifiers: Array<string> = [];
|
||||||
ctrlKey && modifiers.push('control');
|
ctrlKey && modifiers.push('control');
|
||||||
@@ -120,12 +119,19 @@ const keydownEvent = (e, key: string) => {
|
|||||||
case 'down':
|
case 'down':
|
||||||
emit('changeCurrent', 1);
|
emit('changeCurrent', 1);
|
||||||
break;
|
break;
|
||||||
|
case 'left':
|
||||||
|
emit('changeCurrent', -1);
|
||||||
|
break;
|
||||||
|
case 'right':
|
||||||
|
emit('changeCurrent', 1);
|
||||||
|
break;
|
||||||
case 'enter':
|
case 'enter':
|
||||||
if (runPluginDisable) return;
|
if (runPluginDisable) return;
|
||||||
emit('choosePlugin');
|
emit('choosePlugin');
|
||||||
break;
|
break;
|
||||||
case 'space':
|
case 'space':
|
||||||
if (runPluginDisable || !config.value.perf.common.space) return;
|
if (runPluginDisable || !config.value.perf.common.space) return;
|
||||||
|
e.preventDefault();
|
||||||
emit('choosePlugin');
|
emit('choosePlugin');
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -77,6 +77,10 @@ const createPluginManager = (): any => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const openPlugin = async (plugin, option) => {
|
const openPlugin = async (plugin, option) => {
|
||||||
|
ipcRenderer.send('msg-trigger', {
|
||||||
|
type: 'removePlugin',
|
||||||
|
});
|
||||||
|
window.initRubick();
|
||||||
if (plugin.pluginType === 'ui' || plugin.pluginType === 'system') {
|
if (plugin.pluginType === 'ui' || plugin.pluginType === 'system') {
|
||||||
if (state.currentPlugin && state.currentPlugin.name === plugin.name) {
|
if (state.currentPlugin && state.currentPlugin.name === plugin.name) {
|
||||||
window.rubick.showMainWindow();
|
window.rubick.showMainWindow();
|
||||||
@@ -103,7 +107,6 @@ const createPluginManager = (): any => {
|
|||||||
message.error('启动应用出错,请确保启动应用存在!');
|
message.error('启动应用出错,请确保启动应用存在!');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
window.initRubick();
|
|
||||||
changePluginHistory({
|
changePluginHistory({
|
||||||
...plugin,
|
...plugin,
|
||||||
...option,
|
...option,
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import useFocus from './clipboardWatch';
|
|||||||
|
|
||||||
function formatReg(regStr) {
|
function formatReg(regStr) {
|
||||||
const flags = regStr.replace(/.*\/([gimy]*)$/, '$1');
|
const flags = regStr.replace(/.*\/([gimy]*)$/, '$1');
|
||||||
const pattern = flags.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1');
|
const pattern = regStr.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1');
|
||||||
return new RegExp(pattern, flags);
|
return new RegExp(pattern, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user