From e4ecec64c92ef4816c6e156fc2b497d1f4b67e8f Mon Sep 17 00:00:00 2001 From: Ken Van Hoeylandt Date: Sun, 1 Jun 2025 17:11:29 +0200 Subject: [PATCH] Reduced desktop icon sizes (#283) This improves loading performance (and uses less memory on ESP32 devices without PSRAM) --- Data/system/app/Launcher/icon_apps.png | Bin 564 -> 1430 bytes Data/system/app/Launcher/icon_files.png | Bin 724 -> 421 bytes Data/system/app/Launcher/icon_settings.png | Bin 2690 -> 1812 bytes Data/system_sources/app/Desktop/apps.svg | 1 - Data/system_sources/app/Desktop/folder.svg | 1 - Data/system_sources/app/Desktop/settings.svg | 1 - Data/system_sources/app/Launcher/apps.svg | 42 ++++++++++++++++++ Data/system_sources/app/Launcher/folder.svg | 42 ++++++++++++++++++ Data/system_sources/app/Launcher/settings.svg | 42 ++++++++++++++++++ Documentation/ideas.md | 1 - Tactility/Source/app/launcher/Launcher.cpp | 16 ++++--- 11 files changed, 136 insertions(+), 10 deletions(-) delete mode 100644 Data/system_sources/app/Desktop/apps.svg delete mode 100644 Data/system_sources/app/Desktop/folder.svg delete mode 100644 Data/system_sources/app/Desktop/settings.svg create mode 100644 Data/system_sources/app/Launcher/apps.svg create mode 100644 Data/system_sources/app/Launcher/folder.svg create mode 100644 Data/system_sources/app/Launcher/settings.svg diff --git a/Data/system/app/Launcher/icon_apps.png b/Data/system/app/Launcher/icon_apps.png index 9381aaa4404943d96a827d38dd66a41498224af7..d750027683a4553f8b222512bb42275f73f52701 100644 GIT binary patch delta 1410 zcmV-|1%3Lo1eOaniBL{Q4GJ0x0000DNk~Le0000e0000e2nGNE0F3^)Z2$lO32;bR za{vGsn*ab9n*m96gOrgrCw~PaNkl~LIxl3#rVI09svnrgsy&&eH)*H(r=_BQ^eMYxFso4rEexcI)mvaaTw z#oRnZHhP8Z*UfafTz~CR;U}OiMp+}!Cp<5IDypqKt0G^;)`Xje`f5`{b|jhuK=)W# zWH7-TK!!FmXw{1BPOi!Fx|lbOsPv?C1m#i76oTmbbgkOPZzp_TQ|hiah^258QY=QF zlr##Z6^Znjnwn|@Olnc2-JndiVDM5`7ynxLbgjrlGu7GI`G1eXAE{c^31g7Mjn$ge zPY&An0Id8Xe;SNgdGt`4JwXl|$I1Q-i7)JD9d7oBt)auoeF0bvgcx<*ymh5|PW~`( zEY6%FL#~?}H;vBOVMI0}oN7E65V)i&y`GcXGRxTurpa@PAYOJ+)5HrE?1vcVJEOAq|S;m;<~x-(zI9o>Lvqy zs;ok&p>h({eV&&)$z0rOM5gy+4*oIE$qmF6NQg`dx_`%W^84bo(_^6hmZmze&2w@` zrCgp~6A+xXhJg^Gy47{_A2svgll#_UZqB5rKIOXk@0%O0`jwXj`5>+)P!l!lj1mka znQK&$U3Q+G3FZJKh|vmmegQHn!GO_LVh?ox4ojjA)3st5zgT1`@K6hN*P67TkW#$` zZS*9#)qmA;O*I0)wa{_mLAYh%Q?-gj`h;U$Xrb;|Bbd?ff)fi7dB@5tBPlbW66lCs zYv&hWMpO=%@M^d{T-r8_x`ph=wuZ(&r+Z>dHg1Go{s+4@|6xK@s{yaNZgyfWER;%> z$7nNy;T<9aG9elqjLUNiQ7%`W3`BMb`Uv5)N`Iguapo3ltIw%OA82=IY+Q{FcjWV@ zncb-GX595>@jZig3Y)?9si~=Dw=-C=$WrTx(*nYpkvsI2h>;~3_=j&xf$2y$+ zdr6lj<`4dzKzB$@it0$Xl_bHG{7N5~e$XyJQGUe)d%Z&8IP-CX3T{h6zw(0+M*I)6Jm>uC$GF}}_i6+O{{!PC~nBhrd?+``SE zoJkWJIAPi}*bm%H=%B12vw z`;Bdc@M^d%CQr^NY@1Cb5pAJx9Aqdas@*_>7hU(hKj$`T-}hJ4#mxR2qMd*VfkT6? zn@gR>a{2nhD#1Xw$pf4bl>@GujeNX}YNsDpv=_r_lo>(Ch2UMsaf$%{0og@*$Gey0 QF8}}l07*qoM6N<$f~o|iY5)KL literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GUaUjfi{$NBOP*AeO zHKHUqKdq!Zu_%?Hyu4g5GcUV1Ik6yBFTW^#_B$IX1_s81o-U3d6?5LsIP1%7DAMx$ z=E{VpF_So~82XlQ{NfOuXyhPrP}Gst@!|7?T-J|vdTUrttgc|pTU@&B zqE$c6TWn)A6Jxl|AkE#7+tAB;!0f;=rUdB(&?T~eQy;lnyDn9$`d=HnxF$?dxyBi-U{5Q$5+4Xb+=Qg|JD~uIZ zu3;BvXE>VJw0}kD{KXaQHrw7NP5Qv#@U3Un^gKbQidCNWE+6?StP8&B@-b`*u8)~r z*I~Hc;bY>%klkEgf8M-w@X6PG7h0^Y-@U#}evw5(<>j1(MSIHwo@jmlxACiU&oA*0 zdTSMK@aXsTUcOto_Lt0JCJsfL>Jsmcn1_$cLONose3xH-`DJNXZQsTCCR@W}H~s!{ zGWe+6?YmiK`l5QD%z^la_wTdmG5|y28heC%Lal@4o8NoBGJ-fCWNYiTl}xCezuoS@ vFNW95YxsY7*7kp8%wf*aAxi^lI6o6Tp(UA^+2nKp7~>3{u6{1-oD!M1*HQviBL{Q4GJ0x0000DNk~Le0000e0000e2nGNE0F3^)Z2$lO32;bR za{vGsn*ab9n*m96gOrgrCw~DlNkl1+X zQn?D;0I3I{m!NCiDA2+Lw0R6r1Pc{?iPFLUW=nqhCP%TTD!W|NHegc$Xe|bq%@%!R zb*;((q5HoPdf~G4sv#fZ{k*TTya&m)AJZH%QdtdcH~_iyMR{Hq>VIbuFsNr#Gf0{G z@)e=8-f&sB1H5lK=zW(lM2u0*m@! z>m*ZI4bAspvq(I5z%sNf1jy4EvVu=axR%r#W`>blx?%V n3^!D9?p!jF@J4Mc0IhuhrKV!Argf*m00000NkvXXu0mjfd-ADx delta 698 zcmZ3=e1+AlGr-TCmrII^fq{Y7)59eQNIQTq2OE%Fm05TXNO2Z;L>4nJsKp>zNWgT^vIy=DeM~G4FDKNZWs5_0)wyB2QMkIB7Y5D|6z}i51A<;S~;+Z=AR^ z)j8>zpw>dAgtSMDGhVQ12~C`kRddjYmF?24cE+}#*y&4t{L+6?_xS5c+x_;c-!>|B zuS%MixsiDTC({ka8!U`(7;>5z${5TX8LSy*e-klH%B|nGC`xCl(%j2tS(@K^U)tKg zeO{}m-g_u>R&4OZ_6EM!8Oyq=YcJnkle~V{3Xusna(o-y85UVd&okxpWAyxFIxXXq z*nvg;%hElYJ}YUwJ(*i!RmmW5&}~xM?0w(nvuY57XF@hw*J*&*zqw@0WjZTIHmEsHm9{$3&GsPVGWd&j%EmXXgk#@jBo&E6qHXT}rlf zrI1Tl?CHxrhqekG|M>1+TwUm`r>XI_EIXJVoVsY*dTiaTW2_7Z5-!NrGfVuwWxw^N zM?a^4L(JCV|0WVF8?c9$LW69BufPGm18N)z>;J}OKv;S^R=N9?# zD5|`UIpo8sd>Jn5b*|eR4!7zu{EmBUa{BqF4V#}@JrKE2{eJ%TMG@=)6}?w^T34*& zXX}=aW!KhkI`(B=$D=l;{6DFmyBXHIe%)m#J}>N=&&NwsB4+DPPu;jgH*$sfBKaj( yIz7IeoAHjXLD;`Qit)c`u{}FlG=rRdmVfTO)pdW$9V~(AkipZ{&t;ucLK6T0u`A;M diff --git a/Data/system/app/Launcher/icon_settings.png b/Data/system/app/Launcher/icon_settings.png index cdb52d7b433d1e53d2cf0d3013de212eb0ecb2a0..ba33da9f31d361256bc0f14e1dfa5185ad72ea4b 100644 GIT binary patch delta 1795 zcmV+e2mJVg6_gG(iBL{Q4GJ0x0000DNk~Le0000e0000e2nGNE0F3^)Z2$lO32;bR za{vGsn*ab9n*m96gOrgrCw~T^Nkl6~}+)+qDyDntI1OJL9$p2YR7> zh#(LN1W3SxtF#Ii(SSf8B}D=n)W#*yBoA$rwx~!%YFt7dxK@HHNVEktN>Hk*Jhz>7Yp03r-8nq$ZkU}N+q+IB{!jD$&-u>z&o|%Ye19XV%4*<;wZ}p4 z>Cydh$F_E@CXZQ7rzVooo?TUX_s!r61on|s^#37{ev)ojZ4z0{9Gse(9WD+oMk(r& zV_R1NNt+15I94dN+ly<8!`H80ANQLpZv@2;;|V{iZCz@F&6@d+(G&PjS{#5jxyvXl zEG#vO#*b=S{V<+rhJRW?U=YN= z*u!5-bAA{f0Pn9<6LMH#SXI>+-FSw{Gdy@M62FJF>U3chQ*1>g$&N;RYu0-6kYEL2g%=OeFdEwdL|Fy$=dZSF5*}M2-Wa z2ro#YhbxugV?e_XY^7gVPKH~X?GvfVA0jxQTDs@)-~ zPXgEEIw%V&`gPYH{@!wNf*`(4MSlunXH1?k$TnaqVlYh3 znGz7u-I<tb&jH_oC(!+w5Ux6yxv8Of{Ne2d0I2AooAg_}8jD1Qa^^$tk1y$23zk`~WoU zLtkBuJenq&i$qR!iBt~yQSF!KUwf?tAVCm+C_#UoQ=}#!k2-c~f6mrJ5X56D9Pg?r z^D*w&)=H+vhJT{+#Y)9Gxm;E+tlci?lfY1}gR-E=eQu?6 zB-h@;GDqDRBPtJd$CaHci34!$(ut%#a3jdKfR}+cK<9yfgB%tLx2z-%pi;3;DzY=n zi^~4~%B?uQwU{Kea=ARcQqnw3PtTS`8tZZj+`Mw@_l|9S&;SjUWIXMy=q5jmw|}>q zg&?SY(vRZjrNQ4CYJTg*@vVJ}t5)A-ii^LKLUP&swxvDq{4n005tpdZUCqVc zI!U}ReoEleDJKtP0`x06e-SP!azN{szB@89^2V~lrl;R3#kKbcx*vE;#(YMR?+ZGf zUIzkCRBUSp>7&l`W=5ru{4?h&xPKf1;HWmtq3maC#T##3FDre-oHaCVvTfTVy|h~i z4ldiZ8x>%e6q8S74aOvQw(iCKh(lE#X^W$4?@1QFom0Hhy14%Y;XYud%c{J+ixcho z)ge#=#s!{e#mst4&b?mh*e^Q-I*xNeME0bpv#PSEzA$jTV_SDQW$TbO27hnL-oOy) z7Kmg8{%~<&;6}%`CMveIBdHI(4P+n6`Tuok?7ra!<~!fByWA2#j1M95ywkjsBw2^) zD0;6^^QRQ`7ss~VllBS1_+JV)x7&#%?;9zXJL<|73PDi)L}KIvZrS=~mzX!@_nQ(s z6)Rnx7(a|Jq!-+3f4{9tAVkf*>viDj9^Gdh+giVxJXcb%_EQs{U2T#p5U9NiRO!3G lZQ}|An%FpYM4;pZ6VNW`BH?A;#N*@y5pq z7;gv08z1=uBpYoY=enO0EY^-jR+4rM%m;ENPQ+27aK9VBKlnJgFsF?9d{T-TkF%NN$!d4KO91a*PYnJpA%$BAVK zbq#@B-g};as{-Uc0&On~+1ZxK90CB_woMXEKVryl12iGPf5I}f87lpDzHk(v3rAA9 zp9#N8u-s%AMh>Wah=dgD7`zg|h!4QP3$2EBb=;U@C%|_7Yry>H2o?t6MKE;%yb*w| zX2Q#@hPG5`!+-I1fpA5Lb`Qi4fT#nED-bmViN0j%>1QK+{Q$9sz?(o5Ge1~^jlk#t z_&$ULKWOmZ5gLv~v}pisuGpwC|FC@I=urfFUYI|%p*j9-1k8%VTLVQf?F(z9N?UR4 zX6V9moBj2%IBN|7$8jvC;YNVT_9MzimF6$enKiStEHu-2LK$WXC6bY1>pt& zlZTv>DSx`IEuB7I%ZVuDay{)L!Ot-GvO(MZOyVh!{8?)zvkw4zdU{&=i{&E#83A!A zNiJ&B_1DAnMl#w9f!g27elw0NeGy2Id`#rhi(7b{T+j9Wexv za2$UQ5l@puNhaw~sdUh?tW#srY3IE+0L-mwA-ciR)4x**DHCAZ_GA*N!wghyScqw@ zX{LWZ8V?<(cP3N$hhSV=S=L72eE_?NvDq}WsCgwqzrUJ^t9&EiZI;E0RS8y3f=sD9 zRe!-(+T_D_zOWuK&H}?>yWR#y`4E5`6~P0*L;zo8!X7*CZHv2(4wH(U^D@sM{U>t!|~qUbR6ew$9o8jhd^kG!w=x5=BeIaySuw5)?##B zcZ!|&eow@mif#80-WiOk3d#hu87;dZi+}S$PznJ6n3qo|miODX_vt7H9mih{!iFdw zrFvlLq;sZhi`LyUuf*bY0ACGdB6L9(=eHRxyOqr~HbTO2y}OxlH-JP4Pmu`UH+Aiy zY6l&QDR~sYxlu-a=-{FZ|Eebdl7>M5bsTYnNOp|V_!05N)kv{b2N)u}ralF$~%CMv#_>e2n- zxEo~Au*z+{2}nXQ1enkgq!p9N$YW?d5RkbzHVN=i=LRiy0$kUf=H$IyPz(Wps?P1_ zO`YlkI9!i2Az&f+?+TkUs~CZ_llPv>X8S@bQbEK@fa4UFm09d(Kv~Np(0>xOB>yq4 zBN2F2HK`Hkvr3D==S8ykhU0iur&twgB|tc?cMlUi55NrJInAg(fB*nw>0tox#&IOn z0brAgK4|lFh}b8X@RH+t-$RWd5q=!DZ4-&q4ltI52{Uj+uvlT5EeFDQBF^cxLHt`w z&wL|Px6?CEl6)$%UP<()34clY)==>#2xSk*=6jYxr1nPz4`64K^}W&U*t`XX|^0ll3V~_XDAc%wf#l;M%Hx~sG5}tAePGjRPDY7HTE;pI?K?m z*L6L-UN;P_rnV7;4eFbpY6Ad%ak5vtvc0{%YQ+gc*Y!Tj(5`2ub$f(UYiiY1cs7Epj$y$ z7$V+BM0c2adK>CIqyR`du75K#{{-Q;QhSN$F=i|R_`AVIW`8``YHGJf897T=V|0`V z4-7OVp00H}bmBx`CY35($0TpBzACQ^PE(R*sfNpN)Z7Z2rfDvffjS|Jb1Wl$zh!D2 zT*jpp{mO&ZPQyr7y*3NASJy1Tn4PMX|&3W1M8%-=N4%yyN2-}k2ul=((5)&lq>fcMG?Ts%$F{u?)@y59-f zuD1$he#^2lwYnl4$6L%)T`^7yo{`C9P7J4I3x$h?q(jvXVo8jI4a|FI2OlAJA;m)fx!c3r!3w*TEXCh z>PFx!{4g \ No newline at end of file diff --git a/Data/system_sources/app/Desktop/folder.svg b/Data/system_sources/app/Desktop/folder.svg deleted file mode 100644 index 021db149..00000000 --- a/Data/system_sources/app/Desktop/folder.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Data/system_sources/app/Desktop/settings.svg b/Data/system_sources/app/Desktop/settings.svg deleted file mode 100644 index 63cebb1c..00000000 --- a/Data/system_sources/app/Desktop/settings.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Data/system_sources/app/Launcher/apps.svg b/Data/system_sources/app/Launcher/apps.svg new file mode 100644 index 00000000..4ec70006 --- /dev/null +++ b/Data/system_sources/app/Launcher/apps.svg @@ -0,0 +1,42 @@ + + + + + + diff --git a/Data/system_sources/app/Launcher/folder.svg b/Data/system_sources/app/Launcher/folder.svg new file mode 100644 index 00000000..167f0acc --- /dev/null +++ b/Data/system_sources/app/Launcher/folder.svg @@ -0,0 +1,42 @@ + + + + + + diff --git a/Data/system_sources/app/Launcher/settings.svg b/Data/system_sources/app/Launcher/settings.svg new file mode 100644 index 00000000..c442c05f --- /dev/null +++ b/Data/system_sources/app/Launcher/settings.svg @@ -0,0 +1,42 @@ + + + + + + diff --git a/Documentation/ideas.md b/Documentation/ideas.md index 15188b10..b46f8e6b 100644 --- a/Documentation/ideas.md +++ b/Documentation/ideas.md @@ -65,6 +65,5 @@ - GPS app - Investigate CSI https://stevenmhernandez.github.io/ESP32-CSI-Tool/ - Compile unix tools to ELF apps? -- Text editor - Todo list - Calendar diff --git a/Tactility/Source/app/launcher/Launcher.cpp b/Tactility/Source/app/launcher/Launcher.cpp index 4fd4be01..a61a89ae 100644 --- a/Tactility/Source/app/launcher/Launcher.cpp +++ b/Tactility/Source/app/launcher/Launcher.cpp @@ -27,33 +27,37 @@ static lv_obj_t* createAppButton(lv_obj_t* parent, const char* title, const char auto* apps_button = lv_button_create(wrapper); lv_obj_set_style_pad_hor(apps_button, 0, 0); lv_obj_set_style_pad_top(apps_button, 0, 0); - lv_obj_set_style_pad_bottom(apps_button, 16, 0); + lv_obj_set_style_pad_bottom(apps_button, 8, 0); lv_obj_set_style_shadow_width(apps_button, 0, 0); lv_obj_set_style_border_width(apps_button, 0, 0); lv_obj_set_style_bg_opa(apps_button, 0, LV_PART_MAIN); auto* button_image = lv_image_create(apps_button); lv_image_set_src(button_image, imageFile); - lv_obj_add_event_cb(apps_button, onAppPressed, LV_EVENT_SHORT_CLICKED, (void*)appId); - lv_obj_set_style_image_recolor(button_image, lv_theme_get_color_primary(parent), 0); - lv_obj_set_style_image_recolor_opa(button_image, LV_OPA_COVER, 0); + lv_obj_set_style_image_recolor(button_image, lv_theme_get_color_primary(parent), LV_STATE_DEFAULT); + lv_obj_set_style_image_recolor_opa(button_image, LV_OPA_COVER, LV_STATE_DEFAULT); // Ensure buttons are still tappable when asset fails to load + // Icon images are 40x40, so we get some extra padding too lv_obj_set_size(button_image, 64, 64); auto* label = lv_label_create(wrapper); lv_label_set_text(label, title); lv_obj_align(label, LV_ALIGN_BOTTOM_MID, 0, 0); + lv_obj_add_event_cb(wrapper, onAppPressed, LV_EVENT_SHORT_CLICKED, (void*)appId); + lv_obj_add_event_cb(apps_button, onAppPressed, LV_EVENT_SHORT_CLICKED, (void*)appId); + lv_obj_add_event_cb(label, onAppPressed, LV_EVENT_SHORT_CLICKED, (void*)appId); + return wrapper; } class LauncherApp : public App { void onCreate(TT_UNUSED AppContext& app) override { - auto* config = tt::getConfiguration(); + auto* config = getConfiguration(); if (!config->autoStartAppId.empty()) { TT_LOG_I(TAG, "auto-starting %s", config->autoStartAppId.c_str()); - tt::service::loader::startApp(config->autoStartAppId); + service::loader::startApp(config->autoStartAppId); } }