Özel URL işleyicilerini OS X'te nasıl yapılandırabilirim?


64

Özel URL işleyicileri / özel protokol işleyicileri hakkında çevrimiçi olarak çok şey okudum:

Sisteme, belirli bir programın Info.plistdosyayla belirli bir şema / protokolü idare edebileceğini söyleyebildiğini anladım :

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>Local File</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>local</string>
        </array>
    </dict>
</array>
<key>NSUIElement</key>
<true/>

Ancak, aynı URL işleyicisini açabilecek birden fazla uygulama varsa, örneğin mailto:hangisini kullanmak istediğinizi belirtiyorsunuz ?

More Internet preference paneYazarın sitesinden artık erişilemeyecek gibi olan yardımcı programlara bazı referanslar vardı . Googling tarafından çevrimiçi buldum ama biraz titrek görünüyor - eski bir OSX için yazılmış gibi - belki Tiger.

Protokoller ve özel protokoller için URL işleyicisinin nasıl ayarlanacağı hakkında bilgi bulamadım. Sanırım plistdüzenleyebileceğim bir yerde bir dosya var - ya da belki Mountain Lion ile iyi çalışan daha yeni, daha iyi bir yardımcı program var?

Yanıtlar:


55

Aradığınız dosya ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist.

Adı verilen bir dizi tutar ve bir LSHandlerstanımlayan Sözlük çocuklar LSHandlerURLSchemebuna göre değiştirilebilir LSHandlerRole.

Bu dosyayı el ile düzenlemek yerine, size güzel bir Tercih Bölmesi veren RCDefaultApp uygulamasını da kullanabilirsiniz . MacOS 10.12 ve üstü için çalışmadığı söyleniyor, ancak macOS 10.14 altında çalıştığını doğrulayabiliyorum.

Bir alternatif SwiftDefaultApps .

Örneğin, işte SVN ve SSH:

… Ve RCDefaultApp'ta:


35
4 dakika 19 saniye? Ciddi anlamda?
Daniel Beck

2
Hızlı ve ayrıntılı cevap için teşekkürler. İyi görünüyor! Ancak soru - RCDefaultApp'ı daha önce denediğimi ve bununla ilgili bir sorun olduğunu düşünüyorum. Sizin için sorunsuz mu çalışıyordu?
cwd

@cwd Gerçekten sık kullanmayacağımı söylemeliyim. Super User'ın ekran görüntüleri için her şeyden çok daha fazla :) Dosya ilişkilerini ne zaman değiştirmem gerekiyorsa , Finder'da Bilgi Al… iletişim kutusunda bunu yapıyorum . Hiçbir zaman protokolü ve MIME işleyicilerini değiştirmem gerekmedi. Ama benim için yeterince kararlı görünüyordu.
slhck

Bu gerçek bir "uygulama" açmak gibi görünüyor. Bir terminal komutu kullanarak, vs. bazı özel işlemler yapmak istersem ne olur?
saat

1
@Nute Sadece kafamın tepesinden emin değilim. Belki de bir kabuk betiğini saran Automator ile oluşturulmuş bir uygulama?
slhck 11

14

Temmuz 2017 Güncellemesi: RCDefaultApp ve lstoolartık macOS 10.12 veya sonraki sürümlerinde çalışmaz. Yeni bir çözüm bulmalıyız.

Düzenle Mar 2018 SwiftDefaultApps'ı
buldum ama henüz High Sierra'da olmadığım için test yapamıyorum.


Önceki cevabı ilerletmek için, bunu komut satırında yapmak isterseniz, lstoolaltında bulunan RCDefaultApp'ın özü olan komutu kullanabilirsiniz RCDefaultApp.prefPane/Contents/Resources/lstool.

Kullanımı kolaydır:

[~]$lstool --help
Usage:

lstool read [<lsscheme> [<type>]]
lstool [-n] write <lsscheme> <type> <app>
lstool [-n] setoption <lsscheme> <type> login|ignorecreator YES|NO
lstool [-n] register {<app>}
lstool [-n] unregister {<path> | <app>}
lstool apps

-n means do not make changes
<lsscheme> is one of: internet, media, url, extension, uti, mime, ostype
<app> is the path to an application or a name to be looked up

2
XCD ile kendiniz inşa etmeniz gerekmesine rağmen , gcdub.com/Lord-Kamina/SwiftDefaultApps adresinde RCDefaultApp için olası bir değiştirme buldum .
luckman212

RCDefaultApp'ın 2.1 sürümünü kullanıyorum ve 10.12'de benim için gayet iyi çalışıyor. En azından hala tüm öğeleri listeler. Yoksa yalnızca belirli bir işlem artık çalışmıyor mu? Lütfen detaylandırın
SuperTempel

@ SüperTempel lstoolKomut satırı aracı, çalıştırmayı denediğinizde bu hatayı görüntüler: objc[1049]: Objective-C garbage collection is no longer supported.( lstoolRCDefaultApp tercih bölmesi tarafından kullanılan dahili programdır. Tercih bölmesi çalışıyor gibi göründüğü halde lstool, bozuk olduğu için hiçbir şey yapabileceğini sanmıyorum . )
Quinn Comendant

SwiftDefaultApps görünüşe göre Intel işlemcilerde çalışmıyor . En az Nisan 2018'e kadar bir düzeltme yok.
Quinn Comendant

3
SwiftDefaultApps'in geliştiricisiyim, SWDA, MacOS Sierra ile başından beri kodlanmış ve daha yüksek olanları düşünmüştü (Aslında, bu soruyu okuduktan ve benzerlerini okuduktan sonra üzerinde çalışmaya başladım). Swift veya macOS'taki bir hata nedeniyle büyük ölçüde 10.13'te çalışmıyordu, ancak 10.13.4 / Swift 4.1 güncellemesiyle düzeltildi.
Gregorio Litenstein

11

Apple OS X 10.10'daki mevcut LaunchServices URL işleyicisi ayarlarını listeleme (Yosemite):

defaults read com.apple.LaunchServices/com.apple.launchservices.secure

Kırılmayan ya da bir şeyler indirmenizi gerektiren yerleşik araçları kullanmak için Yay.
xdhmoore

Bu, her protokol için tüm varsayılanları listelemez, ancak bazılarını içerir.
Vadim Peretokin

5

Aslında, ilgilenen varsa, özel URL protokollerinin kaydını basitleştiren bir uygulama yazdım. LinCastor ( http://onflapp.wordpress.com/lincastor/ ) olarak adlandırılır . İşleyiciler, AppleScript veya kabuk betiği (perl, python veya şimdiye kadar ne olabilir) olarak tanımlanabilir.


Çok güzel bir fikir, ama korkarım ki verilen örnek senaryoyu çalıştıramıyorum. Blogunuzda daha fazlası için, moderasyon bekleniyor: getitdoneapps.wordpress.com/lincastor-browser/support/…
Flash Sheridan

Bu, komut dosyasından komut dosyası çalıştırılarak teşhis edilen, örnek dosyadaki şaşırtıcı bir satır sonu tuhaflığı gibi görünüyordu. (“/ Bin / sh: hatalı tercüman: İşleme izin verilmiyor”) BBEdit'te bir kopyanın kaydedilmesi ve satır sonlarının değiştirilmesi ve Windows'a yeniden yüklenmesi sorunu çözdü.
Flash Sheridan

5

Dosyayı XCode ile açmak oldukça kolay çalışıyor.

Xml1 veya binary1 formatları arasında dönüştürmek plutiliçin https://discussions.apple.com/thread/5815759 adresindeki cevapta açıklandığı gibi build in komutunu kullanmak benzer şekilde çalışır.

plutil -convert xml1 /file-i-wish

nano /file-i-wish & save file 

plutil -convert binary1 /file-i-wish

'Yabancı' aletlere gerek yok :-)


4

Ayrıca duti kullanabilirsiniz :

echo $'com.apple.mail mailto\ncom.googlecode.iterm2 x-man-page'>~/.duti;duti ~/.duti

0

Az önce El Capitan'ın altındaki eski İnternet'i denedim.

Bu korkak ve çalışmanın tek yolu protokol seçmek için yukarı ve aşağı ok tuşlarını kullanarak ve APP simgesini bir değişiklik yapmak için pencereye sürükleyip / bırakmak.

Varsayılanı Safari’den Chrome’a değiştirdim ve değişiklik yapıştı, bu yüzden hala çalışıyor.


Bu nedir? Cevabınız belli değil.
lacostenycoder

0

Mevcut LaunchServices URL işleyici ayarlarını, Apple OS X 10.10+ (Yosemite) üzerindeki Xcode ile listelemenin başka bir yolu:

open -a Xcode ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.