This doesn't seem like the right approach... I don't see any other version of ls that sorts by string length. The output I get in the lsr directory with this patch is:
~/r/t/r/lsr main ↑2 zig build run -- -al
drwxr-xr-x tim tim - 16 May 15:50 .
drwxr-xr-x tim tim - 15 May 14:32 ..
drwxr-xr-x tim tim - 16 May 6:08 nix
drwxr-xr-x tim tim - 18 May 9:44 src
drwxr-xr-x tim tim - 18 May 9:44 .git
drwxr-xr-x tim tim - 14 May 11:06 docs
drwxr-xr-x tim tim - 7 May 6:19 zig-out
drwxr-xr-x tim tim - 6 May 8:27 .zig-cache
-rw-r--r-- tim tim 1.0 KB 4 May 17:43 LICENSE
-rw-r--r-- tim tim 2.9 KB 7 May 6:42 build.zig
-rw-r--r-- tim tim 1.3 KB 6 May 6:20 flake.nix
-rw-r--r-- tim tim 3.0 KB 16 May 15:50 README.md
-rw-r--r-- tim tim 29 B 6 May 6:20 .gitignore
-rw-r--r-- tim tim 1.5 KB 6 May 6:20 flake.lock
-rw-r--r-- tim tim 950 B 14 May 11:00 build.zig.zon
-rw-r--r-- tim tim 60.0 KB 5 May 10:35 screenshot.png