From 179cc3066b56b2d9f514587ce6b2e1bab953789b Mon Sep 17 00:00:00 2001 From: Luxferre Date: Thu, 22 Oct 2026 22:15:28 +0300 Subject: [PATCH] feat(x11): disable X screensaver/DPMS blanking and enforce explicit-only locking --- MANUAL.md | 4 +- .../xorg.conf.d/10-bananarchy-msm8909.conf | 6 ++ .../.config/sxmo/hooks/sxmo_hook_start.sh | 3 - .../rootfs/usr/bin/bananarchy-x11-session.sh | 9 +- overlay/rootfs/usr/bin/dwm | Bin 56264 -> 56264 bytes overlay/rootfs/usr/bin/sxmo_appmenu.sh | 3 - overlay/rootfs/usr/bin/sxmo_dwminit.sh | 2 +- overlay/rootfs/usr/bin/sxmo_idle.sh | 78 +----------------- overlay/rootfs/usr/bin/sxmo_state.sh | 58 ++----------- overlay/rootfs/usr/bin/sxmo_wm.sh | 12 +-- overlay/rootfs/usr/lib/dwm/plugins/dmenu.so | Bin 58608 -> 58608 bytes .../default_hooks/sxmo_hook_contextmenu.sh | 3 - .../sxmo/default_hooks/sxmo_hook_lock.sh | 9 +- .../sxmo/default_hooks/sxmo_hook_locker.sh | 15 +--- .../sxmo/default_hooks/sxmo_hook_start.sh | 3 - .../sxmo/default_hooks/sxmo_hook_unlock.sh | 32 +------ prebuilt/sxmo-x11/usr/bin/dwm | Bin 56264 -> 56264 bytes .../sxmo-x11/usr/lib/dwm/plugins/dmenu.so | Bin 58608 -> 58608 bytes src/sxmo-dmenu/dmenu.c | 21 ----- src/sxmo-dwm/dwm.c | 7 +- 20 files changed, 38 insertions(+), 227 deletions(-) diff --git a/MANUAL.md b/MANUAL.md index 5687e23..019df4c 100644 --- a/MANUAL.md +++ b/MANUAL.md @@ -117,8 +117,8 @@ sudo dd if=./images/bananarchy-nokia-argon.img of=/dev/sdX bs=4M status=progress | **Center OK** | `Return` (`KEY_OK`) | Confirm / Enter, or commit active T9 preedit candidate immediately | | **Slider close / open** | `SW_LID` (`lid:on` / `lid:off`) | **Close**: close open menu, turn off keypad backlight, and lock/turn screen off; **Open**: restore keypad backlight, unlock, and turn screen on | -> **Waking & unlocking after screen fade**: -> When the screen turns off after inactivity (or when the slider is closed), you can wake and unlock the phone in a single action by either: +> **Explicit locking & waking**: +> X11 screensaver/DPMS blanking and automatic idle locking are disabled so the phone only locks when explicitly requested (`Power -> Lock / Lock (Screen off)`, `XDrawer -> Lock`, `2× End / Power`, or closing the physical slider). When locked, you can wake and unlock the phone in a single action by either: > - **Opening the slider** (`SW_LID` off), or > - Pressing **End / Power (red)**, **Left softkey**, **Right softkey**, or **Call (green)** once. diff --git a/overlay/rootfs/etc/X11/xorg.conf.d/10-bananarchy-msm8909.conf b/overlay/rootfs/etc/X11/xorg.conf.d/10-bananarchy-msm8909.conf index 27cb315..8e64cd8 100644 --- a/overlay/rootfs/etc/X11/xorg.conf.d/10-bananarchy-msm8909.conf +++ b/overlay/rootfs/etc/X11/xorg.conf.d/10-bananarchy-msm8909.conf @@ -6,6 +6,12 @@ Section "ServerFlags" Option "StandbyTime" "0" Option "SuspendTime" "0" Option "OffTime" "0" + Option "DPMS" "false" +EndSection + +Section "Monitor" + Identifier "DefaultMonitor" + Option "DPMS" "false" EndSection Section "Device" diff --git a/overlay/rootfs/home/user/.config/sxmo/hooks/sxmo_hook_start.sh b/overlay/rootfs/home/user/.config/sxmo/hooks/sxmo_hook_start.sh index 05c9c36..1096a81 100755 --- a/overlay/rootfs/home/user/.config/sxmo/hooks/sxmo_hook_start.sh +++ b/overlay/rootfs/home/user/.config/sxmo/hooks/sxmo_hook_start.sh @@ -24,9 +24,6 @@ while ! superctl status > /dev/null 2>&1; do sleep 0.05 done -# Not dangerous if "locker" isn't an available state -sxmo_state.sh set locker - if [ -n "$SXMO_ROTATE_START" ]; then sxmo_rotate.sh fi diff --git a/overlay/rootfs/usr/bin/bananarchy-x11-session.sh b/overlay/rootfs/usr/bin/bananarchy-x11-session.sh index 5c48a5c..745130f 100755 --- a/overlay/rootfs/usr/bin/bananarchy-x11-session.sh +++ b/overlay/rootfs/usr/bin/bananarchy-x11-session.sh @@ -51,7 +51,8 @@ fi unset WAYLAND_DISPLAY unset SWAYSOCK -mkdir -p "$XDG_RUNTIME_DIR" +mkdir -p "$XDG_RUNTIME_DIR" "$XDG_CACHE_HOME/sxmo" +touch "$XDG_CACHE_HOME/sxmo/sxmo.noidle" [ -n "${DBUS_SESSION_BUS_ADDRESS:-}" ] && printf "%s\n" "$DBUS_SESSION_BUS_ADDRESS" > "$XDG_RUNTIME_DIR/dbus.bus" printf "unlock\n" > "$XDG_RUNTIME_DIR/sxmo.state" @@ -65,15 +66,17 @@ XORG_MODPATH="/usr/lib/xorg/modules/xlibre-25,/usr/lib/xorg/modules" [ -d /tmp/x11/usr/lib/xorg/modules ] && XORG_MODPATH="/tmp/x11/usr/lib/xorg/modules/xlibre-25,/tmp/x11/usr/lib/xorg/modules" if ! pidof -s Xorg >/dev/null 2>&1; then - "$XORG_BIN" :0 -nocursor -nolisten tcp -config /tmp/xorg-bananarchy.conf -modulepath "$XORG_MODPATH" -logfile /tmp/Xorg.0.log >/dev/null 2>&1 /dev/null 2>&1 /dev/null 2>&1; then + if xset s off s noblank s 0 0 -dpms >/dev/null 2>&1; then break fi sleep 0.05 i=$((i + 1)) done +else + xset s off s noblank s 0 0 -dpms >/dev/null 2>&1 || true fi xrdb -merge "$HOME/.Xresources" >/dev/null 2>&1 || true diff --git a/overlay/rootfs/usr/bin/dwm b/overlay/rootfs/usr/bin/dwm index ffbe5c395decbff4834f836db84ea00a74152342..035bcbb9eee6d49d0561402bf42cf438c157d441 100755 GIT binary patch delta 13635 zcmc(Fd0dmn_Wn!)Bp@h@%A!a@1cSH)LB$;~M!*HdrMMQXOGKr(UR=So*6V_fweEFo zk=hnYZPiMp{aW>2wHI4#wQ5DLg#Zb}R{Orl_IoCaru_B$@4lbU$vN}PdCzQTX3or; z>t9K)e*EbJiiJpmyv%YtMhHjWW0NGiygIo2 z9nE4dp!-HE-69qu4Wh@{2x)Ix#gCwWD-G7`gHI1i&eSznjlUKd(b zcL`e#G~D&?P5X_Va|w#@Y=!P=l`d~pxf{$`)|;lYzOo<|<>JX^%M>)5Z3gx|J16Vy zHMdp0=CBtsbU`btZ?@`^#jWy}vE}kzUSnI?5?BY<-t;Rr!Zj)RaH}`Ev`VX5^}#Q# zN|dzHcXeSEu0yGoopudkTDKV1UgGIBq?OVpcG@k78rb)4y(My2_Lo~PiCoS?+w`J` z*`zi}aa&sH$F?doyH)WM+BIK-}YZv9(R!vZ~(%!*FxJP;&FC;{Qk@Y5R zND+8_(Yx+N&h8WDESvDwk~woSCZw$>iuP8xc$NQ$5ML-fw{fv(zMtUK?=F%Z+z5HV zxfdZ%IS(PkzH5k@yn{lFgB@ISN@Esu_QB*wg?An*J>p_h*`6V z_J}b@ZkqQ~O}}ufO4nxwSCm@&NF3~z1^iO26>kwl6H!RaDUCc`DsEDgirY2U#8bh} z4U$ONi_yz}s*-vi(qF5(=zUFm+J`F1ZlVg%`RiJQ#JXQZV;{nP5l?ylQguNE3u+=W zs~WF~dnN6DX!kv*eFiBRAv(1Q%aOggyZkQxheudI35*}mz4<^oD7tc>0iMd-mo<+N6X+1s@wG#6@_{=63(lrZm z+DnP~oJbT>vm1NXy8{hiGEHFiLSsSUf<-4UMCucDcTtxKVpq==VT&>4!h(g8aALle z6RDpdx)EyrNtD7LFXs%>)2PF7_kJ2w1Yg-gx{BIJefL-ICRJ}j&Eky53jc0#x-q5D zYH`_mZm}yY=8IBxQsd(rTJ=aQSWc9W#Iqx^wQIC|>a_@&?3N~we#dGwo#=Tcix^4O zEGeQtX zDrMIR3p+=~iK=m(FUZS@(#7n}#`jV6>{wMMZYAnMYOa6DC8Dm!h|4Fg)jGczyv+H< zuoV+Ur%rb)zPOMb@8d%=*ttI8^a*?1r_&G}-sWD~DDrU(!y+)QnoBe|T<3*UC{kq( z-oQ)aZPQfUOFYR2M22Ud5PMeq5WiT@N4liCpzvmVmR4qN*VrOl`#Mq|rsI9@V)kg< zUU4-(={ZR&`9n^#w9SIKPVv^m-@mhHiw*GKuS+cQACQ0g`WuUEY?$!0*dkRnSj+wL z>tgX6&3#$+i?*LV5+7_3-L-c`4e<=-Ro}CaZCfs{`L`rlA6Ga|uPJn4+@fc-%ORp(SnBqSx*Z%*dw?V zLLzb0n1!HC3p&Ly&`}%h1K(q#o#5L*TR>dqd7QZJ6$GB&ybC*dgyd}_B>fm6PT=MZ z*@U=lBqZh|yaezGluAKQKLmkK1Q$;e@)u~<0aO4LIsw@a^yw)a`Em%!0Z#_?0yUo` zm)QFL z-8?*zY75c=DPiaO2Mvg?Z4oZFxQ+U6N~c0sxHXoDDjF=u_y%Np7L&^l(8>U4pNG{a z@1sY+`=J$QnMbsL=Nwb9K^~J|NiJXA3k-Q{p#K+IMF<-jebKEWlF4|j`3RE?SVcc% zYX>Ol752e^prFwPx?fsQY|z9s3;Qm`KF?WftdtgLP-gcd7!vkyfG<7BUJU4~o_pz@ zbM+n7^PHv9RGN!P=XJ+2FWe0DppX8s?XByFi;@TC(l%2~&ocPLY!<#?ra?<-9!nd% zn(kx|2agO&#RjoAI2s#TuD5r3QuQ{~9({tIu%zcD6PksNZ1|8Nv=3W9#3#1a6s>C( zeyHhQ`PG6D-9PZVys}y7Zd|hmZh6?^ucQ_ur{4w70B^+Ll;^?&z~_Pj*qtFGC4U)N zm!WYU=ABl*d%Bd6T()Rv1f9%27^P__PGLQukP2|w4y%F=9O2^d%>{m=*J$mVVzclayFIKw-NamD zI=PtPT&4S1_n1BaX2hsm3nu0Z!pt|pheAQCjfVKAXd z9-9*zPEWDju}N-mz#a z*VEbYxZdch+i{&}JTu{UAafla9x%6xTn@GAY=0X~0O>#_@3OJOqo}56|)x=8j`ldxwkWj0mS*TWS?pBoiBX>xi;h*i>{}_ZbbiTT3p_#^S?E{uCpr1@+m2 zg<%&9B9jn{qxbW9rW}UGfqFp}sXPY*u zdz``LCP9nxtWtYOuK8BEBU_yq)ai56b-2V$EM~kh$Iyrjq!)rFvvY|d^aQ(~IEVIP zv7p~YVTDnmb3P;8-y|TO!*3i5AKl6K zfl-3@ey|N;>Ri+dl*eX_j-<=j?$N&98oU>#Q|Ow6awGq3G_s4M1BUN2lFNLZQ|1)0T4-I6X%g2YI3)yTWae8-Fl`mrYI zdCn50PKq$6xP=$sSu5@0^pG-wZrIBCHsjCHj%!cx^t6N&b_Ocj^WVJ~a8XItwz6m=ZU{KxWcA2!xsnPRcq26neq zJ9P=VFFg|!Om{a4$u%UG*Q7IBId*A>ZJ6T)>#P>?XA`m?)Sc0!-t-uYNKzqGnv}HK zfw?$y?8mlcg)MAtE8vU1FHL%YN_qgH8uN(s=nJ2W+hA5|r{y|BiccQpy6n6;n%NibU0 zLUUHz3dL?R5G^%e*T`K(i03&c^ukfLD>^@L!%0NB_ebEAQK+aR`{jj=!jn36;&5(h@kUE-x#5WDPNNHl zpKTPb)+sXEi?kh4i?@MFq6;?yz36}jBt#>|X%YrjIq6~weG@i*JUpML2Uqj)>dxMq z5FVyL>!MJ5?wRUTv;y=YCg2uuJ?O-n2thzYS=EGj<1b<=c_XzGTpBMwm!)+!zu$nh zP$Mrcorzc=!Al`O$ICEOQ;oco1`{REbCHv4SpM&W06=Z)Uk%M2-nvlAb5U8Vg| zbdQuaI6bG4-$8PE(Q#Rm5Ce}?X(859_~oZ95Xa9xhF4gA&x>Cv?@e^IK@@gqy4u*M|q5)`0|yPue#wzz07 z6gH)Fq%EapM^ZxC-mR4$%#DlI=}OUOwX8IyGbPNFGN7H=<5w~qfzblGThS=2N_G{By(!*VedU5a!by@K97az5@b2n z2p*%p?$I8#jY7X#?hK7WZ5>hYz9E;>*`lf8zUd|ptdp8zemOu?-1%s5qcD|yHnoHE z2&|s{*uSRs^^?~w&?|J(!u=y>XOJFsx1)=nuEr*{nsuBOEHRqcz-ddIX95Xeh0|gY zPyRVAOwzcDb(y}^_pEW}DpWAjT1n#~gf5UjWX01*O8!{MTxKjm6uNRo5RGC7W<+`o zG-47EYwUXz=O1tOa7J%Bj(N=NNmJOMnZsO%8hIGdD6C@}XU^-ft;U=|$al8ccNF~a zB=j!$vc+&{a6hEIq0=~#b$oLxPV*nUIU-=6@rtM)UsRbnl3YIc51gn#JwQ)Zu;w>2 zXbxMHIswtux2b7^6uAF;eWd38=vjTO(n)u$GDPR3+l=_W0MjM~G#I1-Ie`oq`=e|| zS~wld-c9RIgW0!f{Ux=_*vquvoWEFxYO#m2-f}KQ)O(nXcgG-|X#QrRHP ztRt7Vzzg#9)((%y4!Z|Ep$ByZ4V*{FRSdv4po+KIl6e#9Om=NvES<<)^+EI|3)2sy zPm1R2y=YKeZ9hbgDX_p-ZaMgV^rImSQ9ZbV9hjfw;*A0QZ6T|juWwgoDp`mgoMl!2 zkj+U?qSM*A^pS3fz}tgfE?_PTqOyC{QFY9p$8+Yydn)H7s&rY}Ra&{WLHN};E1oK? z7Y+@AyV0qO?EaexGc*G%9MeCl-k{T6Zn4&U7|@p-vZtm&*ur)!^vzy{I$gi4(#anNqN4&6?cEe=OsEXN1pgDmeHcOCzcC<| zpf4VC3!zXdxO)O2UB<%k!Mg)%3$6jVLpLA!-+*$s{um4}XzobFz;9sz0q+HVbR=;j z1j1iB1fWGd7x_?^ocY)l^h}pAnQmc6GR9+m)MfmMQ2D=a&r|$by$w6vRK2w-3h;hN zSHs&bf{b%ndS(T_#*JTmfX-qyi-Y`LR!xUPt;4d%>pmFrP{?1*X2DB>sS6viWUX&! z13l!2u1c*Tiieea);pbPz%G1m$t{}CK3ZCX>rl3A0&UMKmwh5>tYZ6?Pt4w9_+H!^ zqp6@QTK7`efaTKZy)H(d}$OPLOP9wO8ItLC1FIgrFP0Lhe}hIHxbp<-Y4fZ~`8(ek3k1 zH?I$onQPQ&es@;5K1_DkB73vP>%-(F7Wrij^WLDASnP%{S*}I?H(Lxj%OZcy zjzdnh$OqYN$nh3=1EU+mWEzW{&LSZDS>$Av2ANpofo%82FfRj6#4m;5nycb;Ck3Qg z?8e44Szh%x$e**wP2J!^(>4w9FRjZgoN3vz_V(GYuNMmNnPz9{OKfq4n|!ka>MAP- z>E+?|x9^HXL&9Gm=LEt{H8kDpNRRC2zkKpD#&xTKTs}M6I-X@wIH-b7L}2*?Ujm*5 z9s@oZyd$_4JTDR*kMZ?{>;h^J3I=%tlYj%yCS4#rnP>&L0#AQ#OY;}`3maOclWl3c z!C<79pfD%s?g9T}f;DY~%+uf5(q*>v9;7cqz8=Xl`rsfBo(%p4zzpy{w)8PuT7tA3 zGu#s`O9gf@84J7yQxfUfkf-)WYmpudxg+!65+V7^z(#M`izWK;mRQ^#sNUI37qT<& ztf#Yz!nej!*Q>SsinU&FVawkggVWLfz57OBhUG+DFML`{70triqH|uOFt9nQk|^ti zRMvl+N|yUgimqPRT9mfUpN4&7`TA8aG@FL%NiWZbkHoSZr~aZ=R`b1dnm)WRMekP_ z3-wd%4Bouh*`ohxUqzM2~NU@xhRL<4&~^sEP97!Z(oewc(&aa zk%sGzAl$2j?YQQqNrY>F$`XoR?${=w>Y~lL*XWR6ai}RkfjBfeAcZ)G%Uvtv|0@X zzdjrz$WF7KK@Y00h?~-Q=-USO|638{9^m)vmMgz{1VqnRCwyh`*xM6-=oqxOlW&=U zqLuvVF~DlC0^PEoE!um8#;`W;O~U_C(%u^u-nowNJoQ2eKV5jqKITiUXRs*z!ACnH zLdVlM@W<5)PVB~ey$5Zp;z$Gr?ni@%<;|TIq+W0{tf<6$b+gfGK7`TW&(YoI`=bq@ zF0Ajqe_*-#WM5k6th$UC9FqE3HPw(qARp+L=+*U*TY@}srFL72m%iP>@%%I`k=*vvdEu^C6l!bvvfQt))$k8d42w#;f!G)H zu@4ZgWew$9+L`?$DgA*xJD~EoRF|q3h4XdC@cSiG9vp^}(+<9gJBe=(j-Z{H?9hba z$)-@u+?PYFHa`Skfl0@?u1)?u zd`T9Cv2|i$+fS)(y-uSOg$FfD^@A=HJmIpjb}6oxh&g{lq@Lje?l#%2DtG$qjvw;8 zjZXS_@O;+)@B})Q{qr!Rxh&{NH=ph`_r%;j19bN=IGywd=Zn}YryS{~G8&082K#7Q z{arC7g4?~g-Y^Q2+skrFAfhmoojfugar=uSD(t5IM?ot=btAE1b0G2 zJ+ZWpZalBOiN9~IE^<58k;e8y-*7iE!_B9HO5mpJKmnkqaGhjON-u;j;Nvi3e}D_c zfaHEy#6T-p+HoK1&Xylv-n#@}gtk&mg($e-s&#At7I@Gf7`5ng&N`pb^XIS8I{h&_ zj-PQveC+c-G0Zs+xpUc!6TWSeA@SQ4xk41MFm5;zOuMtwCwjJ<`t=mOpYA)cq`fFi z{MwB@KH*P~vW61}T(83cuJpj_%#NH?QE&F`$$!$bY|N=a!3V2T)A&dF2pwbGb{?t29|#+$}0nE&NzGJ=xP~eC_p3fWpL^mKgDQPE4)cD6 zlnFw59gl@XAqw{@*5kh@^kBVDNA%oQB?=mYi!K_ueg>Jvm$X&KQU@SCu!K8a^`js-?`<5J zUgY&1F|_ufm>P9UB)RzBy);ihTz99+*;^0>*50X-NaxST-z5}I4botr1$)v(VVuDw zmpAT`$w_zpg3BSFLYMu5@RYrMWsx0!;op2!XTp1SuX`vijH;SX z!h7ECo<3aXvVV`B>=T3&b>ZnmxgP`3(O|c;hQ;RlOj%;ug=$|xz4&`43$1UtM_Aum zSBDRb;pMlVRQ?@bQuiMlV%1BptA>>VzU6hbHhwz$B>x{{%qEwQNibpDTWGNJZiy~W zF9>>*BGvf-m&97PM49a((e>3uqC(dOjwA?UO=hLl+Cnc}Lb1gk`?P&f!#^hR0TzUY zZ`huXHPbp9Rat`y73iofMkg(9_y!LQcPS0ixhVu8!$k2rwH8;*;ClQ!MZmvUo@3#R zv6&79=T}7XbAoWRh7`(+CD;V`Z85ogr6}-hZ)f^V(U`)^w5Wa2?=BsdD&C$uSFu!) z@%F5RX&DO?J!fYwTFQJc2C~SD9ogI9CoZ-xI(l&x#obHVSK&o5mlSQYXJE=ZgT$|K zbO(`32%bRNbA;?(jmr^WbF%P>5WMFqJlFE@ z|Jk;Fln62SG_X9SR(ALTzoGLe?G&cDh)@DF7{niZTWGOk%WPQLR|s6#_)=A18V)Wq zKs~1tviS|`8~m3~ITPDm>N8~VbZg29NQ^D#dt8?A$Bs!MFQ09Jh{VdsycR-Uu*b0Q zVlu+cpRJ#acxGse+>>M19k2`DR;=&I#~k%Cf${pM*h=Dhyzv~1w_&^t58ea7 zqJJiBUllS7878Lu(Ie;81JjoEbS+sY!f$zhv)ESp!3OEl*b=CwivP_7K8L45M7HO zJa(%~As6%E!ehtKBg7d#opR$fhD!$v7Jq}xd{u}YjB!w$3&qpZ@Po%*8IF0OiTtq_ zqJV6lICedboo3_9e1`BQI*y(OIUQ!b#$u30#7-_aI4#F;#2^>gaaia8e{;0Jb2w%n zf36(?;w9NJtqps~o|XAz^YZLDT)U4=o7a{T*XG#6G;5k;u{MmqYuAebh7*RRBqwnD zyBy>1+A;nv$N0OzUQY;|X!uHV$0wVs%aP(HxH`|_>Kyw5K}8A36YJd-@LU8O*TH$< zaTA;eAEn?tI4J|?feL@@D_@>%<+GhmR)Kkb2c z1*t(An~oiea=@Y?j|QcH^q{P-hgl75M&$_->FZ zkBc}BWWV1HaxU+P=#IJGQ@Qd;h*J#fdoRdY48}BOQ-Is!q0Vgcy&zXbI3b*J*eB3B ghArqAyA7=ZNSw~ICgA#F)SM}Qy+O;E>DT-J55PSuDgXcg delta 13712 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/dev/null 2>&1; then feh --no-fehbg --bg-fill /usr/share/wallpapers/bananarchy.png & diff --git a/overlay/rootfs/usr/bin/sxmo_idle.sh b/overlay/rootfs/usr/bin/sxmo_idle.sh index b55d71a..927d6b3 100755 --- a/overlay/rootfs/usr/bin/sxmo_idle.sh +++ b/overlay/rootfs/usr/bin/sxmo_idle.sh @@ -1,78 +1,4 @@ #!/bin/sh # SPDX-License-Identifier: AGPL-3.0-only -# Copyright 2022 Sxmo Contributors - -_swayidletoidles() { - while [ $# -gt 0 ]; do - case "$1" in - timeout) - printf "%s|%s" "$2" "$3" - shift 3 - case "$1" in - resume) - printf "|%s" "$2" - shift 2 - ;; - esac - printf "\n" - ;; - *) - shift - ;; - esac - done -} - -xorgidle() { - if ! command -v xprintidle >/dev/null 2>&1; then - while : ; do - sleep 3600 - done - fi - - idles="$(_swayidletoidles "$@")" - resumes="" - - tick=0 - new_idle="$(xprintidle 2>/dev/null || printf '0')" - [ -n "$new_idle" ] || new_idle=0 - last_idle="$new_idle" - - finish() { - sh -c "$resumes" - resumes="" - exit - } - trap 'finish' TERM INT EXIT - - while : ; do - last_idle="$new_idle" - new_idle="$(xprintidle 2>/dev/null || printf '0')" - [ -n "$new_idle" ] || new_idle=0 - if [ "$last_idle" -gt "$new_idle" ] 2>/dev/null; then - sh -c "$resumes" - tick=0 - resumes="" - fi - - if printf "%b\n" "$idles" | grep -q "^$tick|"; then - printf "%b\n" "$idles" | \ - grep "^$tick|" | \ - cut -d'|' -f2 | \ - xargs -I{} -0 sh -c "{}" - resumes="$(printf "%b\n" "$idles" | grep "^$tick|" | cut -d'|' -f3);$resumes" - fi - - sleep 1 - tick=$((tick + 1)) - done -} - -case "$SXMO_WM" in - dwm|i3) - xorgidle "$@" - ;; - sway|river) - exec swayidle "$@" - ;; -esac +# Automatic idle locking and screen blanking are disabled on Bananarchy. +exit 0 diff --git a/overlay/rootfs/usr/bin/sxmo_state.sh b/overlay/rootfs/usr/bin/sxmo_state.sh index 229628f..a4f0095 100755 --- a/overlay/rootfs/usr/bin/sxmo_state.sh +++ b/overlay/rootfs/usr/bin/sxmo_state.sh @@ -15,43 +15,8 @@ fi SXMO_SUSPENDABLE_STATES="${SXMO_SUSPENDABLE_STATES:-screenoff 3}" transition_can_suspend() { - # shellcheck disable=SC2086 - set -- $SXMO_SUSPENDABLE_STATES - - tmpstate= - timeout= - while [ $# -gt 0 ]; do - if [ "$1" = "$state" ]; then - tmpstate="$1" - timeout="$2" - break - fi - shift 2 - done - - stop_idle_suspender() { - sxmo_jobs.sh stop idle_suspender - sxmo_wakelock.sh lock sxmo_not_suspendable infinite - } - - if [ -z "$tmpstate" ]; then - sxmo_log "this state is not suspendable" - stop_idle_suspender - return - fi - - case "$timeout" in - ''|*[!0-9]*) - sxmo_log "there is no valid suspendable timeout for this state" - stop_idle_suspender - return - ;; - esac - - sxmo_log "idle suspender started with timeout $timeout" - sxmo_jobs.sh start idle_suspender sxmo_idle.sh -w \ - timeout "$timeout" 'sxmo_wakelock.sh unlock sxmo_not_suspendable' \ - resume 'sxmo_wakelock.sh lock sxmo_not_suspendable infinite' + sxmo_jobs.sh stop idle_suspender 2>/dev/null || true + sxmo_wakelock.sh lock sxmo_not_suspendable infinite 2>/dev/null || true } transition() { @@ -104,22 +69,9 @@ click() { } idle() { - count="${1:-1}" - # shellcheck disable=SC2086 - set -- $SXMO_STATES - while [ $# -gt 1 ]; do - if [ "$1" = "$state" ]; then - if [ "$count" -ge "$#" ]; then - count=$(($# - 1)) - fi - shift "$count" - transition "$1" - return - fi - shift - done - - sxmo_log "idle: not transitioning from $state" + sxmo_jobs.sh stop idle_locker 2>/dev/null || true + sxmo_jobs.sh stop idle_suspender 2>/dev/null || true + sxmo_log "idle: automatic idle locking is disabled" } store() { diff --git a/overlay/rootfs/usr/bin/sxmo_wm.sh b/overlay/rootfs/usr/bin/sxmo_wm.sh index f9cc2ba..4ba6fd8 100755 --- a/overlay/rootfs/usr/bin/sxmo_wm.sh +++ b/overlay/rootfs/usr/bin/sxmo_wm.sh @@ -30,12 +30,10 @@ xorgdisplay() { if [ -w /sys/class/backlight/backlight/brightness ]; then printf '0' > /sys/class/backlight/backlight/brightness 2>/dev/null || true fi - xset dpms 0 0 3 - xset dpms force off + xset s off s noblank -dpms >/dev/null 2>&1 || true ;; on) - xset dpms 0 0 0 - xset dpms force on + xset s off s noblank -dpms >/dev/null 2>&1 || true if [ -w /sys/class/backlight/backlight/bl_power ]; then printf '0' > /sys/class/backlight/backlight/bl_power 2>/dev/null || true fi @@ -54,7 +52,11 @@ xorgdisplay() { fi ;; "") - if xset q | grep -q "Off: 3"; then + _cur_bl=14 + if [ -r /sys/class/backlight/backlight/brightness ]; then + read -r _cur_bl < /sys/class/backlight/backlight/brightness 2>/dev/null || _cur_bl=14 + fi + if [ "${_cur_bl:-0}" -le 0 ] 2>/dev/null; then printf "off\n" else printf "on\n" diff --git a/overlay/rootfs/usr/lib/dwm/plugins/dmenu.so b/overlay/rootfs/usr/lib/dwm/plugins/dmenu.so index 0bf9d92832fa05cf2eb88b897c688775f46f91bf..121659913c6eff27ec9bfdd90dac7f36bcbbc9a6 100755 GIT binary patch delta 14685 zcmZX54Oo=L`u@Djf=G&}NQ6Xui3n(jNQ9(_+s20>$IQsg(9nZ~W=Mrd?t*0IC-IUY zsF9|TA)uh4qVhA3nVBtWh95`C40d4`Hlm%E-39*l?7r-=>+f~lJoC)l^US=@e9x@< zAMEr$*cHhf99sx+Z22VNlxxbJoPyTYw_lj?u)f@D;?gAD@Y%EL+&QU~k9KmY3$b^x z=Ys2=b9zalc&CAo5JJcpGMvaA2 zM58?+KU5KtD(b%@!*6wj6rm!_Lm%T)r=I+u2cCw05(bC9*cTN%{)k5|Bi}pt0J&%{ z8TO9CUZ|*(x{=O)_9ND=TbsRn68NfMTEpkW_o;rE(0{4Bc!5;kfd@#T%b!3{t~zeeF|ha5Cv54B;*0$ zg0OyP-H9m~oP%)(A@_FF1%wtz9C8l8-j2HJu&Z{GynXzJ2oK47d+W*~?%7MOZQ^sI zeZ7_x64G#-5Md)BJ0LID!yO1`L!K(AI~BcwbK8?o$R4g*=bALqG}O zDTdwNN7p+{$i=VW93TjoTS$BWf5{an-Fy#Dp!H|e?KQ1PTxzD{PM>TVL4)_h+m8JQz9(~wR(Ii^c} zdZ8qT1QGr3`S%6oaut8!&qt4;J!_kCf_lZlnQ7ZZetZoAQI?N~D=-rpD!{w|s!UZw`_(bD@Y^hPY6~tuhBfi%?IvRnKQ~mKC-VV0N$qm-zVL8vo(z8%`^oPMtsyZ!AINfL z_J4D!COQ{&yx}SF`;X8%-D)bc+urhJ&IRy|r!{Vw#r!H1SS!XX5?Pgn@Q@gnEXEC2 zAhJk|lv}d?ff%J26D`t=AHh9hT$m+})4!*@FQkfbfg(@;;e8=ljPnwCe=GfR)&|ek zuT#F6lMVT<@*sRNTmKI72YM%T8}Ml+Y*7u-VJg;FOr z+Cw$g(Jt92$r*$3v>ELCLSYcA=8u+Mau~LAoH(BxGaMaIQo&V6ri3F$RiJ>ZPH2wJ7ec{RzRzIb{PnVIaX*ly!sak27J8tFMdE{)Z zCc#91BR>YS+-7aQC4pcb*u%fOT&9?AqCq+-B3ql|K-i}vlVkMX<}(MySZvK#vs9u# zP+*rc7CsM&XLDGHSi3-5?JjFEt|zgX%`<*pFTsF|#N211XSKxlSvi|9A4C15V6gA9 zI=xn_z@T>LM6a8S_XTa>ql5|=y=zPFMEZ?Lt6NloL$2Ea&IR`&x7-4!QRFn(ICW^QD!e5Grh>43J7}q~joM6Af*)aZT`skd=1f>UMVxPVh3a`xCb_24K^mW(c98xmVEvki5f`2-yPo2a{$K1)7RAiN{v<{pziA|PEoapFofzB5 zF-SiT%&&@2%s#bfohhATFzwxlusT~6Kt4@8 zGBh`NqgqXFz8FMoZhEUP9L#z*>%fl@%=8#4S}ErIGGJ(~c0jH@ZbQ>-GB`ydXPb@F ztLVV|X(P=9DMut_+ei<<$+U4oz)2N3i)|bgI1Ai{76uP+;zW+j#yJa4w9SrVUvm3> zAu1H^760L-#sT)$N&9WI*rn-KhhCU4imx!#Q2}9#R)`8)(dEC%I*dY+m^2V)`&4$c*K2P@gADAA*3ciL4{)EEP?OCTN zvrM@}KQ7-osV)E;4xG-W-Q)?Z%GS1r8<%6`qB=5^vjJ-r>jAIAPNbzeiZFBvHf{$r z=&R#~#%(+Z-qXXxnUGB6{w&fR#qW{YzUMADg6q)dOcYG?gF!a)&)SIo>Ypnk z#a3V54adYG-1WyII0L57Bijwvp`u5?^rdjo>Hb5mss*P}G;N~BK{(x?pPT8SkivG! zBeu6$Y;R+>;gHQ~ShA3{&^1uLLB`fb6KzK39I=3GTLIZ%rGrH*oO9r$ik!tZ&N6V4 zZJZANT6&a)% zjJGc8Ci?DReVsvrRO4uqU4L?Gd&3!B75>ZpZxuZiB+!B;?`ixT1ngO($dn&RR==xxi{1 z(b5p-i}3#CNMC`Y5;HA!Xp3|faP(`!0kXJYQhwEAo`Io(>=uaN5l2_vJ*f9a19l!!d+JQ z8>qmms66yge0>Mv_91*2XazPQeFx+=;4Gj5DpGMdpunHntsuXK3mJrSkdO=H0o!nD zEe0}?mVjew3=o2_2jrSX@EQsl01Tq+fMl+36J;yp1AxhjS8%TZ*#g`EhQf+R6%`V0 ziUej<0GRA~B&X3}<46FhC|Si}M`8H_BNS$g z$)Uoop~gkHLm7kXtDXgDniNz9aq0N-ED?E-88EmANClRONP}DfoJaalxB#{bfla_J zG|wL3y@hE14%E2)+BNAO8>mg474ZtOQ@l~MmWmE`l&Dz@lcp=Xe#07%y z09#E6-$i^YphdnG$ZJdjw*eJUii%xjVFmuk@Ks$f(uDAN5tkqt;RetGqn9DC0C}hY zlgY@#;u!Bs6mSue#XkU8L2954h(JM+Ks1mH-a;VkB@91c51?QjhPCNgU;veWkv`}$#9LNCb|RkA-)l+kwI$!^>aivx^{IZnCAHg@dZ9~aOLgh*w4`?0 zQcrYgY^hv-yCt>FmU^h`p{-gy=0U26I?eg~SZSo2yGY=y-u}wOBZGA0$-46-~x89;` zR{ku;6j@?o^v~sAiRToS&BGRxiJHwn!2A!Q!Gq>Y&@PGEKJ!Ir7e(ze^M9cIN7RbU z-$DCM)IK(!hjw1n3d~K=nnZ2A`5d%!qLytw15I&8R9BfBEv`CkbJduxlQu^#F@I}G z{nnN$?K+O^*7lu;um9}SG0{){rdp)bigst4Yv89EQHuhz;1urAjDs}x^kMe>*f|!g zlL=^PM^oiI6J2Mnv=sG~Sd;=zysA5xlvp_%hf~%a-Oc+gjQzICoYf^(K8sWnbu#a@ zr0un()#}P^6*ZZ5|D%)c*C}?{5_P5$OIF^NwOIFwE%lyhrzLf#Ewxa$-In^ZX{#l5 zi!C)igp~4D!%#?3Q%(o?`=$=L5hI#CJ4wybjU~9Glw@10M z8FC|y)2*{LONr_Ig#TSZ8EKR*+m^P;l=Y8q4bi=At5A+pf;vw_`)1zKr=o1)K#MfF|Gy z&;r~O(FUm&u^H1io9GylFiR%CjQM{70_jLt4J0IC)=P#FpbDf~;3D9Fv_{AR#1~-( zG$Nb}Stw!$Btxl){g4b*B2GXuIATU*SR$fvG3I|q7wGL4kOHR90f5c@+2GHIJcP7dgcl%u8BhUNfJ?vyAQd*20ml$7gN;4Fmw*bmwh(`A z13@5!0#QH=kOQNU$S@OFgzyqp$iFauCt^ihk4ogi?U>W=3yafiW#Itflyy@tQ9t8jlYVQVGZ z%-Z9SX{49<4|0|-+OC|GE;qzX``)m8?C#j&^cPeF_vYUzgVD!`{uiYYcL40RLZu9p z_tU2Z60}`)XV}&oqtnTxEx5_L>$*<12`9IfaO)Axudbi6WBHYEK6;(!(v7BP+Rq4~ zVe+1}|JoY+dGlT&EQ|z~BV(zUfdt=fHqm(DR(tTesNi~}6k1YpWXnzto%wo{{gfTQ zGsB55JAk)N@R5(~nd)t(-TcXQK8k3Yt#?)Zlm{~u%HcQFOwTq%=x}&>9p-NWwDD@QRy%AEc3hAvvO@&EYVjh|Ed3B(U-n-(U5IP zUz*<=A8A=qq@6^8Q_;X(I>|E=o4Zr7lL+wb8i~yl@1?y3?2#oG#+g0zz}Dj zWCtJ3?o%fcpP(E|6~~dFS-rcejno6ap4B_GW@p=PiHViJCD_AKj8Cr2YU>be1;W;k zMn#*E?jQVbyODlAxVe4ej&ivnJr;G(;$zF3&j`_BFZ86x^0A-7-!tLwPny{c(a*fk z`tgbt9VBo~Gq=y%ceXqfy{c!>u`UKu$?ik{QY-)O#SdgLJse&^ntB{L%wnB(US9H1 zcLKp_)k)-&kZU@^T^a{e#z+@v$&^_%r^ZN+!Lp)vZOzd*cF$xOFjD#8i1r<2s0;l3 z#!EY@%VHI7z40}yf+PPPm9r*T(HmRCs&)3re-G!dwXqD&uTknAI0@L)-<++#rz9 zHNn@KH^OprdqJGH?<9E+#=~O8AXiQT&#AZ~cYK#xYyG~5T05^N09iLE>rEMJW^#M?({8EjRWx8j&r znNL|^8#=6Bjj{OBAAX%J$K{WahKX)1?PP9ktbRl6W+yZ_do?c>y`hCRt2ejio3>Zc zTyE_<%3tVNJOBHhwGtlR{8{x*bcp54ntIYK`p)WPG>MVk)3UoKnM#u5bn-=5dNJX# zN{(l<0bA6J3c5%`d{~>xG+cSb$v`>l(%3X zSrrp28J|rp5t^7D-RMMYB2lF``%JLk5Aq8g{$*4NL%*GXUj$&GD+5*ox3OMG6UZ!5ihu(m(&t(u*(&ISa2pn( zdSHhPM`s`jaREq^0X>MnI0uW-e14H)$=FjE!9;&m`HPS#eZ1ybd~g;2qoOZl6I>Rf z&&?mT2fsJbznAZXXGJ3&qv6JrKu*6^$sQm-8W>e-q(z;)Ug7;DTovRvjTek*Gz0n)m-OLb9ieU;JSfC-6Ui_?l#e zjt|+iNs=>U#eB_a6ip_m*Jp2f~vV0{8-k|yrM~|15UQadBT;w{-+ijid zvZTXE4SE?)TZ1GKI)2U8JW2cj-?ep_;wpYLa0NeIU^g)%ve11HJ_I-e zm1}Us1y%#>ecl^V3iQ5>Vqym>=!y9t`bJ)cp+ypov90}QjxBeRd`w>AN5D63~ zp`SxKt|G6I(zmd^0~&xmz(ri3ctc);tOnSR0HnC-x$$q@V*t*;1Kj@91BZcaz!o3| zCM#xK+51MmnBVvKNaFxKdnOOvqp^M6(!SI|8g!Z&exc+UiBmVP zEGfcJ82xFYA{94gNq|3K#s$?4;1uACImC=Rr7OT?U{2xipiS=Rf9AjmT4r)Huv02>f)f@GH*YlIum7td+3RJJ zeb+Jc1$vl&YggTvdYyxp+wI5yG!ogLgzKXt`uNb#yhpD;;~6i-y{teNYD47$hSSo| zeCDP#j7}JyXx-6{EVpisrOl&iu`!M@(cjMW(I7QB*Yk>XG{xZf;0Yu^zZnFlEW|Mc z@(N_tLjLM!sY!X-m^!=N-Y6hP>ryARgtD~iqnOVuzgiGzrnVNEFrHlv2sBNb15Gb# zOSJ5*_@SsR)be?yo|B5Zy%E_ogTp5D_A*>y?sZV4` zm&;Ls-qod?v@hd)@Dwluc(NDrA3V9+ZkivIO59+=1>(CKeha+ zsj1rVuUGrBerJHM6uqaby>Y>R=N*CG?6fO-uN)Z)P=`3Y;cxWVU_`#gOfUpfmL z9(<`7f65Z`X0=1v{oe{Rnc&UZVuwmo$e4_rR@ z<%5w=+mobNh>FME`Rn7BVdT$x_y{Bd~#2_`{ zf!Wg%ld0w-zX(&@vuxiI3k1vgfwCX8p%Ld4{4MHNE&7at9#Ow&(We!3i~3oM9$cUm z^%EA|uRtT})zD+~Wg8F1hTlpN{E0w|I)2BB*s^R*du~o9ulZuO_Xcn(npI+s97~Qj zH~u8*Yr6S_{T`B-4t~Y{sGzs{$&~4;w{kK)xo5T>b;3u(k?Iyfn#yi$JDMeO&eDpn z^z)bZht25K987d9TQ6I*jPtvITM-joY(Dky3sm5>3=({y+0unNocBrOKJuHwf^a+; z`4Rp#7`@6rb6`351Hbpcc*k8D$5MgrfXfefbKmp79e6=;8xBngx05Zw`6CIdNgTlT zZ>d-zuTH?x0J8pRJXVC_-U#rTinoawSP^ke+%0xU3M1emMH*m*b6agZjFefCILMorZn-pXbU`F9L1M#*r4Lah_45R=a&}*?X9Rqn8 zauHAkL;>3XExgtHA|dmJZyFrDhCu0yeD%RNjE4d>Z#)pF!7Sg7)hXxmsKw0%zSy} zBuSEvzgX$(8m-&X4ogyZUx{fLz4a=kYr1%IWxz8MOs0xn)i(!Y6^5cJvF=@;CUB9t zGS#v{dj2$z(>A4su0bk2^@-*Af>JgA>env?pT#WsmP#SUu{kqEl_zSo(Bf3NqE^ZO z`gQQ!V#E>sZsprz>=ujukup=%3!uNNS}AII(9%@@7PV|>392+vTiwYg9d=hFbiIxv zQqj@@`q;VWW$EdZ#&#`=cMps_=Z+_pIK&U0wZ=zuy$oh@>HsyIrS#a~e9=%$C#g#o z!%>~8qe)^o9L04sTl2biCB$=)>tvUf4bWdjdzU)p3Ay|qhes)-U9qsNLfQo}t-f<6 zV$KVN_5<{k7?kmdx8 za)hM_p;} zr8V90D5WVH@ANP5 zIYw+w&Zu2tDEnu>JduO)|-Ow@a=$Ss3(BM=u<$>zW^l7R0;n1Yca9j{D*SSB( zuQlYJ=4u1ps+p?| zw4{q=Rcb;q=IJ@dsGKG3|J4ki>UY%s6L(~+;!SnaxhwqC`sbvSda3!W`cUo!f1rMX zPh3|6yilU4j~2ZU08apASUvNwByZp~^%J?<{OIGikhM(BcO8$ANHl!FiT%)}YW~WJ zAb(0-)!2Dp(;$)i$^V5*Zv%aZ{}iBU9$7y2D64^27w_@y7D;J0f9P9(x5M539>lLe z<|`-szvPMNZU&m$&9{D=teDv~rrfFQnuk-dUl|Gdw`xS$b&uivu=3L9H(pC^H_#E< zvHR@NLk)C`c80~rZ>kJ*g?7~LAh{H=`?PcMXv?;n270s0>RAIVhI?2Med(^>G{Cb4 z+S{eH6q|&@n*qP=ZNPyeQWeYBG>r2+hRxTjqJy)wRtLM`^kkqCRI*|Il+~7^OWI8< zll@Pwyq(^F7O2vCmrHo3a*lUKuW3mC6}@J7xq$}g_|%iGDO+?iGDa3T@Q=04$ncPl z$4!~3*>x!z%jwNF0}bmY&szO|*cZ=l*qvyf!bZUhYx~jA<0Iu8Yo&522CISY!nJhh zQLbo`yaI)0cJWtEdOAPs;!5pmUl*jE2Kw$<-f%KBGfC@*|N6n|+|nhLxe8o#RIr0; zlH3V4nsm&Pvkr#<$WuCkze(C&Y~t_|WEl%VkZe;%j&H0r&yAhJnjdf9XZ`wJ43qJ4G8sM-EIaI&Y#kLkpB<`Q`Hy?O8 jxFFS~kvBf@b@E1#;o*2b;CC+vX$w}jmb!%B4{`qwyna47 delta 14959 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 diff --git a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_contextmenu.sh b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_contextmenu.sh index fd83e21..df4c218 100755 --- a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_contextmenu.sh +++ b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_contextmenu.sh @@ -77,9 +77,6 @@ case "$WMCLASS" in $icon_zzz Auto-suspend $( [ -e "$XDG_CACHE_HOME"/sxmo/sxmo.nosuspend ] && printf "%s" "$icon_tof" || printf "%s" "$icon_ton" ) ^ 1 ^ (rm $XDG_CACHE_HOME/sxmo/sxmo.nosuspend 2>/dev/null || touch $XDG_CACHE_HOME/sxmo/sxmo.nosuspend) - $icon_zzz Auto-screen-off $( - [ -e "$XDG_CACHE_HOME/sxmo/sxmo.noidle" ] && printf "%s" "$icon_tof" || printf "%s" "$icon_ton" - ) ^ 1 ^ (rm $XDG_CACHE_HOME/sxmo/sxmo.noidle 2>/dev/null || touch $XDG_CACHE_HOME/sxmo/sxmo.noidle) && sxmo_state.sh set unlock $icon_trm Hooks ^ 0 ^ sxmo_hookmenu.sh $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 diff --git a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_lock.sh b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_lock.sh index 93650e7..5721286 100755 --- a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_lock.sh +++ b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_lock.sh @@ -32,12 +32,7 @@ if [ -z "$SXMO_DISABLE_LEDS" ]; then fi sxmo_jobs.sh stop periodic_wakelock_check -# Go down after 8 seconds of inactivity -if [ -e "$XDG_CACHE_HOME/sxmo/sxmo.noidle" ]; then - sxmo_jobs.sh stop idle_locker -else - sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \ - timeout "${SXMO_LOCK_IDLE_TIME:-8}" "sxmo_state.sh idle" -fi +# Automatic idle transitions are disabled; only explicit locking is used +sxmo_jobs.sh stop idle_locker 2>/dev/null || true wait diff --git a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_locker.sh b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_locker.sh index 4f72e5a..824bca8 100755 --- a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_locker.sh +++ b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_locker.sh @@ -3,18 +3,5 @@ # SPDX-License-Identifier: AGPL-3.0-only # Copyright 2022 Sxmo Contributors -sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \ - timeout 10 'sxmo_wm.sh display off' \ - resume 'sxmo_wm.sh display on' - -case "$SXMO_WM" in - sway|river) - swaylockd - ;; - dwm) - i3lock - ;; -esac - -# need & cause we are still holding flock +sxmo_jobs.sh stop idle_locker 2>/dev/null || true sxmo_state.sh set unlock & diff --git a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_start.sh b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_start.sh index 05c9c36..1096a81 100755 --- a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_start.sh +++ b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_start.sh @@ -24,9 +24,6 @@ while ! superctl status > /dev/null 2>&1; do sleep 0.05 done -# Not dangerous if "locker" isn't an available state -sxmo_state.sh set locker - if [ -n "$SXMO_ROTATE_START" ]; then sxmo_rotate.sh fi diff --git a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_unlock.sh b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_unlock.sh index dd0f43b..2508548 100755 --- a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_unlock.sh +++ b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_unlock.sh @@ -26,35 +26,7 @@ if [ -z "$SXMO_DISABLE_LEDS" ]; then fi sxmo_jobs.sh stop periodic_wakelock_check -# Go to the next idle state after 120 seconds of inactivity -if [ -e "$XDG_CACHE_HOME/sxmo/sxmo.noidle" ]; then - sxmo_jobs.sh stop idle_locker -else - case "$SXMO_WM" in - river) - sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \ - timeout "${SXMO_UNLOCK_IDLE_TIME:-120}" 'sh -c " - exec sxmo_state.sh idle - "' - ;; - sway) - sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \ - timeout "${SXMO_UNLOCK_IDLE_TIME:-120}" 'sh -c " - swaymsg mode default; - exec sxmo_state.sh idle - "' - ;; - i3) - # Idle fails to trigger if formatted like sway - sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \ - timeout "${SXMO_UNLOCK_IDLE_TIME:-120}" \ - 'sh -c "i3-msg mode default; exec sxmo_state.sh idle"' - ;; - dwm) - sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \ - timeout "${SXMO_UNLOCK_IDLE_TIME:-120}" "sxmo_state.sh idle" - ;; - esac -fi +# Automatic idle locking is disabled; only explicit locking is used +sxmo_jobs.sh stop idle_locker 2>/dev/null || true wait diff --git a/prebuilt/sxmo-x11/usr/bin/dwm b/prebuilt/sxmo-x11/usr/bin/dwm index ffbe5c395decbff4834f836db84ea00a74152342..035bcbb9eee6d49d0561402bf42cf438c157d441 100755 GIT binary patch delta 13635 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 delta 13712 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 delta 14959 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 diff --git a/src/sxmo-dmenu/dmenu.c b/src/sxmo-dmenu/dmenu.c index 727a3b1..e7ce076 100644 --- a/src/sxmo-dmenu/dmenu.c +++ b/src/sxmo-dmenu/dmenu.c @@ -839,23 +839,6 @@ handle_builtin_toggle(const char *toggle_name) if (fd >= 0) close(fd); } - } else if (strcmp(toggle_name, "autoscreenoff") == 0) { - const char *home = getenv("HOME"); - if (!home || !home[0]) - home = "/home/user"; - char path[256]; - snprintf(path, sizeof(path), "%s/.cache/sxmo/sxmo.noidle", home); - if (access(path, F_OK) == 0) { - unlink(path); - } else { - char dir[256]; - snprintf(dir, sizeof(dir), "%s/.cache/sxmo", home); - mkdir(dir, 0755); - int fd = open(path, O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, 0644); - if (fd >= 0) - close(fd); - } - spawn_detached_sh("sxmo_state.sh set unlock"); } else if (strcmp(toggle_name, "bluetooth") == 0) { int rc = system("doas sxmo_bluetoothtoggle.sh >/dev/null 2>&1"); (void)rc; @@ -1829,10 +1812,6 @@ open_builtin_menu(const char *menu_name, int keep_idx) snprintf(label, sizeof(label), "%s Auto-suspend %s", ICON_ZZZ, (access(pbuf, F_OK) == 0) ? ICON_TOF : ICON_TON); add_menu_item(label, "@toggle:autosuspend", 1); - snprintf(pbuf, sizeof(pbuf), "%s/.cache/sxmo/sxmo.noidle", home); - snprintf(label, sizeof(label), "%s Auto-screen-off %s", ICON_ZZZ, (access(pbuf, F_OK) == 0) ? ICON_TOF : ICON_TON); - add_menu_item(label, "@toggle:autoscreenoff", 1); - snprintf(label, sizeof(label), "%s Hooks", ICON_TRM); add_menu_item(label, "sxmo_hookmenu.sh", 0); snprintf(label, sizeof(label), "%s Suspend Blockers", ICON_CFG); diff --git a/src/sxmo-dwm/dwm.c b/src/sxmo-dwm/dwm.c index af4a9f9..6bd5db7 100644 --- a/src/sxmo-dwm/dwm.c +++ b/src/sxmo-dwm/dwm.c @@ -1909,7 +1909,7 @@ keypress(XEvent *e) keysym == XK_Return || keysym == XF86XK_KbdLcdMenu1 || keysym == XF86XK_KbdLcdMenu2) && is_phone_locked()) { - const Arg unlockcmd = SHCMD("xset dpms 0 0 0; xset dpms force on; sxmo_state.sh set unlock"); + const Arg unlockcmd = SHCMD("xset s off s noblank -dpms; sxmo_state.sh set unlock"); softkey_pending = 0; softkey_first_ms = 0; softkey_deadline_ms = 0; @@ -2487,11 +2487,11 @@ run(void) while (read(lidfd, &ie, sizeof(ie)) == (ssize_t)sizeof(ie)) { if (ie.type == EV_SW && ie.code == SW_LID) { if (ie.value == 1) { - const Arg offcmd = SHCMD("sxmo_dmenu.sh close; xset dpms 0 0 3; xset dpms force off; sxmo_state.sh set screenoff"); + const Arg offcmd = SHCMD("sxmo_dmenu.sh close; sxmo_state.sh set screenoff"); set_hw_backlight(0); spawn(&offcmd); } else if (ie.value == 0) { - const Arg oncmd = SHCMD("xset dpms 0 0 0; xset dpms force on; sxmo_state.sh set unlock"); + const Arg oncmd = SHCMD("xset s off s noblank -dpms; sxmo_state.sh set unlock"); set_hw_backlight(1); spawn(&oncmd); } @@ -2659,6 +2659,7 @@ setup(void) sw = DisplayWidth(dpy, screen); sh = DisplayHeight(dpy, screen); root = RootWindow(dpy, screen); + XSetScreenSaver(dpy, 0, 0, DontPreferBlanking, AllowExposures); drw = drw_create(dpy, screen, root, sw, sh); snprintf(active_font, sizeof(active_font), "%s", font);