Como posso enviar a janela atualmente ativa para trás?

15

Existe um atalho para enviar a janela atualmente ativa para a parte de trás da tela, mantendo-a aberta (para que ela fique "abaixo" de todas as outras janelas abertas)?

Tetsujin
fonte
2
WillH enviará o aplicativo atual (incluindo todas as janelas) para trás e ocultará até que você o traga de volta para frente (a partir do dock ou com a tecla TAB-TAB para selecionar novamente o aplicativo). Na maioria dos aplicativos, o Shift-- ~ percorre as janelas do aplicativo atual, o que provavelmente é o mais próximo do que você está procurando.
Mic Channel
Eu sei disso, não é o que eu quero.
1
Se você deseja enviá-lo para trás, qual janela deve ser o seu foco? A janela selecionada anterior?
sayzlim

Respostas:

10

Resposta curta: Não , a Apple não fornece uma API que permita alterar o índice de uma janela de aplicativo, exceto trazendo uma janela para a frente (índice 1). Não há soluções elegantes . Mas:

Resposta longa: Sim , você pode usar o AppleScript para mover efetivamente uma janela para o fundo de uma pilha de janelas compatíveis com AppleScript, coletando uma lista de janelas e movendo rapidamente cada uma delas ( exceto a mais frontal) para a frente, deixando a janela escolhida atrás.

Aqui está um exemplo de AppleScript que envia a janela do Finder mais à frente para trás.

tell application "Finder"
    set winList to every window whose visible is true
    if not winList = {} then
        repeat with oWin in (items 1 through -2 of reverse of winList)
            set index of oWin to 1
        end repeat
    end if
end tell

Este script é baseado em uma solução de JMichaelTX discutida no fórum KeyboardMaestro.

A reorganização é incrivelmente rápida, mas no Editor de scripts você pode inspecionar como funciona, deixando "506" na parte inferior e exibindo "502-505" de uma maneira que preserva a ordem deles:

get every window whose visible = true
    --> {Finder window id 506, Finder window id 505, Finder window id 504, Finder window id 503, Finder window id 502}
set index of Finder window id 502 to 1
    --> 1
set index of Finder window id 503 to 1
    --> 1
set index of Finder window id 504 to 1
    --> 1
set index of Finder window id 505 to 1
    --> 1

Você pode mapear esse AppleScript para um atalho de serviço ou teclado, a) colocando o script em uma ação Executar AppleScript dentro de um serviço Automator ou b) usando um iniciador (Alfred, Keyboard Maestro etc.). Para obter detalhes sobre a atribuição do teclado da Applescript, consulte: Como atribuir um atalho de teclado a um AppleScript que escrevi?

Isso pode satisfazer as necessidades do OP - não está claro a partir da postagem original. Esta solução também pode ser estendida para vários aplicativos compatíveis com AppleScript. No entanto, não estou ciente de uma solução para fazê-lo funcionar efetivamente com uma mistura de janelas com script e não com script, devido ao fato de que no AppleScript as System Eventsjanelas endereçáveis ​​para aplicativos não com script não possuem um set indexverbo / propriedade. Existe uma ação "AXRaise" para algumas janelas quando dispositivos auxiliares / acessibilidade estão ativados, mas isso também não se aplica a todas as janelas. Existem hacks elaborados que envolvem percorrer cada aplicativo ativo e mostrar / ocultar ou minimizar / restaurar janelas, mas são uma bagunça.

Discussões relacionadas:

JeremyDouglass
fonte
É possível enviar a janela de qualquer aplicativo para trás, em vez da janela de um aplicativo específico?
Di Liu
Infelizmente, no Mojave, isso parece não funcionar mais.
Edward Falk
Desde o Mojave, meu entendimento é que o controle do Finder com AppleScript agora precisa de permissões para ser executado (não testado). Se você estiver recebendo erros como errAEEventNotPermitted então existem soluções para adicionar essas permissões - veja discussões relacionados: forums.developer.apple.com/thread/106949
JeremyDouglass
2

Sua pergunta não é muito clara, mas se você quiser um atalho para percorrer todas as janelas do aplicativo ativo no momento, poderá fazer isso com o Command~atalho do teclado.

A ~chave geralmente está localizada à esquerda da 1chave.

Apenas para esclarecer, o que o Command~atalho de teclado faz é percorrer todas as janelas do aplicativo atual em que você está. Por exemplo, se você estiver usando o MS Word e tiver três documentos abertos, ele percorrerá esses três documentos.

No entanto, o Command~atalho do teclado não percorre as guias. Por exemplo, se você tiver o Safari aberto com três janelas e cada janela tiver cinco guias abertas, o uso desse atalho percorrerá as três janelas, e não as guias individuais.

Outra opção que pode alcançar o que você deseja é o CommandMatalho do teclado. No entanto, isso minimiza a janela ativa no momento para o Dock, então eu suspeito que não é isso que você deseja.

Se eu entendi totalmente sua pergunta, por favor, esclareça.

Monomeeth
fonte
Acho que esse é o caso de uso que o OP deseja: digamos que eu tenha o aplicativo de mensagens aberto na frente do meu aplicativo de email e que eu queira trazer rapidamente o aplicativo de email para o primeiro plano e enviar mensagens para o segundo plano, eu possa fazer um teclado atalho e o aplicativo de mensagens ficará atrás do meu aplicativo de email. Eu tentei o atalho do teclado e isso não conseguiu isso.
owlswipe
Eu acho que você quer dizer a chave. ~ É a única impressa quando Shift é realizada e é pressionado `
Crowder