Console Mode 1.7: o PC vira console desde o primeiro segundo
Console Mode começou com uma vontade bem específica: sentar no sofá, pegar um controle e usar meu computador como se fosse um videogame de mesa. Sem levantar para mudar o áudio, trocar de monitor, encontrar uma janela ou desfazer configurações quando terminasse de jogar.
Na versão 1.6, dei um passo importante nessa direção. O PC já conseguia trocar de telas, ajustar áudio e resolução, abrir Steam ou Playnite e devolver o desktop ao estado anterior. O menu da sessão também começou a tornar possível resolver coisas pelo próprio controle, sem interromper completamente a experiência.
Mas, quanto mais a experiência evoluía, mais uma pergunta ficava evidente:
Se a intenção é usar um PC como console, por que ainda existem tantos momentos em que ele me lembra que é um desktop?
É essa pergunta que orienta a 1.7, a próxima grande atualização do Console Mode.
Esta versão não é só uma coleção de recursos novos. É uma tentativa de tornar toda a jornada mais consistente: desde a hora em que o PC acorda até o momento em que o jogo termina e o Windows precisa voltar exatamente como estava.
A 1.7 ainda está sendo preparada para lançamento. Quero aproveitar este buildlog para mostrar o que mudou, as decisões por trás das mudanças e por que algumas das melhorias mais importantes são justamente as que o usuário não deveria perceber.
O feedback mudou o tipo de problema que estou tentando resolver
Quando comecei a desenvolver o Console Mode, meu foco era muito técnico: escolher a TV, mudar a saída de áudio, desligar os outros monitores, abrir um launcher e restaurar tudo no final.
Esses problemas continuam importantes, mas não são a experiência inteira.
Quando você começa a pensar no uso real, aparecem fricções bem diferentes. O que acontece se um programa abrir uma janela secundária? E se você quiser mudar de aplicativo sem voltar ao teclado? E se a resolução ideal de um jogo for diferente da de outro? E se o Windows renomear os monitores durante uma sessão? E se o aplicativo for encerrado antes de conseguir restaurar o setup?
É nesse ponto que o feedback — tanto de quem usa quanto dos problemas que aparecem durante os testes — deixa de ser apenas uma lista de pedidos.
Ele começa a revelar qual é o próximo problema de produto que vale resolver.
Para mim, a 1.7 representa essa mudança. Em vez de adicionar opções isoladas, tentei aproximar toda a experiência de uma ideia única: o PC deveria se comportar como um console desde o primeiro segundo.
Uma interface só, de verdade
Uma das maiores decisões foi abandonar a separação entre a antiga interface Desktop e a interface Console.
Manter duas interfaces parecia conveniente no início. Uma era mais familiar para quem estava no monitor; a outra era pensada para a TV.
Só que, conforme as funcionalidades cresciam, isso criava duas formas diferentes de encontrar ajustes, aprender a navegar e manter o produto consistente.
Na 1.7, a interface Console passa a ser a única interface do aplicativo.
Ela continua sendo feita para o controle, mas agora também funciona plenamente com mouse e teclado. Você pode clicar nas abas, usar Page Up e Page Down para navegar, Enter para confirmar e Esc para voltar.
Todo o conteúdo que antes existia apenas na interface Desktop foi reorganizado na aba Sistema: contador de FPS, diagnóstico, informações de versão e outras opções. Em vez de uma grande coleção de controles, a área agora apresenta categorias, com uma descrição do ajuste que está selecionado.
Pode parecer só uma reorganização visual, mas existe uma mudança de filosofia por trás dela.
Não quero que o usuário precise aprender duas versões do mesmo aplicativo dependendo da distância a que está da tela.
A tela inicial precisava parecer o começo de uma sessão de jogo
Também redesenhei o Início para ele se aproximar mais de um console de mesa.
Os iniciadores ficam numa fileira horizontal no topo. Ao navegar por eles, você define qual aplicativo será aberto. O selecionado ganha uma marca de confirmação e uma barra verde, para não existir dúvida sobre o que está ativo.
Logo abaixo fica o Jogar agora, em formato de pílula. Na mesma linha é possível enxergar a configuração principal da sessão: tela, áudio, resolução e HDR.
Os blocos de Steam, Playnite e Xbox exibem logos oficiais extraídos dos aplicativos instalados. Os aplicativos personalizados usam o próprio ícone do executável, em vez de uma identidade genérica.
Também passei a usar Inter na interface. Não é uma escolha feita só porque a fonte é bonita: tipografia para TV precisa funcionar a alguns metros de distância, em tamanhos e escalas diferentes.
Outra parte dessa mudança é o novo fundo Aurora, com brilhos verdes e azuis, enquanto as capas da biblioteca Steam continuam disponíveis como alternativa.
E a aba Sessão ganhou uma representação mais fiel do setup: as telas aparecem onde realmente ficam e nas suas proporções. Se um monitor é vertical, ele aparece vertical. Se uma tela vai ser desligada, sua representação fica tracejada.
Foi um daqueles detalhes que me fizeram lembrar que a interface não precisa apenas mostrar uma configuração. Ela precisa ajudar o usuário a reconhecer o próprio ambiente.
O difícil não é desenhar para uma TV. É desenhar para todas elas.
Uma interface pode ficar perfeita no monitor em que foi criada e falhar completamente quando alguém abre o aplicativo numa TV 4K com escala de 150%.
Texto que era legível fica enorme. Um botão sai da tela. Um menu ultrapassa a área útil. Um card que parecia espaçoso no desktop passa a disputar espaço com outro.
Por isso, a 1.7 também foi trabalhada para manter uma apresentação consistente em 125%, 150% e 200% de escala, incluindo TVs 4K.
A própria interface e o menu da sessão precisam preservar suas proporções sem cortar conteúdo nem multiplicar o tamanho de tudo sem critério.
Parece um detalhe de layout, mas é uma diferença enorme entre fazer uma UI que lembra um console e fazer uma UI que pode ser usada como um.
Também adicionei listas com esmaecimento nas bordas e uma barra de rolagem discreta. São recursos pequenos, mas que comunicam algo importante para quem está navegando pelo D-pad: a lista continua além do que está visível.
Até a abertura ganhou personalidade
Eu queria que a experiência começasse antes mesmo de o usuário escolher um jogo.
Agora, ao abrir o Console Mode, a tela começa escura. A luz de energia pulsa, uma tela se desenha em verde, o símbolo >_ é digitado e então o nome aparece, acompanhado de som.
Quis resgatar um pouco da sensação de ligar um videogame, não apenas abrir mais uma janela do Windows.
E coloquei uma surpresa: em aproximadamente uma de cada oito aberturas, o aplicativo pode apresentar uma introdução inspirada no Xbox 360 ou no PS4.
Não quero que isso vire uma obrigação estética para todo mundo, então a aba Sistema → App permite fixar o estilo preferido, escolher Nenhuma ou desativar só o som.
Os sons da interface também mudaram. Agora têm uma característica mais próxima de vidro e cristal, pensada para navegação por controle e teclado. Cliques de mouse permanecem silenciosos.
Até o tour de primeira execução foi redesenhado: ele apresenta abas, iniciadores, telas, ajustes rápidos e atalhos. As paradas avançam automaticamente após o tempo de leitura, mas também podem ser avançadas com A ou ignoradas com B.
A intenção é apresentar o suficiente para que alguém se sinta confortável logo na primeira sessão.
Nem todo aplicativo é um launcher conhecido
Um dos limites que mais me incomodava era tratar Steam, Playnite e Xbox como se fossem as únicas portas de entrada possíveis para jogar.
Com a 1.7, cada aplicativo personalizado pode virar um bloco próprio no Início, com nome e ícone do seu .exe.
Isso abre espaço para emuladores, launchers alternativos e outras ferramentas que fazem parte do setup de cada pessoa.
Mas a parte interessante não foi só permitir adicionar executáveis.
Alguns programas funcionam como intermediários: você abre um launcher, ele inicia outro processo e fecha. Se o Console Mode acompanhar apenas o primeiro executável, pode interpretar que a sessão terminou, mesmo com o programa real ainda rodando.
A 1.7 passa a acompanhar esses casos, levando a janela do aplicativo que realmente foi iniciado para a TV e encerrando a sessão quando ele fecha.
Também corrigi uma situação parecida no Playnite: abrir um jogo não deve mais encerrar a sessão só porque o Playnite esconde a própria janela, como pode acontecer com o tema Selene.
São problemas que parecem pequenos até aparecerem em uma sessão real. No fim, não importa se o usuário iniciou um launcher, um atalho ou um executável: o Console Mode precisa entender quando a experiência de jogo realmente começou e terminou.
O controle agora serve para usar o PC mesmo fora do modo console
Na 1.6, o menu da sessão era importante principalmente enquanto o usuário estava jogando.
Na 1.7, ele deixa de depender disso.
Se o Console Mode estiver aberto — mesmo minimizado na bandeja — o atalho do controle pode abrir o menu da sessão fora do modo console.
A partir dali, você pode acessar janelas abertas, volume, monitores, áudio, HDR, o explorador ControlFS, o navegador JoyChromium, opções de ponteiro e controle do mouse pelo gamepad.
Também inclui um atalho para a própria visão de tarefas do Windows (Win + Tab), configurado por padrão como Select + X. O direcional seleciona a janela, A abre e B fecha essa visão. Funciona com controles Xbox e PlayStation, durante uma sessão ou fora dela.
Isso se conecta diretamente ao motivo de eu ter criado o projeto.
Um PC continua sendo um PC. Às vezes você precisa trocar de janela, abrir um arquivo ou acessar um link. Minha intenção não é fingir que essas tarefas não existem.
É fazer com que elas não obriguem você a levantar do sofá.
JoyChromium: fechar a lacuna entre o jogo e a web
O JoyChromium também passou a ter um espaço próprio no menu da sessão, logo abaixo do ControlFS.
É o navegador que estou desenvolvendo para usar a web numa TV com controle, sem depender da lógica tradicional de mouse e teclado.
Na 1.7, ele pode abrir em tela cheia por cima do jogo. Se ainda não estiver instalado, o Console Mode oferece o download e a instalação com um clique, verificando o SHA-256 do arquivo antes de prosseguir.
Esse tipo de integração é importante porque o Console Mode não precisa construir todas as ferramentas do ecossistema dentro de um único executável.
O objetivo é que cada ferramenta resolva bem um problema específico, mas que o usuário consiga acessar tudo sem quebrar a experiência.
Também escrevi sobre os desafios técnicos desse navegador em JoyChromium: por que navegar na web com um controle é mais difícil do que parece.
Perfis por jogo: o que é ideal para um título não precisa ser ideal para outro
Essa era uma funcionalidade que eu queria desenvolver havia algum tempo.
Quando configuramos uma sessão, normalmente escolhemos um conjunto de ajustes que funciona bem para vários jogos. Mas nem todo jogo se beneficia da mesma resolução, limite de FPS, HDR ou saída de áudio.
Na 1.7, cada jogo da Steam pode ter seu próprio perfil de resolução, HDR, limite de FPS e áudio.
O fluxo é simples: com o jogo aberto, você entra no menu da sessão e escolhe Perfil do jogo → Salvar os ajustes atuais.
Quando aquele título for iniciado novamente no modo console, o Console Mode aplica o perfil automaticamente e desfaz as mudanças quando o jogo fecha.
O suporte também considera jogos da Steam iniciados pelo Playnite ou pelo aplicativo Xbox.
O desafio aqui não é só armazenar preferências. É tratar cada configuração como temporária e reversível.
O usuário pode querer uma resolução para um jogo e outra para o Windows. Pode usar fones em um título e a TV em outro. O aplicativo precisa saber aplicar a preferência correta e, principalmente, quando parar de aplicá-la.
Apertar o botão do controle e já entrar no console
Talvez este seja o recurso que melhor representa o objetivo da versão.
Na 1.7, o Console Mode consegue verificar se o adaptador Xbox, a conexão Bluetooth ou um controle conectado por cabo oferecem suporte para acordar o PC e ajudar a habilitar isso quando o hardware permitir.
Combinando esse recurso com Entrar ao conectar um controle, a proposta é chegar ao seguinte fluxo:
Você aperta o botão central do controle.
O PC acorda.
E o Console Mode já inicia a experiência de console.
Sem precisar ligar a máquina, pegar o mouse, abrir um launcher e configurar a TV manualmente.
É importante lembrar que a capacidade de acordar o computador depende do controle, do adaptador, das opções de energia e do suporte do próprio hardware. Não é algo que qualquer conexão consiga fazer em todos os PCs.
Mesmo assim, quando o setup é compatível, a diferença na experiência é enorme.
É deixar de pensar no PC como uma máquina que precisa ser preparada para jogar e começar a tratá-lo como um console que está pronto quando você quer usar.
O trabalho invisível: devolver o Windows exatamente como estava
A parte mais bonita da 1.7 talvez seja a nova interface, mas uma das partes mais difíceis continua sendo algo que o usuário idealmente nunca vê.
Restaurar o computador depois de uma sessão.
Quando o Console Mode muda displays, áudio, resolução, FPS, HDR e outros estados, ele assume uma responsabilidade importante: não deixar o usuário preso em uma configuração temporária.
A 1.7 aprofunda essa preocupação.
Se o aplicativo fechar inesperadamente ou o PC desligar no meio da sessão, a próxima abertura tenta restaurar monitores, áudio, RTSS, posições dos ícones da área de trabalho e ponteiro do mouse.
As posições dos ícones agora também são preservadas ao sair normalmente da sessão. O ponteiro sai do caminho quando o jogo aparece na TV e volta para a posição anterior depois.
Outro problema corrigido envolve o Windows renomear monitores durante uma sessão. Isso pode fazer ajustes de resolução irem para a tela errada ou afetar quais monitores são restaurados. A 1.7 trabalha para associar a configuração à TV correta e religar ou desligar as telas esperadas.
Também ajustei o comportamento da saída de áudio “A que aparecer ao conectar”: se nenhuma nova saída surgir, o aplicativo pode aproveitar a saída da TV que já estava conectada.
Esse tipo de trabalho não costuma render screenshots interessantes.
Mas, para mim, confiabilidade é uma das características mais importantes de uma boa experiência de console.
Se o software muda seu ambiente inteiro para você jogar, ele também precisa saber devolvê-lo.
Os pequenos refinamentos também contam
Além das mudanças principais, a 1.7 trouxe uma série de ajustes que parecem secundários quando vistos isoladamente, mas fazem muita diferença no conjunto.
Agora a bateria do controle aparece na interface, com alertas aos 15% e 5%, para controles Xbox sem fio, DualSense e DualShock 4.
As notificações deslizam a partir da borda da tela e exibem uma pequena barra indicando o tempo restante.
A barra de título foi integrada ao visual da interface. A aba Sistema e as listas da aba Sessão preservam a posição do foco ao selecionar itens ou fechar com B.
Também corrigi o caso em que um analógico levemente fora do centro fazia o menu se mover sozinho, problemas de texto cortado em ajustes rápidos e no tour, e a seleção da janela principal de aplicativos personalizados — para evitar que uma simples dica de ferramenta fosse esticada sobre a TV.
O diagnóstico ganhou um botão de Copiar relatório, pensado para facilitar a abertura de issues sem incluir dados pessoais.
O aviso de atualização agora aparece em português, e os outros aplicativos que venho construindo — ControlFS, Tako Launcher e JoyChromium — ganharam cards próprios na interface.
Nada disso é o tipo de recurso que sozinho define uma versão.
Mas são exatamente esses refinamentos que ajudam a fazer o usuário parar de pensar na interface e simplesmente utilizá-la.
Também precisei decidir o que tirar
Uma versão maior não precisa significar manter tudo o que já existiu.
A antiga interface Desktop foi removida, e suas opções foram incorporadas à aba Sistema. A ideia é concentrar a experiência em uma única interface bem resolvida, em vez de manter duas jornadas paralelas.
Também retirei, por enquanto, o controle de Google TV e Android TV pela rede.
Esse recurso fica para uma versão futura, mas os ajustes já feitos pelo usuário permanecem guardados.
Pode parecer contraditório remover uma funcionalidade justamente quando o produto está crescendo. Só que nem sempre adicionar mais recursos significa melhorar o produto.
Às vezes é mais importante reduzir a superfície de complexidade e entregar uma experiência principal mais consistente.
O que a 1.7 representa para mim
Se a 1.6 foi a versão em que o Console Mode começou a realmente funcionar como uma experiência feita para o controle, a 1.7 é a versão em que tento levar essa ideia para o PC inteiro.
Não é mais só sobre abrir o Steam Big Picture na TV.
É sobre usar uma única interface, entender suas telas visualmente, abrir seus próprios aplicativos, navegar entre janelas, acessar arquivos e a web, aplicar preferências por jogo, acordar a máquina pelo controle e confiar que tudo voltará ao lugar ao terminar.
Também é o resultado de uma forma de desenvolver que venho valorizando cada vez mais: observar o que causa atrito, transformar isso em problema de produto, entender a raiz e só então decidir o que implementar.
Não dá para eliminar todas as particularidades do Windows, de cada controle ou de cada setup.
Mas dá para trabalhar para que essas particularidades apareçam cada vez menos na vida de quem só quer sentar no sofá e jogar.
Meu objetivo com o Console Mode nunca foi fazer o Windows parecer um videogame numa screenshot. Foi fazer o PC se comportar como um videogame na prática.
A 1.7 é mais um passo grande nessa direção.
Quando sai?
A 1.7 está em preparação e ainda não foi lançada no momento em que escrevo este texto.
Quando a versão estiver disponível, a instalação e as notas de lançamento estarão na página de releases do Console Mode.
O projeto continua sendo open source no GitHub. Se você usa o Console Mode, os relatos de bugs, sugestões e situações reais de uso fazem diferença para decidir o que merece atenção nas próximas versões.
Você pode enviar feedback por aqui.
Porque o próximo problema interessante quase sempre aparece quando alguém usa o projeto de um jeito que eu ainda não tinha imaginado.