メインコンテンツへスキップ

URLスキームに対応していないアプリを限定的に対応させる

Kofax Power PDF for MacというURLスキームに対応していないアプリを対応させるためのメモ。このアプリ限定の手順ではないので他のアプリへも応用可能だと思います。

プロトコルハンドラ用のアプリケーション作成
#

AppleScriptを使ってKofax Power PDF for MacでPDFファイルを開くスクリプトを作成する。スクリプトエディタで以下のスクリプトを入力。

on open location theURL
	set pdfPath to do shell script "echo " & quoted form of theURL & " | sed 's/kofaxpdf:\\/\\/open\\?file=//g'"
	
	if (do shell script "test -f " & quoted form of pdfPath & " && echo true || echo false") is "true" then
		do shell script "open -a 'Kofax Power PDF for Mac'.app " & quoted form of pdfPath
	else
		display dialog "ファイルが見つかりません: " & pdfPath buttons {"OK"} default button "OK"
	end if
end open location

このスクリプトはkofaxpdf://open?file=/path/to/file.pdfで呼び出さると、ファイルパスを抽出しそのファイルを指定してKofax Power PDF for Macを起動するもの。スクリプトを保存し、ファイルメニューの書き出すでアプリケーションとして書き出す。

このアプリケーションがカスタムプロトコルを処理することになる。

Info.plistの編集
#

  • Finderで上記で作成したアプリケーションを右クリックしパッケージの内容を表示を選択する
  • Content/Info.plistを開き以下の内容を追加する
	<key>CFBundleURLTypes</key>
	<array>
		<dict>
			<key>CFBundleURLName</key>
			<string>MyApp Protocol</string>
			<key>CFBundleURLSchemes</key>
			<array>
				<string>kofaxpdf</string>
			</array>
		</dict>
	</array>

これによりkofaxpdf://というカスタムプロトコルがこのアプリケーションに関連付けられる。ここでいちどこのアプリケーションを起動しておく。

ここまでの手順で以下のようなリンクをクリックするとKofax Power PDF for MacでPDFファイルを開けるようになる。

<a href="kofaxpdf://open?file=/path/to/file.pdf">Open in Preview</a>

関連記事

Obsidianの検索機能

Obsidianの標準の検索機能に関するメモ。検索 - Obsidian 日本語ヘルプ - Obsidian Publishより良く使うものを抜粋した。 ショートカットキー # Ctrl+Shift+Fまたは⌘+⇧+F 検索結果表示のオプション # 検索窓の右にあるボタンを押すと検索結果表示のオプションを設定できる。検索結果が多い場合などは、折りたたんでノート名であたりをつけたりするのに便利。 検索結果の埋め込み # ```query embed OR search ``` などとするとノート内に検索結果を埋め込むことができる。この機能はObsidian PublishでもQuartzでもサポートされていない。 検索クエリ # 検索条件 書きかた 説明 AND検索 foo bar fooとbarが含まれる OR検索 foo OR bar fooまたはbarが含まれる NOT検索 foo -bar fooを含むがbarを含まない foo スペースを含む文字列の検索 “foo bar” foo barという文字列を探す 特殊記号のエスケープ \" \\に続けて書くと通常の文字して検索 グループ化 ((a OR b) (c OR d)) 検索条件のグループ化 正規表現 /f../ //の中に正規表現を書く ファイル名検索 file:".jpg" ファイル名に.jpgを含むファイルを検索 ファイルパス検索 path:“journal/” ファイルパスにjournalを含むファイルを検索 タグ検索 tag:#mac タグに#macを含むノートを検索 大文字小文字を無視 ignore-case:(ABC) 大文字小文字を区別せずにABCを検索 大文字小文字を区別 match-case:(ABC) 大文字小文字を区別してABCを検索 ユースケース # 特定のディレクトリ配下を除外して検索 # 検索結果にノイズが含まれてしまうため、作業ログを置いているjournalというディレクトリは除外して検索したい。

Macのボイスメモで録音したファイルをmp3に変換する

事前にfmpegをインストールしておく。 ボイスメモのすべての録音で変換したいファイルを選択する 右クリックしサービス - Finderに表示 を選択 ターミナルを開きffmpeg -i を入力し2.をDrag&Dropする 続けて-acodec libmp3lame hogehoge.mp3と入力して実行する この例ではhogehoge.mp3というファイル名でMP3ファイルが作成される 入力するコマンドの全体はこうなる。 ffmpeg -i foo.m4a -acodec -acodec libmp3lame hogehoge.mp3 以下のようにすれば192kbpsのビットレートでMP3を作成できる。(デフォルトは128kbps) ffmpeg -i foo.m4a -acodec -acodec libmp3lame -b:a 192k hogehoge.mp3

Platypus - RubyスクリプトをMac OSのアプリに変換できるツール

sveinbjornt/Platypus: Create native Mac applications from command line scripts. スクリプト(Shellスクリプト、Perl、Python、Rubyなど)を標準のMac OS Xアプリケーション(.app)に変換するツール。 Platypusを使用すると、コマンドラインやターミナルを介さずに、スクリプトを直接実行可能なアプリケーションとして実行できる。 生成されるappのinfo.plistを編集することで、スクリプトをURLスキームに対応させることができる。 RubyではURLスキームで指定された文字列へARGVでアクセスできた。

MacからWindowsへRDP接続する際にキーボードがUS配列になる場合

MacのMicrosoft Remote DesktopからWindowsにRDP接続する際、キーボードがUS(英語)配列で認識される場合の解消方法。MacからWindowsへRDP接続するとキーボードがJISではなくUS配列になるとき | 晴耕雨読からの引用です。 自分の環境では3.の前にWindowsを再起動する必要があった。 対処方法 # 接続先のWindowsで以下の作業を行います。 Win+R で regedit を入力してレジストリエディタを開き、以下のレジストリを開きます。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411 Layout File を「KBDJPN.DLL」から「kbd106.dll」に書き換えます。 MacOSからRDP接続し、日本語キーボードとして認識されているか確認します。

Macで定期実行(launchd)

用途によって配置するフォルダを選ぶ # フォルダ 使用法 /System/Library/LaunchDaemons Appleが提供するシステムデーモン /System/Library/LaunchAgents Appleが提供するエージェント。すべてのユーザに対してユーザごとに適用されます /Library/LaunchDaemons システムデーモン /Library/LaunchAgents すべてのユーザに対してユーザごとに適用されます ~/Library/LaunchAgents ログイン中のユーザにのみ適用されます LaunchAgentsはログイン前提、LaunchDaemonsはログインに依存せず実行される。 有効化・無効化 # 有効化 launchctl load /path/to/your.plist 無効化 launchctl unload /path/to/your.plist plistのサンプル # 20秒毎に実行・ログ出力 # 標準出力、標準エラー出力をログに出力 コマンドのサーチパスを指定 ワーキングディレクトを指定 /usr/local/bin/node main.jsを実行 <?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"> <dict> <key>Label</key> <string>com.demo.daemon.plist</string> <key>RunAtLoad</key> <true/> <key>StartInterval</key> <integer>20</integer> <key>StandardErrorPath</key> <string>/Users/chet/demo/stderr.log</string> <key>StandardOutPath</key> <string>/Users/chet/demo/stdout.log</string> <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string><![CDATA[/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin]]></string> </dict> <key>WorkingDirectory</key> <string>/Users/chet/demo</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/node</string> <string>main.js</string> </array> </dict> </plist> 指定日時に実行 # <?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"> <dict> <key>Label</key> <string>sample</string> <key>Program</key> <string>/Users/user_name/script/sample.sh</string> <key>StartCalendarInterval</key> <dict> <key>Minute</key> <integer>0</integer> <key>Hour</key> <integer>3</integer> </dict> <key>StandardOutPath</key> <string>/Users/user_name/script/sample.out</string> <key>StandardErrorPath</key> <string>/Users/user_name/script/sample.err</string> </dict> </plist> 参考にしたページ # Macの「ターミナル」でのlaunchdを使ったスクリプトの管理 - Apple サポート (日本) Creating Launch Daemons and Agents A Simple Launchd Tutorial. Suppose you’ve written a little script… | by Chet Corcos | Medium

Alfred

Alfred - Productivity App for macOS Mac用のキーボードショートカットアプリ。キー入力だけでアプリを起動したり、Web検索をしたり、コンピュータ上のファイルを検索したり、システムコマンドを実行したりできる。 Alfred関連ノート # AlfredからObsidianの保管庫を検索する Alfred常用のための設定と導入ワークフロー AlfredでDeepL翻訳するワークフロー deepl-alfred-workflow2