有某种方法可以将ForkLift设置为默认文件查看器吗?PathFinder会以某种方式执行此操作,请参阅http://cocoatech.com/faqs#3,但是它如何执行此操作,可以将该选项设置为重定向到ForkLift而不是PathFinder?
有某种方法可以将ForkLift设置为默认文件查看器吗?PathFinder会以某种方式执行此操作,请参阅http://cocoatech.com/faqs#3,但是它如何执行此操作,可以将该选项设置为重定向到ForkLift而不是PathFinder?
Answers:
路径查找器似乎正在修改“ NSFileViewer”首选项。您可以从终端手动将其设置为指向ForkLift(我尝试过此方法,并且它似乎可以工作):
defaults write -g NSFileViewer -string com.binarynights.ForkLift2
(-g
为所有应用程序全局设置此首选项。)
defaults delete -g NSFileViewer
。
defaults write -g NSFileViewer -string com.binarynights.ForkLift-3
从叉车官方文档中:
如果您正在使用Setapp中的ForkLift,请粘贴以下命令:
defaults write -g NSFileViewer -string com.binarynights.forklift-setapp; defaults write com.apple.LaunchServices/com.apple.launchservices.secure LSHandlers -array-add '{LSHandlerContentType="public.folder";LSHandlerRoleAll="com.binarynights.ForkLift-3";}'
您可以像这样更改默认文件管理器,但是ForkLift或Transmit无法按预期方式工作,只有“路径查找器”
#!/usr/bin/python2.6
from LaunchServices import LSSetDefaultRoleHandlerForContentType, kLSRolesViewer, LSSetDefaultHandlerForURLScheme
from CoreFoundation import CFPreferencesCopyApplicationList, kCFPreferencesCurrentUser, kCFPreferencesAnyHost, CFPreferencesSetAppValue, CFPreferencesAppSynchronize
applicationBundleIdentifier = "com.cocoatech.PathFinder" #"com.panic.Transmit" #"com.binarynights.forklift2"
LSSetDefaultRoleHandlerForContentType("public.folder", kLSRolesViewer, applicationBundleIdentifier)
LSSetDefaultHandlerForURLScheme("file:///", applicationBundleIdentifier)
applicationIDs = CFPreferencesCopyApplicationList(kCFPreferencesCurrentUser, kCFPreferencesAnyHost)
for app_id in applicationIDs:
CFPreferencesSetAppValue("NSFileViewer", applicationBundleIdentifier, app_id);
CFPreferencesAppSynchronize(app_id);
-g
标志等效于NSGlobalDomain
。它只是将首选项写入全局域,而不是特定域。