Item de login do Mac OS X sem janela de terminal?

1

Eu quero que /Users/me/dir/executable seja executado toda vez que eu fizer login.

Você pode pensar no executável como basicamente um arquivo de texto que tem permissões executáveis e contém algo assim: javaws http://some/url

A frase anterior pode ser a chave para a resposta. Executar algo como o cromo não deixa para trás uma janela do Terminal, mas a execução do arquivo de texto faz.

Configurei um item de login que aponta para esse arquivo de texto executável e verifiquei a caixa de seleção Ocultar (não sei o que isso faz).

Agora, toda vez que eu fizer login, há uma janela do Terminal associada a esse item de login. A janela diz

Last login: (timestamp)
/Users/me/dir/executable ; exit;
machine:~ me$ /Users/me/dir/executable ; exit;
logout

[Process completed]

Aprendi que preciso desmarcar Reopen windows when logging back in para evitar que essas janelas se acumulem com o tempo. Mas eu gostaria de esconder / eliminar totalmente a janela.

Como posso ter um item de login que não deixa para trás uma janela do Terminal?

Nota: considerei usar o launchd. Mas o que eu quero rodar tem / quer uma interface do usuário, então escondê-la em segundo plano não é o que eu quero fazer.

    
por user1011471 25.06.2013 / 18:20

1 resposta

1
  1. Crie um AppleScript de uma linha:
    fazer script de shell "/ Users / me / dir / executable"

  2. Salvar como aplicativo "MyScript.app" (sem a tela inicial)

  3. Adicione MyScript.app aos itens de login.

O pôster original efetivamente criara um arquivo de script de shell. Se isso for adicionado aos Itens de Login, os Serviços de Inicialização do OS X abrirão o aplicativo Terminal para processar o script. Isto irá abrir uma janela do Terminal como o OP explicou. O comportamento padrão do Terminal é deixar uma janela do Shell aberta quando o shell é encerrado. Isso pode ser alterado como uma preferência de terminal global, mas isso pode não ser desejável e, mesmo se você fizer isso, o aplicativo Terminal permanecerá aberto.

O comando "do shell script" no AppleScript abre um processo de shell silencioso, retorna qualquer saída para o AppleScript e fecha o shell. Um AppleScript salvo como um aplicativo executável é executado silenciosamente e sai (a menos que você especifique a interação do usuário por meio de diálogos etc.). A solução de dois passos pode parecer desajeitada, mas além de partir para o esforço de criar um processo de lançamento, não sei de outra maneira.

Um launchd também funcionaria, pois um launchd pode gerar um processo com uma interface do usuário.

    
por 26.06.2013 / 01:38

Tags