Czy istnieje sposób komunikowania się z kimś na pulpicie?

36

Moja żona siedzi na domowym pulpicie alpha, na którym jest uruchomiona najnowsza wersja Ubuntu. Jestem w autobusie, używam ConnectBot na moim telefonie G1 i mogę SSH do alphadowolnego miejsca.

Z skomplikowanych powodów nie mogę używać wiadomości błyskawicznych, poczty elektronicznej ani telefonu w celu skontaktowania się z nią. (Np. Nie chcę budzić dziecka, mój klient czatu jest zepsuty, mój serwer e-mail jest wyłączony). Moją jedyną opcją jest alphazdalne włączenie ssh i próba pokazania czegoś na ekranie. Ona używa KDE; jak mogę sprawić, by coś wyskoczyło, aby przyciągnąć jej uwagę i powiadomić ją, że próbuję się z nią porozumieć? Myślałem, że można zdalnie uruchomić coś (np. Xmessage), aby pojawiło się na jej ekranie, mimo że moja sesja SSH nie ma wyświetlania X.

EDYCJA: Aby wyjaśnić, mój telefon nie działa w żadnej wersji X, więc X-over-ssh nie jest możliwe. Czy następujące działania będą działać?

$ export DISPLAY=:0
$ xmessage "test"
zbocze
źródło
Wyślij wiadomość tekstową na telefon w trybie cichym ... czy to tylko ja?
Nivas

Odpowiedzi:

27

Możesz powiedzieć programowi X, który ekran ma używać ze DISPLAYzmienną środowiskową, o ile wiesz, który ekran alphajest aktualnie wyświetlany. Niemal na pewno jedynym wyświetlaczem jest :0, chyba że ręcznie go bawiłeś, więc jeśli uruchomisz:

$ export DISPLAY=:0

Następnie wszelkie uruchomione aplikacje X zostaną wyświetlone na alphamonitorze. xmessagejest dobrym wyborem do wyświetlania wiadomości; jest też xdialog. Jeśli masz libnotifyzainstalowany, możesz użyć notify-senddo wyskakującego komunikatu w rogu ekranu:

Przykład

Michał Mrożek
źródło
Jest xauthlub xhostkonieczna tu też?
Mikel
@Mikel Nie jestem pewien, jak działa bezpieczeństwo, gdy inny użytkownik korzysta z X; Myślę, że to w porządku. Tylko raz korzystałem xhostzezwalając na zdalne połączenia, ale on SSHing bezpośrednio do maszyny
Michael Mrozek
W porządku, jeśli możesz zalogować się na to samo konto, na którym ona jest zalogowana. W przeciwnym razie będziesz mieć do czynienia z kontrolą dostępu X.
user7440
10

Jak pokazuje Michael Mrozek , możesz uruchamiać aplikacje X wyświetlane na pulpicie żony. Wszystko, co musisz zrobić, to ustawić DISPLAYzmienną środowiskową na odpowiednią wartość (prawie zawsze :0)… i uzyskać autoryzację.

To rozwiązanie wymaga pozwolenia na odczyt plików żony. Dostęp do serwera X wymaga „cookie” uwierzytelniającego , które jest losowo generowanym hasłem podczas uruchamiania X i zapisywane w pliku. Plik jest często ~/.Xauthority; jeśli nie, należy to wskazać w XAUTHORITYzmiennej środowiskowej. W systemie Ubuntu z domyślną konfiguracją (przy użyciu Gdm) ciasteczko sesyjne żony nie znajduje się ~wife/.Xauthorityw pliku o automatycznie generowanej nazwie, ale w nim; patrz zmienna ssh DISPLAY . Zobacz także Jako root mogę uruchomić program graficzny na pulpicie innego użytkownika? , Linux: wmctrl nie może otworzyć ekranu, gdy sesja jest inicjowana przez ssh + screen .

Jeśli twoja żona ma otwarty terminal tekstowy, możesz użyć, write zgodnie z sugestią user7440, do napisania tekstu w jej terminalu. Wymaga to, aby terminal akceptował takie powiadomienia; możesz to włączać i wyłączać za pomocą mesg ylub mesg n, i nie wiem, jaki jest domyślny stan nowoczesnych emulatorów terminali.

Bardziej wyrafinowany mechanizm, który writejest talk. Protokół rozmów jest przodkiem programów czatowych; możesz rozmawiać z każdym na komputerze, na którym działa serwer rozmów i którego port UDP 517 lub 518 (istnieją dwa warianty protokołu) nie jest filtrowany. Więc zainstaluj talkd Zainstaluj talkd http://bit.ly/software-small , klient taki jak ytalk Zainstaluj ytalk http://bit.ly/software-small i ytalk wife. Istnieje również klient X, xtalk Zainstaluj xtalk http://bit.ly/software-small . O ile mi wiadomo, rozmowa po prostu spadła z radaru (każdy, kogo to obchodzi, korzysta z jednego z nowoczesnych protokołów czatu) i nie ma komponentu systemowego, który generowałby powiadomienie KDE o żądaniu rozmowy.

Podczas gdy mówisz, że nie możesz uruchomić żadnego klienta czatu… czy klient czatu z linii poleceń działający na twoim komputerze domowym, do którego można uzyskać dostęp przez SSH, byłby w porządku? Są takie, na przykład weechat Install weechat http://bit.ly/software-small . Nadal będziesz zależał od jakiegoś serwera, który łączy cię z żoną, ale dostęp do niego będzie możliwy tylko z komputera domowego, a nie z telefonu.

Gilles „SO- przestań być zły”
źródło
finchto wersja pidgin z linii poleceń.
LawrenceC
4

Jeśli ma otwarte okno terminala (użyj „kto”, aby się dowiedzieć), możesz pisać do tego terminala, używając „write”. Nie będzie to działać z głównym terminalem, ponieważ KDE je ukrywa, ale każde okno terminala powinno działać (jeśli jest na bieżącym pulpicie, nie jest zminimalizowane, patrzy na niego ...).

user7440
źródło
3

Nie jestem w 100% pewien, że ustawienie DISPLAY=:0.0zadziała. Myślę, że potrzebujesz sposobu na uzyskanie autoryzacji na połączenie z serwerem X na komputerze swojej żony. Narzędzia do zrobienia, że są xhosta xauth, ale wydają się wymagać masz już dostęp do serwera X, więc prawdopodobnie tylko twoja żona mogła je uruchomić. (Problem z kurczakiem i jajkami.)

W przeciwnym razie możesz uruchomić drugi serwer X, np. Używając X :1, a może chvtmożesz pomóc.

Na przykład coś takiego

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

wydaje się działać w moim systemie, jeśli uruchomię go jako root.

X :1 został uruchomiony na vt7 w moim systemie, więc możesz także uruchomić

# chvt 7

aby upewnić się, że ten wyświetlacz X jest obecnie widoczny.

Mikel
źródło