タイトルそのままだけど、URLを外部から開くときにブラウザーを指定できるアプリが最近公開され、これを便利に使っている。
名前をfinicky
という。
http://johnste.github.io/finicky/
アプリをダウンロードして、デフォルトブラウザーとして指定し、このアプリから指定したブラウザを開くようにするもの。ブラウザーのルータのような感じ。
これにより例えば、通知センターにFacebookの通知があったときなど、Facebookを開く時だけSafariではなく特定のアプリを指定して開くことができるようになる。
またこれを利用することで、twitterのリンクをopenだけでtweetbotで開くことができるようにできる。例えばターミナルから以下のコマンドでtweetbotが開くようになる。
open https://twitter.com/rebuildfm/status/657457484529991680
また同様にalfred経由でもtweetbotが開くようになる
設定ファイルはHOME直下に.finicky.js
としてJSで書く事になる。finicky自体はこの設定ファイルをリロードするメニューしか存在しない。指定して開くブラウザはBundleIDがあれば、なんでも行けるようだが、URI Schemeがあればより細かく制御できる。tweetbotのshemeは下記を参考にした。
http://tapbots.net/tweetbot3/support/url-schemes/
個人的にはfluidappで、Facebookやtrelloを作成して組み合わせて使っている。
finicky.setDefaultBrowser('com.apple.Safari')
// Open Facebook links in Fluidapp
finicky.onUrl(function(url, opts) {
if (url.match(/^https?:\/\/www\.facebook\.com/)) {
return {
bundleIdentifier: 'com.fluidapp.FluidApp.Facebook'
}
}
});
// Open trello links in Fluidapp
finicky.onUrl(function(url, opts) {
if (url.match(/^https?:\/\/trello\.com/)) {
return {
bundleIdentifier: 'com.fluidapp.FluidApp.trello'
}
}
});
// Always open links from Mail in Safari
finicky.onUrl(function(url, opts) {
var sourceApplication = opts && opts.sourceBundleIdentifier
if (sourceApplication === 'com.apple.mail') {
return {
bundleIdentifier: 'com.apple.Safari'
}
}
});
// Open Twitter links in client
finicky.onUrl(function(url, opts) {
var matches = url.match(/^https?:\/\/twitter\.com\/.+\/status\/([0-9]+)/)
if (matches && matches[1]) {
var statusId = matches[1];
return {
url: 'tweetbot://twitter/status/' + statusId,
bundleIdentifier: 'com.tapbots.TweetbotMac'
}
}
});
// Open Twitter search in client
finicky.onUrl(function(url, opts) {
var matches = url.match(/^https?:\/\/twitter.com\/search\?(.*)/)
if (matches && matches[1]) {
var queryText = "";
matches[1].split("&").forEach(function(query) {
var params=query.split("=");
if (params[0] == 'q') {
queryText = params[1];
}
});
return {
url: 'tweetbot://twitter/search?query=' + queryText,
bundleIdentifier: 'com.tapbots.TweetbotMac'
}
}
});
// Open Twitter mentions
finicky.onUrl(function(url, opts) {
if (url.match(/^https?:\/\/twitter.com\/mentions/)) {
return {
url: 'tweetbot://twitter/mentions',
bundleIdentifier: 'com.tapbots.TweetbotMac'
}
}
});
// Open Twitter message
finicky.onUrl(function(url, opts) {
if (url.match(/^https?:\/\/twitter.com\/messages/)) {
return {
url: 'tweetbot://twitter/direct_messages',
bundleIdentifier: 'com.tapbots.TweetbotMac'
}
}
});
// Open Twitter retweets
finicky.onUrl(function(url, opts) {
if (url.match(/^https?:\/\/twitter.com\/retweets/)) {
return {
url: 'tweetbot://twitter/retweets',
bundleIdentifier: 'com.tapbots.TweetbotMac'
}
}
});
// Open Twitter user in client
finicky.onUrl(function(url, opts) {
var matches = url.match(/^https?:\/\/twitter.com\/([0-9a-zA-Z_]+)/)
if (matches && matches[1]) {
var screenname = matches[1]
if (sourceApplication != 'com.apple.mail') {
return {
url: 'tweetbot://twitter/user_profile/' + screenname,
bundleIdentifier: 'com.tapbots.TweetbotMac'
}
}
}
});