Apakah mungkin untuk mengubah lebar kolom Tampilan Daftar Penelusuran di AppleScript?

4

Saya ingin membuat AppleScript yang membuka lima folder yang telah ditentukan dalam lima tab yang berbeda dalam satu jendela Finder baru dengan batas yang telah ditentukan dan kemudian menggeser tab aktif dari jendela ini ke tab satu. Saya juga ingin nama file lengkap (dari file di semua lima folder) yang akan ditampilkan tanpa pemotongan. Saya secara eksklusif menggunakan Tampilan Daftar di Finder.

Bisakah kondisi terakhir ini diselesaikan dalam AppleScript atau otomatis dengan cara apa pun?

Lebar kolom "Nama" default terlalu sempit; nama file lengkap file saya selalu terpotong. Untuk memperbaikinya, setiap kali saya membuka folder apa pun, saya harus menyeret pemisah "Nama" secara dramatis ke kanan atau klik dua kali pada pemisah itu sendiri (yang secara otomatis menyesuaikan lebar untuk menampilkan entri terlama secara penuh).


Pemahaman saya adalah bahwa tidak mungkin untuk mengubah lebar standar kolom "Nama" Tampilan Daftar pada Mac. Kalau tidak, saya cukup mengatur lebar default kolom ini menjadi lebih besar dan lebar ini akan ditetapkan sebagai default di semua folder.

  • Menahan option ⌥ tombol sambil menyeret pemisah kolom (untuk menyimpan lebarnya) tidak membuahkan hasil.

  • Saya mencoba mengatur ukuran kolom yang lebih luas sebagai default dengan menekan command ⌘ + Jin Finder & memilih "Use as Defaults." Tapi, ini tidak berhasil.

  • Saya mencoba meningkatkan setiap nilai lebar "Nama" di file com.apple.finder.plist saya dan kemudian menyimpan kembali file tersebut, seperti yang dijelaskan dalam komentar terbaru oleh pengguna azeotropo (dari 2012) dari halaman web ini (dari 2003) . Namun, lebar "Nama" yang lama dan sempit tetap ada.

OS X El Capitan, versi 10.11.6.

bola rubik
sumber
Sejauh yang saya tahu, itu bisa otomatis dengan menyeret mouse;) tidak yakin apakah itu yang Anda inginkan.
Skeleton Bow
Ya, saya sudah mencoba mencari solusi AppleScript yang melibatkan klik mouse. Namun, saya tidak dapat membuatnya berfungsi dengan baik karena klik mouse berbasis kode sangat rewel dan tidak dapat diandalkan.
Bola rubik

Jawaban:

2

Jawaban untuk subjek pertanyaan Anda "Apakah mungkin untuk mengubah lebar kolom Tampilan Daftar Penelusuran di AppleScript?" adalah YA. Jawaban untuk pertanyaan Anda tentang menggunakan AppleScript untuk mengatur lebar kolom nama menjadi cukup besar untuk menampilkan nama-nama tanpa memotong juga ya. Saya tidak yakin bagaimana menangani tab di jendela Finder tetapi kedengarannya seolah-olah Anda sudah memiliki skrip yang membahas tab.

Satu kejutan besar (bagi saya) adalah bahwa saya harus menutup dan membuka kembali jendela Finder untuk melihat perubahannya.

Berikut adalah skrip yang beroperasi di jendela Finder paling depan. Lebar kolom "Nama" diatur menjadi 7,5 * (jumlah karakter dalam nama terpanjang di jendela). Ini bukan lebar yang sempurna tetapi itu bekerja untuk saya selama saya menggunakan teks 12-point di Finder. Kami mengatur lebar kolom ke jumlah piksel tertentu, dan setiap karakter mengambil jumlah piksel yang berbeda karena Finder tidak menggunakan font dengan lebar tetap, jadi kami tidak dapat benar ketika mengatur lebar. Tetapi 7,5 * jumlah karakter dalam nama terpanjang tampaknya bekerja dengan cukup baik. Anda dapat menyesuaikannya tentu saja.

tell application "Finder"
    activate
    set the_window to window 1
    set current view of the_window to list view
    set the_options to list view options of the_window
    set the_name_column to first column of the_options whose name is name column
    set the_items to name of every item of the_window
    -- get the longest name (count of characters)
    set longest_name to 0
    repeat with I from 1 to count of the_items
        --check for invisible files, which we don't need to consider
        if character 1 of item I of the_items is not "." then
            if (count of characters of item I of the_items) > longest_name then
                set longest_name to count of characters of item I of the_items
            end if
        end if
    end repeat
    -- this only works if the text size is 12. The multiplier 7.5 could be changed
    -- if the text size is something else. 
    set desired_width to longest_name * 7.5
    set width of the_name_column to desired_width
    -- we have to close and reopen the window in order to see any changes.
    -- there might be a "refresh window" command but I don't know it.
    set the_target to target of the_window
    close the_target
    open the_target
end tell
Christian Boyce
sumber
Saya menghargai jawabannya, tetapi tampaknya set width of columntidak melakukan apa-apa pada El Capitan (10.11.6).
Bola rubik
Saya akan melihat 10.11.6 dan kembali kepada Anda.
Christian Boyce
Saya menguji skrip pada Mac dengan 10.11.6 dan berhasil bagi saya. Coba buat kolom Nama sangat lebar (jauh lebih lebar dari yang Anda butuhkan) lalu jalankan skrip saya. Anda harus melihat jendela tertutup, lalu buka lagi dengan kolom Nama yang diubah ukurannya. Seharusnya jelas bahwa lebarnya telah berubah.
Christian Boyce
Berikut adalah gif yang menunjukkan apa yang terjadi ketika saya mengikuti saran Anda; lebar kolom masih tidak melebar sama sekali.
Bola rubik
Gif Anda sangat membantu - terima kasih. Saya pikir dalam contoh Anda, Anda memiliki item dengan nama panjang sehingga skrip saya rusak. Mungkin ada batas seberapa lebar kolom dapat diperoleh sehubungan dengan total lebar jendela. Cobalah dengan kasing yang tidak terlalu ekstrem dan Anda akan melihatnya berfungsi. Kemudian, di antara kami, kami harus bisa menangani kasus-kasus ekstrem.
Christian Boyce
1

Kode berikut ini akan mengatur kolom nama, dalam tampilan daftar, agar sesuai dengan ukuran nama file terpanjang di setiap jendela yang terbuka atau setiap tab di setiap jendela di aplikasi Finder. Jika tidak ada jendela Finder terbuka, itu akan membuka jendela Finder baru dalam tampilan daftar dan mengatur lebar kolom nama dengan tepat.

Kode ini membutuhkan utilitas pihak ketiga, Cliclick .

“Cliclick” adalah kependekan dari “ C ommand- L ine I nterface Click ”. Ini adalah aplikasi Shell / Terminal kecil yang akan meniru klik mouse atau serangkaian klik mouse (termasuk klik dua kali dan klik kontrol) pada koordinat layar yang berubah-ubah. Selain itu, ini memungkinkan Anda memindahkan mouse, mendapatkan koordinat mouse saat ini, tekan tombol pengubah dll.

Ini gratis untuk diunduh tetapi donationware , dan mudah dipasang.

Pada sistem saya, saya memiliki cliclickdi direktori berikut: /usr/local/bin/. Karena lokasi ini, dalam kode AppleScript saya dan di aplikasi Terminal, saya perlu menggunakan path lengkap cliclickuntuk memanggil perintah. Sebagai contoh:  do shell script "/usr/local/bin/cliclick rc:." Di AppleScript memberitahu cliclickklik kanan.

Ini berfungsi untuk saya menggunakan versi terbaru dari macOS Mojave.

The xdan ykoordinat yang digunakan dalam script berikut ini ditetapkan sementara resolusi layar saya di 1280 x 800.

global thisWindow

tell application "Finder"
    activate
    if not (exists of Finder window 1) then
        make new Finder window to path to documents folder
    end if
    set theWindows to name of windows
    repeat with i from 1 to count of theWindows
        set thisWindow to item i of theWindows
        set index of Finder window thisWindow to 1
        tell its Finder window thisWindow
            set currentView to current view
            if currentView is not list view then
                set current view to list view
            end if
        end tell
        my setColumnWidth()
    end repeat
end tell

on setColumnWidth()
    tell application "System Events"
        repeat while not (exists of scroll area 1 of splitter group 1 of splitter group 1 ¬
            of window thisWindow of application process "Finder")
            delay 0.1
        end repeat
        set frameBounds to value of attribute "AXFrame" of UI element 2 of row 2 ¬
            of outline 1 of scroll area 1 of splitter group 1 of splitter group 1 ¬
            of window thisWindow of application process "Finder"
    end tell

    set x to (item 1 of frameBounds) - 1
    set y to (item 2 of frameBounds) - 13

    do shell script "/usr/local/bin/cliclick dc:" & x & "," & y -- Double Click At Coordinates
end setColumnWidth


masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

wch1zpink
sumber
Menarik tetapi dalam pengujian saya di bawah macOS High Sierra gagal beberapa kali dalam pengujian, cukup bahwa saya tidak bisa memberi +1. BTW saya akan menambahkan -r opsi ke cliclick perintah untuk "Kembalikan lokasi mouse awal saat selesai".
user3439894
Menggunakan macOS High Sierra, Hanya ingin tahu persis di mana skrip semakin macet. Dalam versi skrip saya, saya mengaturnya untuk mengembalikan lokasi mouse asli. Saya menghilangkannya karena sepertinya tidak berguna karena saya menjalankannya melalui menu layanan ... Yang mana akan menjadi lokasi mouse terakhir saya akan segera membuat pembaruan
wch1zpink
Meskipun itu akan bekerja pada jendela Finder, namun kadang-kadang sebenarnya mengklik pada jendela aplikasi yang berbeda dengan konsekuensi yang tidak diinginkan. Terlambat malam ini bagi saya untuk mencoba dan men-debug-nya, tetapi akan besok jika saya mendapat kesempatan.
user3439894
Saya benar-benar tidak punya waktu untuk men-debug ini, saya bermain dengan itu lagi dan terus mendapatkan hasil yang tidak diinginkan dengan klik sebenarnya tidak mengklik jendela Finder tetapi jendela aplikasi lain dan juga ketika saya memiliki lebih dari satu jendela Finder terbuka dan pada Desktop yang berbeda, sementara salah satu jendela memperluas kolom nama, yang ada di Desktop saat ini, ia kemudian beralih ke Desktop lain. Kenapa, siapa yang tahu !? Intinya adalah, sementara itu bekerja untuk Anda di lingkungan Anda, itu terlalu buggy di lingkungan saya dan saya serius mempertimbangkan untuk memilih ini karena itu.
user3439894