Equivalente ao otheruser 'dm-tool switch-to-user' em diferentes gerenciadores de exibição

3

Ao usar lightdm, posso alternar para outro usuário executando dm-tool switch-to-user . Existe uma maneira que não depende do gerenciador de exibição? Se não, qual seria o comando equivalente para os outros gerenciadores de exibição:

  • gdm
  • sddm
  • slim
  • lxdm
  • xdm
por student 24.07.2016 / 19:04

1 resposta

0

Is there a way that doesn't depend on the display manager?

Você está solicitando uma solução de programa de linha de comando / execução.

Dada a minha experiência com xdm, gxm, lightdm e como tudo isso funciona, acho que não há uma resposta perfeita para um tamanho único. O motivo é: fornecer isolamento real do usuário requer que o gerenciador de exibição gerencie de perto o switch vt.

Por outro lado, em um gerente de exibição simples e / ou antiquado, considerei no passado uma solução que deveria funcionar.

Basicamente, pode-se usar chvt com argumento do conteúdo da variável de ambiente XDG_VTNR do processo de sessão usuário de destino . O efeito é semelhante a pressionar a combinação de teclas Ctrl-Alt-Fn , com n do número fornecido para chvt . Isto é considerado nos comentários em xorg - Alternando entre duas sessões X abertas sem autenticar - Ask Ubuntu .

Ainda assim, você está sozinho para obter esse número. Ou ter um processo executado pelo root que bisbilhota o ambiente dos processos do usuário alvo, ou que os usuários anunciem esse número quando logarem, através de um local conhecido (por exemplo, ~/.myvtnr , supondo que um usuário tenha mais de uma sessão X de cada vez , o que nem sempre é verdade, os usuários podem ter várias sessões X, incluindo sessões aninhadas usando Xnest ).

If not, what would be the equivalent command for the other display managers:

No Ubuntu 12.04 rodando o gdm, aqui está o que funcionou para mim: dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.DisplayManager $XDG_SEAT_PATH org.freedesktop.DisplayManager.Seat.SwitchToUser string:otheruserlogin string:anywordseemsignored . Substitua otheruserlogin por um login de usuário real.

E se XDG_SEAT_PATH não estiver definido (por exemplo, echo $XDG_SEAT_PATH não fornece nenhuma saída), você poderá usar primeiro: export XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0 e tentar novamente.

Isso funciona para você com o Ubuntu 18.04 com o gdm? Com outros gerenciadores de exibição? Por favor informe com detalhes. Pode ajudar os outros no futuro (incluindo você e eu: -).

    
por 28.05.2018 / 12:21