LoginSignup
0
2

More than 5 years have passed since last update.

URLを外部から開くときにブラウザーを指定して開くようにする

Last updated at Posted at 2015-10-25

タイトルそのままだけど、URLを外部から開くときにブラウザーを指定できるアプリが最近公開され、これを便利に使っている。

名前をfinickyという。
http://johnste.github.io/finicky/

アプリをダウンロードして、デフォルトブラウザーとして指定し、このアプリから指定したブラウザを開くようにするもの。ブラウザーのルータのような感じ。

これにより例えば、通知センターにFacebookの通知があったときなど、Facebookを開く時だけSafariではなく特定のアプリを指定して開くことができるようになる。

またこれを利用することで、twitterのリンクをopenだけでtweetbotで開くことができるようにできる。例えばターミナルから以下のコマンドでtweetbotが開くようになる。

open https://twitter.com/rebuildfm/status/657457484529991680

また同様にalfred経由でもtweetbotが開くようになる

スクリーンショット 2015-10-26 02.30.59.png
スクリーンショット 2015-10-26 02.32.08.png

設定ファイルは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'
      }
    }
  }
});
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2