ShellIconOverlayIdentifiers: ¿por qué tan pocos?

84

En este punto, todos saben que hay un límite en la cantidad de ShellIconOverlayIdentifiers(de MSDN):

La cantidad de controladores de superposición de iconos diferentes que el sistema puede admitir está limitada por la cantidad de espacio disponible para superposiciones de iconos en la lista de imágenes del sistema. Actualmente hay quince espacios asignados para superposiciones de iconos, algunos de los cuales están reservados por el sistema. Por esta razón, los controladores de superposición de iconos deben implementarse solo si no hay alternativas satisfactorias

Puedo entender el límite de superposición de 15 en Windows 95. Pero en un entorno donde hay Gigas de RAM, numerosos núcleos y GPU, ¿hay alguna razón técnica para un número tan bajo en un sistema operativo moderno?

¿Y por qué no se puede configurar este valor?

Antes de dar la respuesta de 'rendimiento', considere: Windows permite una configuración tal que puede matar el rendimiento ... ¿por qué elegir este tema específicamente?

rbellamy
fuente
¿Por qué está etiquetado como "tortoisesvn"? ¿Me estoy perdiendo de algo?
Cody Gray
19
Pensé que estaba siendo inteligente ya que tortoisesvn es la aplicación mencionada con más frecuencia cuando se trata de limitaciones excesivas de íconos, principalmente porque toma 9 de sus espacios disponibles. Eliminó la etiqueta.
rbellamy
1
Las limitaciones siguen siendo las mismas en Windows 10. Tampoco sé por qué.
Gohan

Respuestas:

86

A menos que alguien aquí trabaje en el equipo de Windows Shell, dudo que obtenga una respuesta que realmente aborde las limitaciones técnicas y cómo afectan la elección del diseño. Pero lo intentaré...

Supongo que no hay ninguna limitación técnica, o al menos no la hay ahora. La verdadera razón es presumiblemente que nadie se ha tomado el tiempo de sentarse y actualizar el código, el diseño y las especificaciones para eliminar esta limitación. Las funciones no se implementan de forma predeterminada, y el hecho de que el entorno informático haya cambiado en los últimos años no significa que alguien se sentó y reescribió Windows para aprovechar al máximo todos esos cambios.

También debe considerar que es más que probable una elección de diseño consciente, en lugar de una limitación impuesta. Raymond Chen (que en realidad hace el trabajo en el equipo de la cáscara) publicó una entrada en su blog en respuesta a la conmoción acerca de Windows 7 retirar la capa de "intercambio de mano". Hace un argumento convincente de que la superposición de iconos no es realmente una forma deseable de mostrar información (más allá del hecho de que el sistema está limitado a 15) [énfasis agregado]:

En términos generales, las superposiciones no son una buena forma de presentar información porque solo puede haber una superposición por icono y hay un límite de 15 superposiciones por ImageList. Si hay dos o más superposiciones que se aplican a un artículo, entonces una ganará y las otras perderán, momento en el que el valor de la superposición como una forma de determinar qué propiedades se aplican a un artículo disminuye, ya que la única forma de estar seguro que falta una propiedad es cuando no ve ninguna superposición. (Si ve alguna otra superposición, no puede saber si es porque falta su propiedad o porque esa otra superposición se muestra en lugar de la suya).

Me parece razonable que el desorden adicional agregado al caparazón simplemente no valga la pena en la mayoría de los casos del mundo real. El equipo de Windows Shell obviamente llegó a la misma conclusión y eliminó la superposición de "mano compartida". Explicación directa de Raymond:

Dados los cambios en la forma en que las personas usan las computadoras, compartir información se está convirtiendo cada vez más en el estado predeterminado. Cuando configura un HomeGroup, prácticamente todo se compartirá. Para eliminar el desorden visual, la información se movió al panel de Detalles.

Y sé que pediste específicamente no mencionar el rendimiento, pero Windows realmente intenta evitar que te dispares en el pie. Los usuarios exigen capacidad de respuesta en el shell, y los iconos superpuestos pueden interferir con esto. Como prueba más de que no son la prioridad , otra publicación de blog del mismo Raymond Chen reprendió:

Otro ejemplo de aplicaciones que tienen una visión egoísta del rendimiento proviene de una empresa que desarrolla un controlador de superposición de iconos. El shell trata el cálculo de superposición como un elemento de baja prioridad, ya que es más importante tener iconos en la pantalla para que el usuario pueda comenzar a hacer lo que sea que quiera hacer. Las decoraciones pueden venir más tarde. Esta empresa quería saber si había alguna forma de mejorar su rendimiento y hacer que su superposición en la pantalla incluso antes de que aparezca el icono, demostrando una interpretación fenomenalmente egoísta de "rendimiento".

Cody Grey
fuente
15
Excelente respuesta. Entonces, tal vez la mejor pregunta sea "¿Cuál es una alternativa a las superposiciones de iconos que presenta la misma cola visual instantánea sobre el estado de un archivo / carpeta?" Me parece que usar íconos para hacer más que identificar el tipo de contenido se está volviendo cada vez más importante por la razón exacta que menciona Raymond Chen: con la difuminación de los límites de ubicación de los archivos, el estado IMPORTA.
rbellamy
3
Sospecho mucho que no es una elección de diseño consciente ni una limitación impuesta, sino una decisión de diseño fatua tomada hace mucho tiempo (alrededor de Win 95), y nunca se solucionó debido a la base de usuarios instalada. La decisión más tonta es que cada extensión de superposición puede admitir solo una superposición de iconos y para cada archivo el shell pregunta solo "¿se aplica?". Se debería haber sido que cada capa es compatible con una gran variedad de iconos, y para cada archivo de la cáscara pregunta "¿qué icono superposición?", A lo que la extensión podría contestar "No me aplico" como una opción.
Keith Robertson
9
Es interesante que MS haya adoptado esto al enturbiar mi ShellIconOverlayIdentifiersentrada de registro con OneDrive crud a partir de Win10. Para un desarrollador de usar algo como TortoiseSVN / GIT, estos recubrimientos son cruciales y el hecho de que sólo uno se puede mostrar es una razón QUÉ .
Alex McMillan
2
De todas las cosas que rompió Windows 10, @Alex, esa está bastante abajo en mi lista. La decisión de imponer OneDrive a los usuarios fue claramente una decisión tomada por el departamento de marketing, no por el equipo de shell. Nadie ha presupuestado tiempo ni dinero para volver atrás y mejorar las listas de imágenes de shell para que sean fáciles de usar.
Cody Gray
6
Ésta no es una respuesta aceptable. Sé que parte de esto vino de la propia Microsoft, por lo que la inaceptación es para el enfoque de Microsoft. Vea mi ejemplo: he sincronizado carpetas de DropBox, Google Drive, Mega, OneDrive y Tortoise SVN y sinceramente me gustaría ver todas las superposiciones correctamente en todas las carpetas, pero no puedo debido a esta tonta limitación.
Carlos B. Feitoza Filho
13

Excelente respuesta sobre los problemas prácticos de Cody. En cuanto a por qué 15 y no algún otro número, el límite está integrado en el propio control ImageList .

Bruce
fuente
4

Todo esto está muy bien, como lo explicó Cody Gray, pero francamente es bastante poco imaginativo y, como se informó detrás de escena, suena un poco frustrado.

En 2015 y con Windows 10, seguramente puede y debe haber una mejor capacidad, ya que noté una treintena de superposiciones presentes y tuve que priorizar las que más quería ver, que no es lo que quiere que la mayoría de la gente se preocupe en absoluto. También veo proveedores agresivos como Box que compiten en exceso para tratar de priorizarse, y eso nunca funcionará bien.

Hay una posibilidad: ¿Qué pasaría si los íconos superpuestos multiplicados tuvieran un indicador de superposición genérico? una pequeña matriz rectangular de varios colores como el botón de aplicaciones de Google Chrome? Una sola superposición solo mostraría la superposición de una lista larga.

Luego, cuando el puntero del mouse se encuentra con el ícono, una pequeña ventana flotante recopila todas las variaciones del ícono para ver (en un tamaño de ícono pequeño o un poco más grande). Cada icono superpuesto a su vez anuncia mediante información sobre herramientas lo que es, cuando se pasa el mouse sobre él.

Ahora puede tener todas las superposiciones de iconos que necesita, para el estado en varias nubes, para las indicaciones del repositorio como para las herramientas de Tortuga, etc.

narration_sd
fuente
2
La idea detrás de las superposiciones es que debería poder identificar el estado del objeto bajo observación "de un vistazo". Su plan, aunque creativo, requeriría "manos en el teclado o el mouse" para sacar la información. No es que tenga una mejor solución ...
rbellamy
Si tienen que estar en una ventana flotante, ¿por qué no poner la información en la barra de información o en el panel de vista previa o en algún otro lugar de la interfaz de usuario? El objetivo de los iconos superpuestos es que en realidad están superpuestos y son visibles de un vistazo.
Cody Gray