From 01912eb42899b1ed954a7e31ed2c181d17ffdc98 Mon Sep 17 00:00:00 2001 From: foxora Date: Fri, 1 May 2026 07:12:53 +0100 Subject: [PATCH] minecraft speedrunning stuff --- flake.lock | 43 ++- flake.nix | 5 + homes/aurora/default.nix | 2 +- hosts/modules/programs/mcsr/default.nix | 88 ++++++ .../programs/mcsr/eye-overlay-trans.png | Bin 0 -> 62216 bytes hosts/modules/programs/mcsr/waywall.lua | 263 ++++++++++++++++++ hosts/nixarawrui/default.nix | 2 + 7 files changed, 401 insertions(+), 2 deletions(-) create mode 100644 hosts/modules/programs/mcsr/default.nix create mode 100644 hosts/modules/programs/mcsr/eye-overlay-trans.png create mode 100644 hosts/modules/programs/mcsr/waywall.lua diff --git a/flake.lock b/flake.lock index 3d4b901..26b80df 100644 --- a/flake.lock +++ b/flake.lock @@ -386,6 +386,27 @@ } }, "flake-parts_4": { + "inputs": { + "nixpkgs-lib": [ + "mcsr", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1772408722, + "narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { "inputs": { "nixpkgs-lib": "nixpkgs-lib_3" }, @@ -996,6 +1017,25 @@ "type": "github" } }, + "mcsr": { + "inputs": { + "flake-parts": "flake-parts_4", + "nixpkgs": [ + "nixpkgs-unstable" + ] + }, + "locked": { + "lastModified": 1777411535, + "narHash": "sha256-6oMlfP8QdXadFVzSOdh8TOxHbZi64r4/j0k19fVj8mw=", + "rev": "cf54c03940bb73853cad234d04ffc0ac96a1b441", + "type": "tarball", + "url": "https://git.uku3lig.net/api/v1/repos/uku/mcsr-nixos/archive/cf54c03940bb73853cad234d04ffc0ac96a1b441.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://git.uku3lig.net/uku/mcsr-nixos/archive/main.tar.gz" + } + }, "microvm": { "inputs": { "nixpkgs": [ @@ -1211,7 +1251,7 @@ "nixcord": { "inputs": { "flake-compat": "flake-compat_5", - "flake-parts": "flake-parts_4", + "flake-parts": "flake-parts_5", "nixpkgs": [ "nixpkgs" ], @@ -1458,6 +1498,7 @@ "hyprland-git": "hyprland-git", "iamb": "iamb", "mango": "mango", + "mcsr": "mcsr", "microvm": "microvm_2", "millennium": "millennium", "nixcats": "nixcats", diff --git a/flake.nix b/flake.nix index b5ffaf7..9f18969 100644 --- a/flake.nix +++ b/flake.nix @@ -90,6 +90,11 @@ url = "github:uiriansan/SilentSDDM"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; + + mcsr = { + url = "https://git.uku3lig.net/uku/mcsr-nixos/archive/main.tar.gz"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; + }; }; nixConfig = { diff --git a/homes/aurora/default.nix b/homes/aurora/default.nix index a35e97d..5f1c92c 100644 --- a/homes/aurora/default.nix +++ b/homes/aurora/default.nix @@ -166,7 +166,7 @@ # games r2modman # mod manager for lots of games!! - prismlauncher # minecraft launcher + # prismlauncher # minecraft launcher # bottles # wineprefix manager # vr diff --git a/hosts/modules/programs/mcsr/default.nix b/hosts/modules/programs/mcsr/default.nix new file mode 100644 index 0000000..ca2427e --- /dev/null +++ b/hosts/modules/programs/mcsr/default.nix @@ -0,0 +1,88 @@ +{ + inputs, + pkgs, + upkgs, + lib, + config, + ... +}: let + cfg = config.programs.waywall; + + mcsrPkgs = inputs.mcsr.packages.${pkgs.stdenv.hostPlatform.system}; + # thin = pkgs.fetchurl { + # url = "https://v.uku.moe/u/thin.png"; + # hash = "sha256-VzT9a0/+JMG+To80+xuQSo4x2w6+zavCvUJ6irBkpVg="; + # }; + # wide = pkgs.fetchurl { + # url = "https://v.uku.moe/u/wide.png"; + # hash = "sha256-xJX+QladHQiQYBdKZEB9kuEaxBWVZuuStf4r4gIv5uo="; + # }; + # tall = pkgs.fetchurl { + # url = "https://v.uku.moe/u/tall.png"; + # hash = "sha256-RLyV6iFVDlJKKEdA3CBAQR/sIj2WnhZVBAmLzVmS7JA="; + # }; +in { + imports = [inputs.mcsr.nixosModules.waywall]; + + options = { + programs.waywall = { + width = lib.mkOption { + type = lib.types.int; + default = 1920; + }; + + height = lib.mkOption { + type = lib.types.int; + default = 1080; + }; + }; + }; + + config = { + nixpkgs.overlays = [ + (final: prev: { + prismlauncher = prev.prismlauncher.override { + jdks = [ + mcsrPkgs.graalvm-21 + upkgs.openjdk8 + ]; + + additionalLibs = with pkgs; [ + libx11 + libxt + libxtst + libxcb + libxkbcommon + libxinerama + ]; + }; + }) + ]; + + environment.systemPackages = with pkgs; [ + prismlauncher + ]; + + programs.waywall = { + enable = true; + config = { + enableWaywork = true; + programs = [mcsrPkgs.ninjabrain-bot]; + + files = { + eye_overlay = ./eye-overlay-trans.png; + # inherit thin wide tall; + }; + + text = + '' + local resolution = { w = ${toString cfg.width}, h = ${toString cfg.height} } + -- end globals + '' + + (builtins.readFile ./waywall.lua); + + # linkWithSystemd = false; + }; + }; + }; +} diff --git a/hosts/modules/programs/mcsr/eye-overlay-trans.png b/hosts/modules/programs/mcsr/eye-overlay-trans.png new file mode 100644 index 0000000000000000000000000000000000000000..3038324cc5b2df253c52dbbd3ccda4c2ace77387 GIT binary patch literal 62216 zcmeAS@N?(olHy`uVBq!ia0y~yU~gbxV6os}V_;x-arvM#1A_vCr;B4qMckXadpBy_ z4r~b2WWK1djxpd{ntqa!nO#-{^^8qGtBum1jW|IobM%fG*}e9l$-{^0xi z=k*){3Jwhnj7%(G#sQ^9`@b*!|No4>{`0W>zYo7%ua}5I<)Df_%x3yGJzky-rUfj# zMo6F`eC_2_upwX(0R@K#|1}jD{@Wk4@k3a^z{s?hmF2;`--fa%2J8_PXt@8&YA#GK zSVvui1H-?>g7wNsE@Ws7V`3^;T`JLrqV!)7BjXQ!(J#+Ak^Pgfse!?!vN}y2#en~+ z3JkwBP@TG|fuW}I_d8^lHnuV`eK@pqmk^3WTUc2h7))hHwWg_o!6wl=O$Ei8a3-b? z+L6zNki*xZvw}Qmc3_yd z(>z!hS?PiH28K76kwq99Pct!nc=~p?HF8Xdad8~rp8m=U#Y6!yfri5&a;Oo($;9-b zMR(>zXmCS35XZ@JV13G5ZxlbOGBFi!?w*bk8Va3DYxM`$Q8=*O(m7DSFnhX@A- zzTnCUC|0X+a2yccmg0sS7y=cl3Jm)vmFl7RaS8{=0o6BgUQjC_Ci}9mJW%U4KrN1* zaBv*3?DJDZiHMm@OdrndojD7|b~_f9g!!nNW5fg+^z-lEMNZTk0vs6Pc7%j0p_sU# zfk9^3Cj}Ho`UnU#sOOyQK@JRs4_*!ob*ispQ2eMNDA3@2WA79c_srtpIN&Rm$b+Kt zgrGn}vCLd26ptITvOJhsZET8SdkqK20Xtq4%{z1y7~=2k+l`#b5*9Wv>?v5e&IQH9 zL`FsnpQnx}x@RaTF!GLWqPWLIP@rM9&LIgD zl@pW|7@k{LwW4@Djf>-e@%OYW6x)9Y2sG46p=d6MbYR%Gr?woqNI&4j$XM|(D7F*D z#6wI>1v5@Hqv$qpbYPgbLDd)~hab>pWc)F8O)-ie7q~bu=p}v+LUB)qk^+NyWQ!qc zCUtjUI9FK0h2rruA_5KR@6KL9vHgRh0>f_;6wMDtD;`7|9IbdDWf~;Wj8;5|l)=Er zG+Ob%3z){yiU-;n0p*m@iU+xl8m)K`p)uOyffpH!Oe~{49^}v%?eQSmp`$$>L|6!n z_IN;*Dy*M7+T%fLX*i4ywIMnvqeE@T)ye2k8&YSjadfB+9vY)VZHOYnp<#5W4LLMM z=XekUwxe@Ah_GN}8lB@o4vo<{9>kai3kQ}tp2hkJ!LYReqw_sTE%wp*9;BYF!stQ+ zFkLG=PW3=t2WTkXXqGZpb60qbuBy=T}BoxFI?yqf4uitCP{C)kvMS(WTXhL5c(@7F0Dp{ z#^};&wfmk-}V1`L*2i>fBt_u zKKldv`uhL-|Nq|q`TjxG8uvbUSEqyX2mgFSb$|GAWh$H;2bc;jE&t+uoFl=UX$Hfe z+xBw%{!8EAU(c}M`FDMW|Ci!#{}X@>dmYf{;yAFM<9R>afIqVu7<3r^-b?)Un4 zKA9zf@yB+SKg*_w|fBihkqsY69bePs}19yWjgWeEq%t)9=r}*MIvypCRVw*J^WU z96y-Xz)+L_JkJN3EHy+08dxWs;tyb0$*W*5>hM?k!2Z9%&wlU!__zLV-`4-P{&F9f zTK^lr{s&O~OdICc+y5_Rs{4QS-#_7o*ZXSoVW$YjhzK<3=iQyl361JjCZ-JxAwPcp z^#fTv{d}&g=F24u60Dd;K4Vzsw9<|1&g@6yB^4?*G&L z{P+HkfBWl>->QH6kM+T+{eSn)hB?IFfnneFVsn^7rf`8W^iy_?hAV6Wj5p5jpa0*A zasU4;kOxZd?=y#`Dm^Za1LE7?or4926DU<_{rU6fKf^!$Z|_*{EqnF<|BvUZr<_>h zF=d5{PWBB~@`RDiZ z8P40+&#ynj@GbvMaVpH&3R0{b4U0Ek&oqW?ZOA-B^1!}6 zdr)A{{8s6 zC8jFU?PS^0(4xOg-I+7$T%`z^~{rsdaqUwc;(zt6VLr|;jN$xHUX zNIE&$w*Afw^Zi$L?w)f+Gt{prX5P`ywl`Q4YL+U?KIx%C^m%4)vuobu{!)VaC#`F|s2#lFittGb`} zwmYc0kAHe};@u~QuTML+JM5|2+$C|_1;u0bf4iFAd@uN2F1yYB>^sco z|9srNrMhg7PSy9X70R(k!n|S*v|E{OsTg7ia`~3d({eKnQdtd+m`ThPRdq)xBgYH{}FaCdTYS9+8^6wtarr!`|-9XW}az#%3h`I zKV>V@r?xK%=nR_o{`$JVr|;E!%SoCaD7N)u|5mx9vnTVK9Vl-9A9?8f>Ep7io2oyv zT}*%Ya`N#fi@Gm+Pn)w-_50S=p7;M}1#L>=J(*&|zgKMgzy9d+%kRILKK)*;v)TK* zn!o#N)c61SHaq3i1jlvfDqDZvU4H+6X#U>Yua};E%+cWd=urYJFEKQ#a0xJ|3r@HU zOXQ3!PQo9A82=|jWr@JPrB|h)zEhW{Z7bgop*%ke+!1~Ic-P7e8>J1Mq`^TMr za`Wr(6F=*do%bb(pU7dkbXY!DcW%~|$=#Qh7VmBM;B5GBS?<@i*T&yXzuxi7|MwwU zV!M6Qw!F`6dz5!nmm$KqxMz=5c2BhFwtD|}3=z8TUR(?+ll!A}&$h*w;osZo^HaWV zUi{?l)6b7uV-8ByepH=)s`>3N&#BAiKCPEKHh=oZ_17;dta<(BWYMqh_ho)N9iFgr zZtv^qdrk+>-}$wEgO|yN>UH_vmjC{mi~q4yWlG@vBkd=l!rmvh@4>H=q71LQ1@!yh zE2sA!IKT46X@h>=d1~gc%aZQR@R%J?U}eP{%^q4FtHkNs7XT=?Sax}J#w46nQ6w3qWvFQ0aHV*TSiDZ*$|s8)840j+HCmwO7=y8H8&4v7L|WxTeo}% ztAhQ%BCk{5a`of?eVCgaTgYGWVO@1<<@~^+kFMwJo!p%m{=B|vzvR<{b(`LDzdxOt zw#TG-jl4?5a_1Q6=6XN%x-tXl8mwv`e_U4YYU)El~@>K?u zq8sm>o~`dUJ$#;|((`{mtuyYPlw^4QRefz;e7v? zQy(yVU4OT5fz5?QyI))8{awHL&wKeRu6*-t-bIDqVV2vmcFLM}_Iel3+piaowl7~K z$)~3CkgK8e+xmTfCfpF}WBB3!cxm@Z*;gHP;#IoSB{ui%w%Ht$w_~l(BD?=9Q`tVu zoZol)$8q@y$?cE!Cp>-@u;>r-rMy2)D)#@sSg*ggBIZ{Pb0P)7Pu6pFV$Fe67&x_r}A)-AgKNW_A8zjPbwp)VDMP^Sh_IH$|Zm@Wr_A*WF`{=wOcq8|LEpLC@*PXwre}hpzH%8O? zekbpn63-akV@;yl89Z)>7rW@+{BV-}+RI%_G7oQ>dL~tW{fSwzb*9q}|9x>lJk6uR zW%|;;>t7T`A3r-OdYxv*ZNBXc1xd4KeR}F1edhCLF)gLuUp@RMpZtpUwm!#FoW1|@ z(QnfFtRnS`X3qKhdObHEw>v}4rHHf=pUuCYe(|@D`kK9=*!^kyk`J;^RifYRdDgRI ze$V5wyg2>cJ$C)p|4v=a*6jUlH}%EG_3C_encFNsTL+Yc{cb)MbpBV6GHPK6NEjqoF z-K&W8z;XZoI%nt0CF<47Zoi@(9B87$J*9yCKz3TswD9@T*;m(}x98p7HGRFF<)@1LbC)nX;O{A2xzih1|$uHGtRJZ%@hNbSbO|7^c^ zp8Iru`e(0V*B0kvmo8*)%isCn=k;|_vX$Fn*Khbzzrm|Sx*?JG-NgO>cNJ8=FJL_& z%3d;QyZ!GYd-m8JpO^VqZq@O<;k9m7YgrzC`*Zo`zTn+v6KtdJZ&`I!_3isLLE(7@ zscBi(u(bfwYWCfU$ouV|Ecws*x1DLc(2u7sZ^{?QeSh+&_gV4fbvM55*ZcnW-93NV z-{;=-|I)ee{*c2()r((?1=mAw_}{Pl+VuRs?bg{In;nCNZU0?;@J&wFC7pr2>s#vA+uq)$k6GLQ9Q*7a&VKXv zUGq!6WzbuwRdYI};w zw-sBp{TNR?G1d3pZW+8LxciB=!fQ6)2~5X~Rv+wo#~YFDlKG2W=e60F_V+(yf6e~A zPff=vc*n~ni65t(y0ReS@`rSxyZ`?2PZPNNJFxqDfVznB_HVbZE_Hle%WNI}a6;7) z-cyGJ8T{Yh(}RQlo+l_mB{=fhJexl~wSI4-w8%h42 zXC`kHyKdjVw3p%9W#?Z$;b^SUZsH6e|?Q4<8G@0;Y)q#gzZ$9+) zbNq%}+lzbeZ>{+2)BfpCVfO!Bmcl7lzud50`}OGZXU@x|f7``Z9!xD+_Tf%r?xWnP z3r;(h&)=yQIRAgZEkTQK{K{K&uY41Hy?N5#PiH=zU6Z=#d{e^Fm4EZ~s=}uE^wc)K zTJ@UC`?;pKYWltGrfXaOPhM;Ewv+9ccjEH3`@hfIeelPg8}CnNU;qCr$$90y+?3z{ zYQth(*YEV3_C-q3{JDO?!LMIkS32t3swYp=-(t7^m*vl-Ur8sYX;$3cD#Y~QNRQDu zM??o<4Fh9A(o+k5L|P4GDr5Z6XC8K<*niuGS9^@=9bfK#pnKdPoc~^ij^OSuE9&LhV7;Kit}s!E{zPYO4hu4e))bC*51hJey-{ESLN+5SS|6Lddq0D zbN=n%J4_7$fx_GNm;L@1^tbSLWQE_`>rdCO&kv73Ct+N(^~IX!;p{!-G1o%V4~NOz z(7ac4@qOQ{ymMlFVRLS+*JmuznR}aS%PPBTp>pqxOhSZ?KfcSPuzT|S>e{VaX3AL` zf1axD?)m(=TBLVt6>s;OTlJ@Agx=fk7O3r`5%EXwrR{Um>$SC}EORdJ-&%TG^wsvV zIi_!~)bV~6-?#bTs@J^>Coc`^w3fA9zAiS;;>bCxc{dhqE?Ixq!1HnZbcX9o4=}q< z-&$MqMCRh(JpX?mayPLb*u}Czk5xuv*P5S;-Z`HUW#E(YzN{Y3U{jtD{WIb2>1(C) zXY32=x)Xcw;{UbN(@#Ds+<1Pr`>x(8UcOeh<|SYMe}Dd;z;%^>60`qI)vM{wk^H>o z^}c<-gd83(PqJSuyZZXnm3*7ign$3Jz2{M7q{X7uSJ#yZi%GqGm#RBeu8$$Y`2f#X zttfqyFLf(6_SEW>$+SIod~&5O_Fsj=+vuln>h(oluDR~#zyHmSH5<>h)vfYfTXEX; z`<%V^X6VLPy?Cqk?PvP+vRI|Pzwg|bzN}69wigI#iPgW zU0R6V>+Ho0`!l^I{F&&W?`7Tqm>ptLRW*RH2e<_J1vU0f=2ok!w%RjsZ5 z_heJo={;AAuJf9oW`8_?v#tI{Mvo0#|Bccfd|MxSXcp&mP46+FG5EK?thJ7Rn10sW z>n~1n20aw~Eq^)ITKxoLC#OT7)ae-UmtR)=`4fG{=Y6}^RB_&h&s$dsZ)31XoUrhB z^@qRNEdTaAD=OA+UT5ULEg=sVZ7R)q<5RGk ztJL$wpS5yAwUrLt?^t)AyTN^HU4`WTMuv##rR(o)T7D(x_VK7|)~d`8N{($>_gB8s zhs``EQ}^}kIgAD0e{-G6-+x4B|C?+5jQ8t%R2P0VUi@&O*j?_Zbl+Q|yZ`zBQ0jh{ z{;%NWr*)70=TE;W9lkYAs!-ZI?w9>TSO57oYR#|jsqX)8ZkE3`BG`oC-Dii18`uuq zpL;>zkK*f3mv4QWz{hW)zw#~Dlm`sUzvB*W{ zEBk;F{TEhq*;w~(J!13!&8;81H~w;QO#YUipxPpH%vQc8Z)eIro#Yeq>;KBVEeO}U z_+hqd4!zMccjaiziJ#?^mH*_V#)%|Fw4&_pNF^zes<2 zPidnzuf^BR>v%q1dpBdMcS&l;`)6wm;uW~VI2xS)9x1Sar! zDRQ%LH+*%!lP9`v>$IXX@jGVlM2HB#sM55)AE$n~+9peOm3P9cpcx0d?(!dyN{NkH z-&ERl+h^O3();%oFRjVZnZJ5zMdRz#=TDyJ=35&wcEqNx*ROD!=HEBBc8&e7*Zu$f zj%qUKUs$&8gjSlg+Rv>y|;L<)fY4cE>eE8NSC`1dEkP=e( zDTd4u-@kkd;wsO`c*nhV>5Z+eDc3LStE~JlJkMrxx$(~*XRki9Pd_mwvQ6)P-W&GW z>Teh~=)H_z7yqW`{#Iu78Nc_pZNAZ4|CjGg_~sce;yy&J+Wty&t2NJunwPfk^QROa z+r|;~MRf&}>*N004z8V*|8Cwr(lWJs$@M>(*XDm+Dqs8a_{tkwO&qTmIH|nOSs@|H^%o&2bmt+@4dPCu9nyaEzQpf z$;t08-;kenH_P9mIAprRwWSl9MVHGTFlFFAlfrZ6Q_1da|7`s~M_tp=*go@c9Fu|m z^*@&*mhIfXQ9LW*+2yAat;K8wNw-&=PAk`)A75f0pt~z4 zXZp(1xvMv4??3m4_sqX*le6zu_P@QipHsWvy4vsi**`g_oNm9ami)hqz2I8RPSwpD z+4Bxf5@Ou&j(tfkOgW)D*Nd7v*`s*(%z{>w$SvwB+d^@0%um5eY*8PmNO%KhAEh2vV|E+Q>GFh1xyXxp)(=&V5 z@153Se7ux1Czi`PLXqLys#ArC65yeL0s~*WQYm!cnSqI;LX1O^)p#UakCuxY`=HC;J@wXn!eA@ zU`=~z$GiHKo7>-dtzhhkwUvJ6KP`NoWYXWr@29TX7T@iP{q3$Ft?*auoPqy-qwF%v zZ+}*chb%oE^SWrhxTN>zXXZ>+>y23+hdsISuXOYA)2q^xzsJqp^mBt~253;Kxa>}4 z^0er*vdgin3u}KSN_x|nu|9$_A|B_Rsm>#rL zGwkkd4!HH+Y#LMj_1eY!GPXJYj%OVcy6}4P4wfyKOM{gd%68Qiu^xz9+bp~M_c6Ku z|D-?ryPgi2q<3Ct^IE+-f9DtQC)_m-|9+15_~-X;^3zia_U>MjI*)s*hU(sDYqs0f zKjdq0*O{r$EPhn)etp_Ux7U*8kG|+1d&S{?Hk7Yq=KViA*OlCrx17;<_jCT=J<&gAmeT&%mZxf;uz#NP zP4P;q%=Itw`ZJAEIHIoCCEvXK>96%E!Q}o3-JeBqn!lIn7V)?p7G!vxbH47_n|NN= ztr-ahMPL1PUP*j^)PecUt@{~|5+e6hF0PEYdr34Ua{dg3Z|(E_P8erTKY2RZ?3DTO zz6icu_E{&J%ughX%1^i!DmUe{-p(tRcNAp(Z+aM;a{APar^&{Wr#<>3x4Ykqwe!Ch zzc+xdeye%hUnw3D{piqDCa;Aq`Roi}+E8}BZ~9E>uvypl9=Q=5HJx>@Wj*6-yFYvl z`+w%N+uZ$_nEkTERB~HV`-`{>WvWxYRlmF-8(*te{w*g}*6Q8HzDutc-gtUL_}auP zAN?6*;=f$D=bsXCx$Bz!wYOGh{`f3$`CtFxY1~SyC9}7dtlOva`RJFUi>eRani}xy z|Ixs^XU^}R)_plXDTn(*-k$SSJD49_yL{}#8}n;3uAiQ1xw^*sx9H=~`@Np+-5K^} zw_@JKZCMwtpXS*8*iQJ4opIUQ`FGb(&ABgNT>O9AZ}}tob{j*fW36h9^r~9)DiHd2i{r^=*%$zO*h}pRTw0@4TMs zc)!2v&;I~5bK^f`L`M+(O>18{{5Vm&2{RXCU;XAJL87wfu{_S${HaB2EOSk zUy;fhAr3Ky*PYIRr02#*RXn# znogd5gZDM_2yssGgbCQ8`oa&>V}J z3mZ?BywscYTWagnUH&}cfB)|m-Tse%&i>T`05iM##&nZ%FkrH-*r&&FDx z`CpOw>q}9>v7nt+&qcQ_S1*y}3cZ_pPdx@U4|G6W?29nkO#Y`G0M+r`Lb>SD>-ri?*AX zQ=Pi~E-fxo-tIlSzWnun^Y~ec-fBm_75CZvJR>eulKK11u~q!fdp3ln@2=lcICam? zj9q`e-oNx%s=?l{c4}OKYw-FPU_!lpM3qN8<)GE;LcyW zo$u<>$MrRdxfg;t8}@b-@gUl~J6Jdx4y$_FB2wWzmN!ffLNB|Y*kvia#>(qzhK6q2 zQ60}WA>V30Y%}Ekq^PZNA-PoT%@o~(^*g?QV*WAdyP4YFN8n z(d>`)ce`%$KgfHYEpcIeTH(*PUo<~o(6KC*uKxed=M&F{GrZc7zbmqCtYq}Kesl8O zyyL%ivpulN-tp`0QrYu`S^p2T=ZVj~I(5dP({2~s`pWh9Q z-*r9FR+#TMFQ1LM(A$gkfd7>J$7Vg1KI1n1Snj3zNgLyf1jDWL-A{VAo)XjU-d{2I%6rRW8-EL3{(n<$ZPwXOykR@_dhHh1>R+7M zpLf*z|Nqa|=Ns(_jI^x!;Jta*>UG*W%yGAJ_DP6rZ?R_Bx6#@8VyLW8aEaN6Q+3HP z&I!A}m1|aS-P*ss?e5G?X_KcPKhD2r?mKVh3uTYv4Z_Z^5c>A7KYHOlo|4$vRi7@e zUw*d!++^G3hQG@*Bf=UuV$zRGYp1*n{<~)B{=2^(gXWY@HY|TSYqr-8*{t2{pBlu| zPo7wMKKi-&+5q3UilhbEwbJEz)3uK2{5a6fRn@dk;?wI#=FRiG8QyrEVnjq~qKE72iRuUCj) zn^|yqn;dtQaUAo6?>&+WVtW|AJZ6r!Fk5x*?o*fV_InKT>%Je8cCX-cn4=YCT|H+_ zUD=dUkH2z@pZ;^dUA=3YoXDELzaD>e<)6N_?#Q~T*LN4$=dh=Je>v&Gt}~zCw&odq zbK4ifCwY3(x_<@TK9!{_ce<1;c+q1StG2V@FptabZ?A1%7(I~s$I^A~pH}SWK+T|4 ziv;uTsZ38hk)hZ5>+HL?pRP@M{^Yl%FjOi|KH#HMQd4mpN5y){cU=^?}Df7 zf0hG=dp{rTJNxX@eJkZ4?{%xWPb@h4e&;*x*)#r?b2TjA`c^S_^|eA?JLcq5-v3|Q zJ=i5*@!<3I;%~ne7+W8fWO)7g`KDi@uJQjkL}LFw+}L$>Y0*jRr7ujcdoJ_VH=bX9 zd*2_QW$R+~-q-K5zUS_me(+UJ#B!lEf2-bpD}T0O-hQjwq47CfXWm^`UHHECh2g~o zpM@SvR(v|Kebei?UpHlb)rt-!c`LpTH%KdwJ zNm%TY&M4kJHb!TX_k7teSDx_PEYfCOf6ecoe#duthpkZD^}h05_TBLL7rNfus=spM z*un`Lr&lJp^4o?@-z0x`%igy);=W%D%d|+GFz4sv?-k!yXe-W%{Z)41w;IDYn-B{E zot-kq4c8WU$DNbDq8FEHwc369kv$)`Rjb?5rLE;{kATZ`#;v#YEdpj< zmp{-P`-eaITIl{+N1uE*HmufPb-d&1e6L^Ld*1$E@th@l|G8JEe!XZlKE6d)|Eq-B z)^|Mn)_hnQf8L{+llf_{|MuwZt2Z-l@2R_X?cB=0$N6eg+oYvFW&SAif4fZl%&+d~ zk8M9EryjksFsxwFUxNorb^E**?)ti4uemmR`?IhOD<4ifm&X$paDQ=HP{l%l7&aKD{+Vw$q-E#HRKiN-N4jkKe z=UC9s$I+pi=P`>*8eguq+aAUxw*T~1d&9r)&6p#?xnBft?<`pxc|V5j&dMDin{6Il z+!VH9t-iU*J9Ev9sSkM?zB0v2ZLa74S8?P|{jX2ntG!J1XMC0a?sjb7rhs31GX&rN z{JiobQ_tm~9|v!(Uu{*QTmF#SW!I#mj~74l`dDN`+n4UJIh+;x{pYeS|196WyHSp>FNWHdc(cUbin+Zy@%^{;-%iRTuYd70 z`o5X|Qf=ocS}`H_?tWhRbAIXn7sA}vSoiWWC7i!|su8Ko0(HEYl|qpkL*fNo4O^#$ zFXNfUd;a*lgRjFr|L>_4pUpc<%YFaPLstIj4!u#EwO_3Cvu~&`e$%n@{p;`Q^;^#I zo?%)Y@`$fEKlm7Ch! zmz}6Rn$KSq7j#R0&7qdZPrrGUE;)PS=eF-}uKa)g-&X&-P39Z*zenXh|5@Gh)c3n@ zbjrJYsWnSN7-}-!s~4S{k@%V(7!Q7&Kb_xM?50uW*C)O3@%H2Wo#*PV?4AGhKC`RyCR65Po@wm@=T`pz zZ|ZctP&JNNbt8+PPF#4}-sJmszOX~G4Ao3N1p)J)FF(CQR6pwfuM@W4Pfm*a z=zL_ya+d7>`s#gN?^l_}7F6E7yxZj`yG*|K_XDz5mo&*3?)%TQ^mfnHqRVriHqDzp z;~#&BNymcK(ws*Z5DYwD_$Tz1rbU?7=&?qtf@h zPJeK@{MyO(*VB$f|9#wc`;^CX&C@c@3ERJ^zwzIGZ0YZKtC^Q~u7C6U-2zj-64svl zG+pj0EyfMAHR=(InK+g+Fcw&tuH=S~%^V0lpv!QLt3>U?B179Xwt{c9uFmY=^?knH z#Gj8|y!-TS(+v6L>-YUjll)S2Cg(xR(Rb_#y#L?5`njVm*`va7F791)w_o7&%e ze#75)NBS@QSgE+FGXIUyR6k?4uW>@s4KH)n*KO^Ju0EJ%KJAX|#!tf6CFjT8TEFnz z)U#PfthdC??Ao+t`{$xljlv~6Uz}>5zv0|~OBTm0nVrKh>aOT1VQl$kHstU6!**2Niu|0kB7m>c?9 zYBSsO8}~LxGd%jjcr7*Py=mG%Ig6?rR%_Ddy7$g}FB@zBy^(p+t^XHg7+y=rU*9xK z=KnwG)4RPcpL=%3eZ8vY-}xV;tfKclHD3JW@ZajS_NF?~CnHP~R=j;{@pZpmrcC+$ z+hvc%PptiZb<)PM)F?VW~ z_w9`vt1nr7U9Tr@yVF_rwLq<;Lp&Epn9%M2yKXhV`@4E`!`3IKE0@-oCU?H>dEfFq zVK-}o;J^O7viUN%#ErYdymwaVKAo7Sd^WvmL(!`ni8C+%FTDBxuF}H4Js*u8Z=L$=;n8)vD!Y50erOhDN^lSQ*8yt) zDF~#2R)I7J$->*h4VxRLGel%xh;+!;o24h88uD+jkuCVpz z_RPCdr`DAxPuq7z)!5oEO6H5(n>vPh`!nZmnPGIv>iNdsaua^Wvh65auE!a<%s={K zYT?!wMN|AvH>jC0bnn(*7We$(KH;S`d&Aa!pZ=jC;qCvoZz6Z@dHDAuU+Ju)vp4wN zJ-o?b_O54V94_xa@O4vh(T5L88{d{^WgLn;u=m*>v6AxvYY(sc|MgyXSzgZH7xBN} zZQ8Uc|4q*8gzMj}8Lm}ddYW8%?a9OSNzOa$KF4j3<-6g{Ahc$!z2xcs>F=*!lzLv} z^Y~L}%0c1gGluWCs%-tg*p%Vl+b^0kKU9AQL4{p`lon^`+5~@ zEdXETi2^2gj5`Ri?D?<%RVAh+7_qoZfP&i--(F_VaNmAKcg`(Q~z76S=AC)sC&!_omNM zPWs;YHgNYupNxx|FLriv9x(ayGJNw6$#0n#8ESr<>X-d~eCzJQ-QUvlA~f&yEWbZJ z$4GY1G^xYYvrZq%IyvoSk>%G%Z5y`Ue=E0b|2CgAY2$-Tpv85dMRv{e(yss8@qNB( zvf9nxXS$zFy6>lI%5tEpzWUyMjbN+moAW}avtECCuvv6HqsN`%ud3{SYjW<(OWR%B z^H?tOV)>Ssnv1S^cZJ`-@09#ssNHdlA;Ni`=UX|G?{@rC9;L4K{N2f|I(Os$A`Ml; zzwg8TXUpeLW^entf$wr^V`=4sgrn>J&wm*dZ&&@k^z#&+nMS8Cq{_3^o;$wQcq_{R z{oFcdxw#fcc5OXs+wR$1{dj+X@Q=l@zjsgBYjv+nJovu7*2~<1~r^|kK-zIHb_V)V6zdyf~pS`^0Zt}Ia6Hjk`S|VNb z?0$LvO@-jyW*hp}-dQsF%4@NjuU$ua>hCH&{BZK|vu?4 z^-l~XFIxP##=~-8-mWRlh($(+R2&#&)I3%pCb&PSO_;%OW9>6zd)eu6p?M;6J6EY1 zGCoNCs(tF_{(na2*B81=R+b*9*nT>y{`%{*%#fR00q^%L?5MG*E4%PnSh!*B94nt| z=c`Yx(w|~$FMO}%F8_n0yG*vGl`k`QTDpJQ{>MB2RwYdKbUtf4acjzsCqh4yPevzZ z@4ww!llP|8dS&e!xh=iFeJ2$i3tDi{Yr{AFdwT+kYYkytkO7 zIkTS<{mJchFsVGQfcxady1U#vFD+PiZEM<=_o}-@8?JwQUFiIJ`nI%Z+rTA{nRhf7S3+^(Fs?@PtCi}nSbcr=ld&5sROPulrx7JN-P@1#XeOzQ6Wu(9C&TzI&p4y`^g9tm~Wp{cgX^&A@UX zZ`L1Kc;&A!hl%CD!z)Yl5EC=ujZZil?#KUKv{QW5wEs)J)swHk2QAjE_{SKLZt*nd zQ$uM@JG&&cx7X*@&+e`N|0n-j z=(#=DPka!S?`&h~)GTB4xWf?s+SaPR_la4Wb*1jp-{n)vzaM#Xe};OspQTZLX~eDf zPk%|(WH1P6^!LxvEf4FSD=59aFX3&zMdE}#d!G90PybZov)aovwQTu5aT)on|J8dR zOmO!)IdQ$cIsf_6Qbx(0R%QCW+rQn8b^dN%n^6*fQSx15(6ePppMFg^IZ4y`#lywd zCSLjG9?Y=jceMTO#hsRi4FkBQ?ug#y7p*uwZra7y7dpygidYs@HSRdSzvBt zpKcyqq|d3kjOF*A*IeRvwd2x5!yisO4q8U*w94+?XZ_ovl__ts4bLBHQN8l5dS_>4 z{yNj|hptU}SO4B_Lda{51 z&Y9}y&u_}$y<`8{HYuq*m2EfvGT4-B=k)DIj@l|K z3Qn*6bgg5h;@0@@`S*Thy_q-v>pTfXsj_NKZ?$ix-@5zm>TkM#X#3M!N~+ECW=SzW zs6Rh{dS`CdiJzYhjc=^q_0BERs-SE7vgqR_``0h{^X;_%v-)$``Mgf`2RA9`fU zVEO-jWpU)~9S48pwsM_b_Appw^~aw+Ih>_`)c5#pVL4!>RucJn$H5n-=2IuUGroQz zb$Ys|PW=Vj4O`c1e|fL+{C~9LLXUmfPj~kDx0Uq9_^v*E(s=)j=XZ*H9dFvImL1Eu z)7A8~K8vHF^#8Tzy|oXRU8jGzzTvX>OSAMYpEzObAr9<9shYw=XC<^tboxQnA{dsvA`! ze%IUo-CVLd;=rn)>F=+H+Bj+2YTsAbCDb8yS1IYuuNzNaJ-(Lw{m*KnC!DWYmz_Cw zT67m{%XM9W68<;ezr8im4_=qyS(*OChU2iwq<|_I+U^&ClY=%2kw1@)Lw)ZCAt!+2@*L+n_ zm+=E+3P@b1X-{jOQGCwHDOZ25`IAsr_P0Lwb^FuXkB^@TF3Eha{Q269>dI=(=>0!@ zPJQW&?YsGsb=DOr2L0On$yem|Fa_M)5Z~goKP05z8kLZ(DTsBR{&7%Iz z&+y#u$F@oT-*w4(ewOQ#`TLW%DPBmuQ+@vKgO@*d7d|wJv|72p^!-+Ao(ZqkRDQwP-~aYiE0?`}Us$gg$gFGCTz+NsZrk-mAOHTd zHQMvg_F8I5=a)R=ru7bq*Z(PYKR5ScG-p6!q=G^uB|7CGc zR*<8g?C*m%YSr&nr~WwAFZ2D_mfws!pi{hSvU@YH#r?9mb7brJbCSkivv}TXO56QB zU{#jXeeTlUvcn6Ww+S`q&Ngwl7a?Ii`P)Xt%S(OMy2rjh`I2Ed!-Ahv1dr+L_%C!Ae> zX1iYGx;XF5JLYBg(|1>2WT*kHO+K4$y~bH+Gke*cU%SuGRhk@j{9MMKf2(RXRbDA6 z&V0XQTEMaT4cV^F412z;tlRYQ=*zIr>rK9GeruY(cjuP;pzgar@~vySdYG<6E{ddr!UH*M{vSnXyVb2QsZGX?A*ZB3_*J}cIe|!Ck_ZQO{`{(CoPQNg{ zp+sym+b+MQcQ-#yeb#p4s@$$?tMn&FAAQF@=R?f$Z|CLj+>2m+sQP+})m*ld%(}a* zwfs%QXdQ1gzNt* zn{S=mwzYe0u>3n4msMu{gnev z4gdf9IO_55=aW4@tNwmEGxz<&8|Up$%GySq{H|Va(tq*&9{uI}-|R5AV%(5Dy$F$# z93)sd8V+}Oh9U;C-ZA-AGpNUKZ8>pQbjjTxtdkTkx7r{2SMZ>C=Ec=3WvsW{-<8pw zXuKq(_rbyJ2MW988%o9A=iZI(VA~Z{^6d2rwcMrYbKP^(ZC*}V{x;o5V6Ls0MtIuU zymu2bw)?ER&fs$R?Z2&FC*srp8?3%2knuwMwrcFI?mH7@`wF-i_F0y>4~Byx2Bt~y@6@@I$5-yMJXzx%zNZ@pn{%?3TQiZk&$c5IRT zz9(j)ep&qqhs!0)?p*5p`{eD?&1GFukMGUjmH(F+yRz@wqPj%#LgDR|n;(>z#Vp7W z__R*&UtF>4rNi!PFTeh=eY5{-#trM57OYle>DtF}x%gYv$%*RoZx?*|Qoj4+{`bF| zgZ5+_YcpIuRid_dAID_X}Oc~Fzw*B z{)qdmzl2UazZ^HI`_fWxpYX`%H){WtioHMKep>SMgX1h8e*Im|STS|k+}!!8x88}n zmx{;QDg_ul-*G5H^|A8p)Jt>c{pbANv_9mKU*x^?lnWpCKfj&7qW0Z%ErIq=2D%g*cJ-m_mOKMq~`FuwbDw#UUk*FBGU8+WiB1?}Xzck{F7p2sEc z&#!%)cJisDo_EOat@pS7XZBXiR^27@DfhcQXv3UInnRrCere;cCOQ{p7VV#7krn&A z-p$}*=_~C;`n=#Vc0(Q+;d2ZTudmehY`yTh=d*$r8Tt`e5Ar zdd}~r--Pn2D$A_4+TZx>AOG*-^ZLd`+h_lebqMdc@ciHN+xMsX_x$Hu@SC0e)Y0iN zT65>eDVg65wF^9NAIlW`JN~%if*0lc&Q_?#t6%QCz!HMjY{Wlcqz$BD=K#ouBsC0_Cl+AyP- z;i(DpzLf3H6ywcjTy4s0UgG(4m80a|o_h8FTcj9Xd-Ezw-IW&mKkab(sk>LDSyD@W z|LKqZxX9+`q0Nf-kBc4)`n&pf|Ky<7Znc-6-+$e_{CKN1!!@f?xAdR?WL?t_ROwEa zJovch+ukLSN7-ZiKN|fr<+%FvKlA3qSZ!0j3k5q~UlE=3_S6IYIF?rhuj_67n%_3% zzCL+#f6_N)y_&D4o1V`UpKS9x{B=?G{&NlWrPppuI6j~4@mjZY(>ZQ4j%|>SltlK zuts!_RoRW0TVd08lxSH!e!j4;`N_XyvS(D4_lj(nZ`j)R{o7liySG1X&fotnXz7(b zkL47!`1E*p*t2iUJLEQ3)W}z6fAo2MYpt7|dU&;Ihu5F( zEUEC0VO#zCQMcZtYg6T?6rQ!VI`@Zn&g-Rr(|aVZ=}WWSHrFZ7?u)7Yd-fUs|6lcc zMb^Ll9u!{0a-b^q?)mRaH|~9M;ocA9HO+S?_x;|TZ8G84U3brAYb;~(Z?F3s-D4QP zEx-Eu=e;rx3_0sl%>V8GRWiFL|LLBZHR9Evsgn)!*8l!lHp?^+w3+v{YU!Vso3{IJ zeWPP(oL*{s@AUKgTPOYJ^XOxUSZ$YgM(b+&{YPh|WAi~vQ_qOkfB9df8FzcV@gMR2 z*TVVT%?V$Z8#^7}#BZxsx|^?f&QEEJ>!&~a-~M;zR_e8RvZ zZ>Kywk@x9vW9_=HFBy-X4x8Mz_qgY|J=b^0ypBW5M7xUVjqMU*jx79`?_$W`Wqq34X>Gh{yeVy zY4*p%e^QSbEe?+@Uo4_qyMM~cyCIt-tEaRD?fJv7=Ih-5-}iiE{=gUc^NRmOP`dQSL|cmE`MO_+`rk=w@mxC_tmaL zMinQ+E~@q&4&1XXe*IG8hHwe**mZY5?#uc6$hi3DY5N}4_RXogV!EDaC+L;l-I8Rg zIm3GW^XTI2`a4~HHGg-$sip7L$Csn$-WguUrCM}7j%~VNF1guB`%ckpL7uQ_(mm-5uM3@eet+$`CtMB8 z*YEzm>sVQN+O6{O<+sl^T|ZuDr}|QVpU1kBQ;**eTF`MtJ2)`wPMq43=l&XRuS*`7 zpH~%HmVYy$hCR=Go4tinz2xuB=_XBOfBCK~?JGV18?;4Y@uq+8zWuST`LshM>wCx6 zE!*v$+gGPG{@g3x_h{?i|5EpDf7{hWm+jl@x6g21vwDy1s{cRU_H5*Gvs(Q3W>2Ug z*U7J{-lyMAm7nydwYzek>Gp5O*Lv*#EVgg2B-`z5NsOhV4?$)~8?h#`9rT)~H{jtwK{CWIy`U?KM8GcF(e8MVMk*0Em z6d1l8IpTmW zpo0oJr7RMyIvI4Vm<*U6T#;-rWS;fBeumuB&Q-_WKeuNrShTBmGNR5B(sW>$<6+_F z46n01=75e$aCqeAS8?u>HG=|!_soy}3_c7pJ`LyVOZG4%eb0SZ{$H4({dx7AD1a7^0K)<&#{KjEgN|kRU7QQEQ{fj2 zN5kUv=Q9mqCHsTbAkS==&wSxMgTk%!14~1Gb2h->-#^=)-a^<_$1T9{`z~{gJgl?a zVZ;bJ9>Tueh7o*PMZKnI!|kmTKg!EKp8wB(uD*i-^NsV%^$`bkEb?z)u=w?Bju`x; zjeX#gHhx<&a2{Bs%#h4h@QUXE$AQX!?w>!;XSi|x-gCJ94qrG07~JFMUrvJg<^X8t z4-ITb!e|G;l8i+k-L>Y9VN%0R)FV+WTy($b}%o&#aU;O)bKf{gd$Mq41ek}59 zV6b?#YYrPc;{JiW^PT?zi^7+BFPp}!_*%0UsYUtL6NIL3-^=!R{>S&v8J@5*)W}8`_KIhHwd0V!g7Gc!H&=V8$%j@ zf_=MuHN*4gKc7EmPyq+epF(&JVrZNKI`Abje;xe57ni-DEYvYye#jlX0`+tngE8}s z^AC^nB&0F?w))4>z}ZkM+YloI%jOOWuB;pl!Bb{;Bi09k&d2%vQ*-omok4%P4h4}6 zu69(mAGo;K{XcJ6uTABr5BnP@OV9rW%ZJbuQX~GL{?D&_tasqU43KrC4i=!nu9cp# zuv`k2pQz@*Ad_i(?5`3;9aNaZf=htG*a1;xf?10q8yGBRRnOlBFM7bHWd<}bSn!r< z`64=#pc5ekKIk|wyqVd>jOIio#|8!qp{mYm7kE7mR_>w4$n@aJq@{7tQdv(!rw6tc z0Ia})fia$iqoFqO`695r2x6s61B1oX5|-_aF!zJQOF=-6k?Fw)iy&@T9SiZKLkg(G zOxs_09bp8RWyZvEfQJ`qKh(~~3^4_UzGwHAzXdCS5e`x!3JiYDbG?unDBwV{;TB-1 zUiQcV%@hv-1%|$sxJPnmp)tw3fx%*D%1Uu)1cJ>Fa5x~&$dnL&W2Xk1%e4d*82nUa z59UHV2=NaC6Gw}C1A~Q4-<2k`0GP?da$w@k{5z(o<}~y&Fd8^BquQx3i1b^_I)pSjgfu#YG&<6Y zI?gFDI?_92Mtc9}pYO|MXmixydbht+t>Xz3x7|Lwq7M(>Nj5_-25|u2-;%|`@<7TR zaRZNlfBH&U<>kotLh6VJG>Ge6 zoeI_jQ~Dsnfx&LsCq+hNl`0$@2RNgRlu-ol2njUgpR}3|(+PHD6bs7(u`+vABK#y=jK&TkZHy*1zg)u=mdKI;Vst04B=^$^ZZW literal 0 HcmV?d00001 diff --git a/hosts/modules/programs/mcsr/waywall.lua b/hosts/modules/programs/mcsr/waywall.lua new file mode 100644 index 0000000..c569295 --- /dev/null +++ b/hosts/modules/programs/mcsr/waywall.lua @@ -0,0 +1,263 @@ +-- vim: foldmethod=marker +local waywall = require("waywall") +local helpers = require("waywall.helpers") + +local Scene = require("waywork.scene") +local Modes = require("waywork.modes") +local Keys = require("waywork.keys") +local Processes = require("waywork.processes") + +local scene = Scene.SceneManager.new(waywall) +local ModeManager = Modes.ModeManager.new(waywall) + +-- config -- +-- https://arjuncgore.github.io/waywall-boat-eye-calc/ +local normal_sens = 12.8000006 +local tall_sens = 0.86348038 + +local pie_colors = { + { input = "#e145c2", output = "#a000a0" }, + { input = "#e96d4d", output = "#aa3310" }, + { input = "#45cb65", output = "#00a000" }, + { input = "#4de1ca", output = "#1a7286" }, + { input = "#c46de1", output = "#ff55ff" }, +} +-- config -- + +-- utils {{{ +_G["WAYWORK_GLOBAL_GUARD"] = false + +local function toggle_global_guard() + _G["WAYWORK_GLOBAL_GUARD"] = not _G["WAYWORK_GLOBAL_GUARD"] + return _G["WAYWORK_GLOBAL_GUARD"] +end + +local function mode_guard() + return not _G["WAYWORK_GLOBAL_GUARD"] and not waywall.get_key("F3") +end + +local function smart_enable_group(mode, status) + scene:enable_group(mode, status) + scene:enable_group("normal", not status) +end + +local function piechart_src(res) + return { x = res.w - 93, y = res.h - 221, w = 33, h = 42 } +end + +local function piechart_dst(res) + ---@diagnostic disable: undefined-global + -- x = right_of_thin - 11 (gap between edge and pie) - 160 (pie width / 2) - 99 (mirror width / 2) + if res.w == resolution.w and res.h == resolution.h then + return { x = res.w - 270, y = res.h - 390, w = 33 * 6, h = 42 * 6 } + else + return { x = (resolution.w + res.w) / 2 - 270, y = (resolution.h + res.h) / 2 - 390, w = 33 * 6, h = 42 * 6 } + end + ---@diagnostic enable: undefined-global +end + +---@diagnostic disable-next-line: undefined-global +local ensure_ninjabrain = Processes.ensure_application(waywall, programs.ninjabrain_bot)("ninjabrain.*\\.jar") +-- }}} + +-- background images {{{ +-- for _, name in ipairs({ "wide", "thin", "tall" }) do +-- scene:register(name .. "_bg", { +-- kind = "image", +-- ---@diagnostic disable-next-line: undefined-global +-- path = files[name], +-- options = { + +-- ---@diagnostic disable: undefined-global +-- dst = { x = 0, y = 0, w = resolution.w, h = resolution.h }, +-- ---@diagnostic enable: undefined-global + +-- depth = -1, +-- }, +-- groups = { name }, +-- }) +-- end +-- }}} + +-- thin {{{ +---@diagnostic disable: undefined-global +local thin_res = { w = resolution.h * 0.28, h = resolution.h } +local e_scale = resolution.w > 2560 and 20 or 10 +local left_middle = (resolution.w - thin_res.w) / 4 +---@diagnostic enable: undefined-global + +scene:register("e_counter", { + kind = "mirror", + options = { + src = { x = 1, y = 37, w = 49, h = 9 }, + ---@diagnostic disable-next-line: undefined-global + dst = { x = left_middle - (49 * e_scale / 2), y = resolution.h / 10.8, w = 49 * e_scale, h = 9 * e_scale }, + depth = 0, + }, + groups = { "thin" }, +}) + +for _, ck in ipairs(pie_colors) do + scene:register("prct_mirror_" .. ck.input, { + kind = "mirror", + options = { + src = piechart_src(thin_res), + dst = piechart_dst(thin_res), + depth = 1, + color_key = ck, + }, + groups = { "thin" }, + }) +end + +ModeManager:define("thin", { + width = thin_res.w, + height = thin_res.h, + on_enter = function() + smart_enable_group("thin", true) + end, + on_exit = function() + smart_enable_group("thin", false) + end, + toggle_guard = mode_guard, +}) +-- }}} + +-- wide {{{ +---@diagnostic disable: undefined-global +local wide_res = { w = resolution.w, h = resolution.h / 3.6 } +---@diagnostic enable: undefined-global + +ModeManager:define("wide", { + width = wide_res.w, + height = wide_res.h, + on_enter = function() + smart_enable_group("wide", true) + end, + on_exit = function() + smart_enable_group("wide", false) + end, + toggle_guard = mode_guard, +}) +-- }}} + +-- tall {{{ +---@diagnostic disable: undefined-global +local tall_res = { w = 384, h = 16384 } +local measure_w = (resolution.w - tall_res.w) / 2 +local measure_h = (resolution.h * measure_w) / resolution.w +local measure_dst = { x = 0, y = (resolution.h - measure_h) / 2, w = measure_w, h = measure_h } +---@diagnostic enable: undefined-global + +scene:register("eye_measure", { + kind = "mirror", + options = { + src = { x = (tall_res.w - 60) / 2, y = (tall_res.h - 580) / 2, w = 60, h = 580 }, + dst = measure_dst, + depth = 0, + }, + groups = { "tall" }, +}) + +scene:register("eye_overlay", { + kind = "image", + ---@diagnostic disable-next-line: undefined-global + path = files.eye_overlay, + options = { dst = measure_dst, depth = 1 }, + groups = { "tall" }, +}) + +ModeManager:define("tall", { + width = tall_res.w, + height = tall_res.h, + on_enter = function() + smart_enable_group("tall", true) + waywall.set_sensitivity(tall_sens) + end, + on_exit = function() + smart_enable_group("tall", false) + waywall.set_sensitivity(0) + end, + toggle_guard = mode_guard, +}) +-- }}} + +-- normal res mirrors {{{ +for _, ck in ipairs(pie_colors) do + scene:register("prct_mirror_normal_" .. ck.input, { + kind = "mirror", + options = { + ---@diagnostic disable: undefined-global + src = piechart_src(resolution), + dst = piechart_dst(resolution), + ---@diagnostic enable: undefined-global + depth = 1, + color_key = ck, + }, + groups = { "normal" }, + }) +end +-- }}} + +-- startup actions +waywall.listen("load", function() + -- wait for title screen + repeat + local error, state = pcall(waywall.state) + waywall.sleep(1000) + until error == true and state.screen == "title" + + -- actual actions + ensure_ninjabrain() + scene:enable_group("normal", true) +end) + +local config = { + input = { + layout = "us", + repeat_rate = 40, + repeat_delay = 300, + + sensitivity = normal_sens, + confine_pointer = true, + + remaps = { + ["MB4"] = "F5", + ["MB5"] = "F3", + }, + }, + + theme = { + background = "#00000000", + -- https://github.com/Smithay/smithay/issues/1894 + ninb_anchor = "right", + }, + + ---@diagnostic disable: undefined-global + window = { + fullscreen_width = resolution.w, + fullscreen_height = resolution.h, + }, + ---@diagnostic enable: undefined-global + + actions = Keys.actions({ + ["*-F2"] = function() + toggle_global_guard() + end, + ["*-V"] = function() + return ModeManager:toggle("thin") + end, + ["*-B"] = function() + return ModeManager:toggle("tall") + end, + ["*-G"] = function() + return ModeManager:toggle("wide") + end, + ["Ctrl-Shift-L"] = function() + ensure_ninjabrain() + helpers.toggle_floating() + end, + }), +} + +return config diff --git a/hosts/nixarawrui/default.nix b/hosts/nixarawrui/default.nix index bafadd1..d5abd9f 100644 --- a/hosts/nixarawrui/default.nix +++ b/hosts/nixarawrui/default.nix @@ -9,6 +9,8 @@ ./hardware-configuration.nix ./modules/amdgpu-ignore-ctx-privileges.nix + + ../modules/programs/mcsr ]; # Use the systemd-boot EFI boot loader.