Implemente uma interface de usuário de configurações para o Terminal Windows. Esta IU deve ler e atualizar o arquivo settings.json. O usuário ainda deve ser capaz de editar o JSON diretamente, se desejar.
Especificações e design: # 6720
Por @ carlos-zamora. Estamos trabalhando fora da filial feature/settings-ui
. Ele executa o mesmo IC que master
. A ideia é que você faça PRs visando feature/settings-ui
e quando a IU de configurações estiver pronta para entrega, nós a mesclaremos em master
.
Estamos basicamente começando com # 7370.
Esses itens de trabalho geralmente não tocarão em _qualquer_ IU ou XAML.
ConversionTrait
, que é usado para converter configurações de JSON em nossos objetos de configurações ( FromJson()
). Devemos ser capazes de introduzir uma função ToJson()
para ConversionTrait
. Isso lidará principalmente com configurações individuais sendo convertidas em seu valor enum. (PR # 7609)ToJson()
como uma função em objetos de configurações completas (ou seja: Perfil, GlobalAppSettings, etc ...) (PR # 8018)openSettings
para abrir a IU de configuraçõesEsses itens de trabalho podem afetar um pouco o XAML. Você terá que tocar no projeto TerminalSettingsEditor
, mas não ficará muito preso ao polimento de ícones, margens, etc.
TerminalSettingsEditor
em uma DLLTerminalSettingsEditor
em uma guia do TerminalObjectModel
objetos no protótipo por referências de objeto TerminalSettingsModel
reaisTerminalSettingsModel
ColorSchemes.xaml
botões desdobráveis de cores devem estar todos em um único controle.Resources.resw
(PR # 7833)Utils
da função GetFontIcon
com o manipulador de ícone mágico de Command
acordo com # 7802Esses itens de trabalho incluem um pouco mais de trabalho de design. Certifique-se de olhar os modelos em # 6720.
Esses são bugs que a equipe está encontrando enquanto hospedamos o branch de recursos. Este método será usado até que a ramificação do recurso seja mesclada com o mestre. Nesse ponto, enviaremos os bugs normalmente.
<Import Project="$(SolutionDir)build\rules\CollectWildcardResources.targets" />
ao TSM e TSE vcxproj (PR # 7966 # 7967)SettingsTab
(PR # 8012)Por @ cinnamon-msft. O conteúdo desses designs não é final e será modificado. Eles estão aqui simplesmente para demonstração.
Antes que alguém pergunte, _sim_ o plano inclui ter uma boa prévia ao vivo de coisas que poderiam ser vistas em um terminal.
Como você se moveria entre as configurações de perfis diferentes?
Talvez você pudesse implementar uma ComboBox no NavigationPane esquerdo para escolher um Perfil, ao qual as configurações se aplicariam?
_Seu telefone faz isso_
Mesmo se você decidir não usar Acrílico para o painel NavigaitonView das configurações, você poderia estender a barra de título para que a visualização de navegação toque o topo da janela?
O plano no momento é ter um item de perfis no menu à esquerda e uma lista suspensa de todos os seus perfis na área de conteúdo principal, com campos preenchidos de acordo com as propriedades JSON e uma janela de visualização para mostrar suas configurações atualizadas.
Ainda não temos simulações disso 😊
Com relação aos esquemas de cores: conforme # 1750, todos os esquemas de cores do iTerm2 foram transferidos para o Terminal Windows .
Para ser claro, no momento (domingo, 7 de julho de 2019) não há funcionalidade de configurações, correto? Clicar no item de menu "Configurações" no menu suspenso de triângulo não tem efeito no meu sistema.
Para ser claro, no momento (domingo, 7 de julho de 2019) não há funcionalidade de configurações, correto? Clicar no item de menu "Configurações" no menu suspenso de triângulo não tem efeito no meu sistema.
Ele _ deve _ abrir o arquivo profiles.json, que permite que você altere as configurações - mas eventualmente haverá uma GUI para este arquivo.
Para ser claro, no momento (domingo, 7 de julho de 2019) não há funcionalidade de configurações, correto? Clicar no item de menu "Configurações" no menu suspenso de triângulo não tem efeito no meu sistema.
Ele _ deve _ abrir o arquivo profiles.json, que permite que você altere as configurações - mas eventualmente haverá uma GUI para este arquivo.
Quando clico na opção de menu de configurações, ela não tem efeito. Estou usando a visualização da loja do Windows. Devo baixar e construir em vez disso?
Quando clico na opção de menu de configurações, ela não tem efeito. Estou usando a visualização da loja do Windows. Devo baixar e construir em vez disso?
Ele deve abrir o arquivo profiles.json dentro de seu editor padrão para arquivos json. Talvez você não tenha um padrão definido no Windows?
Uma nova versão de visualização está prevista para o dia 30, então espere um pouco se você quiser testar algo estável
Para ser claro, no momento (domingo, 7 de julho de 2019) não há funcionalidade de configurações, correto? Clicar no item de menu "Configurações" no menu suspenso de triângulo não tem efeito no meu sistema.
Ele _ deve _ abrir o arquivo profiles.json, que permite que você altere as configurações - mas eventualmente haverá uma GUI para este arquivo.
Quando clico na opção de menu de configurações, ela não tem efeito. Estou usando a visualização da loja do Windows. Devo baixar e construir em vez disso?
Talvez você deva verificar seu editor de arquivo JSON padrão primeiro.
Minha ideia para uma interface de usuário de configurações.
A página de configurações deve ser uma sobreposição.
Primeira página: uma sobreposição de tela inicial de tela inteira, como as configurações do Windows.
Guia “Perfis”: Cada perfil tem sua própria guia de submenu onde você pode definir o nome, linha de comando, diretório inicial, parâmetro de inicialização, face da fonte, tamanho da fonte, acrílico, opacidade, cor de fundo ou imagem, cor da fonte e ícone. As seleções devem atualizar a visualização em tempo real.
Guia “Geral”: Esta é a página de configurações com configurações gerais como tamanho do cursor, face geral da fonte e tamanho da fonte. Algumas outras configurações que também são globais devem ser selecionadas aqui.
O segundo submenu de “Geral” é o layout, onde você pode ajustar o tamanho do buffer, tamanho das janelas e posição.
Com o X próximo às configurações, você fecha a sobreposição de configurações.
Com a seta ao lado de Geral ou Perfis, você volta para as Configurações “Tela inicial”
https://youtu.be/veqs2WVou9M?t=525 (5 segundos) - Dustin, vamos lá ...: stick_out_tongue:: stick_out_tongue:: stick_out_tongue:
Minha ideia para uma interface de usuário de configurações.
A página de configurações deve ser uma sobreposição.
Primeira página: uma sobreposição de tela inicial de tela inteira, como as configurações do Windows.
Guia “Perfis”: Cada perfil tem sua própria guia de submenu onde você pode definir o nome, linha de comando, diretório inicial, parâmetro de inicialização, face da fonte, tamanho da fonte, acrílico, opacidade, cor de fundo ou imagem, cor da fonte e ícone. As seleções devem atualizar a visualização em tempo real.
Guia “Geral”: Esta é a página de configurações com configurações gerais como tamanho do cursor, face geral da fonte e tamanho da fonte. Algumas outras configurações que também são globais devem ser selecionadas aqui.
O segundo submenu de “Geral” é o layout, onde você pode ajustar o tamanho do buffer, tamanho das janelas e posição.Com o X próximo às configurações, você fecha a sobreposição de configurações.
Com a seta ao lado de Geral ou Perfis, você volta para as Configurações “Tela inicial”
A ideia de uma IU de configuração economizaria muito tempo e esforço para personalizar o terminal. Tentei adicionar um novo perfil junto com as configurações personalizadas e demorou bastante tempo, incluindo verificar no Google como fazê-lo e como salve-o (profile.json) e reinicie o terminal para ver se funciona. Se não, repita. (Sim, sou um novato em fazer manualmente dessa maneira e prefiro ter uma IU. É uma preferência pessoal compartilhada não apenas por mim, mas por outros também).
A IU simulada referenciada aqui, embora não polida e faltando algumas coisas (incluindo a adição de imagem de fundo), é muito melhor do que editar manualmente o arquivo json. Esse recurso é extremamente crucial e deve estar disponível na próxima versão de visualização principal ou na versão final, pois isso permitirá que os usuários se concentrem em como o terminal reage a várias personalizações com as alterações sendo visualizadas.
Ao mesmo tempo, é uma ferramenta de desenvolvedor. Alguma quantidade de edição de arquivo de configuração manual é esperada, possivelmente até mesmo no 1.0. E você não precisa reiniciar o terminal para ver os efeitos de sua edição.
Minha ideia para uma interface de usuário de configurações.
A página de configurações deve ser uma sobreposição.
Primeira página: uma sobreposição de tela inicial de tela inteira, como as configurações do Windows.
Guia “Perfis”: Cada perfil tem sua própria guia de submenu onde você pode definir o nome, linha de comando, diretório inicial, parâmetro de inicialização, face da fonte, tamanho da fonte, acrílico, opacidade, cor de fundo ou imagem, cor da fonte e ícone. As seleções devem atualizar a visualização em tempo real.
Guia “Geral”: Esta é a página de configurações com configurações gerais como tamanho do cursor, face geral da fonte e tamanho da fonte. Algumas outras configurações que também são globais devem ser selecionadas aqui.
O segundo submenu de “Geral” é o layout, onde você pode ajustar o tamanho do buffer, tamanho das janelas e posição.
Com o X próximo às configurações, você fecha a sobreposição de configurações.
Com a seta ao lado de Geral ou Perfis, você volta para as Configurações “Tela inicial”A ideia de uma IU de configuração economizaria muito tempo e esforço para personalizar o terminal. Tentei adicionar um novo perfil junto com as configurações personalizadas e demorou bastante tempo, incluindo verificar no Google como fazê-lo e como salve-o (profile.json) e reinicie o terminal para ver se funciona. Se não, repita. (Sim, sou um novato em fazer manualmente dessa maneira e prefiro ter uma IU. É uma preferência pessoal compartilhada não apenas por mim, mas por outros também).
A IU simulada referenciada aqui, embora não polida e faltando algumas coisas (incluindo a adição de imagem de fundo), é muito melhor do que editar manualmente o arquivo json. Esse recurso é extremamente crucial e deve estar disponível na próxima versão de visualização principal ou na versão final, pois isso permitirá que os usuários se concentrem em como o terminal reage a várias personalizações com as alterações sendo visualizadas.
Estou feliz por ter gostado. Sim, um botão de seleção de imagem de plano de fundo está faltando. Mas há espaço para isso ..
A interface de usuário de configurações não precisaria cobrir TODAS as configurações que você pudesse definir. Qualquer coisa que afete o visual do app deve estar lá. Um link para abrir o arquivo JSON deve estar lá. Um link para uma lista completa de configurações que você pode adicionar deve estar lá.
Pré-visualizações para coisas como forma do cursor, acrílico, imagens de fundo, cores - fariam muito sentido, então alguém pode experimentar esquemas de cores antes de enviar.
Além disso, como algumas configurações são por perfil e outras são do aplicativo - algum tipo de lista suspensa para escolher o perfil a ser editado, provavelmente seria uma boa ideia.
A interface de usuário de configurações não precisaria cobrir TODAS as configurações que você pudesse definir. Qualquer coisa que afete o visual do app deve estar lá. Um link para abrir o arquivo JSON deve estar lá. Um link para uma lista completa de configurações que você pode adicionar deve estar lá.
Pré-visualizações para coisas como forma do cursor, acrílico, imagens de fundo, cores - fariam muito sentido, então alguém pode experimentar esquemas de cores antes de enviar.
Além disso, como algumas configurações são por perfil e outras são do aplicativo - algum tipo de lista suspensa para escolher o perfil a ser editado, provavelmente seria uma boa ideia.
2ª imagem no meu conceito mostra perfis (no lado esquerdo) e as configurações para ele na página principal.
2ª imagem no meu conceito mostra perfis (no lado esquerdo) e as configurações para ele na página principal.
Fiz um mock up semelhante há um tempo :)
Acho que isso seria uma grande melhoria. Isso poderia ser empurrado para fora o mais rápido possível?
@ yellow-starburst você geralmente pode usar nossa visualização Milestones and Projects (ou o milestone ativo para qualquer problema específico) para descobrir isso. Uma IU de configurações não está prevista para a versão 1.0.
Tentei fazer uma pequena IU para o arquivo profiles.json usando Python e Tkinter. Embora a IU não seja muito boa e não siga realmente o esquema de design do Windows 10 (porque estou familiarizado apenas com essas tecnologias), ela faz o trabalho de editar o arquivo profiles.json.
Se alguém quiser, pode conferir aqui
@ DHowett-MSFT embora não esteja dentro do escopo para 1.0, não seria aceito de desenvolvedores externos para 1.0?
Os PRs externos da
Quase sim. Se você pudesse montar algo no prazo 1.0, ficaríamos felizes em aceitar, mas isso pode ser um pedido difícil 😝
Então, esse aqui requer um pouco de cautela. Kayla tem uma visão sobre o que deseja realizar, mas acho que isso é algo que podemos comunicar ao público. Não vamos conseguir algo para a v1.0 de qualquer forma, mas absolutamente não quero desencorajar o trabalho da comunidade neste: sorria:
Meu pensamento era mais que você pode não querer perder tempo revisando-o para se concentrar nas coisas 1.0.
@mdtauk eu gosto muito da sua maquete
uma sugestão: remova o [+] Adicionar novo perfil e, em vez disso, coloque um + ao lado do nome do perfil (suponho que seja um menu suspenso?)
EDITAR:
depois de dar uma boa olhada nas maquetes propostas, cheguei à conclusão de que há muito espaço vazio, os controles são enormes, quase como se o menu de configurações fosse voltado para usuários de celulares / tablets .. algo projetado para dispositivos de rolagem / toque
Acho que precisa ser de quatro seções:
Todos os JSON exportáveis podem ser empacotados como arquivos nuget com um script do PowerShell para importar o item para as configurações do usuário atual.
Todos esses pontos parecem razoáveis, exceto por usar o NuGet 😄 aleatoriamente
Os arquivos NuGet são apenas arquivos zip com metadados extras que são realmente bons e úteis apenas para distribuições binárias de coisas que precisam ser construídas em C ++ / C # / WinJS / etc. projetos mais do que como um formato de exportação de configuração genérico. JSON já pode ser exportado no estado em que se encontra.
Todos esses pontos parecem razoáveis, exceto por usar o NuGet 😄 aleatoriamente
Não é aleatório, e sim para facilitar o compartilhamento de configurações e perfis usando servidores Nuget. Atualmente, estou trabalhando em um aplicativo e site que será uma galeria de Perfis de Terminal do Windows que as pessoas podem compartilhar e baixar. Obter os dados para o arquivo de configuração é fácil com JSON, mas eu quero oferecer suporte a muitos cenários diferentes, um dos quais é um cenário totalmente offline onde o usuário não precisa editar nenhum arquivo JSON e pode ser incluído como parte da configuração de um servidor ou contêiner. Para facilitar isso, o JSON é encapsulado no Nuget com um script de instalação e desinstalação PS que importará / removerá o JSON da configuração.
Para facilitar isso, o JSON é encapsulado no Nuget com um script de instalação e desinstalação PS que importará / removerá o JSON da configuração.
Tão achocolatado? Fazer um cmdlet PowerShell que cria um pacote achocolatado de um perfil não deve ser tão difícil.
Para facilitar isso, o JSON é encapsulado no Nuget com um script de instalação e desinstalação PS que importará / removerá o JSON da configuração.
Tão achocolatado? Fazer um cmdlet PowerShell que cria um pacote achocolatado de um perfil não deve ser tão difícil.
A ideia é que a geração e importação do nuget sejam incorporadas de forma que uma ferramenta de terceiros não seja necessária
cenário completamente offline em que o usuário não precisa editar nenhum arquivo JSON e pode ser incluído como parte da configuração de um servidor ou contêiner
Provavelmente, eles já estão usando alguma ferramenta de terceiros para fazer isso, chocolate sendo uma das opções possíveis. A integração com essas ferramentas parece a melhor aposta para mim.
A integração do nuget não é _necessária_, mas estabeleceria um bom precedente e também seria um dogfooding ...
Este terminal é um aplicativo UWP que usa design Fluent e é altamente personalizável. Talvez dê uma olhada nele e dê forma ao Terminal do Windows semelhante a ele? Quer dizer, até mesmo aquele terminal parece bom (embora esteja em seus estágios iniciais).
OMI ficaria bem se todo o aplicativo de configurações (ou página) tivesse um acrílico de fundo como o Terminal (acrílico que muda de acordo com as configurações de acrílico definidas na página de configurações)
Lembre-se de que os painéis de configurações devem ser consistentes no Windows. Você pode ter feedback sobre a aparência dos painéis de configuração no Windows, mas o Terminal GitHub não é o melhor lugar para discuti-los. O lugar para enviar ideias sobre como os painéis de configurações devem ser exibidos no Windows é o aplicativo Feedback.
Por que você censura meu comentário?
Tudo o que eu estava dizendo é que parece uma IU feita para tablets?
É louco o nível de censura da Microsoft
@russhy Excluí seu comentário por causa da linguagem específica que ele usava, violando nosso código de conduta , não porque você acha que nossa IU se pareceria com uma IU de tablet. Eu particularmente não me importo com o que você diz, contanto que você se expresse com respeito.
ah, entendo, vou tentar usar uma linguagem adequada no futuro, mas, por favor, me avise em vez de apenas deletar coisas
@ DHowett-MSFT
@russhy coisa certa, desculpe por isso. :sorriso:
UMA
Que tal padronizar a visualização do arquivo json para os usuários avançados? Dessa forma, os usuários editarão as configurações à sua maneira.
Este terminal é um aplicativo UWP que usa design Fluent e é altamente personalizável. Talvez dê uma olhada nele e dê forma ao Terminal do Windows semelhante a ele? Quer dizer, até mesmo aquele terminal parece bom (embora esteja em seus estágios iniciais).
Esse projeto é incrível! Até mesmo todos os tipos de fontes são renderizados perfeitamente. Infelizmente, é mais lento que o Terminal. Espero que o Terminal se inspire nesse projeto e ao mesmo tempo permaneça super ágil!
🦙 Parece que essa pode ser uma boa opção para a Proposta de Controle de Formulário no WinUI .
Eu concordo com @ michael-hawker - mas acho que o Form Control ainda está em um estágio de proposta?
Para PowerToys, nós nos esforçamos bastante para obter o XAML correto: todos os tamanhos de fonte, margens, preenchimentos e outros atributos imitam o aplicativo W10 Settings. Desta forma, parece e se sente nativo do Windows e eu acho que seria ótimo compartilhar a mesma UX?
Estou feliz em contribuir criando todo o XAML que é necessário de acordo com as especificações .. e em polir tudo. @ zadjii-msft @DHowett . Já existe uma agência ativa?
Acredito que haja uma variedade de branches de WIP, mas honestamente não sei quais estão ativos ou não. Eu acredito que @ carlos-zamora e @ cinnamon-msft _do_ saibam
O ramo mais recente é cinnamon / settings-ui-v2 . Implementamos a UI de configurações como um aplicativo separado que pode ser encontrado em src / TerminalSettings.
Ainda estamos trabalhando na organização de um plano / especificação para a IU de configurações como um todo, então fique à vontade para limpar a página Globais e Esquemas de cores por enquanto, ou dê uma olhada.
Para registro, algumas das coisas que ainda precisamos planejar são ...
Como executo o aplicativo (página Configurações)?
Como executo o aplicativo (página Configurações)?
A UI de configurações está em desenvolvimento ativo e ainda não está no Terminal do Windows.
Sim, eu sei disso, mas não dá para testar o protótipo da página de configuração para ver como fica? porque no início do tópico há imagens de um protótipo.
Eu acredito que esses são apenas modelos de interface do usuário feitos em Figma, não um protótipo real que pode ser jogado ainda.
Baixei um zip com este suposto protótipo, e agora não sei como executá-lo
Eu acredito que esses são apenas modelos de interface do usuário feitos em Figma, não um protótipo real que pode ser jogado ainda.
sim, pode ser, mas a imagem parece tão real ...
@Viniacamp Você precisa compilar o aplicativo sozinho. Há um arquivo TerminalSettings.sln
no diretório src\TerminalSettings
que você pode abrir no Visual Studio e, em seguida, criar e executar. Mas se você não sabe o que está fazendo, pode ter dificuldade para fazê-lo funcionar - sei que tive que mexer nos arquivos do projeto para ajustar os caminhos dos pacotes para o meu sistema. Observe também que não há muito para ver ainda - são apenas alguns modelos de algumas das telas, e isso não inclui nenhuma das imagens postadas no início da edição.
As "alterações não salvas" obstruem as configurações na parte inferior da página e não podem ser roladas para cima.
Haverá um recurso de salvamento automático? por exemplo, assim que você marca um botão de seleção, alterna uma chave seletora ou apenas altera qualquer configuração, eles serão salvos? (recurso de salvamento baseado em evento)
@ SFM61319 porque todas as instâncias abertas do Terminal são atualizadas automaticamente quando o arquivo de configurações é alterado, decidimos que seria muito perigoso e perturbador salvar a cada alteração de estado. Configurar um único perfil transformaria cada janela de terminal em um caleidoscópio absoluto de tamanhos e cores de fonte durante a edição.
@DHowett espere, tenho uma ideia de que tal uma configuração (nas configurações) para habilitar o salvamento automático?
E Ctrl + S
salvará as configurações para que não seja necessário clicar no botão Salvar (se o salvamento automático não for um recurso)? (Atalhos de teclado tornam as coisas mais fáceis de usar)
Eu estive pensando, há um plano para incluir um botão / opção Importar e Exportar para o ColorScheme?
Sei que existe a página de configurações JSON, mas também seria útil oferecer suporte à importação de esquemas de cores existentes, como iTerm, JSON ou até mesmo arquivos TXT brutos.
@leonmsft, você vai pensar que estou louco, mas .. a página de esquemas de cores está misturando todas as cores o_O
Comentários muito úteis
Como você se moveria entre as configurações de perfis diferentes?
Talvez você pudesse implementar uma ComboBox no NavigationPane esquerdo para escolher um Perfil, ao qual as configurações se aplicariam?
_Seu telefone faz isso_
Mesmo se você decidir não usar Acrílico para o painel NavigaitonView das configurações, você poderia estender a barra de título para que a visualização de navegação toque o topo da janela?