Alguma maneira legal e estável de manter uma janela 'Sempre no topo' no Mac?


82

Estou procurando uma maneira estável de manter qualquer janela 'sempre no topo' no OSX.

Afloat , um aplicativo que requer SIMBL / easySIMBL, que parece não ser muito estável.

Existem soluções melhores? É realmente surpreendente que não haja uma maneira nativa de implementar isso.


2
O HIG do OSX não permite e, portanto, nunca foi programado em nenhum lugar do sistema de janelas. Geralmente, isso significa que você está tentando resolver um problema da maneira errada ou um aplicativo que você usa está mal escrito e não faz o que precisa. As soluções reais precisarão de uma explicação melhor do problema ou de um programador para corrigir o aplicativo.
John Keates

2
Deixar o usuário definir sua janela de escolha para estar sempre em cima de outras janelas pode causar um comportamento indesejado e inesperado. O protetor de tela também é apenas uma janela - você deseja flutuar acima disso? E os alertas importantes? E se dois aplicativos exigirem estar sempre no topo? Teoricamente, você pode fazer DoS um usuário colocando seu aplicativo de tela cheia no topo e desconectando-o. É por isso que não há propriedades 'sempre por cima' no cacau. Só é possível especificar um índice Z relativo (e a Apple recomenda que não faça isso). Suas opções são basicamente re-codificar o aplicativo ou usar o SIMBL.
JJ

Você está procurando fazer isso para qualquer aplicativo no Mac OS? Nesse caso, você deseja que ele sempre tenha foco (ou seja, pressione as teclas e clique no mouse) ou deseja que a janela de um aplicativo "flutue acima" de todos os outros, mas NÃO seja a janela ativa?
kenjikato

7
FWIW O Fedora sempre permitiu isso (desde meados dos anos 90 na forma de RH) e eu nunca tive problemas com a natureza "indesejada". Ele só não está em OSX quando poderia ser colocado em.
nerak99

11
John Keates - Infelizmente você não sabe do que está falando. Xcode fez isso muito comportamento com sua Simulator, mantendo-o na frente de todas as outras janelas, e este comportamento existe há muitos anos, até que finalmente removido no Xcode 9.
Logicsaurus Rex

Respostas:


25

Vou notar que o iOS Simulator tem / tinha a opção Stay in Front. Funcionalidade extremamente útil e prova que existem maneiras sancionadas e suportadas pela Apple para atingir esse comportamento.

Pode valer a pena abrir um radar, especialmente para adicionar ao Terminal.

Você pode duplicar meu radar :

ID do bug 27430873: Adicione a opção "Permanecer na frente" às ​​janelas do terminal.

Opção Stay in Front no iOS Simulator

Infelizmente, o Xcode 9 removeu esse recurso no iOS Simulator. Duplique meu relatório de bug da Apple para trazê-lo de volta também!

ID de bug 32852924: O Xcode 9 iOS Simulator está ausente na opção "Permanecer na frente"

O aplicativo Activity Monitor da Apple também tem a opção de Keep CPU Windows on Topexibir os pequenos gráficos da CPU em cima das janelas de todos os outros aplicativos:

Monitor de atividades> Janela> Manter a CPU do Windows no topo


11
O que é este simulador iOS? É como um emulador? Eu tenho procurado por um.
vozes

@ tjt263 o simulador iOS vem com o Xcode e, principalmente, usado para desenvolver aplicativos iOS
pkamb

11
Ah ok. O que é um radar? Como um relatório de bug?
vozes

@ tjt263 sim, bugreport.apple.com
pkamb

3
Essa funcionalidade também é mostrada no 'Activity Monitor' pré-instalado - se você for ao menu 'Window', verá uma opção para 'Keep CPU Windows on Top' - então parece realmente que existe um Apple oficial maneira de fazer isso. (Isto é o que eu vejo na versão 10.13.2)
keybits

16

Se você está procurando fazer isso apenas por uma janela do navegador da Internet, pode olhar para o aplicativo Helium de código aberto . É gratuito e você também pode baixar o código-fonte e compilar sua própria versão, se quiser.

É basicamente um navegador da Internet que sempre flutua acima de todas as outras janelas. Helium App

EDITAR:

Há também um aplicativo mais recente da Apple Mac App Store chamado Fluid Browser que fará a mesma coisa. Custa alguns $ s, mas funciona de forma excelente e possui alguns recursos a mais que o Hélio (em 7/6/2016). Agora você tem dois aplicativos diferentes para escolher.

Navegador de fluidos


Não gostei da experiência do Fluid Browser. Sim, possui mais alguns recursos, mas é bastante complicado e complicado. O hélio é muito leve, mas faz o trabalho.
Winterflags

11
Você pode bloquear anúncios no hélio ou fluido?
powder366

5

Se você realmente só quer / precisa "ficar em cima" funcionalidade para o seu Terminal.app janela (como eu), há uma Quake / Guake de estilo viseira suspensa, SIMBL plug-in disponível que suporta a ser preso para o primeiro plano; TotalTerminal .

Portanto, é possível, apesar do equívoco comum de que não é.

No MacOS 10.11 (El Capitan) , para instalar / executar o TotalTerminal , pode ser necessário desativar a  Proteção de Integridade do Sistema :

csrutil enable --without debug

Já não é de código aberto, mas a última implementação de código aberto ainda está disponível no GitHub . Portanto, se você quiser, pode investigar exatamente como isso é alcançado. Enviei um e-mail ao desenvolvedor para perguntar, mas já faz tanto tempo que eles trabalharam nele que não podiam (ou não queriam?) Realmente me dizer.


O TotalTerminal não é mais mantido atualmente. Acabei de mudar para iTerm para obter o mesmo comportamento: apple.stackexchange.com/questions/48796/...
André Morujão

É isso mesmo, eu não sugeriria usá-lo. Mas se alguém estiver motivado para implementar sua própria solução, pode valer a pena procurar o código-fonte vinculado.
vozes

Para terminal flutuante, estou usando Helium com gotty. O gotty permite que você abra um terminal no navegador da web e o Helium é um navegador flutuante.
wesley6j

Você realmente, realmente, realmente, e eu realmente quero dizer realmente, precisa observar que você deve reativar o SIP depois de fazer o que documenta.
Pryftan

@Pryftan nah, SIP é para bichanos.
vozes

5

Acabei de desistir de mySIMBLE e à tona. O Fenêtre é um aplicativo pago com uma versão lite gratuita que funciona muito bem.

Eu o uso para reproduzir vídeos na janela enquanto trabalho ou para manter as instruções on-line em cima. Não sabe para que deseja usá-lo?


3

Há um aplicativo gratuito chamado Key Codes na Mac App Store que, até onde eu sei, fica no topo de todas as outras janelas. Além dos itens de menu, fica no topo de todos os outros aplicativos, incluindo o Terminal e a barra de URL do Safari.


11
Dica brilhante Seamus se a operação precisar especificamente desse aplicativo específico para permanecer no topo. Agora, se, hipoteticamente falando, é claro, ele quer que um aplicativo diferente fique no topo, ou talvez até poucos, então talvez não seja tão bom?
mysomic

2
Obrigado! Funciona muito bem para o caso de uso "oclude essa coisa horrível".
precisa saber é

3

Não é realmente uma resposta, mas sim uma solução alternativa: você pode usar o Spectacle ou um aplicativo semelhante para configurar rapidamente um layout da área de trabalho que permite seguir a janela original.

É claro que isso não ajudará quando você estiver esperando alguém entrar em um bate-papo de suporte e, enquanto isso, decidir usar seu tempo para algo mais útil do que olhar para uma janela em branco - como trabalhar em outro desktop virtual :(

Pegue o espetáculo a partir daqui: https://www.spectacleapp.com


Bem-vindo ao Ask Different e reserve um tempo para postar uma resposta. Como melhoria sugerida, você deve fornecer links para os aplicativos que você faz referência na sua postagem. Isso contribui para uma melhor experiência do usuário. Para obter mais informações sobre como elaborar uma boa resposta, consulte: apple.stackexchange.com/help/how-to-answer
Allan

2
Olá Allan, muito obrigado por ajudar a tornar o AskDifferent um lugar limpo e arrumado, seguirei suas instruções. Felicidades.
I90rr

2

basta arrastar o seu terminal, sobre a janela do safari, depois de digitar o F3.

isso organiza automaticamente o terminal, verticalmente, no lado direito da janela do safari, por exemplo ... para que você possa fazer algum trabalho e ter acesso ao terminal enquanto estiver em outra janela ...


Nada acontece quando eu tento isso. A janela do terminal apenas retorna à posição original.
jmh


2

Se você é um desenvolvedor e seu SIP está desativado (csrutil), é possível alterar a levelpropriedade de NSWindowusar lldb. Depois de se conectar ao processo (por exemplo, App Store) no XCode, digite:

(lldb) e NSWindow *$window = [(NSArray *)[NSApp windows] firstObject]
(lldb) po $window
<NSWindow: 0x600000d64200>

(lldb) po [$window setLevel:3]
resume debugging

PS: Se o aplicativo tiver várias janelas, obtenha a correta usando o comando

(lldb) po [NSApp windows]

Para voltar, feche a janela ou use

(lldb) po [$window setLevel:0]

insira a descrição da imagem aqui insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.