From ad85a212f9dda108f3515806295e645b960db8f9 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 8 Jan 2025 22:53:37 -0800 Subject: [PATCH] feat: assets --- .gitignore | 3 + forge.config.ts | 40 ++++++---- package-lock.json | 14 +++- package.json | 12 ++- src/assets/icon.icns | Bin 0 -> 72718 bytes src/assets/icon.ico | Bin 0 -> 14030 bytes src/assets/icon.png | Bin 0 -> 21919 bytes src/main.ts | 21 ++--- src/render/assets/images/favicon.png | Bin 0 -> 10911 bytes src/render/assets/images/splash-dark.png | Bin 0 -> 5419 bytes src/render/assets/images/splash.png | Bin 0 -> 5239 bytes src/utils/index.ts | 94 +++++++++++++++++++++++ 12 files changed, 152 insertions(+), 32 deletions(-) create mode 100644 src/assets/icon.icns create mode 100644 src/assets/icon.ico create mode 100644 src/assets/icon.png create mode 100644 src/render/assets/images/favicon.png create mode 100644 src/render/assets/images/splash-dark.png create mode 100644 src/render/assets/images/splash.png create mode 100644 src/utils/index.ts diff --git a/.gitignore b/.gitignore index 8296128..22c8d90 100644 --- a/.gitignore +++ b/.gitignore @@ -90,3 +90,6 @@ typings/ # Electron-Forge out/ + + +resources/* \ No newline at end of file diff --git a/forge.config.ts b/forge.config.ts index 88cbc37..391a356 100644 --- a/forge.config.ts +++ b/forge.config.ts @@ -1,18 +1,24 @@ -import type { ForgeConfig } from '@electron-forge/shared-types'; -import { MakerSquirrel } from '@electron-forge/maker-squirrel'; -import { MakerZIP } from '@electron-forge/maker-zip'; -import { MakerDeb } from '@electron-forge/maker-deb'; -import { MakerRpm } from '@electron-forge/maker-rpm'; -import { VitePlugin } from '@electron-forge/plugin-vite'; -import { FusesPlugin } from '@electron-forge/plugin-fuses'; -import { FuseV1Options, FuseVersion } from '@electron/fuses'; +import type { ForgeConfig } from "@electron-forge/shared-types"; +import { MakerSquirrel } from "@electron-forge/maker-squirrel"; +import { MakerZIP } from "@electron-forge/maker-zip"; +import { MakerDeb } from "@electron-forge/maker-deb"; +import { MakerRpm } from "@electron-forge/maker-rpm"; +import { VitePlugin } from "@electron-forge/plugin-vite"; +import { FusesPlugin } from "@electron-forge/plugin-fuses"; +import { FuseV1Options, FuseVersion } from "@electron/fuses"; const config: ForgeConfig = { packagerConfig: { asar: true, + icon: "src/assets/icon.png", }, rebuildConfig: {}, - makers: [new MakerSquirrel({}), new MakerZIP({}, ['darwin']), new MakerRpm({}), new MakerDeb({})], + makers: [ + new MakerSquirrel({}), + new MakerZIP({}, ["darwin"]), + new MakerRpm({}), + new MakerDeb({}), + ], plugins: [ new VitePlugin({ // `build` can specify multiple entry builds, which can be Main process, Preload scripts, Worker process, etc. @@ -20,20 +26,20 @@ const config: ForgeConfig = { build: [ { // `entry` is just an alias for `build.lib.entry` in the corresponding file of `config`. - entry: 'src/main.ts', - config: 'vite.main.config.ts', - target: 'main', + entry: "src/main.ts", + config: "vite.main.config.ts", + target: "main", }, { - entry: 'src/preload.ts', - config: 'vite.preload.config.ts', - target: 'preload', + entry: "src/preload.ts", + config: "vite.preload.config.ts", + target: "preload", }, ], renderer: [ { - name: 'main_window', - config: 'vite.renderer.config.mts', + name: "main_window", + config: "vite.renderer.config.mts", }, ], }), diff --git a/package-lock.json b/package-lock.json index 7b528af..2d01ae4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,15 @@ { - "name": "app", + "name": "open-webui", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "app", + "name": "open-webui", "version": "1.0.0", "license": "MIT", "dependencies": { + "electron-log": "^5.2.4", "electron-squirrel-startup": "^1.0.1", "tar": "^7.4.3", "update-electron-app": "^3.1.0" @@ -4463,6 +4464,15 @@ "node": ">=10" } }, + "node_modules/electron-log": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-5.2.4.tgz", + "integrity": "sha512-iX12WXc5XAaKeHg2QpiFjVwL+S1NVHPFd3V5RXtCmKhpAzXsVQnR3UEc0LovM6p6NkUQxDWnkdkaam9FNUVmCA==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/electron-squirrel-startup": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/electron-squirrel-startup/-/electron-squirrel-startup-1.0.1.tgz", diff --git a/package.json b/package.json index 5c3ad72..4badc99 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { - "name": "app", - "productName": "app", + "name": "open-webui", + "productName": "Open WebUI", "version": "1.0.0", - "description": "My Electron application description", + "description": "Open WebUI", "main": ".vite/build/main.js", "scripts": { "start": "electron-forge start", @@ -43,8 +43,12 @@ }, "license": "MIT", "dependencies": { + "electron-log": "^5.2.4", "electron-squirrel-startup": "^1.0.1", "tar": "^7.4.3", "update-electron-app": "^3.1.0" - } + }, + "extraResources": [ + "resources/py311.tar.gz" + ] } diff --git a/src/assets/icon.icns b/src/assets/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..5fe63fb8d3de80c1c53f5beff1a230c05c9e8a7e GIT binary patch literal 72718 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 literal 0 HcmV?d00001 diff --git a/src/assets/icon.ico b/src/assets/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..dac436ae12eeadc658bc03feb0123f5a417d46c5 GIT binary patch literal 14030 zcmb_jhd-5X*nbX(j*ycbGRlnXkWI->l(J_;Nk~@qh{%?ikx-QEmA#^DDkGchy|?!| zzxO|QKX0AtI6aO!e7dS>m}i{0Ubgm=@Ie9-dfMixZ_)U}43{9xa+ zR~Ekpw|rjwxo}o`uJChS*Ehc4y|0H?MqAygxi1}FX)Ex?v~r2IUQ|+QO^#3#e5B#r zf2i0iu;_+FCvtDQrbwcdzU8=m^E5QnHYBiPXtDqQc%6OiNSJ;;^WN$GrM)NwbJ6(V zdbHiitcJ`jP9?>Z^vJW`uUtrm?B5Y9>o4wk3X{hOPP`RTqsJk*7!^>K#Ehl6Fq^viF~`(>PSxM}pVod`}evI1qB=As#K-gxT8@ z*+5OFSEuWD8x@d9O;l~&p&UbFWQMps3A_c7Oe72?Mv`{co7kIr6~)4<+OIiJfK($S zg#3hcnFudogzwHz#yE>v`ANl>+!JVTLqr6Bz;DMpt;w7}D2aSt{iU{cvM)0wh5T1S z{&TXZq183}yZ3o*s*v0G185UA?_4Ait9VQ#U>wZbwRHhuN5$if3l_^Xwz%(?f0`h) z!`5l3_r-DrYsq1H-h97P>3E6Tk~=7!vs*YcC_Vl*rXmvSz~Mb%a67M&3F z-2c2SBH!xeBf4KP(5uAdfvRgmBz>_9+{`vNEs(W+cMKZOvU0>Tl^IieCW3li(tem= zO-scXKHgN&bW}7~WnRFOWyZ?#(+cbJ#3uMMw<{d-NQZ@J8>!42`__*a`7)Q265hzz z+~iBYf}rtGd+yTpwq-J`n1-V9x2Yjy(kk=rNY~|`jAzo>ISP3$V=)+~%H#WTSkE&? z`xSepEdK3yYxJpIk0LCt_wLVAQlZA%6NLC_N%Hk_rwHU+&dF|(r8x}m7m&*{UQ19b zOObSqDlREe5SKyHr_Xz91cYpR-*+?S;Uu|0~2a#X&%5$Dao4K+R#JRa*zme4dXV2D(^IbD(|?Qt;vlRK{|`|d~byINW)6zGYwKK(u-y$7 zWNElUXz2px3DWxWXG22(u^fg4&Qx~R*UoxCwcTFRAFE|jpkwPb`I@6CQ#Ed~^sg=P zlLJ#yr0=7~8RXZmUt5u^^Rq#t7j4CO4T4ye`z*UsJkBFx$({M^jHO7v-GqGA{!9{r z1U3p7Vf{lI^t8f4v><&4Y)bW?)$Ci&m-HJoPXCB*jB^qre;+dmckJKxuOaNBM3g#v z-@P>j$?LZjS(OvFjyAh?3B4B<7V_B`{*=6th~1_8k$QZ6#rSo)i)Nlt^;h(r8uOO0 z{9Im!Sn4`OCJ%pw5bBAO!&TAvj+xi~5l#6qVN+&-gEk_@weI^45(vpfabcdwNGzuUt`yW1at*AM<9)>L`pi{twL>38)Ki^ip z{g}F7Qin`})XUQ4F0T`zDx+r^n-qyhNAAb^g^u&R#j?!#VGazt)sza?%RP?|q-9@z z-0wH`>L?Bqe2S{t>Qy}$IuYjM<5P`dmEP&HmyyN#k5*Jv5Fo7!zdx@}hVTihhg)-u z3w25QQE}f#kRPqBr7a;%pz zj}g%2i8Vs}FDr&w74qD@Z!Pc=t)!yT%Yhf^@9*y@k0C=CoX=rc2>t3KNW9-LT#tHp z{rM|hy>>ir&R{EBTSCN4n2v&orKjZTl@pJYjoFaWc%q7iSeF$oo-b-9i>Ww z+_``MJI_USR9Z#`nnNSyrlH|QLNZ1hEV};t7c>J+AX+XzGb4i*6#=VTq#D>Pw;d`Y ztbW7EsZ55$%^q+j$%EJ(9zLFL`5~Q zU!*>ho0q3(ZOw(;k;9_z&)XR=2tnaMWcBpu{^aVnu%2h95@KON(HOf6Aa!O17=LNK0~Ur(2Qji1<4(dtc>CYKb#6hK}chLqdqUrRgK4 z%88w)Th9ljw@weJ;nn46f3|}!o$~nY4amBCh?KPM-etkyK~4H5MamwI-2O=6>gtL{ zZfdgnV?`!HrY7TSSoh)u%ug&H=1K?75l4K-%s7u&gGpr{skGJF`0jU(3knnnV*kEh1 zpA4UnL^f60BO)dS9nB?j`%wQ`b-@1S?2V|-Q-^!nRB^_h*GJtq)x{XrOIF@6Vt1GS z_Uop8qmM>R_-Vz*jG|ay=c{nU{wRF2u<+O&D#bwQQ+lW6p@80At>V(shS|*t`B)!8 zy3qW;%dPG0P2KNr*w1IinQhJW(DIugOFMIhZ>vj6s7gvoXpRm^NlERm4`u8g5&J@K zL8W%}FI)3x$8&LUB@3aZ*8M8(#Apc%3!AjXUe&2^V5>RWP`!8Wp5xy$+--u1iHY66 ze);Fsp3r$6{vC@*ObkAM`Ibq8KT-L?!snhmrTHb}z#A`> zw5To^t4gO>^yklg_oMX|opL)CxMP}Y;qtH=A|jK=yJIbous+bGF5=FzvAH=_c;RB( zmL{okRQ!lo{F|h516~geB(3e;ObTFAn~`r+LYD1yfV~PHb)|gDJ{r5PtsOu>Og)~J zWZN*=9MZU<(~vB2JX7JkI{I}xTVLQMeSTYnTDUbHz_E$94~*&|6xV-nq}DBN-x61q z3Dye6KXcAxrafV=V3A~{l8a(f~CQFuc^zYw4m#rQ}fk&MT zmeC?Q4wWN1#a8D%Pc~D{I})#H{(U^Jyrn3Z+SOvih(sfI?%wr-N{=AI>LG`U-iDP< z6DyUg-_sRB%qG8{dT?eA6qui}Y>)S84xtgMoGafHGHpPU(DHl#C`dqiZ*4hxsMnRR z=%mL$Bdw`}r3xpd7im%td<5y@32|a}aVTt@-H* ze_g&`bsMc$U`Als`R+n=*Wv8XsdW>$2;x0h^vLh`H^*V;MGP|iAza#QC!HetLvZ?l zYXMe%@+(0;#9(`hl*Cu=+S_D!eAQdzzV#*mCXQ9FOeI%vc_+IM+75BBgIgBBeH;{MoyWvA)s>9qWOEc72mOH1~s=xEcT zL8uSoPL&f56}YS3{djw#=`{r>H}{RZcPaXuNv~YFvi9q)#`|YuH2|v2-5ATCiKECE zC292+QD{FosYd%gBLi4OBadxuODY~{NeT)Iw4$~QDk>`cR^803Y;5&r1xMp|a(LRT zo;VZr9KG~iS6q~EMBOWn%G=3%eFSe2{LOjl|+#PwPk(S<%4XF06dXM#Hr>i+&{ zr$_AVKik>_o{dTt7Z*Do7A!kSd=I4$tX!?3H~;=d&cR{B_1bFat;Y0V*9IS@PP`9fls7XoE1SU;OTL;tvv691*R03u`%8mGfN3nF2&0jF z>pu3QS+5fg?}1dJy?=4WxXQ5l$K2A=ax&pj3V?8TZ#aGA4+q02R#Uh)mx%zHHNb8r zzdmV>9Oy2MR?~;j@P#Ewr&wiZr2j3nP*qaRIyRw$W*-^p1Njp_kxfKaI~HCx>PGzg z_wNy>_KC(o^YzK*_-jw7dwYB1rgWm zbMsK161L0ui4dsv1GQcMQpxE)% z9yyeC&T;ecwMeX1HF97C(sxI2Jg2nuOusOxWzhxMC22h1qg9)o5+kM9#uxpDfq=3v zLNJHuB)q%Lk>WD>+LjbA)$@Ss9FsIdfnc*x^@>`eFcAdSe@*r5*|YpkOFBq_1clw< z&hm)UE|Zj-FfM>b}%F~YN!iTlCVhox2u8kxqTym8#6j402I=+yD~kEw*+6)mpqcPI%`y-r+P zE4L}BsV64_nZgd{3lDCwydSFZcv*HX&S7lLt-7G(5~P&&qv$)7&GByNPr13xu~+rw z#b0p-m(QlW^$bt+S-bl7lYs#D0%WABZMMc$-zMo@M=86J1Dzf zzBJ8rB%zu{IdOSr2mK@>tf$t?OD#c=tykgtBj^N8q@u&vUIBM$CP?^tMf`7(HEFhh zfQypDq2Q;dUmAw3mnB&tEq~O-2oU6z!;Ln2I~!X<5%Q!7{U=;`%hvRa_;95|ctTE3Eygz_`gpVEx(+N1vbt}V7m}M>FUhDe+Z3R)fDdhs*t!b%#?9X`W1IgR#WnBT zfwhJ3+5hV^a`PDq+QWd22sAb#B&N4h!mIp29;pIg%7?l&<73X^$sjNUI|}f|cUThd z2V};^QZpjoUK=@Eb|eM}n19b#_G^~g+}xDlsBh{mx6{|xSGvgi)s4CR1)clY-WoG{~dMj$-EG$}Zw!P({@NOW!&K?P6pj_$h0E_(T)*=jDrk)CJ79hGGAt@eK|0|KQL4{`^3x(Z#lm z{^RXr*ai8YUZ8p@wJ52ohRnb3wt^^NDIc+AZ?Pmt07%R(h7=TEy5r>Jq{O{fKC%)& zO7=cIJ$;kyEAiXp zJ1-XhD176b%`GmblyF+Y%+p@KetmAF()oYW=+TQ8*P6P}(Zw$rb1cWv!Dz43}(rzxMJkfFbNBJnr_IECRoD%2Pk(GoObow%WzENh z_*)u*r1alyoVbeE>cw~7gg1Bi2-uCw8rU~eu`tcT$y^TRKWaXBKr?^om|nea?K}N5 zlfgm@7A9^933>{4wIIjH$@2t562HwKU$Kk3hO*|lN|aTk!&AQgoxak-xb`jggUO27 zl#rYsaxq%}ag=-$xw5LNdsqw0Mkb7{X;vTw3`~kY&C*>Z#IF(+{#MygrttfY8gR|JU#E z*z@=wfeP1eq-pq){e=q`%AxO9X72u8+{PjLco{FxoBDWgGdqKi;;%oqEHk{r#>Pe~ z;bhbFld@~ev~Fo>X<&#xKQlA4=m$9lEv(*Ww!yYfZ(ELnI=>Wa?kdUHo+`uie5T#B zw7ijw2#u#x8-gM>pa$0I}_QI%;^bhK7cZHU(oJw1P%g z_vV7ox8>=Vl8ihCCqGT!d8Gp+Ux0mNpMU@4Ih9Ht^_tl|Opp>6%uWWTU-wD#1El6(?=dz3f%8R{ z9Sb|J)jw*aerGyaJ2ULicGcy0yI)gRckt;|UtpVGjH>B&N1T~fzAf_Fj8;|X>zjdE zSaY~yUV4YE|8}jbk=OBdvg*& zU#m7$hP_UYBUstv$aeEu0U5-HG7IdZ$u5d#bY0~rDCV5oJ+E+{OnQ&mX=V5|M5EK; zx`podljB4CwQ;$sqm4FP`rdj&>m%n!_}=UE1f&T6zWJlLvPQrW3yX{PK+-|jBB^v* zZh+DszuFNO9qq@F>Mm&c(XA!D=uwxTgh)}S+!npp7a6>{-oC!|tv-zpP?lQ4nI1*G z%Cfe4{I~(2OM&aAB?vm;6@)b7ef~Xkoi&^DEIikdr`K%i1gP%(PyX;2y!fqcs+{+6 z@zags@^Z2161rNlXapxov?oi%QPa@0xNp{e*8Fg50-%5M4KgXpSkYrj1)sKmW`AO2 zn0%SXVGkOmc84iM<)nt@MKxo?5jAnt=g*(bC)LY|1uTA20<{kubn55{!uo;>u~Y7# zsHd35cDTFxsB}m;8nN41(*0swo5Fm{nDBrlopVy=WJ(5Z?F*w2S_BBRFLehOw;kWFxLX!KqqrVLq>UO>;Alp^ZnR%bX1htlPCE&76q&cnJlANI|R&V3f7L!H%Bhp%H`5e zjG{DX6!fSTaB|i`sy83VH;wEh?+=hZn{V1kXsPcfFpm$gdaf#da@;U&lO2NxIucao zXD0g_|8Uw$sqIM4vjj$aU*@#5G@QxPlI%PR0^l%XpGpYZK@H+@xMNW|#u|-u|M~N$ zVmgL1_)Dk8ucE)p@zNgR>}v7e05!~e(iH|Oo^$Bw>tBvy`p^>u*=4@)E4v&v5eFML z7q2x5d7M)>H8oXADm}r%YAib`{?i(Wi~^;2zVD+sV1ohB*`<%S?n3M_0xeM+8^#}6 z-2q65R0NF=5~>=Hy%f4Xw41L^t+* z&f`ZycPJGwzKCBv68!`H`FAjMwdvW}55~2gw1N*YuShQVf*z!k`=|Vrgfr8AusRcmOiC({ct)!;5B=C6!@B#P~ti6Ll;%?O!fa_l2 z=C+5Vu+;zsOsB^Ey7cMMb7VOjSsz9J6QdT_yXm<2Cl`ndIjGq=;;9ez`6*fgWY-j-T2o-UnQ5K#$4=gxq)uXI=yp$DG8h zfJYNPy~0~QJWixGaf}k<<$bY?4+eI-(U@f~9yn1ArBDBIB17xE z2yQJlKfEYL#vR2c9K{n@8(5LKBwqw%`Jxs#$rCn9)8kOdrBe*z4f7`ez~My5VvqTpvhra=H{9+3VF&l zBEgMut~bfwhJ-Bq{Wuet8ZaC4sB_WC+Dy_jU#+3*FSB!Vmu)1UVSn0>bgb@{A$Rb7 z5H|m`!onzJanRoLJh!>O7*`c~68gg};ho{*|xDb7@x@t?DB8R*%d}ni&9i zKO2+AX+sBSW<7u?vRwa)P}f%&tP-g~0JB8^^W$^}oCwBlEuf$OY;SFXR@e$lAghrq z{`*VLl_Vdvun?gbEibThND*6_sM`CvmUcC5=D|Gbq2^q~i$h`*-8XuS7Ew|BCRvSIb9I@rIe9PF< zOk6u=eAmcmMegP41u)xMpti%|OXr~)`e~`KDW?aLG3|ie@#6F=Avl7=w!7H?SW5MH zsB>XWz8UaZT7wChot@n+ObYyh(p$^W(8HIH^t-*x8?BsVu$hOKoz8%dlPqR`$!&L~ zgGb5|WzzZXI&N#=>s(Yf_%AOEG%20lznPi@A0h?R*NbP;=t6Jhf-MR8-`;CZjX+^| z6~g-sb8#^-8|1fa7)P+l60$dV7hzFh3ohbE1l-j=ecK9x)1z6Lgv=Jlv9B=LU;@kf zYu@oOSTIj)ZETJbE!-Gr77cj&C$2sDBTOzYtQ%{srA6Mi6;J5BvEcv=2j3s|U>x-8 z%6)ev?9etwtE8~dVGPz~q}pv;OEHvAVRK_6KI?}tNMC2QwXNmleFvf&Gx6FJD^1PweZmQZ-e5D~WXoG0BI!cEkAuQ_=dQl~Aypr_ zy}_Huwzks6HiLx@@pI1IqLlX(jZNs{mKudaTAH;bWU5aNqdH_tgoI0O zV36^RHokrv5q-q_Ft=<}Z`q+DEFd$6fhN;k+IR%~goE%`uU_5%&@-o@s(Lq$M_2x% zdJ=W)R%7Xt)zp(Mj-#bVGMAwhMNdFtozso&1EYDj?K5;d0XZzm#LqJ=3dAbe-vE`@ z8o@H0_6-c^Bqt=ygE${;p_^swL6y?uFyn!I1Gs6nIn#kvh;*wqn%s8F1SBJ>5zjvX z4ZV}*?1URbT-%E!P`X`RAv)il3;d9qmd2b9h&(qtn+PXl>TFPku&1E)cYp$z5d zwI&J;|Eo-<#0U}rR;uyw!UJIm34MX24r%$IN05sW;FIn;t8g6(kcEYu+X7_sWVSt_ zC@FX!rd9kMzxDJh$$t!Zi<1DYx+c9LAPH3jF}H(CiydLU#=nu4o3k_oQGuj)zow|bIHpa=Q(9%2fA_AL#%|5B+Zt4PBJkC2k$jhJQ zu=#)(swat%2B)WGW-1IXQb-#wdbL^g@!4Td!-o6B&f@7*l5 zeKA^+Ki3(;ibRq+{+2y6zJ|qggJ~BarD5uU?!GAQh{2&{9Nb|LcMLi>_RO(Pgek0_ z2R$DYpLiT>U1$g-tZ+%s$*BVCkqv0GPA?z@6Okl+@a3z?q_!e97L896&(ZQD@C3>k zMHi$&T1|_YtUW!f4FFU7E{IEX-XY*J@G`<=kcRWpz&bA(p23$sVRb2} z4KiK_eW|zc_-{sK*i??#(qDJT*xR2?HHU4F{Q4?#8vs8{sm5&fpwty6n8Xei54iyT{#Wa-*PS;3-G(M0RqwBy%fhy1(3A zF?0grURwmf{>q1*0W*GDJ+L>9U_2+!ZD~N@8yFHwkAwt2AY*J-uabJ!rn0iL2lK|Y z(P7Z<3VAqSz-Bstm?kVq(BfzExxmY!z5CPUOjDctiEz!eS~8iVHJRHflDZthWidlnQ$HsV{O*E2<-i_XQ!#x_QSaFmANO9j1eHH7OtQ)2jUu?pU9W);Q+@ zQ*5j4ot=!gF|S?P0;XzI@80d}sXbnPwkmzHH>F=~l-Fh@oB~6DS79oyMz_e4Yj^lL z*|u9X*f5cuSG+l0&~uN0-{3kjaQLfyd=EUNQ`4;zRWS8n<8?8LJI*co`r@$xlnRs~ zx9hp7Nx2F!)_(+}M_x}yt6UF-)t^MNW`j{#?(qD%2gI%>CPnM$GHw+VkS#YIHYL2pr(hZOyqB2u6d<=>Kxdx z5kNK10^Ah=U57sNS2kzx4ej6lP${oGhv0f(=r*58!EjEINnUB-oikX9mPDLVp&%sPs`_87z5{q%t{vm`etBvz5j}m3&!8Hk1>j9I?(N%U zkipi2AvhR!T_kOlqlVKtOI4zNu?MHaP)+1dUjpJ{IBoaKl?smD!4o6Ri-@E1u>Bba z2ZvT5(cFMMpn& z9e@->y+8vC&p~@&vS(7p(%UT4X*4FNb(V{@O1O$4t?%kU%pA6;}1X_{M57OW}Fvo2I8zXH6 z6ByDt=@c{pSTmCjhY>pc>%KrvIOp_ zL*diEB0Y=SDn@zz;EF2u3B&zbs`s_WXu*sQAwrJyz<3xWZ*KL=-BMuhV<1FCyn~zr zV`2$duA>eQb<&_sX`&i?QN0O2jOhW!x`_e7iw-Rpfuv2XvNH-_Qq$5ly%K+f{mhKZf>p$`tBywkR%mVRYPd=>)QA3xs2F4Bi^re zRG26gG}-<4h*&)3uK!nv{lzmv`9s^q}8P zjDeGnj|0jz6>RQJ1x;23O%g;60^^?cHBFUJf2zOay zv;DEq3JAQ_xZc9^06)VjXqM{mI6!0O2b6U6%9V5gnB7O7GB_i9&1jCKNdf65y(mt3 z>%)22yqkT(laAuAyJjiCF;vi`WP`H+0S`{6MJdH-y~bXeulLrvf?&0^*)Gz=Gg59n zS6Ew}U6SvbD0||RAx-Rd&N{WN>*kfQE&bE1zHdkLRA`^GzG>&>i^B#p58`}xBx>Zj z0M^iE#1Mww`e0TxNcpiZJE6n!DO6cKNST?=Wcqmr=g(G$cM`y>d{NlWh>W7vz*QDsDlPnQR1&B>wEFLU1XD|>z zU*dp7XO;@Jc5izsq)I* zxPkAv9%76I70e4JJ~CijH(re$^eb{XY|!6jc0xZNjIS&VArcY#;o%q_d|YqBES(xo z8+xlc{l$HL-B?q>1X+w6Kdt}CORL)Q>~v00cn`W3-v;6_L#L&pNau9AAN=(#Oi05I z9atq2{x>fv!R^G1O$$!P0vkJXE+{<+_Cb@9MVTCw@^ntDLcyj`zi_S)^Snia=-Yy# z^z0lJkREPo0^ap!RdyR>ZWC;`6ao%2Te~RNU?nWCNm*Srr#GRXxzzsI^R{n2GYKKS zu=-_R<~vezT*1A%wo>`?u9RpLY|88_a(QNDayWnh)(;F^xQ{#0KW+kl0#2FTZ06H4 z)dOT)eZ*E2>eGA-*WGRa!wcJP_Q2v4528pz7%33X*4|825NE(phoMZO|AsYSBEvt+ z8pKJv%8`dnLFYk^VhIfmowL%q1S0_O_`)!y27{s3u2I3qAUnalg#rv+J=DF`Vn_!J z&#uA%ya?YB+dx)j{-h2u*9}&Nb7x?TB;eq{4a|IaVSK#-3#Wrx2{8=Ufno<{wMMEm zXimU70AbzHrXuu1!P#H}1XL(E25J?^EU%i)GnL-ebqOA^Xb#8-aDa2u;f6szySd|2a~=bz}Xtj3hHdj8cq1eK{mokG_Z`I zD!;d;gChZCg@VWlv9Vw$7SuQ)3zJG@9b&Qg1;3v`$Wrf=}zsj5V{tpPQ%oqRw literal 0 HcmV?d00001 diff --git a/src/assets/icon.png b/src/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c27d9cce62cc753eb1187cdfb97227e76a46c743 GIT binary patch literal 21919 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 { const mainWindow = new BrowserWindow({ width: 800, height: 600, + icon: "src/assets/icon.png", webPreferences: { - preload: path.join(__dirname, 'preload.js'), + preload: path.join(__dirname, "preload.js"), }, }); @@ -21,7 +22,9 @@ const createWindow = () => { if (MAIN_WINDOW_VITE_DEV_SERVER_URL) { mainWindow.loadURL(MAIN_WINDOW_VITE_DEV_SERVER_URL); } else { - mainWindow.loadFile(path.join(__dirname, `../renderer/${MAIN_WINDOW_VITE_NAME}/index.html`)); + mainWindow.loadFile( + path.join(__dirname, `../renderer/${MAIN_WINDOW_VITE_NAME}/index.html`) + ); } // Open the DevTools. @@ -31,18 +34,18 @@ const createWindow = () => { // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. -app.on('ready', createWindow); +app.on("ready", createWindow); // Quit when all windows are closed, except on macOS. There, it's common // for applications and their menu bar to stay active until the user quits // explicitly with Cmd + Q. -app.on('window-all-closed', () => { - if (process.platform !== 'darwin') { +app.on("window-all-closed", () => { + if (process.platform !== "darwin") { app.quit(); } }); -app.on('activate', () => { +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) { diff --git a/src/render/assets/images/favicon.png b/src/render/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..2b2074780847581edf9cf2ed0d2e9ebd8ff08c56 GIT binary patch literal 10911 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 literal 0 HcmV?d00001 diff --git a/src/render/assets/images/splash-dark.png b/src/render/assets/images/splash-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..202c03f8e46e189025b204b5bedc0552aec4ac82 GIT binary patch literal 5419 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 literal 0 HcmV?d00001 diff --git a/src/render/assets/images/splash.png b/src/render/assets/images/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..389196ca6a364b9e4b7daa0fc13be463b914b251 GIT binary patch literal 5239 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 GEB_DGHk4cd literal 0 HcmV?d00001 diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..e751393 --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,94 @@ +import * as fs from "fs"; +import * as os from "os"; +import * as path from "path"; +import { + exec, + execFile, + ExecFileOptions, + execFileSync, + execSync, +} from "child_process"; + +import * as tar from "tar"; +import log from "electron-log"; + +import { app } from "electron"; + +//////////////////////////////////////////////// +// +// General Utils +// +//////////////////////////////////////////////// + +export function getAppDir(): string { + let appDir = app.getAppPath(); + if (!app.isPackaged) { + appDir = path.dirname(appDir); + } + return appDir; +} + +export function getUserHomeDir(): string { + return app.getPath("home"); +} + +export function getUserDataDir(): string { + const userDataDir = app.getPath("userData"); + + if (!fs.existsSync(userDataDir)) { + try { + fs.mkdirSync(userDataDir, { recursive: true }); + } catch (error) { + log.error(error); + } + } + + return userDataDir; +} + +//////////////////////////////////////////////// +// +// Python Utils +// +//////////////////////////////////////////////// + +export function getPackagedPythonTarPath(): string { + const appDir = getAppDir(); + return path.join(appDir, "resources", "python.tar.gz"); +} + +export function getBundledPythonEnvDir(): string { + const installDir = + process.platform === "darwin" + ? path.normalize(path.join(app.getPath("home"), "Library", app.getName())) + : app.getPath("userData"); + + if (!fs.existsSync(installDir)) { + try { + fs.mkdirSync(installDir, { recursive: true }); + } catch (error) { + log.error(error); + } + } + return installDir; +} + +export function getBundledPythonEnvPath(): string { + const userDataDir = getBundledPythonEnvDir(); + + return path.join(userDataDir, "python"); +} + +export function isCondaEnv(envPath: string): boolean { + return fs.existsSync(path.join(envPath, "conda-meta")); +} + +export function getPythonPath(envPath: string, isConda?: boolean) { + if (process.platform === "win32") { + return isConda ?? isCondaEnv(envPath) + ? path.join(envPath, "python.exe") + : path.join(envPath, "Scripts", "python.exe"); + } else { + return path.join(envPath, "bin", "python"); + } +}