Como eu passo os argumentos da linha de comando para itens do Dock?

69

Estou tentando seguir as instruções para fixando as guias de inicialização no Chrome . No OS X, como adiciono argumentos de linha de comando a itens que persistem no meu dock?

    
por sudoer 16.04.2011 / 18:43

2 respostas

92

Você tem basicamente duas opções:

Opção 1 : use o Automator para criar um aplicativo que lance o Chrome com argumentos de linha de comando.

Inicie o Automator e selecione para criar um Aplicativo . Clique duas vezes em Executar Script de Shell na pasta Biblioteca / Utilitários e substitua o conteúdo de texto - cat - pelo seguinte:

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

Guarde em qualquer lugar que você gosta.

Para substituir o ícone desta aplicação, Obter Informações no seu verdadeiro Google Chrome, clique no ícone no canto superior esquerdo, pressione Cmd-C , Obter Informações no seu Chrome Automator, clique no ícone e pressione Cmd-V .

Como é um aplicativo diferente, o Dock exibirá dois aplicativos do Chrome quando estiver em execução: o Chrome e o inicializador do Chrome.

Opção 2 : edite seu pacote de aplicativos para iniciar um script. Esse script iniciará o aplicativo real, adicionando o argumento da linha de comando.

Clique com o botão direito do mouse em Google Chrome.app e selecione Mostrar conteúdo do pacote . Vá para Contents/ e abra Info.plist em Editor de lista de propriedades / Xcode (ferramentas de desenvolvedor da Apple) ou em um editor plist de terceiros.

Procure a entrada CFBundleExecutable ou Executable File . Lembre-se de seu valor (por exemplo, firefox-bin para o Firefox). Substitua por parameterized-app.sh .

Abra o Terminal e digite o seguinte:

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

Um editor para o arquivo .sh será aberto. Definir o conteúdo do arquivo para:

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

(usando o nome do executável real que você removeu de Info.plist , adicionando os argumentos de linha de comando desejados)

Salvar e fechar. No Terminal, digite o seguinte:

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

Agora, feche o Terminal e mova seu aplicativo (que não deve estar em execução agora) para uma pasta diferente e vice-versa. Isso atualizará Serviços de inicialização , caso contrário, suas alterações serão ignoradas e irritarão você imensamente.

Agora, quando você abrir o aplicativo, ele executará o arquivo .sh , que por sua vez iniciará o arquivo executável real, enviando os argumentos da linha de comando.

Ele será exibido e se comportará como você espera, mas será necessário repetir isso sempre que você atualizar seu aplicativo, pois isso geralmente substituirá o pacote de aplicativos e todas as alterações feitas por você.

    
por 16.04.2011 / 20:08
10

Você pode escrever um script que inicie o Chrome, mas esse não seria o ícone do aplicativo no encaixe, e isso faria com que um ícone separado do Chrome fosse exibido. Então você terá que criar um pacote de aplicativos.

Primeiro, faça uma cópia do seu aplicativo do Google Chrome. Então, existem duas abordagens que podem funcionar; Não sei ao certo qual deles será melhor com o Mac OS X e / ou a atualização automática do Chrome.

  1. Crie um 'launcher' que apenas chame o Chrome com os argumentos.

    • Abra o pacote do aplicativo (clique com o botão direito do mouse → Mostrar conteúdo do pacote no Finder) e lance tudo, exceto Info.plist, PkgInfo e MacOS.
    • Na pasta MacOS, exclua o executável "Google Chrome" e substitua-o por um script de shell que chame o real Chrome:

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

      Não se esqueça de chmod +x do script.

  2. Modifique o pacote do Chrome que você realmente executa.

    • Na pasta MacOS, renomeie "Google Chrome" e escreva um script de shell que invoque a coisa real com os argumentos extras:

      #!/bin/sh
      exec '/Applications/My Modified Google Chrome.app/Contents/MacOS/Google Chrome-real' -pinned-tab-count=4
      
    • Vejo que o pacote do Google Chrome tem algo sobre assinatura de código; talvez seja necessário excluir o CodeResources e / ou o _CodeSignature para que ele seja executado com essas alterações.

Tudo isso é baseado no meu entendimento dos pacotes de aplicativos para Mac; Eu não testei realmente essas alterações no Chrome em particular. É até possível que o executável do Chrome no Mac não suporte essa opção, já que os aplicativos Mac geralmente não devem ser executados com opções de linha de comando controláveis (diferentemente, por exemplo, Windows, onde os aplicativos são normalmente lançado através de atalhos que podem ter opções incorporadas).

    
por 16.04.2011 / 19:54