それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Mac のアプリケーションの識別文字列 CFBundleIdentifier ( bundle Identifier )を探す

2018-09-01 mdls を使うのがいい方法みたいなので、別の記事にしました。

takuya-1st.hatenablog.jp

   

   

Macのアプリケーションの識別

BundleIdentifier を使って Identifier ( 識別子)を取り出す。

kMDItemCFBundleIdentifier = "com.microsoft.rdc.mac" 

bundle identifier をとりだして、アプリ名と com.evernote のような ドメイン名的な名前を探す。

CFBundleIdentifierを探す

Karabiner の設定をするのに、UTI文字列が必要なのでね。com.vivaldi.Vivaldi のような文字列が必要になるので。

plutil  -extract CFBundleIdentifier xml1  path/to/Info.plist  -o  - | xmllint - --xpath "//string/text()"

Bundle identifier ( CFBundleIdentifier ) は UTI文字列 を入れている。

UTI 文字列を identifier (識別子)として使うので、例えば、次のようになる。

takuya@~$ plutil  -extract CFBundleIdentifier xml1  /Applications/PhpStorm.app/Contents/Info.plist  -o  - | xmllint - --xpath "//string/text()"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<string>com.jetbrains.PhpStorm</string>
</plist>

/Applications からすべてのIDを探すなら、bash で簡単

ループで回せば結構簡単にわかってくる。

for i in /Applications/*/Contents/Info.plist; do
  plutil  -extract CFBundleIdentifier xml1  "$i"   -o  - | xmllint - --xpath "//string/text()"; 
done \
 | grep string

ruby も書いた

#!/usr/bin/env ruby


require 'mechanize'
require 'fileutils'
require 'pp'
list = Dir.glob('/Applications/*/Contents/Info.plist')
len = list.map{|e| e.match(%r|(?<name>[^/]+app)|)[:name].size}.max()
list.each{|e|
  begin
    appname = e.match(%r|[^/]+app|)
    xml = `plutil  -extract CFBundleIdentifier xml1  "#{e}"   -o  -`
    xmldoc = Nokogiri::XML( xml )
    identifier =  xmldoc.search('//string[1]/text()')[0].text
  rescue => e
    appname ||= ''
    identifier ||= ''
  ensure
    puts "%-#{len}s\t%s" % [appname, identifier]
  end

}



参考資料

http://www15.plala.or.jp/NovemberKou/documentBasedProject/setCFBundleIdentifier.html

http://harafuji0613.hatenablog.com/entry/2015/03/22/002953

http://qiita.com/trakwkbys/items/a94c4d43342e96352bde

2017-07-21 追記

セルフ検索に引っかからないので、キーワード追加した

2018-05-10

ぱぱっと使いたいのでrubyのコマンドにした。