Implementar una interfaz de usuario de configuración para Windows Terminal. Esta interfaz de usuario debe leer y actualizar el archivo settings.json. El usuario aún debería poder editar el JSON directamente, si así lo desea.
Especificaciones y diseño: # 6720
Por @ carlos-zamora. Estamos trabajando en la rama feature/settings-ui
. Ejecuta el mismo CI que master
. La idea es que usted haga PR que apunten a feature/settings-ui
y cuando la interfaz de usuario de Configuración esté lista para su entrega, la fusionaremos en master
.
Básicamente, comenzamos con el número 7370.
Estos elementos de trabajo generalmente no tocarán _cualquier_ UI o XAML.
ConversionTrait
, que se usa para convertir configuraciones de JSON a nuestros objetos de configuración ( FromJson()
). Deberíamos poder introducir una función ToJson()
en ConversionTrait
. Esto manejará principalmente la conversión de configuraciones individuales a su valor de enumeración. (PR # 7609)ToJson()
como una función en los objetos de configuración completa (es decir: Perfil, GlobalAppSettings, etc.) (PR # 8018)openSettings
para abrir la interfaz de usuario de ConfiguraciónEstos elementos de trabajo pueden tocar un poco de XAML. Tendrá que tocar el proyecto TerminalSettingsEditor
, pero no quedará demasiado atrapado en el pulido de iconos, márgenes, etc.
TerminalSettingsEditor
en una DLLTerminalSettingsEditor
en una pestaña para TerminalObjectModel
objetos en el prototipo con referencias de objeto TerminalSettingsModel
realesTerminalSettingsModel
ColorSchemes.xaml
deben estar todos en un solo control.Resources.resw
(PR # 7833)Utils
de GetFontIcon
con el manejador de íconos mágicos de Command
según # 7802Estos elementos de trabajo incluyen un poco más de trabajo de diseño. Asegúrese de mirar las maquetas en el n. ° 6720.
Estos son errores que el equipo está encontrando mientras autohospedamos la rama de funciones. Este método se utilizará hasta que la rama de funciones se fusione en master. En ese momento, enviaremos errores normalmente.
<Import Project="$(SolutionDir)build\rules\CollectWildcardResources.targets" />
a TSM y TSE vcxproj (PR # 7966 # 7967)SettingsTab
(PR # 8012)Por @ cinnamon-msft. El contenido de estos diseños no es definitivo y se modificará. Están aquí simplemente para una demostración.
Antes de que alguien pregunte, _sí_, el plan incluye tener una buena vista previa en vivo de las cosas que podrían esperarse razonablemente que se vean en una terminal.
¿Cómo te moverías entre las configuraciones de diferentes perfiles?
¿Quizás podría implementar un ComboBox en el panel de navegación izquierdo para elegir un perfil, al que se aplicaría la configuración?
_Tu teléfono hace esto_
Incluso si decide no usar Acrylic para el panel NavigaitonView de configuración, ¿podría extender la barra de título para que la vista de navegación toque la parte superior de la ventana?
El plan en este momento es tener un elemento de perfiles en el menú de la izquierda y un menú desplegable de todos sus perfiles en el área de contenido principal, con campos rellenados de acuerdo con las propiedades de JSON y una ventana de vista previa para mostrar su configuración actualizada.
Todavía no tenemos burlas de esto 😊
Con respecto a los esquemas de color: según # 1750, todos los esquemas de color de iTerm2 se han portado a Windows Terminal .
Para ser claros, actualmente (domingo 7 de julio de 2019) no hay ninguna funcionalidad de configuración, ¿correcto? Hacer clic en el elemento del menú "Configuración" del menú desplegable del triángulo no tiene ningún efecto en mi sistema.
Para ser claros, actualmente (domingo 7 de julio de 2019) no hay ninguna funcionalidad de configuración, ¿correcto? Hacer clic en el elemento del menú "Configuración" del menú desplegable del triángulo no tiene ningún efecto en mi sistema.
_ Debería _ abrir el archivo profiles.json, que le permite cambiar la configuración, pero eventualmente habrá una GUI para este archivo.
Para ser claros, actualmente (domingo 7 de julio de 2019) no hay ninguna funcionalidad de configuración, ¿correcto? Hacer clic en el elemento del menú "Configuración" del menú desplegable del triángulo no tiene ningún efecto en mi sistema.
_ Debería _ abrir el archivo profiles.json, que le permite cambiar la configuración, pero eventualmente habrá una GUI para este archivo.
Cuando hago clic en la opción del menú de configuración, no tiene ningún efecto. Estoy usando la vista previa de la tienda de Windows. ¿Debería descargar y construir en su lugar?
Cuando hago clic en la opción del menú de configuración, no tiene ningún efecto. Estoy usando la vista previa de la tienda de Windows. ¿Debería descargar y construir en su lugar?
Debería abrir el archivo profiles.json dentro de su editor predeterminado para archivos json. ¿Quizás no tiene un conjunto predeterminado en Windows?
Una nueva versión preliminar vence el día 30, así que espera un poco si quieres probar algo estable.
Para ser claros, actualmente (domingo 7 de julio de 2019) no hay ninguna funcionalidad de configuración, ¿correcto? Hacer clic en el elemento del menú "Configuración" del menú desplegable del triángulo no tiene ningún efecto en mi sistema.
_ Debería _ abrir el archivo profiles.json, que le permite cambiar la configuración, pero eventualmente habrá una GUI para este archivo.
Cuando hago clic en la opción del menú de configuración, no tiene ningún efecto. Estoy usando la vista previa de la tienda de Windows. ¿Debería descargar y construir en su lugar?
Tal vez debería verificar primero su editor de archivos JSON predeterminado.
Mi idea para una interfaz de usuario de configuración.
La página de configuración debe ser una superposición.
Primera página: una superposición de pantalla de presentación a pantalla completa, como la configuración de Windows.
Pestaña “Perfiles”: cada perfil tiene su propia pestaña de submenú donde puede establecer el nombre, línea de comando, directorio de inicio, parámetro de inicio, tipo de letra, tamaño de letra, acrílico, opacidad, color o imagen de fondo, color de letra e icono. Las selecciones deberían actualizar la vista previa en tiempo real.
Pestaña “General”: esta es la página de configuración con configuraciones generales como el tamaño del cursor, el tipo de fuente general y el tamaño de fuente. Algunas otras configuraciones que también son globales deben seleccionarse aquí.
El segundo submenú de "General" es el diseño, donde puede ajustar el tamaño del búfer, el tamaño de las ventanas y la posición.
Con la X junto a la configuración, cierra la superposición de configuración.
Con la flecha al lado de General o Perfiles, regresa a la "Pantalla de bienvenida" de Configuración
https://youtu.be/veqs2WVou9M?t=525 (5 segundos) - Dustin, vamos ...: stick_out_tongue:: atascado_out_tongue:: atascado_out_tongue:
Mi idea para una interfaz de usuario de configuración.
La página de configuración debe ser una superposición.
Primera página: una superposición de pantalla de presentación a pantalla completa, como la configuración de Windows.
Pestaña “Perfiles”: cada perfil tiene su propia pestaña de submenú donde puede establecer el nombre, línea de comando, directorio de inicio, parámetro de inicio, tipo de letra, tamaño de letra, acrílico, opacidad, color o imagen de fondo, color de letra e icono. Las selecciones deberían actualizar la vista previa en tiempo real.
Pestaña “General”: esta es la página de configuración con configuraciones generales como el tamaño del cursor, el tipo de fuente general y el tamaño de fuente. Algunas otras configuraciones que también son globales deben seleccionarse aquí.
El segundo submenú de "General" es el diseño, donde puede ajustar el tamaño del búfer, el tamaño de las ventanas y la posición.Con la X junto a la configuración, cierra la superposición de configuración.
Con la flecha al lado de General o Perfiles, regresa a la "Pantalla de bienvenida" de Configuración
La idea de una interfaz de usuario de configuración ahorraría mucho tiempo y esfuerzo para personalizar el terminal, intenté agregar un nuevo perfil junto con configuraciones personalizadas y me tomó una gran cantidad de tiempo que incluía verificar en Google cómo hacerlo y cómo hacerlo. guárdelo (profile.json) y reinicie el terminal para ver si funciona. Si no, repita. (Sí, soy un novato en hacerlo manualmente de esta manera y prefiero tener una interfaz de usuario. Es una preferencia personal compartida no solo por mí, sino también por otros).
La interfaz de usuario simulada a la que se hace referencia aquí, aunque no está pulida y le faltan algunas cosas (incluida la adición de una imagen de fondo), es mucho mejor que editar manualmente el archivo json. Esta característica es extremadamente crucial y debería estar disponible en la próxima versión de vista previa principal o en la versión final, ya que permitirá a los usuarios centrarse en qué tan bien reacciona el terminal a múltiples personalizaciones con la vista previa de los cambios.
Al mismo tiempo, esta es una herramienta de desarrollo. Es de esperar cierta cantidad de edición manual del archivo de configuración, posiblemente incluso hasta la versión 1.0. Y no es necesario reiniciar el terminal para ver los efectos de su edición.
Mi idea para una interfaz de usuario de configuración.
La página de configuración debe ser una superposición.
Primera página: una superposición de pantalla de presentación a pantalla completa, como la configuración de Windows.
Pestaña “Perfiles”: cada perfil tiene su propia pestaña de submenú donde puede establecer el nombre, línea de comando, directorio de inicio, parámetro de inicio, tipo de letra, tamaño de letra, acrílico, opacidad, color o imagen de fondo, color de letra e icono. Las selecciones deberían actualizar la vista previa en tiempo real.
Pestaña “General”: esta es la página de configuración con configuraciones generales como el tamaño del cursor, el tipo de fuente general y el tamaño de fuente. Algunas otras configuraciones que también son globales deben seleccionarse aquí.
El segundo submenú de "General" es el diseño, donde puede ajustar el tamaño del búfer, el tamaño de las ventanas y la posición.
Con la X junto a la configuración, cierra la superposición de configuración.
Con la flecha al lado de General o Perfiles, regresa a la "Pantalla de bienvenida" de ConfiguraciónLa idea de una interfaz de usuario de configuración ahorraría mucho tiempo y esfuerzo para personalizar el terminal, intenté agregar un nuevo perfil junto con configuraciones personalizadas y me tomó una gran cantidad de tiempo que incluía verificar en Google cómo hacerlo y cómo hacerlo. guárdelo (profile.json) y reinicie el terminal para ver si funciona. Si no, repita. (Sí, soy un novato en hacerlo manualmente de esta manera y prefiero tener una interfaz de usuario. Es una preferencia personal compartida no solo por mí, sino también por otros).
La interfaz de usuario simulada a la que se hace referencia aquí, aunque no está pulida y le faltan algunas cosas (incluida la adición de una imagen de fondo), es mucho mejor que editar manualmente el archivo json. Esta característica es extremadamente crucial y debería estar disponible en la próxima versión de vista previa principal o en la versión final, ya que permitirá a los usuarios centrarse en qué tan bien reacciona el terminal a múltiples personalizaciones con la vista previa de los cambios.
Me alegro de que te guste. Sí, falta un botón de selección de imagen de fondo. Pero hay espacio para eso ...
La interfaz de usuario de Configuración no necesitaría cubrir TODOS los ajustes que pueda configurar. Todo lo que afecte las imágenes de la aplicación debería estar allí. Debería haber un enlace para abrir el archivo JSON. Debería haber un enlace a una lista completa de configuraciones que puede agregar.
Las vistas previas de cosas como la forma del cursor, acrílico, imágenes de fondo, colores, tendrían mucho sentido, por lo que alguien puede probar esquemas de color, antes de comprometerse.
Además, como algunas configuraciones son por perfil y otras son para toda la aplicación, probablemente sería una buena idea algún tipo de menú desplegable para elegir el perfil que se va a editar.
La interfaz de usuario de Configuración no necesitaría cubrir TODOS los ajustes que pueda configurar. Todo lo que afecte las imágenes de la aplicación debería estar allí. Debería haber un enlace para abrir el archivo JSON. Debería haber un enlace a una lista completa de configuraciones que puede agregar.
Las vistas previas de cosas como la forma del cursor, acrílico, imágenes de fondo, colores, tendrían mucho sentido, por lo que alguien puede probar esquemas de color, antes de comprometerse.
Además, como algunas configuraciones son por perfil y otras son para toda la aplicación, probablemente sería una buena idea algún tipo de menú desplegable para elegir el perfil que se va a editar.
La segunda imagen en mi concepto muestra los perfiles (en el lado izquierdo) y sus configuraciones en la página principal.
La segunda imagen en mi concepto muestra los perfiles (en el lado izquierdo) y sus configuraciones en la página principal.
Hice una maqueta similar hace un tiempo :)
Creo que esto sería una mejora importante. ¿Podría eliminarse esto lo antes posible?
@ yellow-starburst, por lo general, puede usar nuestra vista Hitos y proyectos (o el hito activo para cualquier problema específico) para resolverlo. Una IU de configuración no está planificada para la versión 1.0.
Intenté hacer una pequeña interfaz de usuario para el archivo profiles.json usando Python y Tkinter. Si bien la interfaz de usuario no es muy buena y realmente no sigue el esquema de diseño de Windows 10 (porque solo estoy familiarizado con esas tecnologías), hace el trabajo de editar el archivo profiles.json.
Si alguien lo desea, puede consultarlo aquí.
@ DHowett-MSFT si bien esto no está dentro del alcance de 1.0, ¿no sería aceptado por desarrolladores externos para 1.0?
Los RR.PP. externos de
Bastante sí. Si pudieras armar algo en el plazo de tiempo 1.0, lo aceptaríamos con gusto, pero esa podría ser una pregunta difícil 😝
Entonces, este requiere un poco de precaución. Kayla tiene una visión sobre lo que quiere lograr, pero creo que eso es algo que podemos comunicar con el público. No vamos a conseguir algo para la v1.0 de ninguna manera, pero no quiero desalentar el trabajo comunitario en este tema: sonríe:
Mi pensamiento fue más que tal vez no quieras pasar el tiempo revisándolo para enfocarte en cosas 1.0.
@mdtauk me gusta mucho tu maqueta
una sugerencia: elimine el [+] Agregar nuevo perfil y, en su lugar, coloque un + junto al nombre del perfil (¿supongo que es un menú desplegable?)
EDITAR:
después de echar un vistazo más de cerca a las maquetas propuestas, llegué a la conclusión de que hay demasiado espacio vacío, los controles son enormes, casi como si el menú de configuración estuviera dirigido a usuarios de dispositivos móviles / tabletas ... algo diseñado para dispositivos de desplazamiento / táctiles
Creo que debe tener cuatro secciones:
Todos los JSON exportables se pueden empaquetar como archivos nuget con un script de PowerShell para importar el elemento a la configuración del usuario actual.
Todos esos puntos parecen razonables excepto por el uso aleatorio de NuGet 😄
Los archivos NuGet son solo archivos zip con metadatos adicionales que son realmente buenos y útiles para distribuciones binarias de cosas que deben integrarse en C ++ / C # / WinJS / etc. proyectos más que como un formato de exportación de configuración genérico. JSON ya se puede exportar tal cual.
Todos esos puntos parecen razonables excepto por el uso aleatorio de NuGet 😄
No es aleatorio, está destinado a facilitar el intercambio de configuraciones y perfiles utilizando servidores Nuget. Actualmente estoy trabajando en una aplicación y un sitio web que será una galería de perfiles de terminal de Windows que la gente puede compartir y descargar. Obtener los datos en el archivo de configuración es fácil con JSON, pero quiero admitir muchos escenarios diferentes, uno de los cuales es un escenario completamente fuera de línea donde el usuario no tiene que editar ningún archivo JSON y se puede incluir como parte de la configuración de un servidor o contenedor. Para facilitar eso, el JSON está encapsulado en Nuget con un script de instalación y desinstalación de PS que importará / eliminará el JSON de la configuración.
Para facilitar eso, el JSON está encapsulado en Nuget con un script de instalación y desinstalación de PS que importará / eliminará el JSON de la configuración.
¿Tan chocolateado? Crear un cmdlet de PowerShell que cree un paquete chocolate de un perfil no debería ser tan difícil.
Para facilitar eso, el JSON está encapsulado en Nuget con un script de instalación y desinstalación de PS que importará / eliminará el JSON de la configuración.
¿Tan chocolateado? Crear un cmdlet de PowerShell que cree un paquete chocolate de un perfil no debería ser tan difícil.
La idea es que la generación e importación de nuget se incorporen para que no sea necesaria una herramienta de terceros.
escenario completamente fuera de línea donde el usuario no tiene que editar ningún archivo JSON y se puede incluir como parte de la configuración de un servidor o contenedor
Lo más probable es que ya estén usando alguna herramienta de terceros para hacer esto, siendo el chocolate una de las opciones posibles. Integrarme con esas herramientas me parece la mejor opción.
La integración de nuget no es _necesaria_, pero sentaría un buen precedente y también sería una prueba interna ...
Este terminal es una aplicación para UWP que utiliza un diseño Fluent y es altamente personalizable. ¿Quizás echarle un vistazo y darle una forma similar a la Terminal de Windows? Quiero decir, incluso ese terminal se ve bien (aunque está en sus primeras etapas).
En mi opinión, se vería bien si toda la aplicación de configuración (o página) tiene un acrílico de fondo como el Terminal (acrílico que cambia de acuerdo con la configuración de acrílico establecida en la página de configuración)
Tenga en cuenta que los paneles de configuración deben ser coherentes en Windows. Es posible que tenga comentarios sobre cómo deberían verse los paneles de configuración en Windows, pero Terminal GitHub no es el mejor lugar para discutirlos. El lugar para enviar pensamientos sobre cómo deberían verse los paneles de configuración en Windows es la aplicación Comentarios.
¿Por qué censuras mi comentario?
¿Todo lo que estaba diciendo es que parece una interfaz de usuario hecha para tabletas?
Esto es una locura el nivel de censura en microsoft
@russhy Eliminé tu comentario debido al lenguaje específico que usó violando nuestro código de conducta , no porque creas que nuestra interfaz de usuario se vería como la interfaz de usuario de una tableta. No me importa particularmente lo que digas siempre que te expreses con respeto.
Oh, ya veo, intentaré usar un lenguaje adecuado en el futuro, pero házmelo saber en lugar de simplemente eliminar cosas
@ DHowett-MSFT
@russhy seguro, lo siento por eso. :sonrisa:
A
¿Qué hay de la opción predeterminada para la vista de archivos json para los usuarios avanzados? De esa forma, los usuarios editarán la configuración a su manera.
Este terminal es una aplicación para UWP que utiliza un diseño Fluent y es altamente personalizable. ¿Quizás echarle un vistazo y darle una forma similar a la Terminal de Windows? Quiero decir, incluso ese terminal se ve bien (aunque está en sus primeras etapas).
¡Ese proyecto es bastante impresionante! Incluso todo tipo de fuentes se renderizan perfectamente. Desafortunadamente, es más lento que Terminal. ¡Hope Terminal se inspira en ese proyecto mientras sigue siendo súper ágil!
🦙 Parece que esto podría encajar bien con la propuesta de control de formularios en WinUI .
Estoy de acuerdo con @ michael-hawker, pero creo que Form Control todavía se encuentra en una etapa de propuesta.
Para PowerToys, hemos hecho un gran esfuerzo para obtener el XAML correcto: todos los tamaños de fuente, márgenes, rellenos y otros atributos imitan la aplicación de configuración W10. De esta manera, se ve y se siente nativo de Windows y creo que sería genial compartir la misma UX.
Me complace contribuir creando todo el XAML que se requiere de acuerdo con las especificaciones ... y pulirlo todo. @ zadjii-msft @DHowett . ¿Existe ya una sucursal activa?
Creo que hay una variedad de ramas de WIP, pero honestamente no sé cuáles están activas o no. Creo que @ carlos-zamora y @ cinnamon-msft _do_ saben
La última rama es cinnamon / settings-ui-v2 . Implementamos la interfaz de usuario de Configuración como una aplicación separada que se puede encontrar en src / TerminalSettings.
Todavía estamos trabajando en la organización de un plan / especificación para la interfaz de usuario de Configuración en su conjunto, así que siéntase libre de limpiar la página Globals and Color Schemes por ahora, o hurgar.
Para que conste, algunas de las cosas que aún tenemos que planificar son ...
¿Cómo ejecuto la aplicación (página de configuración)?
¿Cómo ejecuto la aplicación (página de configuración)?
La interfaz de usuario de Configuración está en desarrollo activo y aún no está en la Terminal de Windows.
Sí, lo sé, pero ¿no es posible probar el prototipo de la página de configuración para ver cómo se ve? porque al principio del tema hay imágenes de un prototipo.
Creo que esas son solo maquetas de UI hechas en Figma, no un prototipo real con el que se pueda jugar todavía.
Descargué un zip con este supuesto prototipo, y ahora no sé cómo ejecutarlo.
Creo que esas son solo maquetas de UI hechas en Figma, no un prototipo real con el que se pueda jugar todavía.
sí, puede que lo sea, pero la imagen parece tan real ...
@Viniacamp Debes compilar la aplicación tú mismo. Hay un archivo TerminalSettings.sln
en el directorio src\TerminalSettings
que puede abrir en Visual Studio y luego compilar y ejecutar. Pero si no sabe lo que está haciendo, puede tener dificultades para que funcione; sé que tuve que alterar los archivos del proyecto para ajustar las rutas de los paquetes para mi sistema. También tenga en cuenta que todavía no hay mucho que ver, son solo algunas maquetas de algunas de las pantallas, y eso no incluye ninguna de las imágenes publicadas en la parte superior del número.
Los "cambios no guardados" obstruyen la configuración en la parte inferior de la página y no se pueden desplazar hacia arriba.
¿Habrá una función de guardado automático? tan pronto como marque un botón de verificación, active un interruptor de palanca o simplemente cambie cualquier configuración, ¿se guardarán? (función de guardado basada en eventos)
@ SFM61319 debido a que todas las instancias abiertas de Terminal se actualizan automáticamente cuando cambia el archivo de configuración, decidimos que sería demasiado peligroso y perjudicial guardar en cada cambio de estado. Configurar un solo perfil convertiría cada ventana de terminal en un caleidoscopio absoluto de tamaños y colores de fuente mientras edita.
@DHowett espera Tengo una idea, ¿qué pasa con una configuración (en la configuración) para habilitar el guardado automático?
¿Y Ctrl + S
guardará la configuración para que uno no tenga que hacer clic en el botón Guardar (si el guardado automático no es una función)? (Las combinaciones de teclas facilitan el uso de las cosas)
He estado pensando, ¿hay algún plan para incluir un botón / opción de Importar y Exportar para ColorScheme?
Sé que existe la página de configuración JSON, pero también sería útil para admitir la importación de esquemas de color existentes como iTerm, JSON o incluso archivos TXT sin procesar.
@leonmsft vas a pensar que estoy loco, pero ... la página de esquemas de color está mezclando todos los colores o_O
Comentario más útil
¿Cómo te moverías entre las configuraciones de diferentes perfiles?
¿Quizás podría implementar un ComboBox en el panel de navegación izquierdo para elegir un perfil, al que se aplicaría la configuración?
_Tu teléfono hace esto_
Incluso si decide no usar Acrylic para el panel NavigaitonView de configuración, ¿podría extender la barra de título para que la vista de navegación toque la parte superior de la ventana?