AppleScript Fun: Safari'nin indirme klasörünü otomatik olarak değiştirme

Bir bilgisayardaki çeşitli programlar ve hizmetler size kolaylık sağlamak içindir, ancak sistemdeki çeşitli araçları ve programları kullanarak tekrarlayan işlemler yapmanız gerekebilir. Bu durumlarda, komut dosyası araçları kullanımı son derece yararlı olabilir. Programlamanın aksine, komut dosyası, bir dizi geçerli araç ve yardımcı programı aldığınızda ve komutlarla etkileşimlerini otomatikleştirdiğinizde gerçekleşir. Örneğin, Javascript ile bir tarayıcıya HTML içeriğini oluşturma şeklini değiştirmesini söyleyebilir veya Automator ile Finder'a dosyaları belirli bir şekilde düzenlemesini söyleyebilirsiniz.

Son zamanlarda CNET'teki bir meslektaşım bana, Mac'in harici bir sürücünün varlığına bağlı olarak Safari'nin indirme klasörünü otomatik olarak değiştirmesini istedi. Buradaki fikir, Safari’nin varsayılan İndirilenler dizinine indirilmiş dosyaları yerleştirmesi, ancak belirli bir harici sürücüyü ("İndirilenler" adı verilen bir thumbdrive gibi) taktığınızda, sistemin Safari’nin indirme dizinini otomatik olarak harici sürücüye değiştirmesini sağlamak olacaktır., manuel olarak değiştirmeye devam etmek hantal olabilir.

Ne yazık ki Safari'nin kendisi bunu yapabilme yeteneğine sahip değil, ancak OS X'in bunun için kullanılabilecek kaynakları ve Safari uygulamasını ve bazı OS X servislerini yönetmek için AppleScript kullanarak komut dosyası kullanması, kullanmayan bazı eylemleri gerçekleştirmek için Shell komut dosyası çalıştırması uygulama arayüzü ve sadece bir sürücü takıldığında komut dosyalarını çalıştırmak için sistem başlatıcısı.

Başlangıçta bu problemi düşünürken, çözüm oldukça basit görünebilir ve aşağıdaki senaryo iyi bir cevap gibi görünebilir:

  1. İndirilenler klasörünü "NAME" ile belirtilen konuma değiştirmek için "defaultults com.apple.Safari DownloadFolder NAME" komutunu çalıştırmak için bir komut dosyası ayarlayın.
  2. Bu komut dosyasını yalnızca belirli bir sürücü takılıyken sistem başlatıcısını kullanarak çalıştırın.
  3. Sürücü artık takılı olmadığında, farklı bir konuma işaret eden benzer bir komutla bunu tekrarlayın.

Bu temel yaklaşım makul görünse de, birkaç nedenden dolayı işe yaramayacaktır. Birincisi, Safari bir kez çalıştıktan sonra tercihlerini değiştirmenin tek yolu programın kendisidir. Program yüklendiğinde, tercihleri ​​RAM'e okur ve orada ayarlarını yönetir, bu nedenle tercih dosyasını TextEdit veya "defaultults" komutunu kullanarak düzenlerseniz yukarıda belirtilenleri etkilemez. Ayrıca, Safari, çıkarken tercihlerini diske geri yazar ve bu da değiştirilen ayarların üzerine yazar.

Ek olarak, bu yaklaşım, sistemin belirli bir sürücünün varlığını izleyecek ve mevcut sürücü olduğunda komut dosyasını tetikleyecek mevcut kaynaklara sahip olduğunu varsayar, bu durum böyle değildir. Sistem, sürücülerin takılı olup olmadığını izleyebilir, ancak sürücünün ne zaman takıldığını kontrol etmek için bir sürücü adı belirlemek için ek komut dosyası gerekebilir.

Son olarak, dikkate alınması gereken birkaç nüans vardır. Örneğin, Safari'nin çalıştırma sırasındaki tercihlerini değiştirmek için kullanılması gerektiğinden, bunu yapmak onu ilk uygulama olmaya zorlayacaktır; komut dosyası ilk önce ilk uygulamayı algılamayınca ve Safari’de yapılan değişiklikler geri yüklenirse tamamlandı Ek olarak, herhangi bir rasgele sürücü eklendiğinde betiğin aktif programı çalıştırıp değiştirmesini istemezsiniz.

Bunlar nedeniyle, betiğin aşağıdaki beş düşünceyi içermesi gerekir:

  1. Yalnızca yeni bir sürücü takıldığında başlat
  2. Yalnızca "İndirilenler" (veya istediğiniz herhangi bir adı) adlı bir sürücü takılıysa ayarları değiştirin
  3. Safari'nin şu anda başlatılıp başlatılmadığına ilişkin ayarları değiştirme yaklaşımında şartlı olun
  4. Yalnızca istediğiniz yeni bir indirme konumu varsa ayarları değiştirin
  5. Komut dosyasının Safari'ye geçmesi gerekiyorsa, en önde gelen uygulamayı geri yükleme olanağına sahip olun

Bu seçenekleri uygulamak için iki komut dosyası oluşturulması gerekir. Birincisi, yeni bir sürücünün takılıp takılmadığını görmek için sistemin sürücü montaj noktalarını izlemek için kullanılacak sistem başlatıcısı "launchd" içindir. Öyleyse, sürücü adını kontrol edecek komut dosyasını başlatacak, Safari'nin çalışıp çalışmadığını kontrol edecek ve ardından Safari'nin ayarlarını yalnızca harici sürücüyü seçmekten farklıysa ancak yoksa, varsayılan Yüklemeler klasörünü kullanacaksa değiştirecektir. .

Script 1: Sürücüleri izlemek için LaunchAgent

Yapılması gereken ilk komut dosyası, Başlat Aracısı adı verilen sistem başlatıcısı içindir. Oluşturmak için Terminal'i açın ve aşağıdaki komutu yazın (basitlik için kopyalayıp yapıştırın):

~ / Library / LaunchAgents / local.ChangeSafariDownload.plist öğesine dokunun

Bu yapıldığında, aşağıdaki komutu çalıştırarak TextEdit'te açın:

open -e ~ / Library / LaunchAgents / local.ChangeSafariDownload.plist

Artık boş bir TextEdit belgeniz açık olmalıdır, bu nedenle aşağıdaki metni kopyalayın ve belgeyi kaydedin, ancak şimdilik açık tutun. Komut dosyasının konumunu değiştirmek için "FILEPATH" bölümünü değiştirmeniz gerekir:

 Yerel etiketleyinChangeSafariDownloads QueueDirectories WatchPaths / Volumes Programı / usr / bin / osascript ProgramArguments osascript FILEPATH 

Giriş yaptığınızda, bu komut dosyası sistem başlatıcısı işlemine yüklenir ve Safari'nin tercihlerini düzenlemek için ana komut dosyasını çalıştırmak için şartlar ve talimatlar verir. Bu durumda, başlatıcıya, bu dizinde herhangi bir değişiklik olup olmadığını görmek için dizini / Birimleri izlemesi söylenecektir. Bu, dosya sistemlerinin monte edildiği yer olduğundan, ne zaman bir sürücü takılır veya sistemden çıkarılırsa, ana komut dosyasının çalışması tetiklenir.

Script 2: Ayarları değiştirmek için AppleScript

İkinci komut dosyası, sürücü adlarının kontrol edilmesi, Safari'nin açık olup olmadığı ve tercihlerin değiştirilmesi için diğer koşullar dahil olmak üzere tüm eylemleri gerçekleştirecek ana karakterdir. Oluşturmak için / Applications / Utilities / klasörüne gidin ve AppleScript Editor programını açın. Boş bir editör penceresi açılacak ve aşağıdaki betiği kopyalayıp yapıştığında:

- Burada indirme klasörü olarak kullanılacak alternatif sürücü adını ayarlayın.

dlFolder işlevini convertHome olarak ayarlayın ("/ Volumes / Downloads")

uygulama "Bulucu" söyle

eğer varsa [ POSIX dosyası dlFolder]

- Hiçbir şey yapmayın ve klasörü kullanın

Başka

- dlFolder'ı varsayılan giriş dizinine ayarlayın

dlFolder işlevini (POSIX yolu ( metin olarak giriş klasörünün yolu )) & "İndirilenler" olarak ayarlayın.

eğer bitiyorsa

son söyle

- safari pist'ten güncel yolu al

currentpath değerini convertHome olarak ayarlayın ("defaultults com.apple.Safari DownloadsPath dosyasını okuyun")

- sadece geçerli ayar giriş yolu ile eşleşmezse yolu değiştir (değiştirilecek bir şey varsa)

eğer ( metin olarak currentpath) , ( metin olarak dlFolder) ' a eşit değilse

- Safari çalışıyorsa, ayarları Safari'nin tercihleriyle değiştirin

appIsRunning ("Safari") ise

- komut dosyası tamamlandığında geri yüklenecek en öndeki uygulamayı belirlemek

frontApp'ı, en öndeki uygulama yoluna metin olarak ayarla

- indirme klasörü yolunu panoya kopyala

panoyu dlFolder olarak metin olarak ayarla

"Safari" uygulamasını etkinleştir

"Safari" uygulama sürecini anlatmak

- tercihleri ​​açın veya öne getirin (pencere 1)

{command down} ile tuşa basılması ", "

gecikme 1 - vitrindeki duraklamalar bir hataya neden olabilir, bu yüzden bir saniye bekleriz

- Genel sekmesine değiştirin

pencerenin 1 araç çubuğunun "Genel" düğmesine tıklayın 1

- İndirme konumunu Diğer olarak değiştir

"Genel" penceresinin 1. grubunun 1. grubundaki "İndirilen dosyaları şuna kaydet:"

tık

menü 1 - "Diğer ..." menü öğelerini tıklayın - üç nokta üç nokta değil üç nokta

son söyle

- "Klasöre git" iletişim kutusunu açın

{shift down, command down} ile "g" tuşlarına basın

- Klasör yolunu konum alanına yapıştırın

"Klasöre Git" penceresini söyle

{command down} ile "v" tuşlarına basılması

tuşa basma dönüşü

son söyle

"Genel" penceresinin 1. sayfasının "Seç" düğmesine tıklayın

- tercihleri ​​kapat

{command down} ile "w" tuşlarına basılması

son söyle

- iş tamamlandıktan sonra en öndeki uygulamayı geri yükle

uygulama frontApp'ı etkinleştirmesini söyle

Başka

- Safari çalışmıyorsa, tercihleri ​​değiştirmek için defaults komutunu kullanın.

kabuk betiğini yapın ("varsayılanlar com.apple.Safari DownloadsPath yazın" ve dlFolder)

eğer bitiyorsa

eğer bitiyorsa

- Ana yol referanslarını tam yollara dönüştürme işlevi

convertHome üzerinde (currentpath)

currentpath "~ /" içeriyorsa

oldDelimiter'i AppleScript'in metin öğesi sınırlayıcılarına ayarla

AppleScript'in metin öğesi sınırlayıcılarını {"~ /"} olarak ayarlayın

textPath'i currentpath'in her metin öğesine ayarlayın

AppleScript'in metin öğesi sınırlayıcılarını oldDelimiter olarak ayarla

currentpath öğesini , textPath içindeki POSIX yoluna ( metin olarak giriş klasörüne giden yol ) ve madde 2'ye ayarlayın

eğer bitiyorsa

akım yolunu döndür

dönüştürmek

- "appName" uygulamasının çalışıp çalışmadığını kontrol etme işlevi (bu durumda, Safari için kullanılır)

appIsRunning üzerinde (appName)

"Sistem Olayları" uygulamasına söyle ( işlemlerin adı) appName içeriyor

appIsRunning'ı sonlandır

Komut dosyasının metni başlangıçta mor renkte olacaktır, ancak Derleme araç çubuğu düğmesini tıkladığınızda veya komut dosyasını kaydettiğinizde, burada gördüğünüze benzer şekilde renklendirilir. Komut dosyasını "ChangeDownloads" gibi bir adla istediğiniz bir yere kaydedin (Belgeler dizininizdeki veya "Kullanıcı kitaplığınızın içindeki" Komut Dosyaları "klasörüne yerleştirebilirsiniz) ve AppleScript düzenleyicisini kapatın.

Şimdi yeni bir Terminal penceresi açın ve yeni oluşturulan komut dosyasını sürükleyin. Bunu yaptığınızda, betiğin tam dosya yolu pencereye girecek, "/Users/username/Documents/ChangeDownloads.scpt." Fareyi kullanarak tüm dosya yolunu seçin, panoya kopyalamak için Command-C tuşlarına basın ve TextEdit'te Komut Dosyası 1'e geri dönün ve "FILEPATH" girişini kopyalanan metninizle değiştirin. Sonra dokümanı kaydedip kapatın.

Bu noktada scriptlerin hepsi ayarlandı. Başlatma aracısı komut dosyasını (Komut Dosyası 1) yüklemek için oturumu kapatıp tekrar oturum açın ve şimdi "İndirilenler" adlı bir sürücüyü taktığınızda, Safari ayarları otomatik olarak değiştirilir, böylece bu sürücüyü indirme klasörü olarak kullanır. Daha sonra sürücünün bağlantısını keserseniz ayar geri alınacaktır. Aynı şey, "İndirilenler" olarak adlandırılan bir sürücüyü yeniden adlandırırsanız veya adını "İndirilenler" den başka bir şeye değiştirirseniz de olur.

Bu betiğin çalışmasına rağmen, Safari 5.1 çalıştıran yalnızca OS X 10.6 "Snow Leopard" ve OS X 10.7 "Lion" üzerinde test edildiğini unutmayın. ancak, en az Safari 5.0 çalıştıran diğer sistem yapılandırmalarında gayet iyi çalışması gerekir. Ana gereksinimler, komut dosyası Safari'nin tercihlerini programın içinden yönetirken, çeşitli menüleri açmak ve ekrandaki çeşitli düğmeleri tıklatmak için düğme dizinlerini kullanır. Apple, gelecekte Safari'de tercihler organizasyonunu değiştirirse, betiğin bu kısmı, uygun düğmelere tekrar işaret edecek şekilde düzenlenene kadar çalışmaz. Ancak, şu an için uğraşmamız gereken bir sınırlama. Lion'da bunun için bir geçici çözüm, Safari'den çıkmak, tercihlerde değişiklik yapmak ve ardından arayüzü yeniden programlamak yerine programı yeniden başlatmak için Apple'ın Devam etme özelliğinden bir komut dosyasında yararlanmaktır.

Son olarak, artık bu betiği istemediğinize karar verirseniz, AppleScript dosyasını silerek ve ardından LaunchAgent dosyasını el ile kaldırarak veya Terminal'de aşağıdaki komutu çalıştırarak kaldırabilirsiniz. Bu yapıldığında, sadece çıkış yapıp tekrar giriş yapın ve ilk kareye dönersiniz:

rm ~ / Library / LaunchAgents / local.ChangeSafariDownload.plist


 

Yorumunuzu Bırakın