Qualche modo carino e stabile per mantenere una finestra "Sempre in primo piano" sul Mac?


82

Sto cercando un modo stabile per mantenere qualsiasi finestra "sempre in primo piano" su OSX.

A galla , un'app che richiede SIMBL / easySIMBL, che a quanto pare non è molto stabile.

Ci sono soluzioni migliori? In realtà è sorprendente che non esiste un modo nativo per implementarlo.


2
L'HIG di OSX non lo consente e quindi non è mai stato programmato da nessuna parte nel sistema di finestre. Di solito significa che stai cercando di risolvere un problema nel modo sbagliato, o un'app che usi è scritta male e non fa quello che deve fare. Le soluzioni effettive richiedono una spiegazione migliore del problema o un programmatore per risolvere l'app.
John Keates,

2
Consentire all'utente di impostare la propria finestra preferita in modo che si trovi sempre in primo piano rispetto ad altre finestre potrebbe causare comportamenti indesiderati e imprevisti. Lo screen saver è anche solo una finestra: vuoi galleggiare sopra? Che dire degli avvisi importanti? Cosa succede se due app richiedono di essere sempre in primo piano? In teoria, potresti fare un utente mettendo in primo piano la tua app a schermo intero e disconnettendoti. Questo è il motivo per cui non esiste una proprietà "sempre in primo piano" in Cocoa. Si può solo specificare un indice Z relativo (e Apple esorta a non farlo). Le opzioni sono essenzialmente ricodificare l'app o utilizzare SIMBL.
JJ,

Stai cercando di farlo per qualsiasi applicazione in Mac OS? In tal caso, vuoi che abbia sempre lo stato attivo (ovvero la pressione dei tasti e il clic del mouse) o vuoi che la finestra di un'app "fluttui sopra" tutte le altre, ma NON sia la finestra attiva?
Kenjikato,

7
FWIW Fedora lo ha sempre permesso (dalla metà degli anni '90 in forma RH) e non ho mai avuto problemi di natura "indesiderata". Semplicemente non è in OSX quando potrebbe essere inserito.
nerak99

1
John Keates - Sfortunatamente non sai di cosa stai parlando. Xcode ha fatto proprio questo comportamento con il suo simulatore, tenendolo di fronte a tutte le altre finestre, e questo comportamento è esistito per molti anni fino a quando non lo hanno rimosso definitivamente in Xcode 9.
Logicsaurus Rex,

Risposte:


25

Noterò che il simulatore iOS ha / aveva l'opzione Stay in Front. Funzionalità estremamente utile e dimostra che esistono modi supportati e sanzionati da Apple per raggiungere questo comportamento.

Potrebbe valere la pena aprire un radar, soprattutto per l'aggiunta al Terminale.

Puoi duplicare il mio radar :

ID errore 27430873: Aggiungi l'opzione "Resta davanti" alle finestre del Terminale.

Rimani in primo piano in iOS Simulator

Sfortunatamente, Xcode 9 ha rimosso questa funzione nel simulatore iOS. Per favore, duplica anche il mio rapporto sui bug di Apple per riportarlo indietro!

ID bug 32852924: Xcode 9 iOS Simulator manca l'opzione "Resta davanti"

L'app di Activity Monitor di Apple ha allo stesso modo l'opzione Keep CPU Windows on Topche fa galleggiare i piccoli grafici della CPU sopra le finestre di tutte le altre app:

Activity Monitor> Finestra> Mantieni le CPU CPU in alto


1
Cos'è questo simulatore iOS? È come un emulatore? Ne ho cercato uno.
esprime il

@ tjt263 il simulatore iOS è in bundle con Xcode e principalmente utilizzato per sviluppare app iOS
pkamb

1
Oh va bene. Cos'è un radar? Ti piace una segnalazione di bug?
esprime il

@ tjt263 sì, bugreport.apple.com
pkamb

3
Questa funzionalità è mostrata anche nel 'Activity Monitor' preinstallato - se vai nel menu 'Finestra', vedrai un'opzione per 'Mantieni Windows della CPU in alto' - quindi sembra davvero che ci sia una Apple ufficiale modo per farlo. (Questo è quello che vedo in 10.13.2)
Keybits il

16

Se stai cercando di farlo solo per dire una finestra del browser Internet puoi guardare l' app Helium open source . È gratuito e puoi anche scaricare il sorgente e compilare la tua versione se lo desideri.

Fondamentalmente è un browser Internet che galleggia sempre sopra tutte le altre finestre. App Helium

MODIFICARE:

C'è anche una nuova app dell'App Store di Apple Mac chiamata Fluid Browser che farà la stessa cosa. Costa un paio di $ s, ma funziona in modo eccellente e ha alcune funzionalità in più rispetto a Helium (al 6/7/2016). Quindi ora hai due diverse app tra cui scegliere.

Browser fluido


Non mi è piaciuta l'esperienza con Fluid Browser. Sì, ha alcune funzionalità in più ma è piuttosto buggy e ingombrante. L'elio è molto leggero ma fa il suo lavoro.
Winterflags

1
Puoi bloccare la pubblicità in elio o fluido?
powder366,

5

Se vuoi davvero / hai bisogno della funzionalità "rimani in cima" per la tua finestra Terminal.app (come me), c'è una visiera a discesa in stile Quake / Guake , plug-in SIMBL disponibile che supporta l'essere bloccati in primo piano; TotalTerminal .

Quindi è possibile, nonostante il malinteso comune che non lo sia.

A partire da MacOS 10.11 (El Capitan) , per installare / eseguire TotalTerminal , potrebbe essere necessario disabilitare  System Integrity Protection :

csrutil enable --without debug

Non è più open source, ma l'ultima implementazione open source è ancora disponibile su GitHub . Quindi, se sei propenso a, potresti indagare esattamente su come è stato realizzato. Ho mandato un'email allo sviluppatore per chiedere, ma è passato così tanto tempo da quando ci hanno lavorato, non potevano (o non avrebbero voluto) dirmelo davvero.


Oggi TotalTerminal non viene più mantenuto. Ho finito per passare a iTerm per ottenere lo stesso comportamento: apple.stackexchange.com/questions/48796/…
André

Esatto, non consiglierei di usarlo. Ma se qualcuno è motivato a implementare la propria soluzione, potrebbe valere la pena esplorare il codice sorgente collegato.
esprime il

Per terminale galleggiante, sto usando Helium con gotty. gotty ti consente di aprire un terminale nel browser Web e Helium è un browser Web mobile.
wesley6j,

Davvero, davvero, e davvero intendo davvero, è necessario notare che è necessario riattivare SIP dopo aver fatto ciò che si documenta.
Pryftan,

@Pryftan nah, SIP è per le fighe.
esprime il

5

Ho appena rinunciato a mySIMBLE e a galla. Fenêtre è un'app a pagamento con una versione lite gratuita che funziona davvero bene.

Lo uso per riprodurre video finestra in finestra mentre lavoro o per mantenere le istruzioni online in cima. Non sei sicuro di cosa vuoi usarlo?


3

Esiste un'app gratuita chiamata Key Codes nel Mac App Store che, per quanto ne so, resta in cima a tutte le altre finestre. Oltre alle voci di menu, rimane in cima a tutte le altre app, incluso il Terminale e la barra degli URL di Safari.


11
Suggerimento brillante Seamus se l'operazione ha bisogno specificamente di quella particolare app per rimanere al top. Ora, se, ipoteticamente parlando, ovviamente, vuole che un'app diversa rimanga in primo piano, o forse anche poche diverse, allora forse non così sterile?
mysomic

2
Grazie! Funziona benissimo per il caso d'uso "per favore occludi questa cosa orribile".
ecmanaut

3

Non proprio una risposta, ma piuttosto una soluzione: puoi usare Spectacle o un'app simile per configurare rapidamente un layout desktop che ti consenta di seguire la finestra originale.

Ovviamente questo non aiuta quando aspetti che qualcun altro si unisca a una chat di supporto e nel frattempo decida di usare il tuo tempo per qualcosa di più utile che fissare una finestra vuota, come lavorare su un altro desktop virtuale :(

Prendi lo spettacolo da qui: https://www.spectacleapp.com


Benvenuto in Ask Different e prenditi il ​​tempo per pubblicare una risposta. Come miglioramento suggerito, è necessario fornire collegamenti alle applicazioni a cui si fa riferimento nel post. Offre un'esperienza utente migliore. Per ulteriori informazioni sulla creazione di una buona risposta, consultare: apple.stackexchange.com/help/how-to-answer
Allan,

2
Ciao Allan, grazie mille per aver contribuito a rendere AskDifferent un posto pulito e ordinato, seguirò le tue istruzioni. Saluti.
i90rr,

2

trascina il tuo terminale, sopra la finestra del safari, dopo aver digitato F3.

questo sistema automaticamente il terminale, verticalmente, sul lato destro della finestra del safari, ad esempio ... in modo da poter fare un po 'di lavoro e avere accesso al terminale, mentre in un'altra finestra ...


Non succede nulla quando provo questo. La finestra del terminale torna alla posizione originale.
Jmh


2

Se sei uno sviluppatore e il tuo SIP è disabilitato (csrutil), puoi cambiare la levelproprietà NSWindowdell'utilizzo lldb. Una volta collegato al processo (ad es. App Store) in XCode basta digitare:

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

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

PS: se l'app ha più finestre procurati quella corretta usando il comando

(lldb) po [NSApp windows]

Per tornare indietro basta chiudere la finestra o utilizzare

(lldb) po [$window setLevel:0]

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.