From 2a12f8bdb4c3ee7e64e5f39973e96604b148f619 Mon Sep 17 00:00:00 2001 From: Luxferre Date: Fri, 23 Oct 2026 16:54:13 +0300 Subject: [PATCH] fix(games): size windows to content with edge border; add Games to app-context menu --- overlay/rootfs/usr/bin/snake | Bin 13672 -> 13672 bytes overlay/rootfs/usr/bin/sxmo_appmenu.sh | 18 ++++++++++-------- overlay/rootfs/usr/bin/tetris | Bin 13668 -> 13668 bytes prebuilt/games/usr/bin/snake | Bin 13672 -> 13672 bytes prebuilt/games/usr/bin/tetris | Bin 13668 -> 13668 bytes src/games/snake.cpp | 8 ++++---- src/games/tetris.cpp | 10 +++++----- 7 files changed, 19 insertions(+), 17 deletions(-) diff --git a/overlay/rootfs/usr/bin/snake b/overlay/rootfs/usr/bin/snake index 5ef421a71f97fdf8adcacccac5e71810f0472d73..3ac5d64b5c2955af14c248098a3e7dd71a318ab4 100755 GIT binary patch delta 762 zcmXYuZAepL6vxlA>zt*oxi)mWzU@t$lMpN@MJT(<+Nwo~NeU^;*d~N8P-_w{uq7wImUlVBnnCS=BMlrv10b@SVX zqKx6*ZPb-Heqt-FQeGpy{(#ac%GX&ev7yrO*t62=ReIRNO|2f)%<`av5m}|IfSPlv zt1`{Z%3POdWwz7JHOfxOq~&8gc|G3Dw7{suY>TEy+cmambB3E6+khX-zov@;J|fSM zTXZVNNTPHtr$h28MD8Yp5425Hb-Ia%09OPs4**i^8$bY=H2@4^U10%@!s_8qw(}8q?j%>mDA}=Bdp_Fc^@-p=}_XN&J&dsF;b>Hry(5ADo z_A8%8W_WS|`V&G04XBOc7Wx*SVR5iNJL zxCjMZp$lkSu+WFO-DHxoc{M%W2n6(c0Pg?3QH(uE8s<+?>yTy!z=FszeyhWyP+w{R zdNCdp0o*|@Ar%OR1jEIqV0ceuFl|{$NB#s$Cc-J{6X8@E z%oArCju)9Hd6E1o=jQbEcb=wN6oCimZCBD?W-B$8bQg4SK@qV#Q#qxjobzyPt#a#J zgW4g!clJ>7E97&kuYEKwq(z3;z)Mf&7b@qqxGPeJ?A2^PB;>!IZ)a2sLZZhvDE98# dKpo!cT~F$e-0SlbEh7~#;FTHv9cAal{{Vp|814W7 delta 749 zcmXYuT}YEr7{{Npck|mhr{dR7i zPJ-n{VP1$<4whFY(^+AXeW(zTv0+AgvGv+6e3!`95xe;DfBxtEZq9i^j*!E15oHf$ zd5h1iJ{|2p{&4J?dDL0o@kZx$qk}Zjqd4qVd9RB{5OU!Ri5-z5nL+4-S1+Zg%!d6h z(d;scS&lZB*?tfeSLfVB!(LyGU7*rhEPK>Fy^GUUhyF#&xZrp88b2AH32yXub-%1g{ zJHjO4E`BZ3qu-d5T}gZyLJ#8n3cf6_R<^L9JvlHq_n z7a1@wSEj3pZ6P;@whYsGce1pheS53^HcVm-%fo(4s5x&U)9c|(`DSDpwR}tttdf{@r*)WHO0-@rcIlho%PAj zIxQ-?k100yFji-bZ{}bGslPjfbkG*(GviO3P?GWO0&xzF7|-CW{F+1;r*g#jHQbh8 zm|MYh+qUciTyE=dAPgFn18|J5#bf!s$d7ZCH3K&|@Ts%_#{aMTMdqsnA?f2Jn+WGA z05d^MX1|8~6Tzbf7$i9%0Jul!B2*BJgg{tV5(pPn1;WLtfv{d-s6%Sk?69Yo5z@u= zpga9HU|0$ZQMu0O4a&=P9YENLYE#*uPppQ1S?HwwxQt}`lAMi|y1}mc^ bXHo{EhdC`BeBniEN-W~YPK&(BWo@E=TCESK diff --git a/overlay/rootfs/usr/bin/sxmo_appmenu.sh b/overlay/rootfs/usr/bin/sxmo_appmenu.sh index c337f28..abadf47 100755 --- a/overlay/rootfs/usr/bin/sxmo_appmenu.sh +++ b/overlay/rootfs/usr/bin/sxmo_appmenu.sh @@ -236,15 +236,17 @@ $icon_cfg Suspend Blockers^0^sxmo_terminal.sh sxmo_debug_suspend.sh $icon_inf Log^0^sxmo_terminal.sh tail -n 100 -f ${XDG_STATE_HOME:-$HOME}/sxmo.log $icon_inf Version^0^sxmo_terminal.sh sxmo_version.sh --block" ;; - *) - RES="$(sxmo_hook_contextmenu.sh "$WMCLASS" "$WMNAME")" - if [ -n "$RES" ]; then - nl=' + *) + RES="$(sxmo_hook_contextmenu.sh "$WMCLASS" "$WMNAME")" + if [ -n "$RES" ]; then + nl=' ' - WINNAME="${RES%%"$nl"*}" - CHOICES="${RES#*"$nl"}" - fi - ;; + WINNAME="${RES%%"$nl"*}" + CHOICES="${RES#*"$nl"}" + fi + CHOICES="$CHOICES +$icon_gam Games^0^sxmo_appmenu.sh games" + ;; esac if [ "$WINNAME" = "Sys" ]; then diff --git a/overlay/rootfs/usr/bin/tetris b/overlay/rootfs/usr/bin/tetris index fe144d5adad5b23f192e2829dd58507cac9f1bcf..7a3ec41ee52ed7bc6afac76e2476e5dadb617d71 100755 GIT binary patch delta 943 zcmX|=Z%kWd6vof#ZK2G<3LUl+?fr+KWq^8(se*IF8>R(hOBP3TYSb@4VuD*F(6Qb6 z#SerJumdIw$<)mc+mZ?HX3JuNW5$^JFWCk)yUC_b7g=44Oig-mO|Pfb?8EOq&-R_PZNC2R-1t8N5ps;RY{$c+` z4d+;6OjQlVf)RX!-U*6WFlT~6#DjDyq`9`%n7@SHLmZ}o`y7m$19jzyy7~6~FS~Gz zz7LD2Q#QQW@YXk{*PcB*|C8;W?p^bG<9b!2)8%xp>q~uOx@GTBt#r~~*B_+bH4qB9 zWcJto^%q>E4p_FNA_3RGMxcXwA$K`z*}F>l6Sv(Jh1}`va#|29yI!^IEdh5Mk~`{} zbg4j={Sf!6TJ0f26!8#!AlBj$IwN)nm-64yy7&q{LA#}gF-q@BwMHfb)2O8EU79X` zC^@;&{Lz>sr|fP`>WuTdSMSz)O7(&KY?ma@#-z^udR(9FFXXUU4y2| zYlpbge_hUHiZ7r7)322>o%xBL1A5AC_i5OMO%2v~3?3XOSyn5rW|r-G9$;(Mhz-$B zxe-66QMs=96K>JI?}xOYV(Z>Z!mXu!u3MM)_W1|9!qJ_6m$F|ke-bEV_i0WpLl@*g z;PoEee?WiE@4meOVI~xHau%(~BJQDbWjj7ay-F*84W+qy_)be{=xzTGeT5bj5nrWi zifVMa(WmQc$(#;!ZY+%wU{#f)Qc z2!>W2WB#}&ku2)mhQ!1l#dBq1a?LSLct1_tWG&`=fAjsRP-4Wq5ZNe@zhw(A%F`{! z5J%~HYpbW8LqD6fk7xq6)AO3>8Bqa7=q*k4EV5gqnW8K1A}wfYg_jqxh?}M!4VZbY GAO8hbtX=v5 delta 1016 zcmX|AZ)_8F7=GWjV;yGOZA05RY46XZvayYMi>WxZle0+2oJ7P$Krtp}BmU`FjJkn$ zF=|9{Vf?xe;upX#n~_jCObmj2!--?rfG(*)1SNr{z5Pi@?r`<$dnMt+bI)_X_qpf2 zd++zVvFpaJ1K~2Q0icMHjyIM~(#>SU$akk!uGBxk zxEuTRjOS)m?KvO72|}9;aDe!8Lh@072+KSW!k<``uV&S&H2~3OfLs%RNW6mZFX@k~ zsV8xaFjd83z6KQ8d%ht4qL2D~h)=O&e%WPL>3{n_Lwt<&Jy^hXdS6{BqDSw4XqyY$ z*@Zw5JLD@!;(`+R_Zv(HNNO6 zv(4(cuBf-(eXW9h8Lagsj9K!mkIqsZ5*2M1GWfo29%VlVJKUG^zq3Mc2Zq@Wezn?e z9C`NE%y_Kw`;--td0|lDqqaGhg9M5xYm2N1hxvlJCx0Zy3n^=p%tr?m+q` zl|R(U3x{HSbVwOgzUj5ise6vCMaQ;$%2H%#EdTQ$CEZOqolA+-0!2u?Ry1wQ@9)~H zq^x!spTNdd>3uPHcpnQ1Qu(#qWviYB_Kcy%-eoTfAsl0>Q1{}A9JvQ(Gj0i6cF(x8 zmj+zfi@STczRo~+Gv^YAl+wq6rK}#gV9qa*51o%%7lrI}9J4e1JG&Hauksw{SzL}V z>JJypE6fmr*u%=j4fI=I5?ko{so2!|;Zk#P1T>`L2(DxyL3zBB=k#8k+% zKk@mMw6#g^chR$i1;P}qokW1`ggpfO5zd~ug^~CMY6PI4m9Vtq^!0*z{OPd983mO* zken;1$*~g6J5PLkxi;zWSh+U6P*BIcKWL9E-t}#|P3y<}T2jZxN;l&hBaCZaLnrRZ z=5G=E+4Yu|k`M*X>-Vpf-Pp!9%E6MjL~qC5mZcJnl*UFKzt*oxi)mWzU@t$lMpN@MJT(<+Nwo~NeU^;*d~N8P-_w{uq7wImUlVBnnCS=BMlrv10b@SVX zqKx6*ZPb-Heqt-FQeGpy{(#ac%GX&ev7yrO*t62=ReIRNO|2f)%<`av5m}|IfSPlv zt1`{Z%3POdWwz7JHOfxOq~&8gc|G3Dw7{suY>TEy+cmambB3E6+khX-zov@;J|fSM zTXZVNNTPHtr$h28MD8Yp5425Hb-Ia%09OPs4**i^8$bY=H2@4^U10%@!s_8qw(}8q?j%>mDA}=Bdp_Fc^@-p=}_XN&J&dsF;b>Hry(5ADo z_A8%8W_WS|`V&G04XBOc7Wx*SVR5iNJL zxCjMZp$lkSu+WFO-DHxoc{M%W2n6(c0Pg?3QH(uE8s<+?>yTy!z=FszeyhWyP+w{R zdNCdp0o*|@Ar%OR1jEIqV0ceuFl|{$NB#s$Cc-J{6X8@E z%oArCju)9Hd6E1o=jQbEcb=wN6oCimZCBD?W-B$8bQg4SK@qV#Q#qxjobzyPt#a#J zgW4g!clJ>7E97&kuYEKwq(z3;z)Mf&7b@qqxGPeJ?A2^PB;>!IZ)a2sLZZhvDE98# dKpo!cT~F$e-0SlbEh7~#;FTHv9cAal{{Vp|814W7 delta 749 zcmXYuT}YEr7{{Npck|mhr{dR7i zPJ-n{VP1$<4whFY(^+AXeW(zTv0+AgvGv+6e3!`95xe;DfBxtEZq9i^j*!E15oHf$ zd5h1iJ{|2p{&4J?dDL0o@kZx$qk}Zjqd4qVd9RB{5OU!Ri5-z5nL+4-S1+Zg%!d6h z(d;scS&lZB*?tfeSLfVB!(LyGU7*rhEPK>Fy^GUUhyF#&xZrp88b2AH32yXub-%1g{ zJHjO4E`BZ3qu-d5T}gZyLJ#8n3cf6_R<^L9JvlHq_n z7a1@wSEj3pZ6P;@whYsGce1pheS53^HcVm-%fo(4s5x&U)9c|(`DSDpwR}tttdf{@r*)WHO0-@rcIlho%PAj zIxQ-?k100yFji-bZ{}bGslPjfbkG*(GviO3P?GWO0&xzF7|-CW{F+1;r*g#jHQbh8 zm|MYh+qUciTyE=dAPgFn18|J5#bf!s$d7ZCH3K&|@Ts%_#{aMTMdqsnA?f2Jn+WGA z05d^MX1|8~6Tzbf7$i9%0Jul!B2*BJgg{tV5(pPn1;WLtfv{d-s6%Sk?69Yo5z@u= zpga9HU|0$ZQMu0O4a&=P9YENLYE#*uPppQ1S?HwwxQt}`lAMi|y1}mc^ bXHo{EhdC`BeBniEN-W~YPK&(BWo@E=TCESK diff --git a/prebuilt/games/usr/bin/tetris b/prebuilt/games/usr/bin/tetris index fe144d5adad5b23f192e2829dd58507cac9f1bcf..7a3ec41ee52ed7bc6afac76e2476e5dadb617d71 100755 GIT binary patch delta 943 zcmX|=Z%kWd6vof#ZK2G<3LUl+?fr+KWq^8(se*IF8>R(hOBP3TYSb@4VuD*F(6Qb6 z#SerJumdIw$<)mc+mZ?HX3JuNW5$^JFWCk)yUC_b7g=44Oig-mO|Pfb?8EOq&-R_PZNC2R-1t8N5ps;RY{$c+` z4d+;6OjQlVf)RX!-U*6WFlT~6#DjDyq`9`%n7@SHLmZ}o`y7m$19jzyy7~6~FS~Gz zz7LD2Q#QQW@YXk{*PcB*|C8;W?p^bG<9b!2)8%xp>q~uOx@GTBt#r~~*B_+bH4qB9 zWcJto^%q>E4p_FNA_3RGMxcXwA$K`z*}F>l6Sv(Jh1}`va#|29yI!^IEdh5Mk~`{} zbg4j={Sf!6TJ0f26!8#!AlBj$IwN)nm-64yy7&q{LA#}gF-q@BwMHfb)2O8EU79X` zC^@;&{Lz>sr|fP`>WuTdSMSz)O7(&KY?ma@#-z^udR(9FFXXUU4y2| zYlpbge_hUHiZ7r7)322>o%xBL1A5AC_i5OMO%2v~3?3XOSyn5rW|r-G9$;(Mhz-$B zxe-66QMs=96K>JI?}xOYV(Z>Z!mXu!u3MM)_W1|9!qJ_6m$F|ke-bEV_i0WpLl@*g z;PoEee?WiE@4meOVI~xHau%(~BJQDbWjj7ay-F*84W+qy_)be{=xzTGeT5bj5nrWi zifVMa(WmQc$(#;!ZY+%wU{#f)Qc z2!>W2WB#}&ku2)mhQ!1l#dBq1a?LSLct1_tWG&`=fAjsRP-4Wq5ZNe@zhw(A%F`{! z5J%~HYpbW8LqD6fk7xq6)AO3>8Bqa7=q*k4EV5gqnW8K1A}wfYg_jqxh?}M!4VZbY GAO8hbtX=v5 delta 1016 zcmX|AZ)_8F7=GWjV;yGOZA05RY46XZvayYMi>WxZle0+2oJ7P$Krtp}BmU`FjJkn$ zF=|9{Vf?xe;upX#n~_jCObmj2!--?rfG(*)1SNr{z5Pi@?r`<$dnMt+bI)_X_qpf2 zd++zVvFpaJ1K~2Q0icMHjyIM~(#>SU$akk!uGBxk zxEuTRjOS)m?KvO72|}9;aDe!8Lh@072+KSW!k<``uV&S&H2~3OfLs%RNW6mZFX@k~ zsV8xaFjd83z6KQ8d%ht4qL2D~h)=O&e%WPL>3{n_Lwt<&Jy^hXdS6{BqDSw4XqyY$ z*@Zw5JLD@!;(`+R_Zv(HNNO6 zv(4(cuBf-(eXW9h8Lagsj9K!mkIqsZ5*2M1GWfo29%VlVJKUG^zq3Mc2Zq@Wezn?e z9C`NE%y_Kw`;--td0|lDqqaGhg9M5xYm2N1hxvlJCx0Zy3n^=p%tr?m+q` zl|R(U3x{HSbVwOgzUj5ise6vCMaQ;$%2H%#EdTQ$CEZOqolA+-0!2u?Ry1wQ@9)~H zq^x!spTNdd>3uPHcpnQ1Qu(#qWviYB_Kcy%-eoTfAsl0>Q1{}A9JvQ(Gj0i6cF(x8 zmj+zfi@STczRo~+Gv^YAl+wq6rK}#gV9qa*51o%%7lrI}9J4e1JG&Hauksw{SzL}V z>JJypE6fmr*u%=j4fI=I5?ko{so2!|;Zk#P1T>`L2(DxyL3zBB=k#8k+% zKk@mMw6#g^chR$i1;P}qokW1`ggpfO5zd~ug^~CMY6PI4m9Vtq^!0*z{OPd983mO* zken;1$*~g6J5PLkxi;zWSh+U6P*BIcKWL9E-t}#|P3y<}T2jZxN;l&hBaCZaLnrRZ z=5G=E+4Yu|k`M*X>-Vpf-Pp!9%E6MjL~qC5mZcJnl*UFK #include -static const int WIN_W = 239; -static const int WIN_H = 295; +static const int WIN_W = 220; +static const int WIN_H = 268; static const int COLS = 24; static const int ROWS = 28; @@ -112,8 +112,8 @@ static unsigned long now_ms() { } static void compute_grid() { - int m = 4; - int topH = 16; // reserved status strip for SCORE/BEST + int m = 2; + int topH = 14; // reserved status strip for SCORE/BEST int aw = winW - 2 * m; int ah = winH - topH - m; cell = aw / COLS; diff --git a/src/games/tetris.cpp b/src/games/tetris.cpp index 8a7b83b..2c53c9a 100644 --- a/src/games/tetris.cpp +++ b/src/games/tetris.cpp @@ -23,8 +23,8 @@ #include #include -static const int WIN_W = 239; -static const int WIN_H = 295; +static const int WIN_W = 224; +static const int WIN_H = 292; static const int PCOLS = 10; static const int PROWS = 20; static const int CELL = 14; @@ -255,10 +255,10 @@ static void render() { XSetForeground(dpy, gc, C_BG); XFillRectangle(dpy, back, gc, 0, 0, winW, winH); - // playfield border (single clean frame around the well) + // single border framing the whole game (playfield + side panel) at the + // window edges, so it is visible on all four sides including right/bottom XSetForeground(dpy, gc, C_DIM); - XDrawRectangle(dpy, back, gc, px0 - 1, py0 - 1, PCOLS * CELL + 2, PROWS * CELL + 2); - + XDrawRectangle(dpy, back, gc, 2, 2, winW - 4, winH - 4); // settled blocks for (int x = 0; x < PCOLS; x++) for (int y = 0; y < PROWS; y++)