Come posso inviare la finestra attualmente attiva sul retro?


15

Esiste una scorciatoia o simile per inviare la finestra attualmente attiva sul retro dello schermo mantenendola comunque aperta (in modo che finisca "sotto" tutte le altre finestre aperte)?


2
H invierà l'app corrente (incluse tutte le sue finestre) sul retro e la nasconderà fino a quando non la riporterai in primo piano (dal dock o tramite -TAB per riselezionare l'app). Nella maggior parte delle applicazioni, Shift-- ~ scorrerà le finestre dell'app corrente, che è probabilmente la più vicina a ciò che stai cercando.
Mic Channel

Lo so, non è quello che voglio.

1
Se vuoi inviarlo fino in fondo, quale finestra dovrebbe essere focalizzata? La finestra selezionata in precedenza?
sayzlim,

Risposte:


10

Risposta breve: No , Apple non fornisce un'API che ti consente di modificare un indice della finestra dell'applicazione tranne che portando una finestra in primo piano (indice 1). Non ci sono soluzioni eleganti . Ma:

Risposta lunga: , è possibile utilizzare AppleScript per spostare efficacemente una finestra sul retro di una pila di finestre compatibili con AppleScript raccogliendo un elenco di finestre, quindi spostando rapidamente ciascuna ( tranne la prima) in primo piano, lasciando la finestra scelta dietro.

Ecco un esempio di AppleScript che invia la finestra del Finder in primo piano sul retro.

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

Questo script si basa su una soluzione di JMichaelTX discussa sul forum KeyboardMaestro.

Il rimpasto è incredibilmente veloce, ma nell'Editor degli script è possibile controllare come funziona, lasciando "506" in basso e facendo apparire "502-505" in un modo che preservi il loro ordine:

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

Puoi associare questo AppleScript a un servizio o una scorciatoia da tastiera, sia a) inserendo lo script in un'azione Esegui AppleScript all'interno di un servizio Automator, sia b) utilizzando un launcher (Alfred, Keyboard Maestro ecc.). Per i dettagli sull'assegnazione della tastiera Applescript vedi: Come posso assegnare una scorciatoia da tastiera a un AppleScript che ho scritto?

Ciò può soddisfare le esigenze dei PO - non è chiaro dal post originale. Questa soluzione può anche essere estesa a più applicazioni compatibili con AppleScript. Tuttavia, non sono a conoscenza di una soluzione per farla funzionare in modo efficace con una combinazione di finestre gestibili da script e non, grazie al fatto che in AppleScript le System Eventsfinestre indirizzabili per applicazioni non gestibili da script non hanno un set indexverbo / proprietà. Esiste un'azione "AXRaise" per alcune finestre quando i dispositivi di assistenza / accessibilità sono attivi, ma anche questo non si applica a tutte le finestre. Esistono hack elaborati che comportano la camminata attraverso ogni applicazione attiva e mostrano / nascondono o minimizzano / ripristinano le finestre, ma sono un casino.

Discussioni correlate:


È possibile inviare la finestra di un'app sul retro, anziché la finestra di un'app specifica?
Di Liu,

Purtroppo, a partire dal Mojave, questo sembra non funzionare più.
Edward Falk,

Da Mojave, la mia comprensione è che il controllo del Finder con AppleScript ora ha bisogno delle autorizzazioni per funzionare (non testato). Se ricevi errori come errAEEventNotPermitted, allora ci sono soluzioni per aggiungere queste autorizzazioni - vedi discussioni correlate: forum.developer.apple.com/thread/106949
JeremyDouglass

2

La tua domanda non è molto chiara, ma se quello che vuoi è una scorciatoia per scorrere tutte le finestre dell'app attualmente attiva, dovresti essere in grado di farlo con la Command~scorciatoia da tastiera.

La ~chiave si trova di solito alla sinistra della 1chiave.

Solo per chiarire, ciò che fa la Command~scorciatoia da tastiera è scorrere tutte le finestre dell'app corrente in cui ti trovi. Ad esempio, se stai usando MS Word e hai tre documenti aperti, scorrerà tra questi tre documenti.

Tuttavia, la Command~scorciatoia da tastiera non scorre tra le schede. Ad esempio, se Safari è aperto con tre finestre e ogni finestra ha cinque schede aperte, l'utilizzo di questo collegamento consente di scorrere le tre finestre, non le singole schede.

Un'altra opzione che può ottenere ciò che desideri è la CommandMscorciatoia da tastiera. Tuttavia, ciò minimizza la finestra attualmente attiva sul Dock, quindi sospetto che non sia quello che desideri.

Se ho frainteso totalmente la tua domanda, ti preghiamo di chiarire.


Penso che questo sia il caso d'uso che l'OP vuole: dire che ho l'app di messaggi aperta davanti alla mia app di posta e voglio portare rapidamente l'app di posta in primo piano e inviare i messaggi in background, posso fare una tastiera collegamento e l'app per i messaggi sarà dietro la mia app di posta. Ho provato la scorciatoia da tastiera e questo non è stato possibile.
civetta,

Penso che intendi la chiave `. ~ è l'unico stampato quando si tiene premuto Maiusc e `viene premuto
Crowder
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.