mirror of
https://github.com/rubickCenter/rubick
synced 2025-12-25 11:59:27 +08:00
feat: 支持快捷键设置;支持超级面板
This commit is contained in:
@@ -80,15 +80,23 @@ export default {
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// 注册快捷键
|
||||
ipcRenderer.send('init-shortcut');
|
||||
ipcRenderer.on('init-rubick', this.closeTag);
|
||||
ipcRenderer.on('new-window', this.newWindow);
|
||||
// 超级面板打开插件
|
||||
ipcRenderer.on('superPanel-openPlugin', (e, args) => {
|
||||
this.openPlugin({
|
||||
cmd: args.cmd,
|
||||
plugin: args.plugin,
|
||||
feature: args.feature,
|
||||
router: this.$router,
|
||||
payload: args.data,
|
||||
})
|
||||
});
|
||||
const searchNd = document.getElementById('search');
|
||||
searchNd && searchNd.addEventListener('keydown', this.checkNeedInit)
|
||||
},
|
||||
methods: {
|
||||
...mapActions('main', ['onSearch', 'showMainUI']),
|
||||
...mapActions('main', ['onSearch', 'showMainUI', 'openPlugin']),
|
||||
...mapMutations('main', ['commonUpdate']),
|
||||
search(v) {
|
||||
if (!this.searchFn) {
|
||||
|
||||
@@ -4,7 +4,7 @@ import fs from 'fs';
|
||||
import process from 'child_process';
|
||||
import Store from 'electron-store';
|
||||
import downloadFile from 'download';
|
||||
import {nativeImage} from 'electron';
|
||||
import {nativeImage, ipcRenderer} from 'electron';
|
||||
import {APP_FINDER_PATH} from './constans';
|
||||
import {getlocalDataFile} from "../../../main/common/utils";
|
||||
|
||||
@@ -57,6 +57,19 @@ async function downloadZip(downloadRepoUrl, name) {
|
||||
|
||||
const sysFile = {
|
||||
savePlugins(plugins) {
|
||||
ipcRenderer.send('optionPlugin', {
|
||||
plugins: plugins.filter((plugin) => {
|
||||
let hasOption = false;
|
||||
plugin.features.forEach(fe => {
|
||||
fe.cmds.forEach(cmd => {
|
||||
if (cmd.type) {
|
||||
hasOption = true;
|
||||
}
|
||||
})
|
||||
});
|
||||
return hasOption;
|
||||
})
|
||||
});
|
||||
store.set('user-plugins', plugins);
|
||||
},
|
||||
getUserPlugins() {
|
||||
@@ -72,7 +85,7 @@ const sysFile = {
|
||||
}
|
||||
|
||||
function mergePlugins(plugins) {
|
||||
return [
|
||||
const result = [
|
||||
...plugins,
|
||||
...SYSTEM_PLUGINS.map(plugin => {
|
||||
return {
|
||||
@@ -81,8 +94,18 @@ function mergePlugins(plugins) {
|
||||
sourceFile: '',
|
||||
type: 'system',
|
||||
}
|
||||
}),
|
||||
})
|
||||
]
|
||||
|
||||
return result.filter((item, i) => {
|
||||
let targetIndex;
|
||||
result.forEach((tg, j) => {
|
||||
if (tg.tag === item.tag && tg.type === 'system') {
|
||||
targetIndex = j
|
||||
}
|
||||
});
|
||||
return i === targetIndex;
|
||||
});
|
||||
}
|
||||
|
||||
function find(p, target = 'plugin.json') {
|
||||
|
||||
@@ -18,19 +18,14 @@ export default {
|
||||
32: 'space',
|
||||
33: 'page up',
|
||||
34: 'page down',
|
||||
35: 'end',
|
||||
36: 'home',
|
||||
37: 'left arrow',
|
||||
38: 'up arrow',
|
||||
39: 'right arrow',
|
||||
40: 'down arrow',
|
||||
41: 'select',
|
||||
42: 'print',
|
||||
43: 'execute',
|
||||
44: 'Print Screen',
|
||||
45: 'insert',
|
||||
46: 'delete',
|
||||
47: 'help',
|
||||
35: 'End',
|
||||
36: 'Home',
|
||||
37: 'Left',
|
||||
38: 'Up',
|
||||
39: 'Right',
|
||||
40: 'Down',
|
||||
45: 'Insert',
|
||||
46: 'Delete',
|
||||
48: '0',
|
||||
49: '1',
|
||||
50: '2',
|
||||
@@ -41,130 +36,55 @@ export default {
|
||||
55: '7',
|
||||
56: '8',
|
||||
57: '9',
|
||||
58: ':',
|
||||
59: 'semicolon (firefox), equals',
|
||||
60: '<',
|
||||
61: 'equals (firefox)',
|
||||
63: 'ß',
|
||||
64: '@ (firefox)',
|
||||
65: 'a',
|
||||
66: 'b',
|
||||
67: 'c',
|
||||
68: 'd',
|
||||
69: 'e',
|
||||
70: 'f',
|
||||
71: 'g',
|
||||
72: 'h',
|
||||
73: 'i',
|
||||
74: 'j',
|
||||
75: 'k',
|
||||
76: 'l',
|
||||
77: 'm',
|
||||
78: 'n',
|
||||
79: 'o',
|
||||
80: 'p',
|
||||
81: 'q',
|
||||
82: 'r',
|
||||
83: 's',
|
||||
84: 't',
|
||||
85: 'u',
|
||||
86: 'v',
|
||||
87: 'w',
|
||||
88: 'x',
|
||||
89: 'y',
|
||||
90: 'z',
|
||||
91: 'Windows Key / Left ⌘ / Chromebook Search key',
|
||||
92: 'right window key',
|
||||
93: 'Windows Menu / Right ⌘',
|
||||
95: 'sleep',
|
||||
96: 'numpad 0',
|
||||
97: 'numpad 1',
|
||||
98: 'numpad 2',
|
||||
99: 'numpad 3',
|
||||
100: 'numpad 4',
|
||||
101: 'numpad 5',
|
||||
102: 'numpad 6',
|
||||
103: 'numpad 7',
|
||||
104: 'numpad 8',
|
||||
105: 'numpad 9',
|
||||
106: 'multiply',
|
||||
107: 'add',
|
||||
108: 'numpad period (firefox)',
|
||||
109: 'subtract',
|
||||
110: 'decimal point',
|
||||
111: 'divide',
|
||||
112: 'f1',
|
||||
113: 'f2',
|
||||
114: 'f3',
|
||||
115: 'f4',
|
||||
116: 'f5',
|
||||
117: 'f6',
|
||||
118: 'f7',
|
||||
119: 'f8',
|
||||
120: 'f9',
|
||||
121: 'f10',
|
||||
122: 'f11',
|
||||
123: 'f12',
|
||||
124: 'f13',
|
||||
125: 'f14',
|
||||
126: 'f15',
|
||||
127: 'f16',
|
||||
128: 'f17',
|
||||
129: 'f18',
|
||||
130: 'f19',
|
||||
131: 'f20',
|
||||
132: 'f21',
|
||||
133: 'f22',
|
||||
134: 'f23',
|
||||
135: 'f24',
|
||||
136: 'f25',
|
||||
137: 'f26',
|
||||
138: 'f27',
|
||||
139: 'f28',
|
||||
140: 'f29',
|
||||
141: 'f30',
|
||||
142: 'f31',
|
||||
143: 'f32',
|
||||
144: 'num lock',
|
||||
145: 'scroll lock',
|
||||
151: 'airplane mode',
|
||||
160: '^',
|
||||
161: '!',
|
||||
162: '؛ (arabic semicolon)',
|
||||
163: '#',
|
||||
164: '$',
|
||||
165: 'ù',
|
||||
166: 'page backward',
|
||||
167: 'page forward',
|
||||
168: 'refresh',
|
||||
169: 'closing paren (AZERTY)',
|
||||
170: '*',
|
||||
171: '~ + * key',
|
||||
172: 'home key',
|
||||
173: 'minus (firefox), mute/unmute',
|
||||
174: 'decrease volume level',
|
||||
175: 'increase volume level',
|
||||
176: 'next',
|
||||
177: 'previous',
|
||||
178: 'stop',
|
||||
179: 'play/pause',
|
||||
180: 'e-mail',
|
||||
181: 'mute/unmute (firefox)',
|
||||
182: 'decrease volume level (firefox)',
|
||||
183: 'increase volume level (firefox)',
|
||||
186: 'semi-colon / ñ',
|
||||
187: 'equal sign',
|
||||
188: 'comma',
|
||||
189: 'dash',
|
||||
190: 'period',
|
||||
191: 'forward slash / ç',
|
||||
192: 'grave accent / ñ / æ / ö',
|
||||
193: '?, / or °',
|
||||
194: 'numpad period (chrome)',
|
||||
219: 'open bracket',
|
||||
220: 'back slash',
|
||||
221: 'close bracket / å',
|
||||
222: 'single quote / ø / ä',
|
||||
65: 'A',
|
||||
66: 'B',
|
||||
67: 'C',
|
||||
68: 'D',
|
||||
69: 'E',
|
||||
70: 'F',
|
||||
71: 'G',
|
||||
72: 'H',
|
||||
73: 'I',
|
||||
74: 'J',
|
||||
75: 'K',
|
||||
76: 'L',
|
||||
77: 'M',
|
||||
78: 'N',
|
||||
79: 'O',
|
||||
80: 'P',
|
||||
81: 'Q',
|
||||
82: 'R',
|
||||
83: 'S',
|
||||
84: 'T',
|
||||
85: 'U',
|
||||
86: 'V',
|
||||
87: 'W',
|
||||
88: 'X',
|
||||
89: 'Y',
|
||||
90: 'Z',
|
||||
112: 'F1',
|
||||
113: 'F2',
|
||||
114: 'F3',
|
||||
115: 'F4',
|
||||
116: 'F5',
|
||||
117: 'F6',
|
||||
118: 'F7',
|
||||
119: 'F8',
|
||||
120: 'F9',
|
||||
121: 'F10',
|
||||
122: 'F11',
|
||||
123: 'F12',
|
||||
186: ';',
|
||||
187: '=',
|
||||
188: ',',
|
||||
189: '-',
|
||||
190: '.',
|
||||
191: '/',
|
||||
192: '`',
|
||||
219: '[',
|
||||
220: '\\',
|
||||
221: ']',
|
||||
222: "'",
|
||||
223: '`',
|
||||
224: 'left or right ⌘ key (firefox)',
|
||||
225: 'altgr',
|
||||
|
||||
@@ -30,8 +30,8 @@ export default {
|
||||
mounted() {
|
||||
this.webview = document.querySelector('webview');
|
||||
this.webview.addEventListener('dom-ready', () => {
|
||||
this.webview.send('onPluginReady', this.$route.query);
|
||||
this.webview.send('onPluginEnter', this.$route.query);
|
||||
this.webview.send('onPluginReady', this.pluginInfo);
|
||||
this.webview.send('onPluginEnter', this.pluginInfo);
|
||||
});
|
||||
this.setSubPlaceHolder('Hi, Rubick');
|
||||
this.webview.addEventListener('ipc-message', (event) => {
|
||||
@@ -74,14 +74,16 @@ export default {
|
||||
...mapMutations('main', ['setSubPlaceHolder', 'commonUpdate']),
|
||||
},
|
||||
beforeRouteUpdate() {
|
||||
this.path = `File://${this.$route.query.sourceFile}`
|
||||
this.path = `File://${this.$route.query.sourceFile}`;
|
||||
console.log(this.pluginInfo)
|
||||
this.webview.send('onPluginEnter', this.pluginInfo);
|
||||
},
|
||||
beforeDestroy() {
|
||||
const webview = document.querySelector('webview');
|
||||
webview && webview.send('onPluginOut', this.$route.query)
|
||||
},
|
||||
computed: {
|
||||
...mapState('main', ['searchValue', 'devPlugins']),
|
||||
...mapState('main', ['searchValue', 'devPlugins', 'pluginInfo']),
|
||||
pluginDetail() {
|
||||
return (this.devPlugins.filter(plugin => plugin.name === this.query.name)[0] || {}).features
|
||||
},
|
||||
|
||||
@@ -6,13 +6,7 @@
|
||||
偏好设置
|
||||
</a-menu-item>
|
||||
<a-menu-item :key="1">
|
||||
本地启动文件
|
||||
</a-menu-item>
|
||||
<a-menu-item :key="2">
|
||||
全局快捷键
|
||||
</a-menu-item>
|
||||
<a-menu-item :key="3">
|
||||
所有关键字
|
||||
超级面板
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
<div class="settings-detail">
|
||||
@@ -47,6 +41,30 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="currentSelect[0] === 1">
|
||||
<div class="setting-item">
|
||||
<div class="title">弹出面板</div>
|
||||
<a-select value="mouseRight" style="width: 200px" disabled>
|
||||
<a-select-option value="mouseRight">长按鼠标右键</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="title">长按以下设置的毫秒响应</div>
|
||||
<a-slider :step="100" v-model:value="config.superPanel.mouseDownTime" :min="200" :max="1000" />
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="title">百度搜索配置</div>
|
||||
<a-form :label-col="{ span: 3 }" :wrapper-col="{ span: 14 }">
|
||||
<a-form-item label="appid">
|
||||
<a-input v-model:value="config.superPanel.baiduAPI.appid" />
|
||||
</a-form-item>
|
||||
<a-form-item label="key">
|
||||
<a-input v-model:value="config.superPanel.baiduAPI.key" />
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</div>
|
||||
<img width="100%" src="https://static.91jkys.com/upload/202107/02/fa4a5c614234409fb32ddda70cb900aa.jpg" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -63,7 +81,7 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
currentSelect: [0],
|
||||
config: JSON.parse(JSON.stringify(opConfig.get()))
|
||||
config: JSON.parse(JSON.stringify(opConfig.get())),
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -96,6 +114,7 @@ export default {
|
||||
deep: true,
|
||||
handler() {
|
||||
opConfig.set('perf', this.config.perf);
|
||||
opConfig.set('superPanel', this.config.superPanel);
|
||||
ipcRenderer.send('re-register');
|
||||
}
|
||||
}
|
||||
@@ -111,14 +130,19 @@ export default {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
background: #F8FAFC;
|
||||
background: #fff;
|
||||
}
|
||||
.settings-detail {
|
||||
padding: 20px;
|
||||
box-sizing: border-box;
|
||||
flex: 1;
|
||||
overflow: auto;
|
||||
height: 100%;
|
||||
.setting-item {
|
||||
margin-bottom: 20px;
|
||||
.ant-form-item {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.title {
|
||||
color: #6C9FE2;
|
||||
font-size: 15px;
|
||||
|
||||
@@ -22,6 +22,7 @@ const state = {
|
||||
searchValue: '',
|
||||
devPlugins: mergePlugins(sysFile.getUserPlugins() || []),
|
||||
subPlaceHolder: '',
|
||||
pluginInfo: {},
|
||||
}
|
||||
|
||||
const mutations = {
|
||||
@@ -29,7 +30,7 @@ const mutations = {
|
||||
Object.keys(payload).forEach((key) => {
|
||||
state[key] = payload[key];
|
||||
if (key === 'devPlugins') {
|
||||
sysFile.savePlugins(payload)
|
||||
sysFile.savePlugins(payload[key])
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -236,7 +237,7 @@ const actions = {
|
||||
devPlugins: [pluginConfig, ...state.devPlugins],
|
||||
});
|
||||
},
|
||||
openPlugin({commit}, {cmd, plugin, feature, router}) {
|
||||
openPlugin({commit}, {cmd, plugin, feature, router, payload}) {
|
||||
if (plugin.type === 'app') {
|
||||
execSync(plugin.action);
|
||||
commit('commonUpdate', {
|
||||
@@ -253,7 +254,7 @@ const actions = {
|
||||
commit('commonUpdate', {
|
||||
selected: {
|
||||
key: 'plugin-container',
|
||||
name: cmd,
|
||||
name: cmd.label ? cmd.label : cmd,
|
||||
icon: 'image://' + path.join(plugin.sourceFile, `../${plugin.logo}`),
|
||||
},
|
||||
searchValue: '',
|
||||
@@ -277,10 +278,20 @@ const actions = {
|
||||
});
|
||||
return;
|
||||
}
|
||||
commit('commonUpdate', {
|
||||
pluginInfo: {
|
||||
cmd,
|
||||
...plugin,
|
||||
detail: feature,
|
||||
payload,
|
||||
}
|
||||
});
|
||||
|
||||
router.push({
|
||||
path: '/plugin',
|
||||
query: {
|
||||
...plugin,
|
||||
_modify: Date.now(),
|
||||
detail: JSON.stringify(feature)
|
||||
},
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user