Bagaimana saya bisa mengirim jendela yang aktif ke belakang?

15

Apakah ada jalan pintas atau semacamnya untuk mengirim jendela yang sedang aktif ke bagian belakang layar sambil tetap membukanya (sehingga berakhir "di bawah" semua jendela terbuka lainnya)?

Tetsujin
sumber
2
H akan mengirim aplikasi saat ini (termasuk semua jendelanya) ke belakang dan menyembunyikannya sampai Anda membawanya kembali ke depan (dari dermaga atau dengan -TAB untuk memilih kembali aplikasi). Di sebagian besar aplikasi, Shift-- akan menggulir melalui jendela aplikasi saat ini, yang mungkin paling dekat dengan yang Anda cari.
Mic Channel
Saya tahu, bukan itu yang saya inginkan.
1
Jika Anda ingin mengirimnya ke belakang, jendela mana yang harus Anda fokuskan? Jendela yang dipilih sebelumnya?
sayzlim

Jawaban:

10

Jawaban singkat: Tidak , Apple tidak menyediakan API yang memungkinkan Anda untuk mengubah indeks jendela aplikasi kecuali dengan membawa jendela ke depan (indeks 1). Tidak ada solusi yang elegan . Tapi:

Jawaban panjang: Ya , Anda dapat menggunakan AppleScript untuk secara efektif memindahkan jendela ke belakang tumpukan jendela AppleScript dengan mengumpulkan daftar windows, kemudian dengan cepat memindahkan masing-masing ( kecuali yang paling depan) ke depan, meninggalkan jendela yang dipilih di belakang.

Berikut adalah contoh dari AppleScript yang mengirimkan Window Finder paling depan ke belakang.

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

Script ini didasarkan pada solusi oleh JMichaelTX yang dibahas di forum KeyboardMaestro.

Perombakan sangat cepat, tetapi di Script Editor Anda dapat memeriksa cara kerjanya, meninggalkan "506" di bagian bawah dan muncul "502-505" dengan cara yang menjaga pesanan mereka:

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

Anda dapat memetakan AppleScript ini ke layanan atau pintasan keyboard, baik dengan a) menempatkan skrip ke tindakan Run AppleScript di dalam layanan Automator, atau b) menggunakan peluncur (Alfred, Keyboard Maestro dll.). Untuk detail tentang penugasan keyboard Applescript, lihat: Bagaimana cara menetapkan pintasan keyboard ke AppleScript yang saya tulis?

Ini dapat memenuhi kebutuhan OP - tidak jelas dari pos aslinya. Solusi ini juga dapat diperluas ke beberapa aplikasi yang mendukung AppleScript. Namun, saya tidak mengetahui solusi untuk membuatnya bekerja secara efektif dengan campuran jendela skrip dan non-skrip, karena fakta bahwa di AppleScript, System Eventsjendela yang dapat dialamatkan untuk aplikasi yang tidak skrip tidak memiliki set indexkata kerja / properti. Ada tindakan "AXRaise" untuk beberapa jendela saat perangkat bantu / aksesibilitas diaktifkan, tetapi ini juga tidak berlaku untuk semua jendela. Retas rumit ada yang melibatkan berjalan melalui setiap aplikasi yang aktif dan menunjukkan / menyembunyikan atau meminimalkan / memulihkan jendela, tetapi mereka berantakan.

Diskusi terkait:

JeremyDouglass
sumber
Apakah mungkin untuk mengirim jendela aplikasi apa pun ke belakang, bukan ke jendela aplikasi tertentu?
Di Liu
Sayangnya, seperti Mojave, ini tampaknya tidak lagi berhasil.
Edward Falk
Sejak Mojave, pemahaman saya adalah bahwa mengendalikan Finder dengan AppleScript sekarang membutuhkan izin untuk dijalankan (belum diuji). Jika Anda mendapatkan kesalahan seperti errAEEventNotPermitted maka ada solusi untuk menambahkan izin ini - lihat diskusi terkait: forums.developer.apple.com/thread/106949
JeremyDouglass
2

Pertanyaan Anda tidak terlalu jelas, tetapi jika yang Anda inginkan adalah pintasan untuk menelusuri semua jendela aplikasi yang sedang aktif, Anda harus dapat melakukan ini dengan Command~pintasan keyboard.

The ~key biasanya terletak di sebelah kiri 1tombol.

Hanya untuk memperjelas, apa yang dilakukan Command~pintasan keyboard adalah menggilir semua jendela aplikasi saat ini. Misalnya, jika Anda menggunakan MS Word dan membuka tiga dokumen, itu akan menggilir ketiga dokumen tersebut.

Namun, Command~pintasan keyboard tidak melalui Tab. Misalnya, jika Anda memiliki Safari terbuka dengan tiga jendela dan setiap jendela memiliki lima tab terbuka, menggunakan pintasan ini akan menggilir ketiga jendela, bukan melalui masing-masing tab.

Opsi lain yang dapat mencapai apa yang Anda inginkan adalah CommandMpintasan keyboard. Namun ini meminimalkan jendela aktif ke Dock, jadi saya kira bukan itu yang Anda inginkan.

Jika saya salah memahami pertanyaan Anda, mohon jelaskan.

Monomeeth
sumber
Saya pikir ini adalah kasus penggunaan yang diinginkan OP: katakanlah saya memiliki aplikasi pesan terbuka di depan aplikasi email saya dan saya ingin cepat membawa aplikasi email ke latar depan dan mengirim pesan ke latar belakang, saya dapat melakukan keyboard pintasan dan aplikasi pesan akan berada di belakang aplikasi email saya. Saya mencoba pintasan keyboard Anda dan ini tidak berhasil.
owlswipe
Saya pikir Anda maksudkan `kunci. ~ adalah satu-satunya yang dicetak ketika Shift dipegang dan `ditekan
Crowder