From 52514e2daf07ea769dd53bc81ed7e9e0bfd64bb0 Mon Sep 17 00:00:00 2001 From: viarotel Date: Tue, 24 Oct 2023 16:46:51 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=F0=9F=92=84=20=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=8F=8A=E4=BA=A4=E4=BA=92=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +++ electron/events/tray/index.js | 19 ++++++- electron/exposes/adbkit/index.js | 6 +-- electron/exposes/scrcpy/index.js | 3 +- electron/main.js | 19 +++++-- electron/resources/extra/tray-raw.png | Bin 0 -> 35014 bytes electron/resources/extra/trayTemplate.png | Bin 226 -> 242 bytes electron/resources/extra/trayTemplate@2x.png | Bin 442 -> 445 bytes electron/resources/extra/trayTemplate@4x.png | Bin 1044 -> 1008 bytes src/App.vue | 15 +++++- src/components/Device/index.vue | 50 ++++++++++++++++--- src/components/Preference/index.vue | 1 + src/store/scrcpy/index.js | 32 +++++++++++- src/store/scrcpy/model/custom/index.js | 8 +-- 14 files changed, 137 insertions(+), 23 deletions(-) create mode 100644 electron/resources/extra/tray-raw.png diff --git a/README.md b/README.md index 1fbd81b..ec3d78b 100644 --- a/README.md +++ b/README.md @@ -189,6 +189,13 @@ 4. 按下 `Ctrl` + `Shift` + `I` 进入开发者工具,并查看是否有任何报错信息。 5. 如果有报错,请截图并在 [反馈问题](https://github.com/viarotel-org/escrcpy/issues) 页面中提交您的问题。 +### macOS 关闭窗口选择最小化到托盘后顶部右侧状态栏找不到图标 + +> 这个一般是状态栏图标过多导致无法展示 Escrcpy 的图标 推荐用以下工具解决 + +- [iBar](https://www.better365.cn/ibar.html) +- [Bartender](https://www.macbartender.com/) + ## 获得帮助 > 因为是开源项目 全靠爱发电 所以支持有限 更新节奏不固定 diff --git a/electron/events/tray/index.js b/electron/events/tray/index.js index 15c1470..4139a8e 100644 --- a/electron/events/tray/index.js +++ b/electron/events/tray/index.js @@ -10,14 +10,31 @@ export default (mainWindow) => { tray.destroy() tray = null } + + if (process.platform === 'darwin') { + app.dock.show() + } + mainWindow.show() return true } + const hideApp = () => { + if (process.platform === 'darwin') { + app.dock.hide() + } + + mainWindow.hide() + + return true + } + const quitApp = () => { app.isQuiting = true + app.quit() + return true } @@ -27,7 +44,7 @@ export default (mainWindow) => { return true } else if (response === 1) { - mainWindow.hide() + hideApp() tray = new Tray(trayPath) diff --git a/electron/exposes/adbkit/index.js b/electron/exposes/adbkit/index.js index 74a6349..36e66f3 100644 --- a/electron/exposes/adbkit/index.js +++ b/electron/exposes/adbkit/index.js @@ -20,10 +20,6 @@ window.addEventListener('beforeunload', () => { appStore.onDidChange('scrcpy.global.adbPath', async (value, oldValue) => { console.log('onDidChange.scrcpy.global.adbPath', value) - if (!value) { - return false - } - if (value === oldValue) { return false } @@ -37,7 +33,7 @@ appStore.onDidChange('scrcpy.global.adbPath', async (value, oldValue) => { client = null } - client = Adb.createClient({ bin: value }) + client = Adb.createClient({ bin: value || adbPath }) }) const shell = async command => exec(`${adbPath} ${command}`) diff --git a/electron/exposes/scrcpy/index.js b/electron/exposes/scrcpy/index.js index 90be756..f3ee288 100644 --- a/electron/exposes/scrcpy/index.js +++ b/electron/exposes/scrcpy/index.js @@ -4,10 +4,11 @@ import { adbPath, scrcpyPath } from '@electron/configs/index.js' const shell = async (command, { stdout, stderr } = {}) => { const spawnPath = appStore.get('scrcpy.global.scrcpyPath') || scrcpyPath + const ADB = appStore.get('scrcpy.global.adbPath') || adbPath const args = command.split(' ') const scrcpyProcess = spawn(spawnPath, args, { - env: { ...process.env, ADB: adbPath }, + env: { ...process.env, ADB }, shell: true, }) diff --git a/electron/main.js b/electron/main.js index 664d56c..14d5033 100644 --- a/electron/main.js +++ b/electron/main.js @@ -37,8 +37,13 @@ function createWindow() { } mainWindow = new BrowserWindow({ + // 这里设置的图标仅在开发模式生效,打包后将使用应用程序图标 + ...(!app.isPackaged + ? { + icon, + } + : {}), show: false, - icon, width: 1000, height: 700, minWidth: 1000, @@ -85,12 +90,20 @@ app.on('window-all-closed', () => { mainWindow = null }) +// 仅 macOS 有这个事件 app.on('activate', () => { - // On OS X it's common to re-create a window in the app when the - // dock icon is clicked and there are no other windows open. if (BrowserWindow.getAllWindows().length === 0) { createWindow() } + + if (app.isHidden()) { + app.show() + app.focus() + } + + if (!app.dock.isVisible()) { + app.dock.show() + } }) app.whenReady().then(() => { diff --git a/electron/resources/extra/tray-raw.png b/electron/resources/extra/tray-raw.png new file mode 100644 index 0000000000000000000000000000000000000000..ae63d414ee6544074a3cd87ad678d1696eb91cd0 GIT binary patch literal 35014 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 D6eCwf delta 185 zcmV;q07n1v0pbCWF@Ky%L_t(IPoJN7DHI}K zgmN#}qd5FrPSJ+}^9FEmodF}E#?1E%U`EV$%048(thkCkJJo>&XoX3i&Xxgf4kCj> z?S|E~DjbYNrN(WDmf8?604IlJ%~@{_s>Kxm+trd+S=_<{U^1t$W?bY!;um0%1(46^ nz29Pt;-e^G4nLEXms)=T(%d5vvEo7A00000NkvXXu0mjf_vcb% diff --git a/electron/resources/extra/trayTemplate@2x.png b/electron/resources/extra/trayTemplate@2x.png index fc8b6a5b25e0209b44ef5f382e1402be3c9dab6b..f6ed3d5b9fbc00fd9e895dae59c5df7f93519bfb 100644 GIT binary patch delta 406 zcmV;H0crla1HA)~F@JYSL_t(oN9~q7N`pZV$A4dM6Y&6Aq!#rC)?(oaB#q!D^cLEP zcmNBr&J9#NfM9wN1rMNX$cFjWea&VJh+ z8FS#<7&wb52^;|TO9uDp=eUx9mGURRmC&C{;3Oh!itPzlfPY^Arx^#gf#=|RXGLHq zNd5|J&cLM0YrvNvF(qK3zEsNOcMAfCLGz{rc@kH^NOt3*4oG#oz+<8hqAplCpxvfD z!OI|^a@1l9qyx9Wk!G3Y?9(VIO+j+!)YPwrNSG&#$&R68=K?0cR>r;(ktQ*@CTzVa zV{ysesF{M2y?>gX`}JR${1~{_ERltfBNv6t7pr$or>i;T8fOD|lQ)<6JqGsGXo*LG zyG-s9j#Q6RBbnrNoU+@x3~B2Q*MQbg-I-Ed;1-F}goc%tv<^YN1o?u{L*nubb2swn1JWA>(CL0neP;j{wL!Xklx$3=>C!?`x zAf_B36uhLQIe!eb#8$_|Br>ubf-4ac3VveZnLHwz<*z>@-fS+V$%rqE$}+` zC&0eYK*Rv_Irw_q-Z*_f8~`4TIfZkZcgE`aayRfaxAj8w&5PFspyafdIV~S)d*?n@ zwvCua0hAW}7hs(-!mGe(rR*^7I)G0GV@f-%#9|AyPx%XAN5rz!3sN^UHbbS1{zl+^ zD|G)m$Kn|Pu74>10G4Mk+E&F1;AdMUwf-Rp&w-s4fEcZeK6zEW3Z$+Kjtr8ky#}^< ze!Bvk2{=Df5&++v*X})h{X>I003hUj1Q%lD#l{ifuE&@*JHG*I96HVdmp!@%0JH|W zgpo3OE`O|gW+xrM;3+Wf3<&MmtiD+@pa=j`=}E=sYJV$%JBGRE+xmJzmXHCd6`z5N zKg%ZpKyVr@RsidPk0YhNGh<2sa15AjSp!(6LqoQdO3=J|Cr3QeF|+{5fy0HwLkFvW zMFMaIVSO%ZLHGcC1y*a7)a2^=ZU85II#M4&8-RBSj)l79$^z3dUn+nqkhQ?)OdvwO zXfw~HBY(J?Yzv@@U9v&4qHPQL6FRaB9i&9-fVNK8`)fxkWh$ij8TCi=7(54DGFXoq zRp?p@{8q??L{xrQ3nA^4Q5jbRsI`}zg;oHSA&q0XAXGLF0S_I}q+Yp~dZ?QUKno%_ z1Vz%=LeA6gJe^*)H^d;BoUOE78 zoQoYmtJmdSqbkSWn;bd11$g85ewnJ7iLEiIjfsRvR>?v`vfcOQ&D*!# z-6Xm0yqWoaW@g{p>;_=Oe}NI#4`Tr14j6F);}MW-fV|{7Cx4eo4-3GsiDyEv0^nKkv3Pu^ zUaLLnsyVuN^4hmgpHGO~=y>B`2H+|2Q;F&J@9Oq_5s|6+`I+*@#!V4h0O;xL2jD63 z{YeUnGRzJgo`1RUYxCzhWR0f*s44{J$GC2EKrk4*-05_(6w(gaVo6iO^8CF8fS0=? zpgJ%$QJ6k<`&c3TxDlZu8y82dlK0O0~HS?KFW};Xu-W4FqDk87A zd9MKACMh5uCPJYve_O4mX4_OI6D}8vw;4VR0Is(`Gk*t7%Y&|q=;xmHI2t_;fL$j+hW)$;9>gk7}BF(!)BHbPo^^ zsA4Qs_z><+k!_Hg5Y^s_>%RG*9)v^_6Sc#dN`J-=X$=*CaBE?+hbgzX&J?C;T3)C9 zanf@y3qTYEsTvYcY%d8!=MoniTh+5RJYgcS>o!8$U#jZO5Km#Z+c8_PXk85jdb;_AuMup^>o)!v#RRCx)0+Qf3@SsHHFaQ8+@qXv3 zgt|Ef1F@;!3Hlwtp8RFL6t#k&3JkTCDQfnXIm&!1>_-61ksE3Nc0ZTjLv1dde!o>J zJtyo0)X|`{G|#pP0FOkRVNZi*0hE&;cBjX#i{vk|Lvj6J0H{g$&VCHQcO_Gt@VEmM f1NEJ|k?(;27ADt0#8Eb(00000NkvXXu0mjfN$=o( diff --git a/src/App.vue b/src/App.vue index 80e4f08..8dcd5bf 100644 --- a/src/App.vue +++ b/src/App.vue @@ -25,6 +25,11 @@ export default { Preference, About, }, + provide() { + return { + $app: this, + } + }, data() { return { tabsModel: [ @@ -42,6 +47,7 @@ export default { }, ], activeTab: 'Device', + renderTab: '', rendered: true, } }, @@ -80,15 +86,20 @@ export default { ) }, isRender(item) { - if (this.activeTab === item.prop) { + if (this.renderTab === item.prop) { return this.rendered } + return true }, - async reRender() { + async reRender(other) { + this.renderTab = other || this.activeTab + this.rendered = false await this.$nextTick() this.rendered = true + + this.renderTab = '' }, async onTabChange(prop) { switch (prop) { diff --git a/src/components/Device/index.vue b/src/components/Device/index.vue index 272e5c7..3a38828 100644 --- a/src/components/Device/index.vue +++ b/src/components/Device/index.vue @@ -36,11 +36,11 @@ type="primary" :icon="loading ? '' : 'Refresh'" :loading="loading" - @click="getDeviceData" + @click="handleRefresh" > 刷新设备 - + 重启服务 @@ -172,6 +172,7 @@ export default { ControlBar, Remark, }, + inject: ['$app'], data() { const adbCache = storage.get('adbCache') || {} return { @@ -216,6 +217,35 @@ export default { scrcpyArgs(...args) { return this.$store.scrcpy.getStringConfig(...args) }, + handleRefresh() { + this.getDeviceData({ resetResolve: true }) + }, + async handleReset(depType = 'scrcpy') { + try { + await this.$confirm( + ` +
通常情况下,这可能是因为更新 Escrcpy 后,缓存的依赖配置不兼容所导致的,是否重置依赖配置?
+
注意:重置后,之前保存的依赖配置将会被清除,因此建议在执行重置操作之前备份您的配置。
+ `, + '操作失败', + { + dangerouslyUseHTMLString: true, + confirmButtonText: '重置依赖配置', + cancelButtonText: '取消', + closeOnClickModal: false, + type: 'warning', + }, + ) + this.$store.scrcpy.resetDeps(depType) + this.$app.reRender('Preference') + this.$message.success('操作成功,请重新尝试。') + } + catch (error) { + if (error.message) { + console.warn(error.message) + } + } + }, onStdout() {}, toggleRowExpansion(...params) { this.$refs.elTable.toggleRowExpansion(...params) @@ -269,6 +299,8 @@ export default { if (error.message) { this.$message.warning(error.message) } + + this.handleReset() } row.$recordLoading = false }, @@ -289,6 +321,7 @@ export default { if (error.message) { this.$message.warning(error.message) } + this.handleReset() } row.$loading = false }, @@ -310,7 +343,7 @@ export default { onPairSuccess() { this.handleConnect() }, - handleReset() { + handleRestart() { this.$electron.ipcRenderer.send('restart-app') }, async handleConnect() { @@ -326,7 +359,7 @@ export default { storage.set('adbCache', this.formData) } catch (error) { - this.handleError(error.message) + this.handleError(error?.message || error?.cause?.message || error) } this.connectLoading = false }, @@ -339,7 +372,8 @@ export default {
1. IP地址或端口号错误
2. 设备未与当前电脑配对成功
3. 电脑网络和提供的设备网络IP不在同一个局域网中
-
4. 其他未知错误
+
4. adb 依赖路径错误
+
5. 其他未知错误
`, '连接设备失败', { @@ -371,7 +405,7 @@ export default { row.$stopLoading = false }, - async getDeviceData() { + async getDeviceData({ resetResolve = false } = {}) { this.loading = true await sleep(500) try { @@ -392,6 +426,10 @@ export default { this.$message.warning(error?.message || error?.cause?.message) } this.deviceList = [] + + if (resetResolve) { + this.handleReset('adb') + } } this.loading = false this.loadingText = '正在获取设备列表...' diff --git a/src/components/Preference/index.vue b/src/components/Preference/index.vue index a1ea1e7..16be38a 100644 --- a/src/components/Preference/index.vue +++ b/src/components/Preference/index.vue @@ -191,6 +191,7 @@ import { useScrcpyStore } from '@/store/index.js' import LoadingIcon from '@/components/Device/ControlBar/LoadingIcon/index.vue' export default { + inject: ['$app'], data() { const scrcpyStore = useScrcpyStore() diff --git a/src/store/scrcpy/index.js b/src/store/scrcpy/index.js index 21c725b..228cf5d 100644 --- a/src/store/scrcpy/index.js +++ b/src/store/scrcpy/index.js @@ -5,6 +5,8 @@ import { replaceIP } from '@/utils/index.js' const $appStore = window.appStore +const { adbPath, scrcpyPath } = window.electron?.configs || {} + function mergeConfig(object, sources, { debug = false } = {}) { const customizer = (objValue, srcValue) => { if (debug) { @@ -89,6 +91,21 @@ export const useScrcpyStore = defineStore({ this.init() }, + resetDeps(type) { + switch (type) { + case 'adb': + $appStore.set('scrcpy.global.adbPath', '') + break + case 'scrcpy': + $appStore.set('scrcpy.global.scrcpyPath', '') + break + default: + $appStore.set('scrcpy.global.adbPath', '') + $appStore.set('scrcpy.global.scrcpyPath', '') + break + } + this.init() + }, setScope(value) { this.scope = replaceIP(value) $appStore.set('scrcpy.scope', this.scope) @@ -127,7 +144,20 @@ export const useScrcpyStore = defineStore({ return value }, setConfig(data, scope = this.scope) { - $appStore.set(`scrcpy.${replaceIP(scope)}`, { ...data }) + const cloneData = cloneDeep(data) + + // console.log('adbPath', adbPath) + // console.log('scrcpyPath', scrcpyPath) + + if (data.adbPath === adbPath) { + delete cloneData.adbPath + } + + if (data.scrcpyPath === scrcpyPath) { + delete cloneData.scrcpyPath + } + + $appStore.set(`scrcpy.${replaceIP(scope)}`, cloneData) this.init(scope) }, diff --git a/src/store/scrcpy/model/custom/index.js b/src/store/scrcpy/model/custom/index.js index e6e5fd3..42872e3 100644 --- a/src/store/scrcpy/model/custom/index.js +++ b/src/store/scrcpy/model/custom/index.js @@ -17,9 +17,9 @@ export default () => { type: 'input.path', value: adbPath, tips: '用于连接设备的 adb 的地址,注意:该选项不受针对于单个设备配置的影响', - placeholder: '请选择 adb', + placeholder: '请设置 adb 路径', properties: ['openFile'], - filters: [{ name: '请选择 adb', extensions: ['*'] }], + filters: [{ name: '请设置 adb 路径', extensions: ['*'] }], }, { label: 'scrcpy 路径', @@ -27,9 +27,9 @@ export default () => { type: 'input.path', value: scrcpyPath, tips: '用于控制设备的 scrcpy 的地址,注意:该选项不受针对于单个设备配置的影响', - placeholder: '请选择 scrcpy', + placeholder: '请设置 scrcpy 路径', properties: ['openFile'], - filters: [{ name: '请选择 scrcpy', extensions: ['*'] }], + filters: [{ name: '请设置 scrcpy 路径', extensions: ['*'] }], }, ] }