Terminal: Solicitação de recurso: opções de opacidade padrão como o console tradicional.

Criado em 9 mai. 2019  ·  63Comentários  ·  Fonte: microsoft/terminal

Talvez eu tenha esquecido isso ao navegar pelo arquivo json, mas não vi outro meio de obter transparência e não sou um fã do fator de desfoque dos efeitos acrílicos ou do fato de que ele desliga quando a janela não é selecionada. O console tradicional fornece uma opacidade estática como na maioria dos envs nix, espero que seja apenas uma questão de tempo antes de ser implementado aqui.

Area-User Interface Issue-Feature Product-Terminal

Comentários muito úteis

@ TCB13 Só para você saber, somos todos pessoas reais aqui sentadas em nossos escritórios, olhando nossas caixas de entrada, nossa fila de triagem e a lista de problemas do github. Estamos lendo cada uma dessas edições e _sentimos coisas_ sobre elas e as coisas que as pessoas dizem nelas. Por favor, tente evitar ser mau.

Todos 63 comentários

Não é compatível agora, mas é definitivamente algo que não queremos perder. Precisamos fazer um pouco de trabalho pesado para que os visuais da composição sejam configurados corretamente, mas está "dentro do plano".

Veja também # 593, que contém informações adicionais.

Gosto de transparências clássicas, mas nunca usei acrílico, um dos recursos indispensáveis ​​para mim :)

+1 sobre isso!

Não faça "+1" em problemas, isso cria ruído desnecessário. Há um botão +1 perfeitamente bom aqui:
image

@zadjii-msft com a microsoft não existe "botão +1 perfeitamente bom", mesmo quando fazendo barulho ninguém se importa ou ouve nada. Acho que qualquer pessoa que já usou algum produto da Microsoft sabe disso.

Mas ei, eu entendi. Desculpa.

@ TCB13 Só para você saber, somos todos pessoas reais aqui sentadas em nossos escritórios, olhando nossas caixas de entrada, nossa fila de triagem e a lista de problemas do github. Estamos lendo cada uma dessas edições e _sentimos coisas_ sobre elas e as coisas que as pessoas dizem nelas. Por favor, tente evitar ser mau.

@ DHowett-MSFT @ zadjii-msft

O fato de que acrílico foi incluído em vez de opacidade realmente significa que ninguém realmente considerou a usabilidade deste terminal. Parece-me que algum PM acabou de dizer "oh, as coisas transparentes parecem legais, vamos deixar ainda mais legal e adicionar um desfoque a elas!". Aplicativos / janelas de terminal geralmente não são transparentes porque parecem ótimos, eles são transparentes porque permitem que você veja outras coisas por trás da janela - um recurso útil como a maioria dos usuários concordará.

Talvez você deva perguntar às outras pessoas reais em sua empresa por que fui tão agressivo em meu outro comentário. :)

@ TCB13 havia vozes pedindo para adicionar acrílico ao terminal de comando, e na época não era possível por motivos de compatibilidade com versões anteriores, mas um novo Terminal torna isso possível.

O problema com esta nova versão é que Opacity não é imediatamente possível com as novas APIs de Windowing que está usando, e é algo que a equipe está ciente e tentará tornar possível.

Não há necessidade de ser tão desdenhoso, apenas porque não é um recurso que você pessoalmente deseja ou precisa.

Isso seria muito útil.

Além do que já foi dito, a capacidade de ter a janela de acrílico quando em foco e transparente quando fora de foco seria muito bom, pois tornaria a transição menos chocante.

concordou. Eu, pessoalmente, quero a configuração de opacidade regular porque gosto de fundos muito escuros com uma leve transparência. Quando tentei usar as opções de acrílico, o fundo ficou claro demais para o meu gosto. Eu sou um vampiro, eu acho 🤷‍♂.

Fico feliz em saber que pelo menos está planejado. Obrigado por fazer esta ferramenta e estou ansioso para lançamentos futuros com mais recursos como este.

concordou. Eu pessoalmente acho que a janela muda para uma cor sólida repentinamente quando perde o foco. A transparência tradicional é uma transição melhor
Fico feliz em saber que pelo menos está planejado. Obrigado por fazer esta ferramenta e estou ansioso para lançamentos futuros com mais recursos como este.

A verdade é que não usarei console, quando não houver transparência clássica :), é preciso ter recurso para mim :)

isso não está relacionado a este problema, mas sim a conjuntos de postagens.


CLIQUE EM MIM

> Não há necessidade de ser tão desdenhoso, apenas porque não é um recurso que você pessoalmente deseja ou precisa. quando as pessoas parecem estar perdendo o contato com as expectativas comuns da maioria dos usuários de aplicativos, elas obtêm respostas entusiasmadas. e a transparência está disponível há muito tempo, então não é uma única pessoa pressionando os desenvolvedores para agradar a uma única pessoa. como sua última declaração indica, por algum motivo; sinta-se à vontade para editá-lo. talvez TCB13 tenha sido rude ou agressivo em algum outro tópico ou ocasião? como sua hipérbole principalmente inofensiva em https://github.com/microsoft/terminal/issues/603#issuecomment-508031247 --- também, silverqx, consulte https://github.com/microsoft/terminal/issues/603#issuecomment -546613996 https://github.com/microsoft/terminal/issues/603#issuecomment-507248317 e quanto tempo se passou desde https://github.com/microsoft/terminal/tags?after=RS2-final desde então primeiro lançamento público. Parece que vai demorar muito. não faça isso duas vezes, consulte https://github.com/microsoft/terminal/issues/603#issuecomment-507835880 --- em https://github.com/microsoft/terminal/issues/603#issuecomment-529696036 , iCodeSometime, sem acrílico, por favor. apenas deixe o acrílico ficar invisível para quem quer usar transparência. o modo como o cmd lida com isso é bom.


para cmd, prefiro 80% a 95% de opacidade, ou seja, transparência. Eles são a mesma coisa.

acrílico é translucidez, eu acho. Terei que testar enquanto desabilito em todas as máquinas Windows que utilizo.


Saudações ratatoeey

Então, para que conste, eu brinquei com isso. Uma implementação rudimentar não é muito complicada, mas não é ... polida. A janela inteira se torna igualmente transparente, incluindo controles XAML (linha da guia, caixas de diálogo, etc.). Acho que, do ponto de vista da arquitetura, seria excepcionalmente complicado tentar _just_ o conteúdo do "Terminal" transparente e, mesmo assim, todos os painéis seriam igualmente transparentes, incluindo separadores, e os diálogos também seriam transparentes.

image

Estranhamente, o MenuFlyout para a lista suspensa da nova guia _não_ se torna transparente, o que levanta mais questões.
image

Honestamente, em _minha_ opinião, a experiência parece um pouco malfeita. Se isso é o que as pessoas realmente querem, não vou dizer não, mas também quero ter certeza de que estamos enviando algo de alta qualidade. Por isso estou deixando no backlog, para tentar encontrar uma solução _melhor_.

Na verdade, eu gosto das regiões não clientes transparentes. É assim que o cmd funciona, e tem funcionado por um tempo (talvez RS5?):

image

Honestamente, em _minha_ opinião, a experiência parece um pouco malfeita. Se isso é o que as pessoas realmente querem, não vou dizer não, mas também quero ter certeza de que estamos enviando algo de alta qualidade. Por isso estou deixando no backlog, para tentar encontrar uma solução _melhor_.

Eu gosto bastante desse efeito - as únicas janelas sólidas que eu quero são diálogos e menus suspensos - agora eu suponho que só preciso construir isso a partir da fonte: - /

Obrigado por criar um link para a modificação!

Sim, também acho que tudo que é transparente é um recurso e não um bug 😄

A maneira como o cmd faz isso é muito útil porque você pode ler o que está abaixo (claro que depende do nível de transparência para ter uma aparência "boa").

Eu sugeriria fortemente que os desenvolvedores olhassem para a funcionalidade de transparência gnome-terminal wrt como um guia. De minha parte, não tenho utilidade para o acrílico e sua imprecisão. Eu quero transparente para que eu possa ver através dele, esteja focado ou não. Obrigado.

Então, para que conste, eu brinquei com isso. Uma implementação rudimentar não é muito complicada, mas não é ... polida. A janela inteira se torna igualmente transparente, incluindo controles XAML (linha da guia, caixas de diálogo, etc.). Acho que, do ponto de vista da arquitetura, seria excepcionalmente complicado tentar _just_ o conteúdo do "Terminal" transparente e, mesmo assim, todos os painéis seriam igualmente transparentes, incluindo separadores, e os diálogos também seriam transparentes.

Não há problema em ter a barra de guias transparente, a janela inteira tem que ser transparente, com barras de rolagem também.
Muito melhor seria ter um pouco mais de transparência para o conteúdo do terminal do que para a barra de guias e a barra de status, por exemplo, cerca de 10%, mas isso tem prioridade mais baixa e não é substancial.
Os diálogos modais têm que ser opacos, ninguém quer ter diálogos transparentes. 🙂
O ideal seria ter uma transparência diferente para o texto e o fundo, o texto deveria ser um pouco menos transparente que o fundo, para facilitar a leitura.

O essencial aqui é fazer com que tenha uma boa aparência. 🚀

Estranhamente, o MenuFlyout para a lista suspensa da nova guia _não_ se torna transparente, o que levanta mais questões.

Não tem problema, esses menus suspensos ou flyout não precisam ser transparentes, é muito melhor deixá-los opacos.

Honestamente, em _minha_ opinião, a experiência parece um pouco malfeita. Se isso é o que as pessoas realmente querem, não vou dizer não, mas também quero ter certeza de que estamos enviando algo de alta qualidade. Por isso estou deixando no backlog, para tentar encontrar uma solução _melhor_.

Você tem que brincar um pouco com ele, o fundo roxo não é um bom exemplo para um fundo transparente, fica muito melhor com fundo preto.
Alguns exemplos 1 , 2 .

Se você configurar uma transparência boa e balanceada para um terminal, isso pode ajudá-lo em alguns cenários, no meu fluxo de trabalho me ajuda em 5-10% dos casos, quando não tenho que mudar para a janela subjacente. Isso é bom do ponto de vista prático e o valor agregado é que parece bom. 🙂

Aqui está um link para o código, como ele é implementado no conemu.

@ zadjii-msft Eu ficaria totalmente bem com sua transparência experimental se fosse implementada como na minha sugestão
focus - useAcrylic
desfocado - use transparência

https://github.com/microsoft/terminal/issues/4413

Da esquerda
CMD padrão com transparência, terminal focalizado, terminal de fundo
image

Você pode adicionar opções diferentes para fundo transparente e texto (anterior)
Não quero texto transparente. É difícil de ler. Mas eu quero um fundo transparente

@ zadjii-msft @ cinnamon-msft

Eu gostaria de um botão Peek na TitleBar perto da nova guia + botão ou o botão minimizar - , assim como Aero Peek.

Se vocês estão refazendo o trabalho de composição, por favor, considerem adicioná-lo ao TitleBar. Assim, quando passo o mouse sobre ele, posso ver a tela atrás, em vez de ficar transparente o tempo todo.

__Relativamente relacionado__

Podemos ter um botão Fullscreen no TitleBar em todos os aplicativos que permitem maximizar (sim no terminal também)! Acho que devemos adicionar Peek à lista também IMHO, se estamos adicionando no próprio sistema de janelas.

@ Nirmal4G Mudei sua primeira solicitação para # 5426. Tenho certeza de que não há nada que possamos fazer a respeito de sua segunda solicitação - parece uma mudança bastante extensa nas janelas de _todos_ os aplicativos do Windows. Pode ser um pedido que se encaixaria bem na Microsoft / PowerToys . IIRC, um dos powertoys originais funcionou modificando os botões de legenda da barra de título
image

Já que esse parece ser o problema geral para transparência e acrílico ... Acabei de instalar este aplicativo de blocos de notas que outro cara da MSFT fez em seu tempo livre e parece ser capaz de manter a transparência do acrílico enquanto não está focado no fundo. Ele também está usando XAML e Windows.UI.

Adicione esse recurso também, em algum momento. Obrigado.

A página do projeto: https://github.com/JasonStein/Notepads

--editar:
Percorrendo o projeto, ele está fazendo seu próprio pincel acrílico personalizado para tudo isso:

https://github.com/JasonStein/Notepads/blob/58530f19dd0173bab13e40c9511e5277e42c4129/src/Notepads/Brushes/HostBackdropAcrylicBrush.cs

Eu não acho que eles estão dizendo que não podem mantê-lo em acrílico quando fora de foco, eles estão dizendo que decidiram não fazer isso como uma ampla decisão de design de toda a empresa, a fim de salvar a vida da bateria.

Sim, bem ... Transparência / acrílico no terminal é o tipo de colírio para os olhos que o usuário provavelmente espera estar lá o tempo todo. Do contrário, ninguém iria querer, porque tê-lo enquanto está focado não adianta muito a esse respeito.

Além disso, os usuários de terminal provavelmente são usuários avançados, considerando também a necessidade de editar um JSON para ativá-lo, e provavelmente estariam cientes do impacto da bateria de alguma forma.

Ainda pode torná-lo opcional.

@ futuro self:

  • https://github.com/JasonStein/Notepads/blob/58530f19dd0173bab13e40c9511e5277e42c4129/src/Notepads/Brushes/HostBackdropAcrylicBrush.cs

    • Droga, isso está usando Win2D, que não tenho certeza se podemos usar, já que é C #

    • https://github.com/microsoft/Win2D/blob/master/winrt/docsrc/CanvasDevice.xml / https://microsoft.github.io/Win2D/html/M_Microsoft_Graphics_Canvas_CanvasDevice_GetSharedDevice.htm

  • No entanto, existe https://docs.microsoft.com/en-us/uwp/api/windows.ui.composition.compositor.createhostbackdropbrush?view=winrt-18362

    • isso parece promissor

  • https://stackoverflow.com/questions/43208841/how-to-use-acrylic-accent-createhostbackdropbrush-in-windows-10-creators-upd/44576160
  • Então vamos escrever algum código
            auto rootVisual = winrt::Windows::UI::Xaml::Hosting::ElementCompositionPreview::GetElementVisual(RootGrid());
            auto compositor = rootVisual.Compositor();
            auto rootSprite = compositor.CreateSpriteVisual();
            rootSprite.Size(winrt::Windows::Foundation::Size(
                ::base::saturated_cast<float>(RootGrid().ActualWidth()),
                ::base::saturated_cast<float>(RootGrid().ActualHeight())));

            auto b = rootVisual.Compositor().CreateHostBackdropBrush();

            rootSprite.Brush(b);
            winrt::Windows::UI::Xaml::Hosting::ElementCompositionPreview::SetElementChildVisual(RootGrid(), rootSprite);
  • Oh não, mesmo com isso, temos conteúdo pré-desfocado
    image

  • O que me leva a https://github.com/Microsoft/WindowsCompositionSamples/issues/202

  • O que me traz um círculo completo para a investigação que já fiz no ano passado https://github.com/microsoft/terminal/issues/1753#issuecomment-508070516

Não estou prometendo nada aqui, apenas deixando notas da guia que abri esta manhã

Espere, eu li corretamente? Ter uma janela parcialmente transparente ou um acrílico sem desfoque não é possível devido a questões de segurança? O que?

Eu, como muitos, quero / preciso desesperadamente de uma semitransparência de terminal como a que vem sendo usada na frente do * nix há anos. Precisamos realmente seguir a "rota do protetor de tela", capturar a tela durante a pintura, pintar a captura como uma imagem de fundo na janela e, em seguida, pintar a opacidade sobre ela?

Quero dizer, quão viável poderia uma janela semitransparente ser um vetor para um ataque ... até mesmo um keylogger totalmente transparente desativaria a janela. Genuinamente curioso. E perplexo. Mas principalmente curioso.

Concedido, esse segmento é muito antigo, de uma época em que a única maneira de fazer acrílico era com um aplicativo UWP puro. Os UWPs são bastante isolados contra a capacidade de ler o estado de outros processos no sistema. Se um aplicativo neste contexto pudesse trivialmente preparar o conteúdo da janela atrás dele, então ele poderia teoricamente ler o conteúdo de qualquer outra coisa que esteja sendo executada no sistema, em _qualquer_ contexto. Isso é algo absolutamente impossível para aplicativos UWP.

O mundo mudou muito desde então - há aplicativos como o Terminal que usam UWP XAML (e acrílico), mas _não são_ aplicativos UWP. Nesse novo modelo, talvez seja possível fazermos algo diferente, só precisamos fazer mais pesquisas.

Lendo a fonte do AcrylicBrush , posso ter encontrado uma solução alternativa. Mas leve isso com cautela, pois tenho uma experiência mínima com o desenvolvimento da IU do Windows.
Parece que um método de fábrica no Pincel de Acrílico tem suporte para fundos pré-desfocados, aparentemente onde a concha já teria feito isso, SE esse método for exposto e SE um fundo não desfocado for passado como um fundo pré-desfocado e SE Não estou totalmente errado aqui, a fábrica pode não adicionar nenhum efeito de desfoque. Mas, novamente, tenho uma grande chance de estar 150% errado aqui, então aceite isso como quiser.

OMG, esta discussão tem mais de um ano, mas a Transparência do Vidro essencial ainda não foi implementada. É padrão para terminais Unix.

@alxkvx Conforme discutido

@alxkvx Conforme discutido

bem, na verdade não me concentrei no problema, e não entendo por que a pilha de interface do usuário tem problemas com isso, sei que, usando o terminal WSL, posso apenas clicar com o botão direito em> Propriedades> Definir opacidade e obter a transparência do vidro. Para mim, pessoalmente, esse é um recurso essencial.

O borrão e ficando opaco quando o terminal não está focado é simplesmente bobo. Quem pediu isso? 🤷 Vou continuar usando cmd e PowerShell.

@alxkvx Conforme discutido

bem, na verdade não me concentrei no problema, e não entendo por que a pilha de interface do usuário tem problemas com isso, sei que, usando o terminal WSL, posso apenas clicar com o botão direito em> Propriedades> Definir opacidade e obter a transparência do vidro. Para mim, pessoalmente, esse é um recurso essencial.

O problema é que a estrutura de interface do usuário (UWP XAML) em que o terminal do Windows está integrado simplesmente não oferece suporte a transparência total, como aplicativos win32 ou WPF (por exemplo, terminal wsl). A única ferramenta a que eles têm acesso é o acrílico, que significa menos transparência e mais um destaque de design. Implementá-lo em sua pilha de IU levaria uma solução hacky como meu comentário acima ou uma reformulação total de como o console é renderizado (pelo menos é o que eu entendo, a IU do Windows não é meu campo de desenvolvimento)

Editar: esclarecimento

@alxkvx Conforme discutido

bem, na verdade não me concentrei no problema, e não entendo por que a pilha de interface do usuário tem problemas com isso, sei que, usando o terminal WSL, posso apenas clicar com o botão direito em> Propriedades> Definir opacidade e obter a transparência do vidro. Para mim, pessoalmente, esse é um recurso essencial.

O problema é que a estrutura de interface do usuário (XAML) em que o terminal do Windows está integrado simplesmente não oferece suporte a transparência total, como aplicativos win32 (por exemplo, terminal wsl). A única ferramenta a que eles têm acesso é o acrílico, que significa menos transparência e mais um destaque de design. Implementá-lo em sua pilha de IU levaria uma solução hacky como meu comentário acima ou uma reformulação total de como o console é renderizado (pelo menos é o que eu entendo, a IU do Windows não é meu campo de desenvolvimento)

O Xaml oferece suporte à transparência, mas as janelas UWP e as Ilhas Xaml não.

Quando o Terminal for capaz de passar para a área de trabalho do WinUI 3 e acessar o próprio HWND, ele será capaz de implementar uma transparência não borrada.

O acrílico em si será adiado para WinUI 3 - já que eles precisam retrabalhá-lo enquanto o extraem do sistema operacional

Espere não, vamos esclarecer alguns equívocos - Já podemos acessar o HWND diretamente, porque já somos um aplicativo win32. Estamos trabalhando com o XAML e as equipes de composição para tentar descobrir uma solução para isso. Pelo que entendi (atualmente), a Ilha XAML sempre tem um fundo opaco, o que significa que não podemos apenas ter componentes transparentes em XAML que são transparentes em todo o caminho até o HWND. Não tenho ideia se o WinUI 3 vai resolver isso magicamente para nós, que é algo que precisamos discutir mais com essa equipe. Felizmente, eles trabalham no corredor próximo a nós (ou pelo menos faziam quando todos trabalhávamos em prédios de escritórios), então ter essas discussões não é muito difícil 😄

@ futuro self:

Tenho certeza de que o Win2D oferece suporte a c ++ / winrt (está escrito em c ++!), Mas mesmo que não seja para este caso de uso, há o seguinte:

https://github.com/fobrs/Win2DinMFC

Além disso, acredito que o acrílico personalizado deve ser possível porque consegui obter acrílico (com cantos arredondados !!!) em WPF, seguindo este exemplo:

https://github.com/microsoft/Windows.UI.Composition-Win32-Samples/tree/master/dotnet/WPF/AcrylicEffect

E esta postagem é fenomenal:

https://notes.yvt.jp/Desktop-Apps/Enabling-Backdrop-Blur

Todos eles são realmente úteis se você estiver usando WPF XAML, mas estamos usando UWP XAML, que infelizmente sempre terá o pano de fundo opaco. Estamos trabalhando com a equipe do WinUI para, com sorte, diminuir essa restrição para o WinUI 3.0. Pode demorar um pouco até que haja qualquer outro progresso neste problema, enquanto trabalhamos nas especificações técnicas com eles.

@ zadjii-msft Então, você está me dizendo que o controle wpf do terminal poderia possivelmente suportar acrílico borrão personalizável , mas não o UWP (para o futuro previsível) ... tempos estranhos 😅😅

Oh não, o UWP XAML pode oferecer suporte ao acrílico perfeitamente, é apenas "opacidade tradicional" (opacidade sem o efeito acrílico) que o UWP XAML não pode ser compatível atualmente.

Eu adoraria que você continuasse esta discussão em outro lugar (talvez registre um novo problema se você tiver um problema?) Porque este é o tópico para _ transparência não borrada_. Já temos "acrílico" no controle UWP, e discutir mais "como obter acrílico no controle UWP" é ... quero dizer, tentar explicar a um cavalo como ele poderia se tornar um cavalo se realmente, realmente queria?

@ zadjii-msft @DHowett Desculpe, não quis dizer isso. Por acrílico, quero dizer acrílico com raio de desfoque personalizável

@ zadjii-msft Eu quero fazer alguns experimentos, você pode me apontar onde a janela de hospedagem xaml / DesktopWindowXamlSource é criada em seu código? É uma base de código muito grande 😅😅

@AnuthaDev está em src/cascadia/WindowsTerminal/IslandWindow.cpp

Ok, é pelo menos possível para wpf com certeza:
Screenshot (363)

Talvez a janela em IslandWindow.cpp possa ser criada com WS_EX_NOREDIRECTIONBITMAP e o método seguido aqui possa ser usado para criar um pincel de acrílico sem desfoque . Usar createhostbackdropbrush () introduz desfoque automaticamente, então createbackdropbrush () é a única opção. Ou talvez não funcione, ... idk. Vou tentar e deixar você saber ...

Edit: Narrador: Não funcionou!

Talvez a janela em IslandWindow.cpp possa ser criada com WS_EX_NOREDIRECTIONBITMAP e o método seguido aqui possa ser usado para criar um _non blur_ acrílicobrush. Usar createhostbackdropbrush () introduz desfoque automaticamente, então createbackdropbrush () é a única opção. Ou talvez não funcione, ... idk. Vou tentar e deixar você saber ...

Acho que não, pois esse método está sob WPF. XAML é usado em duas estruturas diferentes, WPF (esse método) e UWP (usado em WT). Eu vasculhei o código-fonte do acrílico UWP, e a única coisa que poderia fazer a transparência tradicional funcionar é uma solução alternativa realmente Hakki, onde você basicamente engana o sistema operacional fazendo-o pensar que o fundo já foi desfocado, então não para adicionar um desfoque, mas sou uma bela árvore, mesmo que não seja compatível com ilhas XAML.

@ zadjii-msft @DHowett Ok, aqui está o que eu encontrei:
Certamente é possível obter um acrílico de desfoque personalizado em um aplicativo c ++ win32 usando win2d:

(Raio de desfoque 1):
Screenshot (364)

CONTUDO!! Você não pode fazer isso com ilhas xaml. Como você já sabe, definitivamente haverá um fundo opaco por trás do xaml ...

Para fazer isso, precisamos usar apis de composição e renderizar para um hwnd DesktopWindowTarget.

Portanto, como está atualmente, para obter transparência acrílica sem desfoque , precisaríamos remover ilhas xaml e usá - las em vez de um painel swapchain.

(Se você já sabe disso, desculpe por desperdiçar seu tempo ...)

Conseqüentemente, nenhuma transparência sem uma mudança significativa na arquitetura.

(Uma conclusão que já era aparente e para a qual não contribuí em absolutamente nada😅😅)

Sim, então o TLDR para quem não quer ler toda a discussão anterior é basicamente que a estrutura que é usada para o terminal do Windows não suporta atualmente esse recurso, NO ENTANTO o desenvolvimento nessa estrutura é contínuo e transparente (pelo que eu entendo ele) está em andamento. Portanto, somente depois que a estrutura (ilhas XAML) oferecer suporte à transparência, esse problema poderá ser iniciado.

Sim, então o TLDR para quem não quer ler toda a discussão anterior é basicamente que a estrutura que é usada para o terminal do Windows não suporta atualmente esse recurso, NO ENTANTO o desenvolvimento nessa estrutura é contínuo e transparente (pelo que eu entendo ele) está em andamento. Portanto, somente depois que a estrutura (ilhas XAML) oferecer suporte à transparência, esse problema poderá ser iniciado.

Eu me pergunto por que o recurso de transparência não foi incluído inicialmente nesse projeto e não foi considerado quando o mecanismo de interface do usuário foi escolhido. Tendo mais de 10 anos trabalhando com terminais Linux, todos têm esse recurso e são usados ​​ativamente por muitos usuários. Estranho para mim.

O Powershell e o CMD têm a opção de definir a transparência. Eu entendo que as tecnologias usadas são diferentes, mas muitos usuários usam configurações de transparência

O Powershell e o CMD têm a opção de definir a transparência. Eu entendo que as tecnologias usadas são diferentes, mas muitos usuários usam configurações de transparência

sim, o mesmo que o terminal WSL

A transparência CMD e PWSH é alcançável com este terminal, mas pelo que percebi a maioria das pessoas (eu inclusive) não quer essa versão de transparência, em vez de uma transparência de terminal semelhante a * nix, onde apenas o fundo é translúcido em vez de tudo, texto incluído.

Além disso, existem algumas maneiras invasivas de falsificar a transparência, com uma captura de tela RECT, pintada sobre o próprio terminal e, em seguida, pintada com uma cor semitransparente, mas mesmo assim há limitações e armadilhas.

Talvez isso possa ser implementado criando uma janela abaixo (ao lado?) Da janela xaml islands (com a janela pai definida como WS_EX_NOREDIRECTIONBITMAP) e definindo WS_CLIPSIBLINGS nela, então a API de composição e a interoperabilidade Directx podem ser usadas para renderizar conteúdo com fundo translúcido ( como então ) para esta janela. Então, você não precisaria remover ilhas xaml e coisas como barras de rolagem ainda deveriam funcionar, apenas a parte swapchainpanel seria substituída. Ou talvez, se isso não funcionar, você poderia fazer um furo na parte do painel de troca usando HRGN, para que a janela de composição abaixo dela se torne visível. Não deve haver nenhuma regressão de desempenho perceptível passando de swapchainpanel para um hwnd (provavelmente)

O problema de buscar uma solução alternativa para um hackey é que ele é um hackey e inerentemente propenso a bugs. O WinUI 3 provavelmente suportará a funcionalidade proposta, então há planos para implementá-la, é apenas um jogo de espera para a cadeia de ferramentas oficial suportá-la. Os desenvolvedores já confirmaram que estão colaborando diretamente com a equipe WinUI nisso.

(Uma conclusão que já era aparente e para a qual não contribuí em absolutamente nada😅😅)

Eu não diria que você não contribuiu com nada - fico sempre feliz em ter uma confirmação externa de minha própria pesquisa. Eu teria ficado ainda mais feliz se você tivesse provado que estou errado e encontrado uma maneira eficaz de fazer isso 😉

Conforme mencionado anteriormente neste tópico - estamos trabalhando com a equipe WinUI para adicionar isso ao WinUI 3.0. Acredito que isso esteja sendo rastreado em https://github.com/microsoft/microsoft-ui-xaml/issues/1247. Este é o caminho que seguiremos para adicionar esse recurso ao Terminal, porque conduzir essa solução também significa conduzir um recurso importante da plataforma de desenvolvimento para toda a plataforma, que também ajudará a melhorar outros aplicativos no Windows.

Conforme mencionado anteriormente neste tópico - estamos trabalhando com a equipe WinUI para adicionar isso ao WinUI 3.0. Acredito que isso esteja sendo rastreado em microsoft / microsoft-ui-xaml # 1247 . Este é o caminho que seguiremos para adicionar esse recurso ao Terminal, porque conduzir essa solução também significa conduzir um recurso importante da plataforma de desenvolvimento para toda a plataforma, que também ajudará a melhorar outros aplicativos no Windows.

Visto que a equipe do terminal escolheu uma direção neste caso, a tag "procura-se ajuda" deve ser removida?

@tajetaje boa pegada, obrigado!

(Uma conclusão que já era aparente e para a qual não contribuí em absolutamente nada😅😅)

Eu não diria que você não contribuiu com nada - fico sempre feliz em ter uma confirmação externa de minha própria pesquisa. Eu teria ficado ainda mais feliz se você tivesse provado que estou errado e encontrado uma maneira eficaz de fazer isso 😉

Conforme mencionado anteriormente neste tópico - estamos trabalhando com a equipe WinUI para adicionar isso ao WinUI 3.0. Acredito que isso esteja sendo rastreado em microsoft / microsoft-ui-xaml # 1247 . Este é o caminho que seguiremos para adicionar esse recurso ao Terminal, porque conduzir essa solução também significa conduzir um recurso importante da plataforma de desenvolvimento para toda a plataforma, que também ajudará a melhorar outros aplicativos no Windows.

@ zadjii-msft, posso ver como o WinUI teria um papel nisso, mas não tenho certeza de como a questão do sem fronteiras nos leva até lá. Em termos do resultado real que a maioria das pessoas busca, acho que esta é uma bela representação de @mdtauk ( # 743 ) do que poderia ser:

image

(Uma conclusão que já era aparente e para a qual não contribuí em absolutamente nada😅😅)

Eu não diria que você não contribuiu com nada - fico sempre feliz em ter uma confirmação externa de minha própria pesquisa. Eu teria ficado ainda mais feliz se você tivesse provado que estou errado e encontrado uma maneira eficaz de fazer isso 😉
Conforme mencionado anteriormente neste tópico - estamos trabalhando com a equipe WinUI para adicionar isso ao WinUI 3.0. Acredito que isso esteja sendo rastreado em microsoft / microsoft-ui-xaml # 1247 . Este é o caminho que seguiremos para adicionar esse recurso ao Terminal, porque conduzir essa solução também significa conduzir um recurso importante da plataforma de desenvolvimento para toda a plataforma, que também ajudará a melhorar outros aplicativos no Windows.

@ zadjii-msft, posso ver como o WinUI teria um papel nisso, mas não tenho certeza de como a questão do sem fronteiras nos leva até lá. Em termos do resultado real que a maioria das pessoas busca, acho que esta é uma bela representação de @mdtauk ( # 743 ) do que poderia ser:

image

https://github.com/microsoft/microsoft-ui-xaml/issues/1247 rastreia sem borda e transparência

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

zadjii-msft picture zadjii-msft  ·  3Comentários

mdtauk picture mdtauk  ·  3Comentários

mrmlnc picture mrmlnc  ·  3Comentários

ghvanderweg picture ghvanderweg  ·  3Comentários

Wid-Mimosa picture Wid-Mimosa  ·  3Comentários