Fixar aplicativos em várias áreas de trabalho no Windows 10

73

Um dos grandes novos recursos do Windows é o fato de que agora há suporte nativo para diversas áreas de trabalho "virtuais", permitindo que você organize coleções de janelas juntas e separe grupos de tarefas.

Isso é bom.

Você pode mover as janelas entre as áreas de trabalho clicando no botão "tarefas" e, em seguida, clicando com o botão direito do mouse na janela do aplicativo e selecionando "Mover para ..."

Isso é um pouco desajeitado e não é tão bom.

Eu tenho dois monitores e geralmente gosto de exibir um filme no meu segundo monitor, em um navegador da web ou em um media player, enquanto eu tenho um navegador e alguns outros aplicativos na tela principal. Fazer isso não é um problema na minha configuração atual, apenas funciona.

Com o advento dos desktops virtuais, eu estava querendo colocar o navegador em um desktop virtual e outro aplicativo em outro desktop virtual e ainda poder assistir ao vídeo quando alterno os desktops, tornando-o visível nos dois desktops virtuais. O uso do aplicativo padrão de Filme e TV para reproduzir um vídeo e, em seguida, mudar para outra área de trabalho simplesmente resulta na interrupção do seu vídeo sem aviso.

Isto não é bom.

O que eu esperava era que os dois monitores tivessem sua própria área de trabalho virtual ou fossem alguma opção "fixar em todas as áreas de trabalho" semelhante ao recurso "janela adesiva" que eu já vi em muitos gerenciadores de janelas baseados em Linux.

Existe alguma maneira de conseguir isso?

Mokubai
fonte
Não que eu saiba, embora eu tenha experiência com vários sistemas usando espaços de trabalho (diferentes sistemas Linux), nenhum deles já teve esse recurso, o que meio que quebra o conceito de ter vários locais de trabalho.
Daniel
2
@ Daniel Falei com várias pessoas e elas se referem a ele como "janelas pegajosas"
Mokubai
2
@Psychogeek Estou me referindo tanto a monitores múltiplos quanto a desktops virtuais; o lado de vários monitores é bom. Posso abrir um vídeo, colocá-lo na segunda tela e está tudo bem, mas se eu alternar para outra área de trabalho usando o novo recurso de área de trabalho virtual, a janela do vídeo desaparecerá e (em alguns casos) parará de ser reproduzida completamente. Gostaria de ter uma maneira de fixar uma janela em vários desktops virtuais.
Mokubai
Entendi, muitos dos programas de área de trabalho virtual tinham esse recurso, onde você atribuía programas a virtuais específicos, muitos pequenos problemas de bugs ainda existiam, dependendo do método.
Psycogeek
6
Eu acho que um exemplo bastante padrão para essa necessidade é quase qualquer aplicativo de comunicação. Gostaria de usar áreas de trabalho virtuais separadas para diferentes projetos em que estou trabalhando, mas gostaria de fixar / colar clientes de IM e email. Parece-me um caso de uso bastante padrão que eu possa querer separar meus espaços de trabalho sem precisar trocar de área de trabalho apenas para receber alertas por email!
Colin K

Respostas:

100

O recurso foi lançado como uma das várias "melhorias na área de trabalho virtual" na atualização de aniversário do Windows 10 (compilação 14316):

Agora você pode fixar uma janela para que ela esteja disponível em todas as áreas de trabalho. Para fazer isso, inicie o Modo de Exibição de Tarefas, clique com o botão direito na janela que deseja fixar e escolha "Mostrar esta janela em todas as áreas de trabalho". Tente fixar o Skype ou o Groove Music para que eles estejam sempre ao seu alcance. E se você tiver uma configuração de vários segundos, poderá ter o aplicativo de e-mail no segundo monitor, independentemente da área de trabalho para a qual alternar.

insira a descrição da imagem aqui

Daniel Ballinger
fonte
A publicação fala sobre estar disponível no Windows Insider Fast Ring. Você tem alguma linha do tempo para quando isso vai cair para usuários normais?
Mokubai
11
@Mokubai Até onde eu sei, ainda não há uma data de lançamento pública firme. Apenas um vago "Este verão [do hemisfério norte]".
Daniel Ballinger
mas como você desafeta?
Mikey
@ Mikey Desmarcar a opção "Mostrar X em todas as áreas de trabalho" não está funcionando para você?
21418 Daniel Ballinger
Funciona nas janelas em que posso clicar, o problema é quando elas não são visíveis na exibição de tarefas. Claro que era visível antes quando eu o liguei, mas agora, sempre que entra na visualização de tarefas, a janela desaparece. Então, qual é outra maneira de desativá-lo? Existe uma chave de registro? Atualmente, estou tendo esse problema com o telegrama, que eu acho que é um QT (aplicativo de plataforma cruzada). Só para ficar claro a janela é visível em todos os desktops, mas desaparece quando entro vista tarefa
Mikey
18

Sim. [quase :)] Todas as janelas com o atributo WS_EX_TOOLWINDOW são visíveis em todas as áreas de trabalho.

A Autohotkey é uma grande ajuda nisso. Exemplo de script - MyLoop.ahk:

WS_EX_TOOLWINDOW: = 0x00000080
Ciclo
{
   WinSet, ExStyle, +% WS_EX_TOOLWINDOW%, ahk_class Chrome_WidgetWin_1
   Dormir, 100
}

Coloque isso na inicialização do Windows e a janela do Google Chrome "grudará" em todos os desktops virtuais.

Ou atribua isso como uma tecla de atalho: Exemplo de script - MyHotkeys.ahk:

WS_EX_TOOLWINDOW: = 0x00000080
+ MButton :: WinSet, ExStyle, ^% WS_EX_TOOLWINDOW%, A
^ MButton :: WinSet, AlwaysOnTop, alternar, A

Coloque isso na inicialização do Windows e você poderá alternar o estado "pegajoso" para qualquer janela pressionando Shift + clique no botão do meio nela.

Tecla de adição - Ctrl + clique no botão do meio alternará o estado "mais acima". Muito útil.

PS: aplicativos modernos (por exemplo, Calculadora do Windows 10) de alguma forma ignoram isso. Não sei porque. Mas para a janela do Windows Explorer e a maioria dos 'aplicativos antigos' - funciona bem

IDj
fonte
Eu tentei os scripts para o clique do meio + teclas de atalho. O botão do meio Ctrl + funcionou bem. No entanto, eu não conseguia fazer com que o desktop virtual continuasse funcionando. Nenhuma das janelas em que eu tentei fez a transição.
Daniel Ballinger
Trabalhou para mim. No meu caso, eu queria sempre configurá-lo para mostrar, então troquei o ^sinal de intercalação ( ) com um sinal de mais ( +).
ohaal
1

Com base na solução @idj acima, é assim que se faz em C:

exstyle = GetWindowLongPtr(hwndPtr, GWL_EXSTYLE);
exstyle |= WS_EX_TOOLWINDOW
SetWindowLongPtr(hwndPtr, GWL_EXSTYLE, exstyle);
Noitidart
fonte