Existe uma maneira de se comunicar com alguém na área de trabalho?

36

Minha esposa está sentada em sua área de trabalho em casa alpha, que está executando uma versão recente do Ubuntu. Estou em um ônibus, usando o ConnectBot no meu telefone G1 e posso fazer o SSH alphade onde estiver.

Por motivos complicados, não consigo usar mensagens instantâneas, e-mail ou telefone para entrar em contato com ela. (Por exemplo, eu não quero acordar o bebê, meu cliente de mensagens instantâneas está quebrado, meu servidor de e-mail está inoperante.) Minha única opção é entrar no ssh alpharemotamente e tentar fazer alguma coisa aparecer na tela. Ela está usando o KDE; como posso criar algo para chamar sua atenção e informá-la de que estou tentando me comunicar com ela? Eu pensei que era possível disparar remotamente algo (como xmessage) para aparecer na tela dela, mesmo que minha sessão SSH não tenha uma tela X.

EDIT: Para esclarecer, meu telefone não está executando nenhum sabor de X, portanto, o X-over-ssh não é possível. O seguinte trabalho?

$ export DISPLAY=:0
$ xmessage "test"
dirtside
fonte
Enviar uma mensagem de texto para um telefone no modo silencioso ... ou sou apenas eu?
Nivas

Respostas:

27

Você pode dizer a um programa X qual tela usar com a DISPLAYvariável de ambiente, desde que você saiba qual tela alphaestá sendo exibida no momento. Quase certamente a única tela é :0, a menos que você tenha mexido com ela manualmente, então se você executar:

$ export DISPLAY=:0

Em seguida, todos os aplicativos X que você executar serão exibidos no alphamonitor. xmessageé uma boa opção para mostrar mensagens; há também xdialog. Se você libnotifyinstalou, poderá usar notify-senduma janela pop-up no canto da tela:

Exemplo

Michael Mrozek
fonte
Também é xauthou é xhostnecessário aqui?
Mikel
@ Mikel Não tenho certeza de como a segurança funciona quando um usuário diferente está executando o X; Eu acho que está bem. Eu só usado xhostpara permitir conexões remotas, mas ele é SSHing à máquina diretamente
Michael Mrozek
Tudo bem se você puder fazer login na mesma conta em que ela está conectada. Caso contrário, você terá que lidar com o controle de acesso do X.
User7440
10

Como Michael Mrozek ilustra , você pode executar aplicativos X que são exibidos na área de trabalho de sua esposa. Tudo que você precisa fazer é definir a DISPLAYvariável de ambiente com o valor certo (quase sempre :0) ... e obter sua autorização.

Esta solução requer que você tenha permissão para ler os arquivos da sua esposa. O acesso ao servidor X requer um "cookie" de autenticação , que é uma senha gerada aleatoriamente quando o X é iniciado e armazenado em um arquivo. O arquivo é frequentemente ~/.Xauthority; caso contrário, deve ser indicado na XAUTHORITYvariável de ambiente. No Ubuntu com a configuração padrão (usando o Gdm), o cookie de sessão da sua esposa não está ~wife/.Xauthorityem um arquivo com um nome gerado automaticamente; veja a variável ssh DISPLAY . Consulte também Como root, posso iniciar um programa gráfico na área de trabalho de outro usuário? , Linux: wmctrl não pode abrir a exibição quando a sessão é iniciada via tela ssh + .

Se sua esposa tiver um terminal de texto aberto, você pode usar write como sugerido por user7440 para escrever algum texto em seu terminal. Isso requer que o terminal aceite tais notificações; você pode ativar e desativar isso com mesg you mesg n, e eu não sei qual é o estado padrão nos modernos emuladores de terminal.

Um mecanismo mais sofisticado que writeé talk. O protocolo de conversação é o ancestral dos programas de bate-papo; você pode conversar com qualquer pessoa em uma máquina que esteja executando um servidor de conversação e cuja porta UDP 517 ou 518 (existem duas variantes de protocolo) não seja filtrada. Portanto, instale o talkd Instale o talkd http://bit.ly/software-small , um cliente como o ytalk Instale o ytalk http://bit.ly/software-small e ytalk wife. Há também um cliente X, xtalk Install xtalk http://bit.ly/software-small . Até onde eu sei, a conversa simplesmente caiu do radar (todo mundo que se importa usa um dos modernos protocolos de bate-papo), e não há nenhum componente do sistema que gere uma notificação do KDE sobre uma solicitação de conversa.

Enquanto você diz que não pode executar nenhum cliente de mensagens instantâneas ... um cliente de mensagens instantâneas de linha de comando em execução na sua máquina doméstica acessada por SSH está bem? Existem, por exemplo, weechat Install weechat http://bit.ly/software-small . Você ainda dependeria de algum servidor para conectá-lo à sua esposa, mas ele só seria acessado na sua máquina doméstica, não no telefone.

Gilles 'SO- parar de ser mau'
fonte
finché a versão da linha de comandos do pidgin.
LawrenceC
4

Se ela tiver uma janela de terminal aberta (use 'quem' para descobrir), você pode escrever nesse terminal usando 'write'. Isso não funcionará com o terminal principal à medida que o KDE o oculta, mas qualquer janela de terminal deve funcionar (se estiver na área de trabalho atual, não minimizada, ela está olhando ...).

user7440
fonte
3

Não tenho 100% de certeza de que a configuração DISPLAY=:0.0funcionará. Eu acho que você precisa de uma maneira de obter autorização para conectar-se ao servidor X no PC da sua esposa. As ferramentas para isso são xhoste xauth, mas parecem exigir que você já tenha acesso ao servidor X, portanto, presumivelmente, apenas sua esposa poderia executá-las. (Problema de frango e ovo.)

Caso contrário, você poderá iniciar um segundo servidor X, por exemplo X :1, usando , ou talvez chvtpossa ajudar.

Por exemplo, algo como

# X :1
# export DISPLAY=:1.0
# xmessage 'hello'

parece funcionar no meu sistema se eu executá-lo como root.

X :1 foi iniciado na vt7 no meu sistema, para que você também possa executar

# chvt 7

para ter certeza de que a tela X é a que está atualmente visível.

Mikel
fonte