OS X에서 사용자 정의 URL 핸들러를 구성하는 방법


64

나는 다음과 같은 커스텀 URL 핸들러 / 커스텀 프로토콜 핸들러에 대해 온라인에서 많이 읽었습니다.

특정 프로그램이 Info.plist파일 로 특정 체계 / 프로토콜을 처리 할 수 ​​있다고 시스템에 알릴 수 있습니다.

<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/>

그러나 동일한 URL 처리기를 열 수있는 여러 응용 프로그램이있는 경우 (예 : mailto:시스템에서 사용할 응용 프로그램을 어떻게 지정합니까?)

More Internet preference pane더 이상 저자의 사이트에서 제공되지 않는 것 같은 유틸리티에 대한 언급이있었습니다 . Googling에서 온라인으로 찾았지만 이전 OSX 용으로 작성된 것처럼 아마도 흔들리는 것처럼 보입니다. 아마도 Tiger입니다.

프로토콜 및 사용자 지정 프로토콜에 대한 URL 처리기를 설정하는 방법에 대한 정보를 찾을 수 없습니다. plist편집 할 수 있는 파일 이 있다고 가정합니다. 또는 Mountain Lion과 잘 작동하는 새롭고 더 나은 유틸리티가 있습니까?

답변:


55

당신이 찾는 파일은 ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist입니다.

여기에는이라는 배열이 있으며 LSHandlers를 정의하는 Dictionary 하위는 LSHandlerURLScheme에 따라 수정 될 수 있습니다 LSHandlerRole.

이 파일을 수동으로 편집하는 대신 RCDefaultApp 을 사용하면 멋진 기본 설정 창이 나타납니다. macOS 10.12 이상에서는 작동하지 않는다고하지만 macOS 10.14에서 실행되는지 확인할 수 있습니다.

대안은 SwiftDefaultApps 입니다.

예를 들어 다음은 SVN 및 SSH입니다.

… 및 RCDefaultApp에서 :


35
4 분 19 초? 진심이야?
Daniel Beck

2
빠르고 자세한 답변에 감사드립니다. 좋아 보인다! 질문-전에 RCDefaultApp을 사용해 보았고 문제가 있다고 생각합니다. 완벽하게 작동하고 있습니까?
cwd

@cwd 나는 자주 사용하지 않는다고 정직하게 말해야한다. 수퍼 유저 스크린 샷은 다른 무엇보다 중요합니다. :) 파일 연결을 변경해야 할 때마다 Finder의 정보 입수… 대화 상자를 통해 연결합니다 . 프로토콜 및 MIME 처리기를 변경할 필요가 없었습니다. 그러나 그것은 나를 위해 충분히 안정적으로 보였다.
slhck

이것은 실제 "앱"을 여는 것으로 보입니다. 터미널 명령 등을 사용하여 사용자 지정 처리를 수행하려면 어떻게해야합니까?
nute

1
@nute 머릿속 꼭대기에서 확실하지 않습니다. 셸 스크립트를 래핑하는 Automator로 만든 앱일까요?
slhck

14

2017 년 7 월 업데이트 : RCDefaultApp 및 lstoolmacOS 10.12 이상에서 더 이상 작동하지 않습니다. 새로운 솔루션을 찾아야합니다.

편집 3 월 2018
내가 발견 SwiftDefaultApps을 하지만 난 아직 높은 시에라에 아니에요으로 테스트 할 수 없습니다.


이전 답변 lstool외에도 명령 행에서이 작업을 수행하려면 RCDefaultApp의 핵심 인 명령을 사용할 수 있습니다 RCDefaultApp.prefPane/Contents/Resources/lstool.

사용법은 간단합니다.

[~]$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
Xcode로 직접 빌드해야하지만 github.com/Lord-Kamina/SwiftDefaultApps에서 RCDefaultApp을 대체 할 수있는 것으로 나타났습니다 .
luckman212

RCDefaultApp 버전 2.1을 사용하고 있으며 10.12에서 제대로 작동합니다. 적어도 여전히 모든 항목을 나열합니다. 아니면 특정 작업 만 더 이상 작동하지 않습니까? 자세히 설명하십시오
SuperTempel

@SuperTempel lstool당신이 그것을 실행하려고하면이 오류 명령 줄 도구 표시 : objc[1049]: Objective-C garbage collection is no longer supported.( lstool기본 설정 창이 작업 표시하지만 때문에 RCDefaultApp 환경 설정 패널에서 사용하는 내부 프로그램은, 내가 아무것도 할 수 있다고 생각하지 않습니다됩니다. lstool끊어집니다. )
Quinn Comendant

SwiftDefaultApps 인텔 프로세서에서 작동하지 않는 것 같습니다 . 최소한 2018 년 4 월까지는 수정이 없습니다.
Quinn Comendant

3
저는 SwiftDefaultApps의 개발자입니다. SWDA는 처음부터 macOS Sierra 이상으로 코딩되었습니다. Swift 또는 macOS 자체의 버그로 인해 10.13에서 작동하지 않았지만 10.13.4 / Swift 4.1로 업데이트 된 것으로 보입니다.
Gregorio Litenstein

11

Apple OS X 10.10 (Yosemite)의 현재 LaunchServices URL 핸들러 설정 나열 :

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

깨지거나 다운로드를 요구하지 않는 내장 도구를 사용해 주셔서 감사합니다.
xdhmoore

이것은 모든 프로토콜에 대한 모든 기본값을 나열하지는 않지만 일부 프로토콜 만 나열합니다.
Vadim Peretokin

5

실제로 관심이 있다면 사용자 정의 URL 프로토콜의 등록을 단순화하는 응용 프로그램을 작성했습니다. LinCastor ( http://onflapp.wordpress.com/lincastor/ ) 라고 합니다. 핸들러는 AppleScript 또는 쉘 스크립트 (perl, python 또는 무엇이든 가능)로 정의 할 수 있습니다.


매우 좋은 생각이지만 제공된 예제 스크립트를 사용할 수 없습니다. 블로그에서 더 많은 검토를 기다리고 있습니다 : getitdoneapps.wordpress.com/lincastor-browser/support/…
Flash Sheridan

명령 행에서 스크립트를 실행하여 진단 한 예제 파일에서 약간 당황스러운 줄 바꿈 인 것처럼 보였습니다. (“/ bin / sh : 잘못된 인터프리터 : 작업이 허용되지 않습니다.”) BBEdit에서 사본을 저장하고 줄 바꿈 및 재충전을 Windows로 또는 Windows에서 중단하면 문제가 해결되었습니다.
플래시 셰리 던

5

XCode로 파일을 여는 것은 매우 쉽습니다.

https://discussions.apple.com/thread/5815759plutil 의 답변에 설명 된대로 빌드 명령 을 사용하여 xml1 또는 binary1 형식간에 변환하는 것도 비슷합니다.

plutil -convert xml1 /file-i-wish

nano /file-i-wish & save file 

plutil -convert binary1 /file-i-wish

'외계인'도구 필요 없음 :-)


4

duti를 사용할 수도 있습니다 .

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

0

나는 엘 캐피 탄 (El Capitan) 아래에있는 오래된 More More Internet을 시도했다.

펑키하고 작동하는 유일한 방법은 위쪽 및 아래쪽 화살표 키를 사용하여 프로토콜을 선택하고 APP 아이콘을 창으로 끌어서 놓아 변경하는 것입니다.

Safari에서 Chrome으로 기본값을 전환했는데 변경 사항이 적용되어 여전히 작동합니다.


이게 뭐야? 답이 명확하지 않습니다.
lacostenycoder

0

Apple OS X 10.10+ (Yosemite)에서 Xcode를 사용하여 현재 LaunchServices URL 핸들러 설정을 나열하는 다른 방법 :

open -a Xcode ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.