From 0f2e50d26598a304db0c8b0f6a62fda080600a34 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 1 Feb 2025 12:41:43 +0200 Subject: [PATCH] feat(tray): higher DPI icon --- bin/tray-icons/build-icons.sh | 22 +++++++++++++++------ images/app-icons/tray/icon-color.png | Bin 0 -> 626 bytes images/app-icons/tray/icon-color@1.25x.png | Bin 0 -> 797 bytes images/app-icons/tray/icon-color@1.5x.png | Bin 0 -> 975 bytes images/app-icons/tray/icon-color@2x.png | Bin 0 -> 1313 bytes src/services/tray.ts | 2 +- 6 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 images/app-icons/tray/icon-color.png create mode 100644 images/app-icons/tray/icon-color@1.25x.png create mode 100644 images/app-icons/tray/icon-color@1.5x.png create mode 100644 images/app-icons/tray/icon-color@2x.png diff --git a/bin/tray-icons/build-icons.sh b/bin/tray-icons/build-icons.sh index b3fb38859..cb0bb99be 100644 --- a/bin/tray-icons/build-icons.sh +++ b/bin/tray-icons/build-icons.sh @@ -11,16 +11,26 @@ if ! command -v inkscape &> /dev/null; then fi script_dir=$(realpath $(dirname $0)) -output_dir="$script_dir/../../images/app-icons/tray" +images_dir="$script_dir/../../images" +output_dir="$images_dir/app-icons/tray" + +function generateDpiScaledIcons { + file=$1 + name=$(basename $file .svg) + inkscape -w 16 -h 16 "$file" -o "$output_dir/$name.png" + inkscape -w 20 -h 20 "$file" -o "$output_dir/$name@1.25x.png" + inkscape -w 24 -h 24 "$file" -o "$output_dir/$name@1.5x.png" + inkscape -w 32 -h 32 "$file" -o "$output_dir/$name@2x.png" +} + +generateDpiScaledIcons "$images_dir/icon-color.svg" for file in *.svg; do name=$(basename $file .svg) - inkscape -w 16 -h 16 "$file" -o "$output_dir/$name.png" - inkscape -w 20 -h 20 "$file" -o "$output_dir/$name@1.25x.png" - inkscape -w 24 -h 24 "$file" -o "$output_dir/$name@1.5x.png" - inkscape -w 32 -h 32 "$file" -o "$output_dir/$name@2x.png" + generateDpiScaledIcons "$file" magick "$output_dir/$name.png" -channel RGB -negate "$output_dir/$name-inverted.png" magick "$output_dir/$name@1.25x.png" -channel RGB -negate "$output_dir/$name-inverted@1.25x.png" magick "$output_dir/$name@1.5x.png" -channel RGB -negate "$output_dir/$name-inverted@1.5x.png" magick "$output_dir/$name@2x.png" -channel RGB -negate "$output_dir/$name-inverted@2x.png" -done \ No newline at end of file +done + diff --git a/images/app-icons/tray/icon-color.png b/images/app-icons/tray/icon-color.png new file mode 100644 index 0000000000000000000000000000000000000000..4645fe0568ccb6acd5db0f654209fdd7ba3b2599 GIT binary patch literal 626 zcmV-&0*(ENP)E zIQd}zkYeP3ka7#7Y@T$YVCuzW@5l11*v07@B+F=d?fEoa05X(8DxtFa!Je^R=KdO|H z0p?0yassVE2}Qyk9G}@aQ>B==%Ml&eMVOr?DG=tfRXGO z#K!PuJrvt9mDzXiDgdkwv2^`l8jg8~n0A_2j-r9kGqdiVdm5vMb73_?2&kfXtB7&q z#K`%@6)S6RA)94ouQ(6RE$Xbh896mJ-3~_EB>|vZ^LEQZaXVjF*u>wz%T%vi+}jSf z<{@ccY?a@>LU|Qal8^%aah{vPxv+Xb)J=5RfCy%Mrj8dQ0rT_o{ M07*qoM6N<$f;RUVwEzGB literal 0 HcmV?d00001 diff --git a/images/app-icons/tray/icon-color@1.25x.png b/images/app-icons/tray/icon-color@1.25x.png new file mode 100644 index 0000000000000000000000000000000000000000..4c90e875b0d38fde4464c8eb2a3288827f36624a GIT binary patch literal 797 zcmV+&1LFLNP)zJ&WL70EyHPT|&tS{fTtsRbPX6aX+>58v1)Md`tNd3s4RPFytsAQ%j4 zW^w4%L~Lx8j57|K>{UXqGxru3p1kgL&k!IN!$O7!8|T?^?2Mh-^E+&1h9Z6d$ zp>YAhb!6!t1iWQ8JF2>S0f4ReaHjKEwK+HZ6iPBUT;Og$gm34#mQ(mX>h$!y%y*V7 zrlRNLG8RxI!N6f~BWZ9)(}g3q@2`x`)*5^I!Krdhi967={Y-Z{xg&do0WYj^U)RR~ z)eIL~B?ROFm?y^ilZLyirJ^Oic9$&ErOdXq1-O-b18Jw>bbRo8d`+mYw>H9OG`42T zIvI)Vrr6>FT&{|_LQCWV=QhG;JUuegN7Zx$Rw$Hh4h+B=`dT~PdZ~QNglcIiN6kb) zrpZZ3Sl_=fHZfDTWkN_fM2Q4QNiZrZaEw7qvwOl07w-G+0$^Z~P zQ*+n)F00000NkvXXu0mjfIbmE! literal 0 HcmV?d00001 diff --git a/images/app-icons/tray/icon-color@1.5x.png b/images/app-icons/tray/icon-color@1.5x.png new file mode 100644 index 0000000000000000000000000000000000000000..4681c5ad15e7f463a3679cc1f7e46fe848274a33 GIT binary patch literal 975 zcmV;=12FuFP)x0}l595F?Pim13t2?zy+2oeHCp(yB!saFbGLZxWIhI)ar zRix0DVp<{urGif`LMuKP!TO}7*at-{6x7<%WV`9?#l3ZQcK-kPu-#>CwYw$h4+F!Q zbG~opJKs6OhzR%d@cW7mKyDV$dtbk@wS>~1kb*}vsX;&}(=b-pMkIQB<@qN)-&-vE zg$I1)bKu`tt{Dkr_QdP~U9Y{&R3l1U1e{BcN#jQ);wMI5|MJRz0jJYxae4HI&okB4 zxuT!@-xqMr$VI8j>mN`x@3ev%co4ueH#2YLPQ7qR3~qle`pnT^It#NC7ni)^jk!|2 z(2jA&pgYvyjKe|S9Oq8rB-owoI;bGX{`QcnUcXQ{y|B9#UpoK(j(SjjwN@`dlLi2o z(jwdj5_gin9)J4GC7yia?1FIOrS=oX(Mr}859;qV3042JaOThy01))SYNN^;I)LB? zTyr33gg$GL0e~fJZ45@Ifm=2egJV0GVKu*xG$16H>1Z$pT`NFWa~5Oz!xU1S7r*r#2?HKSI{Ot@o+ISIs^5sVFt)8z2OhmP+`r`v*b+I0P+*}Y*U`!OS8 z%&@?%A)wEJjEw%wo#OftfA}Bq`;Yk!R0lV_dmOD`p8e6y|`lz zil=r@kTr0GfXA7%hnUfqXAI|vC{2G2{c(91Po1Asf=G`NU~|Hs8o1!y#J7iM4u`j! zrRPB_96RnwdG(l9#lg9Y=6o3O8Cdfr1Bk;18_B>FnWDTG(ASlw!S>%sp0bzLoc(9LP3P&G%Lv91p3xyeka<<@=6dCV}? zrV(uUX9JP)7!iwM9 znVIwd|K`igH#5Y{xSJvFs{8)|K(DsJ+8CRAU;(K+k>^gEIu`NHhzE<#a+b$H(-O{=eM5qywH|YGw z51*9zzo%YzBnjxLDbO45|5b}5mnEKE|J%qRpC4Vfzzs_K&J|9HOy3DG29r)C0OnzB z0FX3OxgF0RN(o^ln?W~#W`!W1f$Hmei2ch)3wv8$8rr?Hqtz7Pt^H1)Z~}Xnk)fL` zAS%oS2_%fV7XUysynWz+h)?)y_^d}j1U_W32SNU9NGaZ#-_tVtYL^|w%M6}e_KWbO zGhiSz#EgXFOOGT66>~~k<2&1)`KAN7QU_$RX|6CLYS5oRS_mXU*M3rV4(wlsy4+_n z;R|%M>HxsNbG~%Jtl&!@kx*3D8p(XoE11j*Bf~Oco@q>$8 z;%TW_OExUrdu%9FMIq|>?D1WG_S8~b zZ6|^-YCw@B^k_QZNbF!J*6=&@@QdFi!*BIO^rxUi=OyR-Hrp>7zVx720su6jK^F!h zdNgkdW6|m-HvTX&EB{&vdp9rmkfpblnKjbGfTn@;2t*_X&8h>0o`K+ZvU<(;2hy|( z%&i!*beR=E1OnMi*a0>^Xr8n7Qiaj=001Dje`PJX;buTCBB9q0C{rI;9bxc3J{$Xq z-RKW-v&etC{u2fs0APVJiwJKf zR=4aKtT4Os636F9v2X9(`u4t{$ckv1sh3F@vYKziLryP=Uc9BT076H%+9 zssI2GN~Tu~JGia{g~L34wOwm${If#PvdW{;xvhuEcqL|uc)}jqMm5oj z6R&CjXm6Kd@_kLBwsznyrfCq#hLxj{xHAuv<;!CiN`+sbkv(qrR}cR80Jjl${c-va XG6xoUHST1K00000NkvXXu0mjfq}f^< literal 0 HcmV?d00001 diff --git a/src/services/tray.ts b/src/services/tray.ts index b2e7eb0a8..0adc8d135 100644 --- a/src/services/tray.ts +++ b/src/services/tray.ts @@ -35,7 +35,7 @@ function getTrayIconPath() { const iconSize = getIconSize(); const suffix = isDev ? "-dev" : ""; - return path.join(path.dirname(fileURLToPath(import.meta.url)), "../..", "images", "app-icons", "png", `${iconSize}x${iconSize}${suffix}.png`); + return path.join(path.dirname(fileURLToPath(import.meta.url)), "../..", "images", "app-icons", "tray", `icon-color.png`); } function getIconPath(name: string) {