Ferramenta de linha de comando para verificar se o usuário atual tem a área de trabalho?

1

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.

John Smith
fonte

Respostas:

0

Você pode verificar quem possui o "console" com o comando:

ps aux | grep console | grep -v grep | awk '{ print $1 }'
Mateusz Szlosek
fonte
11
Isso não funciona. Eu escrevi este script: 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.
John John Smith
0

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:

  • O script especificado como um gancho de login deve ser executável.
  • O gancho de login será executado como root.
  • No script do gancho de login, a variável $ 1 retorna o nome abreviado do usuário que está efetuando login.
  • Outras ações de login aguardam até que o gancho seja completamente executado.

Como configurar um gancho de login

  1. Abra o Terminal (Aplicativos / Utilitários).
  2. Na janela Terminal, digite:

    sudo defaults write com.apple.loginwindow LoginHook /path/to/script

    (onde /path/to/scriptestá 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.loginwindowarquivo.

  3. 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

jherran
fonte
11
O gancho de login funciona com a Troca rápida de usuário?
Mateusz Szlosek
Eu testei há algum tempo e funcionou.
jherran
11
Isso também não parece funcionar. Eu escrevi este script: $ 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.
John Smith
0

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:

from Quartz import CGMainDisplayID
print CGMainDisplayID()

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.

John Smith
fonte