Existe uma maneira, através da linha de comando, de verificar se o usuário atual possui a área de trabalho? Ou seja, se eu executar um script de shell em uma janela, desejo saber (no script) se o usuário mudou para outra conta através da Troca Rápida de Usuário. O script de shell ainda está sendo executado nessa janela de comando, mas desde que o usuário mudou para outra conta, o Desktop não mostra essa janela de comando.
Compartilho meu Mac com minha esposa e cada um de nós tem suas próprias contas. Quando ela se senta no computador, ela muda para sua conta. Quero escrever um programa Python que seja executado 24/7 na minha conta. Quero que esse programa saiba quando minha esposa está no computador e mudou para a conta dela.
Espero estar explicando isso claramente. Pesquisei no Google por 20 minutos antes de desistir, pois nenhum dos resultados da pesquisa estava nem perto do que eu estava tentando encontrar. Eu nem sei como formular a pergunta corretamente.
fonte
while [ 1 ]; do ps aux | grep console | grep -v grep | awk '{ print $1 }'; sleep 1; done
e ele sempre imprime meu nome de login, mesmo quando eu alterno para outro usuário.Você pode, se você criar um "gancho de login". Um gancho de login informa ao Mac OS X para executar um determinado script quando um usuário efetua login. Ao contrário dos Itens de Inicialização que abrem quando um usuário efetua login, um gancho de logon é um script que executa como raiz.
Com um gancho de login:
Como configurar um gancho de login
Na janela Terminal, digite:
sudo defaults write com.apple.loginwindow LoginHook /path/to/script
(onde
/path/to/script
está o caminho completo para o script que você deseja executar quando um usuário faz login - ele não precisa estar no diretório inicial do usuário).Isso modifica o
/var/root/Library/Preferences/com.apple.loginwindow
arquivo.Digite sua senha no prompt e pressione Retornar.
Artigo completo na página de suporte da Apple: Mac OS X: Criando um gancho de login
fonte
$ cat /usr/local/bin/loginhook #!/bin/sh echo $1 >> /tmp/login.txt
mas ele não cria /tmp/login.txt quando alterno rapidamente para outro usuário. E sim, / usr / local / bin / loginhook é executável.Ok, acho que descobri, mas não sei como funciona. A seguinte função Python retorna um valor quando eu sou o logon ativo e outro quando não sou:
Tudo o que preciso fazer é armazenar o valor de CGMainDisplayID () quando o script for executado pela primeira vez e chamá-lo novamente sempre que desejar ver se estou mudando. Se ele retornar um valor diferente, então eu sei que estou mudando.
fonte