sergio/takana
> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…
fix(distro): el muro de fcitx5 se derribó — dejarlo anotado ya es falso
1{
2 "categorias": [
3 {
4 "categoria": "escritura del mundo",
5 "faltan": [
6 "noto-fonts-extra"
7 ],
8 "items": [
9 {
10 "estado": "tiene-y-viaja",
11 "nombre": "noto-fonts-cjk",
12 "parientes": []
13 },
14 {
15 "estado": "tiene-y-viaja",
16 "nombre": "noto-fonts-emoji",
17 "parientes": []
18 },
19 {
20 "estado": "tiene-y-viaja",
21 "nombre": "noto-fonts",
22 "parientes": []
23 },
24 {
25 "estado": "falta",
26 "nombre": "noto-fonts-extra",
27 "parientes": [
28 "noto-fonts",
29 "noto-fonts-cjk",
30 "noto-fonts-emoji"
31 ],
32 "pista": "nombre parecido en el catálogo (verificar, NO es equivalencia)"
33 }
34 ],
35 "porque": "las únicas fuentes del corpus son dejavu y su nerd: sin estas, la distro muestra cuadraditos en chino, japonés, coreano, árabe, hindi, tailandés y emoji"
36 },
37 {
38 "categoria": "escribir en esos idiomas",
39 "faltan": [
40 "anthy",
41 "libpinyin",
42 "hangul",
43 "rime"
44 ],
45 "items": [
46 {
47 "estado": "tiene-sin-viajar",
48 "nombre": "fcitx5",
49 "parientes": []
50 },
51 {
52 "estado": "tiene-y-viaja",
53 "nombre": "ibus",
54 "parientes": []
55 },
56 {
57 "estado": "falta",
58 "nombre": "anthy",
59 "parientes": []
60 },
61 {
62 "estado": "falta",
63 "nombre": "libpinyin",
64 "parientes": []
65 },
66 {
67 "estado": "falta",
68 "nombre": "hangul",
69 "parientes": []
70 },
71 {
72 "estado": "falta",
73 "nombre": "rime",
74 "parientes": []
75 }
76 ],
77 "porque": "una fuente deja LEER; para ESCRIBIR hace falta un método de entrada"
78 },
79 {
80 "categoria": "accesibilidad",
81 "faltan": [
82 "orca",
83 "speech-dispatcher",
84 "espeak-ng",
85 "brltty"
86 ],
87 "items": [
88 {
89 "estado": "falta",
90 "nombre": "orca",
91 "parientes": []
92 },
93 {
94 "estado": "falta",
95 "nombre": "speech-dispatcher",
96 "parientes": []
97 },
98 {
99 "estado": "falta",
100 "nombre": "espeak-ng",
101 "parientes": []
102 },
103 {
104 "estado": "falta",
105 "nombre": "brltty",
106 "parientes": []
107 }
108 ],
109 "porque": "sin lector de pantalla ni voz la distro es inusable para quien no ve"
110 },
111 {
112 "categoria": "terminales populares",
113 "faltan": [
114 "kitty",
115 "alacritty",
116 "wezterm",
117 "ghostty",
118 "xterm"
119 ],
120 "items": [
121 {
122 "estado": "falta",
123 "muro": "sin-opengl-de-escritorio",
124 "muro_porque": "setup.py:804 hace pkg_config('gl', '--libs') y data-types.h:25 exige OpenGL >= 3.x core. Medido en el store: NADIE publica `gl.pc` ni `libGL.so` — mesa da egl.pc, glesv2.pc, gbm.pc y dri.pc; libglvnd da opengl.pc con libOpenGL.so/libGLdispatch.so y sólo viaja en escritorio-kde. Compilar no basta: gl.c:68 aborta en runtime con «OpenGL version is X.Y, version >= 3.3 required for kitty». Mismo muro que OBS.",
125 "nombre": "kitty",
126 "parientes": []
127 },
128 {
129 "estado": "falta",
130 "nombre": "alacritty",
131 "parientes": []
132 },
133 {
134 "estado": "falta",
135 "nombre": "wezterm",
136 "parientes": []
137 },
138 {
139 "estado": "falta",
140 "nombre": "ghostty",
141 "parientes": []
142 },
143 {
144 "estado": "falta",
145 "nombre": "xterm",
146 "parientes": []
147 }
148 ],
149 "porque": "`foot` está y alcanza; pero quien llega de otra distro busca el suyo por nombre, y el doc 20 §II.2 ya los listaba como «barato». kitty: 13 de sus 14 deps ya están en el catálogo (falta librsync, opcional)"
150 },
151 {
152 "categoria": "editores",
153 "faltan": [
154 "neovim",
155 "emacs"
156 ],
157 "items": [
158 {
159 "estado": "falta",
160 "nombre": "neovim",
161 "parientes": [
162 "vim"
163 ],
164 "pista": "nombre parecido en el catálogo (verificar, NO es equivalencia)"
165 },
166 {
167 "estado": "falta",
168 "nombre": "emacs",
169 "parientes": []
170 },
171 {
172 "estado": "tiene-y-viaja",
173 "nombre": "micro",
174 "parientes": []
175 },
176 {
177 "estado": "tiene-sin-viajar",
178 "nombre": "kakoune",
179 "parientes": []
180 },
181 {
182 "estado": "tiene-y-viaja",
183 "nombre": "nano",
184 "parientes": []
185 }
186 ],
187 "porque": "`vim` y `helix` están. ⚠ Existe `bob-nvim` —el GESTOR DE VERSIONES de neovim— y no existe neovim: el conductor sin el motor, como `crun` sin podman"
188 },
189 {
190 "categoria": "shells",
191 "faltan": [
192 "fish"
193 ],
194 "items": [
195 {
196 "estado": "falta",
197 "nombre": "fish",
198 "parientes": []
199 },
200 {
201 "estado": "tiene-y-viaja",
202 "nombre": "elvish",
203 "parientes": []
204 }
205 ],
206 "porque": "bash, zsh y nushell están"
207 },
208 {
209 "categoria": "lanzador, notificaciones y bloqueo",
210 "faltan": [
211 "rofi",
212 "wofi",
213 "bemenu",
214 "tofi",
215 "swaync",
216 "gtklock",
217 "waylock"
218 ],
219 "items": [
220 {
221 "estado": "falta",
222 "nombre": "rofi",
223 "parientes": []
224 },
225 {
226 "estado": "falta",
227 "nombre": "wofi",
228 "parientes": []
229 },
230 {
231 "estado": "tiene-y-viaja",
232 "nombre": "fuzzel",
233 "parientes": []
234 },
235 {
236 "estado": "falta",
237 "nombre": "bemenu",
238 "parientes": []
239 },
240 {
241 "estado": "falta",
242 "nombre": "tofi",
243 "parientes": []
244 },
245 {
246 "estado": "tiene-sin-viajar",
247 "nombre": "mako",
248 "parientes": []
249 },
250 {
251 "estado": "tiene-y-viaja",
252 "nombre": "dunst",
253 "parientes": []
254 },
255 {
256 "estado": "falta",
257 "nombre": "swaync",
258 "parientes": [
259 "sway"
260 ],
261 "pista": "nombre parecido en el catálogo (verificar, NO es equivalencia)"
262 },
263 {
264 "estado": "tiene-y-viaja",
265 "nombre": "swaylock",
266 "parientes": []
267 },
268 {
269 "estado": "falta",
270 "nombre": "gtklock",
271 "parientes": []
272 },
273 {
274 "estado": "falta",
275 "nombre": "waylock",
276 "parientes": []
277 }
278 ],
279 "porque": "el esqueleto de un escritorio Wayland que no sea GNOME/KDE: sin lanzador no se abre nada"
280 },
281 {
282 "categoria": "audio de escritorio",
283 "faltan": [
284 "pavucontrol",
285 "pamixer",
286 "playerctl",
287 "easyeffects",
288 "wiremix"
289 ],
290 "items": [
291 {
292 "estado": "falta",
293 "nombre": "pavucontrol",
294 "parientes": []
295 },
296 {
297 "estado": "falta",
298 "nombre": "pamixer",
299 "parientes": []
300 },
301 {
302 "estado": "falta",
303 "nombre": "playerctl",
304 "parientes": []
305 },
306 {
307 "estado": "falta",
308 "nombre": "easyeffects",
309 "parientes": []
310 },
311 {
312 "estado": "falta",
313 "nombre": "wiremix",
314 "parientes": [
315 "wire"
316 ],
317 "pista": "nombre parecido en el catálogo (verificar, NO es equivalencia)"
318 }
319 ],
320 "porque": "PipeWire suena y no hay con qué subirle el volumen desde una ventana"
321 },
322 {
323 "categoria": "capturas y portapapeles",
324 "faltan": [
325 "satty",
326 "swappy",
327 "flameshot",
328 "kanshi"
329 ],
330 "items": [
331 {
332 "estado": "falta",
333 "nombre": "satty",
334 "parientes": []
335 },
336 {
337 "estado": "falta",
338 "nombre": "swappy",
339 "parientes": []
340 },
341 {
342 "estado": "falta",
343 "nombre": "flameshot",
344 "parientes": []
345 },
346 {
347 "estado": "tiene-y-viaja",
348 "nombre": "wtype",
349 "parientes": []
350 },
351 {
352 "estado": "falta",
353 "nombre": "kanshi",
354 "parientes": []
355 }
356 ],
357 "porque": "grim, slurp, wl-clipboard y cliphist ya están"
358 },
359 {
360 "categoria": "visores de imagen",
361 "faltan": [
362 "imv",
363 "nsxiv",
364 "feh",
365 "loupe",
366 "eog"
367 ],
368 "items": [
369 {
370 "estado": "falta",
371 "nombre": "imv",
372 "parientes": []
373 },
374 {
375 "estado": "falta",
376 "nombre": "nsxiv",
377 "parientes": []
378 },
379 {
380 "estado": "falta",
381 "nombre": "feh",
382 "parientes": []
383 },
384 {
385 "estado": "falta",
386 "nombre": "loupe",
387 "parientes": []
388 },
389 {
390 "estado": "falta",
391 "nombre": "eog",
392 "parientes": []
393 }
394 ],
395 "porque": "ninguno: una foto no se abre"
396 },
397 {
398 "categoria": "archivos comprimidos ajenos",
399 "faltan": [
400 "unzip",
401 "zip",
402 "p7zip",
403 "7zip",
404 "unrar"
405 ],
406 "items": [
407 {
408 "cubierto_por": "libarchive",
409 "cubierto_porque": "bsdunzip -o x.zip extrae y conserva el árbol — probado con un zip deflate con subdirectorio el 2026-10-19",
410 "estado": "falta",
411 "nombre": "unzip",
412 "parientes": []
413 },
414 {
415 "cubierto_por": "libarchive",
416 "cubierto_porque": "bsdtar -a -cf x.zip … crea un zip que python zipfile lee y verifica — probado el 2026-10-19",
417 "estado": "falta",
418 "nombre": "zip",
419 "parientes": []
420 },
421 {
422 "estado": "falta",
423 "nombre": "p7zip",
424 "parientes": []
425 },
426 {
427 "estado": "falta",
428 "nombre": "7zip",
429 "parientes": []
430 },
431 {
432 "estado": "falta",
433 "nombre": "unrar",
434 "parientes": []
435 }
436 ],
437 "porque": "⚠ EL ARGUMENTO DE ESTA FILA ERA FALSO Y LO MEDÍ DESPUÉS: decía «no se puede abrir un .zip» porque `libzip` es una biblioteca y no el comando. Cierto para libzip — y falso como conclusión: `libarchive` estaba SELLADO y trae `bsdunzip`/`bsdtar`, verificados con un zip real en lectura Y escritura. Se declaró en `cli` el 2026-10-19. Lo que falta son los ALIAS (`unzip`, `zip`) para que un script ajeno que los invoque no falle, y 7z/rar sin medir"
438 },
439 {
440 "categoria": "imprimir de verdad",
441 "faltan": [
442 "cups-filters",
443 "ghostscript",
444 "gutenprint",
445 "hplip"
446 ],
447 "items": [
448 {
449 "estado": "tiene-y-viaja",
450 "nombre": "cups",
451 "parientes": []
452 },
453 {
454 "estado": "falta",
455 "nombre": "cups-filters",
456 "parientes": [
457 "cups"
458 ],
459 "pista": "nombre parecido en el catálogo (verificar, NO es equivalencia)"
460 },
461 {
462 "estado": "falta",
463 "nombre": "ghostscript",
464 "parientes": []
465 },
466 {
467 "estado": "falta",
468 "nombre": "gutenprint",
469 "parientes": []
470 },
471 {
472 "estado": "falta",
473 "nombre": "hplip",
474 "parientes": []
475 }
476 ],
477 "porque": "cups solo no imprime: los filtros y los drivers son otro paquete"
478 },
479 {
480 "categoria": "escanear",
481 "faltan": [
482 "sane-backends",
483 "simple-scan"
484 ],
485 "items": [
486 {
487 "estado": "falta",
488 "nombre": "sane-backends",
489 "parientes": []
490 },
491 {
492 "estado": "falta",
493 "nombre": "simple-scan",
494 "parientes": [
495 "simple-http-server"
496 ],
497 "pista": "nombre parecido en el catálogo (verificar, NO es equivalencia)"
498 }
499 ],
500 "porque": "ningún camino hoy"
501 },
502 {
503 "categoria": "documentos técnicos",
504 "faltan": [
505 "texlive",
506 "pandoc",
507 "groff"
508 ],
509 "items": [
510 {
511 "estado": "falta",
512 "nombre": "texlive",
513 "parientes": []
514 },
515 {
516 "estado": "falta",
517 "nombre": "pandoc",
518 "parientes": []
519 },
520 {
521 "estado": "tiene-y-viaja",
522 "nombre": "typst",
523 "parientes": []
524 },
525 {
526 "estado": "falta",
527 "nombre": "groff",
528 "parientes": []
529 }
530 ],
531 "porque": "nada que componga un PDF desde texto marcado"
532 },
533 {
534 "categoria": "páginas de manual",
535 "faltan": [
536 "man-pages",
537 "texinfo"
538 ],
539 "items": [
540 {
541 "estado": "falta",
542 "nombre": "man-pages",
543 "parientes": [
544 "mandoc",
545 "mandown",
546 "mani"
547 ],
548 "pista": "nombre parecido en el catálogo (verificar, NO es equivalencia)"
549 },
550 {
551 "estado": "falta",
552 "nombre": "texinfo",
553 "parientes": []
554 }
555 ],
556 "porque": "`mandoc` LEE man; falta el CONTENIDO y el formateador de info"
557 },
558 {
559 "categoria": "virtualización",
560 "faltan": [
561 "qemu",
562 "libvirt",
563 "virt-manager"
564 ],
565 "items": [
566 {
567 "estado": "falta",
568 "nombre": "qemu",
569 "parientes": []
570 },
571 {
572 "estado": "falta",
573 "nombre": "libvirt",
574 "parientes": []
575 },
576 {
577 "estado": "falta",
578 "nombre": "virt-manager",
579 "parientes": []
580 }
581 ],
582 "porque": "ni invitado ni anfitrión: no se puede probar la propia ISO sin salir"
583 },
584 {
585 "categoria": "contenedores",
586 "faltan": [
587 "podman",
588 "docker",
589 "buildah",
590 "flatpak",
591 "distrobox"
592 ],
593 "items": [
594 {
595 "estado": "falta",
596 "nombre": "podman",
597 "parientes": []
598 },
599 {
600 "estado": "falta",
601 "nombre": "docker",
602 "parientes": []
603 },
604 {
605 "estado": "falta",
606 "nombre": "buildah",
607 "parientes": []
608 },
609 {
610 "estado": "falta",
611 "nombre": "flatpak",
612 "parientes": []
613 },
614 {
615 "estado": "falta",
616 "nombre": "distrobox",
617 "parientes": []
618 }
619 ],
620 "porque": "`crun` está (el motor); falta quien lo conduzca"
621 },
622 {
623 "categoria": "java",
624 "faltan": [
625 "openjdk",
626 "jdk",
627 "temurin"
628 ],
629 "items": [
630 {
631 "estado": "falta",
632 "nombre": "openjdk",
633 "parientes": []
634 },
635 {
636 "estado": "falta",
637 "nombre": "jdk",
638 "parientes": []
639 },
640 {
641 "estado": "falta",
642 "nombre": "temurin",
643 "parientes": []
644 }
645 ],
646 "porque": "un ecosistema entero queda fuera sin una JVM"
647 },
648 {
649 "categoria": "bases de datos de servidor",
650 "faltan": [
651 "postgresql",
652 "mariadb",
653 "redis"
654 ],
655 "items": [
656 {
657 "estado": "falta",
658 "nombre": "postgresql",
659 "parientes": []
660 },
661 {
662 "estado": "falta",
663 "nombre": "mariadb",
664 "parientes": []
665 },
666 {
667 "estado": "falta",
668 "nombre": "redis",
669 "parientes": []
670 },
671 {
672 "estado": "tiene-y-viaja",
673 "nombre": "valkey",
674 "parientes": []
675 }
676 ],
677 "porque": "sqlite está; un servicio con varios clientes no"
678 },
679 {
680 "categoria": "depurar y medir",
681 "faltan": [
682 "gdb",
683 "lldb",
684 "valgrind",
685 "ltrace",
686 "perf",
687 "patchelf"
688 ],
689 "items": [
690 {
691 "estado": "falta",
692 "nombre": "gdb",
693 "parientes": []
694 },
695 {
696 "estado": "falta",
697 "nombre": "lldb",
698 "parientes": []
699 },
700 {
701 "estado": "falta",
702 "nombre": "valgrind",
703 "parientes": []
704 },
705 {
706 "estado": "falta",
707 "nombre": "ltrace",
708 "parientes": []
709 },
710 {
711 "estado": "falta",
712 "nombre": "perf",
713 "parientes": []
714 },
715 {
716 "estado": "falta",
717 "nombre": "patchelf",
718 "parientes": [
719 "patch"
720 ],
721 "pista": "nombre parecido en el catálogo (verificar, NO es equivalencia)"
722 }
723 ],
724 "porque": "se construye la distro entera y no hay con qué mirar un core"
725 },
726 {
727 "categoria": "discos y salud del equipo",
728 "faltan": [
729 "smartmontools",
730 "nvme-cli",
731 "hdparm",
732 "gparted"
733 ],
734 "items": [
735 {
736 "estado": "falta",
737 "nombre": "smartmontools",
738 "parientes": []
739 },
740 {
741 "estado": "falta",
742 "nombre": "nvme-cli",
743 "parientes": []
744 },
745 {
746 "estado": "falta",
747 "nombre": "hdparm",
748 "parientes": []
749 },
750 {
751 "estado": "falta",
752 "nombre": "gparted",
753 "parientes": [
754 "parted"
755 ],
756 "pista": "nombre parecido en el catálogo (verificar, NO es equivalencia)"
757 }
758 ],
759 "porque": "nada que avise de un disco muriéndose"
760 },
761 {
762 "categoria": "otros lenguajes",
763 "faltan": [
764 "deno",
765 "bun",
766 "ruby",
767 "php",
768 "julia",
769 "ghc",
770 "ocaml",
771 "elixir",
772 "erlang"
773 ],
774 "items": [
775 {
776 "estado": "tiene-sin-viajar",
777 "nombre": "nodejs",
778 "parientes": []
779 },
780 {
781 "estado": "falta",
782 "nombre": "deno",
783 "parientes": []
784 },
785 {
786 "estado": "falta",
787 "nombre": "bun",
788 "parientes": []
789 },
790 {
791 "estado": "falta",
792 "nombre": "ruby",
793 "parientes": []
794 },
795 {
796 "estado": "falta",
797 "nombre": "php",
798 "parientes": []
799 },
800 {
801 "estado": "falta",
802 "nombre": "julia",
803 "parientes": []
804 },
805 {
806 "estado": "falta",
807 "nombre": "ghc",
808 "parientes": []
809 },
810 {
811 "estado": "falta",
812 "nombre": "ocaml",
813 "parientes": []
814 },
815 {
816 "estado": "falta",
817 "nombre": "elixir",
818 "parientes": []
819 },
820 {
821 "estado": "falta",
822 "nombre": "erlang",
823 "parientes": []
824 }
825 ],
826 "porque": "python3, lua, go, rust y perl están. ⚠ `zig` NO es receta: vive como artefacto `seed-zig` fuera del catálogo, y es el compilador de TODO el corpus"
827 },
828 {
829 "categoria": "empaquetadores de python",
830 "faltan": [
831 "pipx",
832 "poetry"
833 ],
834 "items": [
835 {
836 "estado": "falta",
837 "nombre": "pipx",
838 "parientes": []
839 },
840 {
841 "estado": "tiene-y-viaja",
842 "nombre": "uv",
843 "parientes": []
844 },
845 {
846 "estado": "falta",
847 "nombre": "poetry",
848 "parientes": []
849 }
850 ],
851 "porque": "pip no viaja y no hay forma de instalar una herramienta python"
852 },
853 {
854 "categoria": "construcción C clásica",
855 "faltan": [
856 "autoconf",
857 "automake",
858 "ninja"
859 ],
860 "items": [
861 {
862 "estado": "falta",
863 "nombre": "autoconf",
864 "parientes": []
865 },
866 {
867 "estado": "falta",
868 "nombre": "automake",
869 "parientes": [
870 "make"
871 ],
872 "pista": "nombre parecido en el catálogo (verificar, NO es equivalencia)"
873 },
874 {
875 "cubierto_por": "samurai",
876 "cubierto_porque": "MEDIDO: un artefacto vigente instala un binario con ese nombre exacto. Falta la receta propia, no la capacidad",
877 "estado": "falta",
878 "nombre": "ninja",
879 "parientes": []
880 }
881 ],
882 "porque": "⚠ ESTA FILA ES LA MÁS DUDOSA DEL CHECKLIST y conviene que lo diga: cmake, meson, make y samurai existen y NO viajan en ninguna imagen — probablemente a propósito, porque una imagen de producto no se construye a sí misma. La receta de `nodejs` ya tomó esa decisión por escrito para su caso («acá Node es un compilador más, no software que la distro publique»). ⇒ lo que falta acá puede no ser un hueco sino un PERFIL de desarrollo que no existe. Se deja medido y sin declarar. `ninja` además lo instala `samurai` con ese nombre exacto (1.9.0, medido). Y `gcc` está RETENIDO a propósito (sólo `gcc-libs`), `clang` es `clang18`: eso no es hueco, es decisión"
883 },
884 {
885 "categoria": "vpn y red gestionada",
886 "faltan": [
887 "openvpn",
888 "iwd",
889 "nmtui",
890 "impala",
891 "mosh",
892 "sshfs"
893 ],
894 "items": [
895 {
896 "estado": "falta",
897 "nombre": "openvpn",
898 "parientes": []
899 },
900 {
901 "estado": "falta",
902 "nombre": "iwd",
903 "parientes": []
904 },
905 {
906 "estado": "falta",
907 "nombre": "nmtui",
908 "parientes": []
909 },
910 {
911 "estado": "falta",
912 "nombre": "impala",
913 "parientes": []
914 },
915 {
916 "estado": "falta",
917 "nombre": "mosh",
918 "parientes": []
919 },
920 {
921 "estado": "falta",
922 "nombre": "sshfs",
923 "parientes": []
924 }
925 ],
926 "porque": "networkmanager, wireguard-tools y wpa_supplicant están"
927 },
928 {
929 "categoria": "bluetooth usable",
930 "faltan": [
931 "blueman",
932 "bluetuith"
933 ],
934 "items": [
935 {
936 "estado": "falta",
937 "nombre": "blueman",
938 "parientes": []
939 },
940 {
941 "estado": "falta",
942 "nombre": "bluetuith",
943 "parientes": []
944 }
945 ],
946 "porque": "`bluez` viaja; falta con qué emparejar un auricular"
947 },
948 {
949 "categoria": "contraseñas",
950 "faltan": [
951 "keepassxc",
952 "pass"
953 ],
954 "items": [
955 {
956 "estado": "falta",
957 "nombre": "keepassxc",
958 "parientes": []
959 },
960 {
961 "estado": "falta",
962 "nombre": "pass",
963 "parientes": []
964 },
965 {
966 "estado": "tiene-y-viaja",
967 "nombre": "gopass",
968 "parientes": []
969 }
970 ],
971 "porque": "nada: la gente guarda sus claves en un .txt o no usa la distro"
972 },
973 {
974 "categoria": "respaldos",
975 "faltan": [
976 "borgbackup",
977 "rsnapshot"
978 ],
979 "items": [
980 {
981 "estado": "falta",
982 "nombre": "borgbackup",
983 "parientes": []
984 },
985 {
986 "estado": "falta",
987 "nombre": "rsnapshot",
988 "parientes": []
989 }
990 ],
991 "porque": "restic y rclone están"
992 },
993 {
994 "categoria": "descargas y torrent",
995 "faltan": [
996 "aria2",
997 "transmission",
998 "qbittorrent"
999 ],
1000 "items": [
1001 {
1002 "estado": "falta",
1003 "nombre": "aria2",
1004 "parientes": []
1005 },
1006 {
1007 "estado": "falta",
1008 "nombre": "transmission",
1009 "parientes": []
1010 },
1011 {
1012 "estado": "falta",
1013 "nombre": "qbittorrent",
1014 "parientes": []
1015 }
1016 ],
1017 "porque": "curl y wget están"
1018 },
1019 {
1020 "categoria": "navegadores",
1021 "faltan": [
1022 "chromium",
1023 "qutebrowser",
1024 "librewolf",
1025 "brave"
1026 ],
1027 "items": [
1028 {
1029 "estado": "falta",
1030 "nombre": "chromium",
1031 "parientes": []
1032 },
1033 {
1034 "estado": "falta",
1035 "nombre": "qutebrowser",
1036 "parientes": []
1037 },
1038 {
1039 "estado": "falta",
1040 "nombre": "librewolf",
1041 "parientes": []
1042 },
1043 {
1044 "estado": "falta",
1045 "nombre": "brave",
1046 "parientes": []
1047 }
1048 ],
1049 "porque": "firefox y atuq están; el motor Blink no tiene ningún camino"
1050 },
1051 {
1052 "categoria": "mensajería",
1053 "faltan": [
1054 "dino",
1055 "gajim",
1056 "element-desktop",
1057 "telegram-desktop",
1058 "signal-desktop"
1059 ],
1060 "items": [
1061 {
1062 "estado": "falta",
1063 "nombre": "dino",
1064 "parientes": []
1065 },
1066 {
1067 "estado": "falta",
1068 "nombre": "gajim",
1069 "parientes": []
1070 },
1071 {
1072 "estado": "falta",
1073 "nombre": "element-desktop",
1074 "parientes": []
1075 },
1076 {
1077 "estado": "falta",
1078 "nombre": "telegram-desktop",
1079 "parientes": []
1080 },
1081 {
1082 "estado": "falta",
1083 "nombre": "signal-desktop",
1084 "parientes": []
1085 }
1086 ],
1087 "porque": "ningún cliente de chat: ni XMPP, ni Matrix, ni los propietarios"
1088 },
1089 {
1090 "categoria": "música",
1091 "faltan": [
1092 "mpd",
1093 "ncmpcpp",
1094 "rhythmbox",
1095 "audacious"
1096 ],
1097 "items": [
1098 {
1099 "estado": "falta",
1100 "nombre": "mpd",
1101 "parientes": []
1102 },
1103 {
1104 "estado": "falta",
1105 "nombre": "ncmpcpp",
1106 "parientes": []
1107 },
1108 {
1109 "estado": "falta",
1110 "nombre": "rhythmbox",
1111 "parientes": []
1112 },
1113 {
1114 "estado": "falta",
1115 "nombre": "audacious",
1116 "parientes": []
1117 }
1118 ],
1119 "porque": "mpv y cmus están para reproducir un fichero; falta biblioteca y daemon"
1120 },
1121 {
1122 "categoria": "video",
1123 "faltan": [
1124 "vlc",
1125 "celluloid",
1126 "totem"
1127 ],
1128 "items": [
1129 {
1130 "estado": "falta",
1131 "nombre": "vlc",
1132 "parientes": []
1133 },
1134 {
1135 "estado": "falta",
1136 "nombre": "celluloid",
1137 "parientes": []
1138 },
1139 {
1140 "estado": "falta",
1141 "nombre": "totem",
1142 "parientes": []
1143 }
1144 ],
1145 "porque": "mpv está"
1146 },
1147 {
1148 "categoria": "imagen y diseño",
1149 "faltan": [
1150 "gimp",
1151 "inkscape",
1152 "krita",
1153 "darktable"
1154 ],
1155 "items": [
1156 {
1157 "estado": "falta",
1158 "nombre": "gimp",
1159 "parientes": []
1160 },
1161 {
1162 "estado": "falta",
1163 "nombre": "inkscape",
1164 "parientes": []
1165 },
1166 {
1167 "estado": "falta",
1168 "nombre": "krita",
1169 "parientes": []
1170 },
1171 {
1172 "estado": "falta",
1173 "nombre": "darktable",
1174 "parientes": []
1175 }
1176 ],
1177 "porque": "⚠ la suite ArtCraft propia cubre esto con 12 apps (photocraft, vectorcraft, …): estos renglones son los nombres AJENOS que alguien busca, no un hueco de capacidad"
1178 },
1179 {
1180 "categoria": "gestores de archivos",
1181 "faltan": [
1182 "thunar",
1183 "ranger"
1184 ],
1185 "items": [
1186 {
1187 "estado": "falta",
1188 "nombre": "thunar",
1189 "parientes": []
1190 },
1191 {
1192 "estado": "falta",
1193 "nombre": "ranger",
1194 "parientes": []
1195 }
1196 ],
1197 "porque": "yazi, nnn, lf, broot y dolphin/nautilus están"
1198 },
1199 {
1200 "categoria": "lectores de PDF",
1201 "faltan": [
1202 "mupdf",
1203 "sioyek",
1204 "evince"
1205 ],
1206 "items": [
1207 {
1208 "estado": "falta",
1209 "nombre": "mupdf",
1210 "parientes": []
1211 },
1212 {
1213 "estado": "falta",
1214 "nombre": "sioyek",
1215 "parientes": []
1216 },
1217 {
1218 "estado": "falta",
1219 "nombre": "evince",
1220 "parientes": []
1221 }
1222 ],
1223 "porque": "zathura y okular están"
1224 },
1225 {
1226 "categoria": "notas",
1227 "faltan": [
1228 "obsidian",
1229 "logseq",
1230 "joplin",
1231 "zettlr"
1232 ],
1233 "items": [
1234 {
1235 "estado": "falta",
1236 "nombre": "obsidian",
1237 "parientes": []
1238 },
1239 {
1240 "estado": "falta",
1241 "nombre": "logseq",
1242 "parientes": []
1243 },
1244 {
1245 "estado": "falta",
1246 "nombre": "joplin",
1247 "parientes": []
1248 },
1249 {
1250 "estado": "falta",
1251 "nombre": "zettlr",
1252 "parientes": []
1253 }
1254 ],
1255 "porque": "ninguno"
1256 },
1257 {
1258 "categoria": "otros compositores Wayland",
1259 "faltan": [
1260 "hyprland",
1261 "river",
1262 "niri",
1263 "labwc",
1264 "wayfire"
1265 ],
1266 "items": [
1267 {
1268 "estado": "falta",
1269 "nombre": "hyprland",
1270 "parientes": []
1271 },
1272 {
1273 "estado": "falta",
1274 "nombre": "river",
1275 "parientes": []
1276 },
1277 {
1278 "estado": "falta",
1279 "nombre": "niri",
1280 "parientes": []
1281 },
1282 {
1283 "estado": "falta",
1284 "nombre": "labwc",
1285 "parientes": [
1286 "lab"
1287 ],
1288 "pista": "nombre parecido en el catálogo (verificar, NO es equivalencia)"
1289 },
1290 {
1291 "estado": "falta",
1292 "nombre": "wayfire",
1293 "parientes": []
1294 }
1295 ],
1296 "porque": "hay cinco escritorios (mirada, sway, cosmic, gnome, kde); éstos son los que la gente nombra y no están. Decisión de alcance, no olvido"
1297 },
1298 {
1299 "categoria": "juegos",
1300 "faltan": [
1301 "wine",
1302 "steam",
1303 "gamescope",
1304 "lutris",
1305 "mangohud"
1306 ],
1307 "items": [
1308 {
1309 "estado": "falta",
1310 "nombre": "wine",
1311 "parientes": []
1312 },
1313 {
1314 "estado": "falta",
1315 "nombre": "steam",
1316 "parientes": [
1317 "steam-runtime-sniper",
1318 "steampipe"
1319 ],
1320 "pista": "nombre parecido en el catálogo (verificar, NO es equivalencia)"
1321 },
1322 {
1323 "estado": "falta",
1324 "nombre": "gamescope",
1325 "parientes": []
1326 },
1327 {
1328 "estado": "falta",
1329 "nombre": "lutris",
1330 "parientes": []
1331 },
1332 {
1333 "estado": "falta",
1334 "nombre": "mangohud",
1335 "parientes": []
1336 }
1337 ],
1338 "porque": "decisión abierta: arrastra Vulkan, que la distro hoy no publica"
1339 },
1340 {
1341 "categoria": "infra ajena",
1342 "faltan": [
1343 "terraform",
1344 "ansible"
1345 ],
1346 "items": [
1347 {
1348 "estado": "tiene-y-viaja",
1349 "nombre": "kubectl",
1350 "parientes": []
1351 },
1352 {
1353 "estado": "tiene-y-viaja",
1354 "nombre": "helm",
1355 "parientes": []
1356 },
1357 {
1358 "estado": "falta",
1359 "nombre": "terraform",
1360 "parientes": [
1361 "terraform-docs",
1362 "terraform-ls"
1363 ],
1364 "pista": "nombre parecido en el catálogo (verificar, NO es equivalencia)"
1365 },
1366 {
1367 "estado": "falta",
1368 "nombre": "ansible",
1369 "parientes": []
1370 }
1371 ],
1372 "porque": "decisión abierta: son herramientas de operar OTRA cosa"
1373 }
1374 ],
1375 "en_alguna_imagen": 604,
1376 "recetas_alcanzables": 1379,
1377 "resumen": {
1378 "falta": 148,
1379 "tiene-sin-viajar": 4,
1380 "tiene-y-viaja": 18
1381 },
1382 "schema": "takana-censo-distro/1"
1383}