web-dev-qa-db-ja.com

Dockアイテムにコマンドライン引き数を渡るにはどうすればいいですか?

Chromeでスタートアップタブを固定する の手順 に従います。 OS Xでドックに残っている項目にコマンドライン引数を追加するにはどうすればいいですか?

72
sudoer

基本的に2つの選択肢があります。

オプション1:実質的にコマンドライン引数でChromeを起動するアプリケーションを作成するには、Automatorを使用します。

Automatorを起動し、 Application を作成することを選択します。 Library/Utilities フォルダー内の Run Shell Script をダブルクリックし、テキストの内容(cat)を次のように置き換えます。

open -a "Google Chrome.app" --args -pinned-tab-count=4
# keep the .app suffix or will break with Parallels

好きな場所に保存してください。

このアプリケーションのアイコンを置き換えるには、実際のGoogle Chromeで情報を見るをクリックし、左上のアイコンをクリックしてCmd-Cを押します。情報を見る Chrome Automatorアプリで、アイコンをクリックしてCmd-Vを押します。

別のアプリケーションなので、Dockは実行時に2つのChromeアプリケーションを表示します。ChromeとChromeランチャーです。


オプション2:代わりにスクリプトを起動するようにアプリケーションバンドルを編集します。このスクリプトは実際のアプリケーションを起動し、コマンドライン引数を追加します。

Google Chrome.appを右クリックしてパッケージ内容の表示を選択します。 Contents/に行き、プロパティリストエディタ/ Xcode (アップルの開発者用ツール)、またはサードパーティのplistエディタでInfo.plistを開きます。

エントリCFBundleExecutableまたはExecutable Fileを探します。その値を覚えておいてください(例えばFirefoxの場合はfirefox-bin)。 parameterized-app.shに置き換えてください。

ターミナルを開き、次のように入力します。

touch /Applications/Firefox.app/Contents/MacOS/parameterized-app.sh
open /Applications/Firefox.app/Contents/MacOS/parameterized-app.sh

.shファイルのエディタが開きます。ファイルの内容を次のように設定します。

#!/usr/bin/env bash
exec /Applications/Firefox.app/Contents/MacOS/firefox-bin -ProfileManager

Info.plistから削除した実際の実行可能ファイルの名前を使用し、必要なコマンドライン引数を追加します)

保存して閉じます。ターミナルで、次のように入力します。

chmod +x /Applications/Firefox.app/Contents/MacOS/parameterized-app.sh

それでは、「ターミナル」を閉じて、(今は実行されていないはずの)アプリケーションを別のフォルダに移動して、元に戻します。これは Launch Services を更新します、そうでなければあなたの変更は無視されあなたを非常にいらいらさせます。

これで、アプリケーションを開くと、実際に.shファイルが実行され、次に実際の実行可能ファイルが起動され、コマンドライン引数が送信されます。

それはあなたが期待するように見えそして振る舞うでしょう、しかしあなたがあなたがあなたのアプリケーションを更新するときはいつも、これがアプリケーションバンドルとあなたが行ったすべての変更を置き換えるのであなたはこれを繰り返す必要があるでしょう。

94
Daniel Beck

Chromeを起動するスクリプトを作成できますが、それはドックのアプリケーションアイコンではなく、別のChromeアイコンが表示されます。そのため、アプリケーションパッケージを作成する必要があります。

まず、Chromeアプリのコピーを作成します。次に、動作する可能性のある2つのアプローチがあります。 Mac OS XやChromeのセルフアップデートでどちらがより良くなるかはわかりません。

  1. 引数を指定してChromeを呼び出す「ランチャー」を作成します。

    • アプリパッケージを開き(右クリック→Finderでパッケージの内容を表示)、Info.plist、PkgInfo、およびMacOSを除くすべてを破棄します。
    • MacOSフォルダーで、「Google Chrome」実行可能ファイルを削除し、実際のChromeを呼び出すシェルスクリプトに置き換えます。

      #!/bin/sh
      exec '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' -pinned-tab-count=4
      

      スクリプトをchmod +xすることを忘れないでください。

  2. 実際に実行するChromeパッケージを変更します。

    • MacOSフォルダーで、「Google Chrome」の名前を変更し、追加の引数を使用して本物を呼び出すシェルスクリプトを記述します。

      #!/bin/sh
      exec '/Applications/My Modified Google Chrome.app/Contents/MacOS/Google Chrome-real' -pinned-tab-count=4
      
    • Chromeパッケージにはコード署名に関するものが含まれています。これらの変更で実行するには、CodeResources_CodeSignatureを削除する必要がある場合があります。

これはすべて、Macアプリパッケージの私の理解に基づいています。特にChromeでこれらの変更を実際にテストしたことはありません。 Macアプリケーションは通常、制御可能なコマンドラインオプションで実行されることは想定されていないため、MacのChrome実行可能ファイルはこのオプションをサポートしない可能性もあります(たとえば、アプリケーションが存在するWindows 通常埋め込みオプションを持つことができるショートカットを介して起動されます)。

10
Kevin Reid