Programy X wiedzą, z którą sesją X mają rozmawiać, patrząc na DISPLAYzmienną środowiskową.
Najpierw musisz dowiedzieć się, co DISPLAYjest ustawione w sesji X, w której chcesz uruchomić swój program. Zrób to, wydając polecenie echo $DISPLAYw X-terminalu w tej sesji X. Zazwyczaj pobiera się coś takiego jak :0.0wyjście.
Powiedzmy, że chcesz uruchomić doskonały program xclockw sesji X, gdzie DISPLAYjest :0.0, ale chcesz to zrobić na konsoli. Następnie naciśnij klawisze Alt-Ctrl-F1, aby przejść do tej konsoli, a następnie wpisz:
DISPLAY=:0.0 xclock # variables set w/ a command are local to that command
Następnie wróć do X, naciskając klawisze Alt-Ctrl-F7 lub Alt-Ctrl-F8 (lub może jakiś inny klawisz F, w zależności od smaku Linuksa) i obserwuj nowy ładny zegar ścienny, który tam masz.
W rzeczywistości mogłeś wykonać powyższe polecenie w dowolnej powłoce na tym samym komputerze (przez SSH, w dowolnej sesji X, na dowolnej konsoli itp.) - fakt, który określiłeś DISPLAY=:0.0przed poleceniem oznacza, że xclockokno zawsze będzie się pojawiało ta sama sesja X.
W rzeczywistości - oprócz tego, że patrzą na to programy X - w tej DISPLAYzmiennej nie ma nic specjalnego . Zwykle, kiedy uruchamiasz programy z terminala X, zaczynają się we właściwym miejscu, ponieważ DISPLAYzostało już dla ciebie ustawione.
Zamiast używać powyższego polecenia, możesz również podzielić je na dwa, najpierw ustawiając DISPLAY, a następnie uruchamiając xclock. W takim przypadku DISPLAYustawienie będzie obowiązywać , dopóki nie zamkniesz tej powłoki, a wszystkie kolejne uruchomione programy X otworzą się w tej samej sesji X co xclock.
# variables set w/o a command are local to the shell,
export DISPLAY=:0.0 # unless exported
xclock
Zauważ, że ostatni bit nie zadziała, chyba że najpierw wyeksportujesz zmienną powłoki do środowiska.
Ignacio Vazquez-Abrams,
Myślę, że DISPLAYdomyślnie zostanie ustawiony eksport, ponieważ jest importowany przez powłokę (działa zarówno w moim przypadku, jak zshi dashdla mnie bez użycia export). Ale tak, jeśli nie można dostać wersję dwóch linii do pracy, spróbuj wymienić DISPLAY=:0.0z export DISPLAY=:0.0.
zrajm
1
Zwykle programy klienckie X używają DISPLAYzmiennej środowiskowej, aby wiedzieć, z którym serwerem X można się połączyć. Niektóre programy akceptują również parametr wiersza polecenia ( -displaylub coś podobnego), którego można użyć do zastąpienia DISPLAYzmiennej środowiskowej.
Odpowiedzi:
Programy X wiedzą, z którą sesją X mają rozmawiać, patrząc na
DISPLAY
zmienną środowiskową.Najpierw musisz dowiedzieć się, co
DISPLAY
jest ustawione w sesji X, w której chcesz uruchomić swój program. Zrób to, wydając polecenieecho $DISPLAY
w X-terminalu w tej sesji X. Zazwyczaj pobiera się coś takiego jak:0.0
wyjście.Powiedzmy, że chcesz uruchomić doskonały program
xclock
w sesji X, gdzieDISPLAY
jest:0.0
, ale chcesz to zrobić na konsoli. Następnie naciśnij klawisze Alt-Ctrl-F1, aby przejść do tej konsoli, a następnie wpisz:Następnie wróć do X, naciskając klawisze Alt-Ctrl-F7 lub Alt-Ctrl-F8 (lub może jakiś inny klawisz F, w zależności od smaku Linuksa) i obserwuj nowy ładny zegar ścienny, który tam masz.
W rzeczywistości mogłeś wykonać powyższe polecenie w dowolnej powłoce na tym samym komputerze (przez SSH, w dowolnej sesji X, na dowolnej konsoli itp.) - fakt, który określiłeś
DISPLAY=:0.0
przed poleceniem oznacza, żexclock
okno zawsze będzie się pojawiało ta sama sesja X.W rzeczywistości - oprócz tego, że patrzą na to programy X - w tej
DISPLAY
zmiennej nie ma nic specjalnego . Zwykle, kiedy uruchamiasz programy z terminala X, zaczynają się we właściwym miejscu, ponieważDISPLAY
zostało już dla ciebie ustawione.Zamiast używać powyższego polecenia, możesz również podzielić je na dwa, najpierw ustawiając
DISPLAY
, a następnie uruchamiającxclock
. W takim przypadkuDISPLAY
ustawienie będzie obowiązywać , dopóki nie zamkniesz tej powłoki, a wszystkie kolejne uruchomione programy X otworzą się w tej samej sesji X coxclock
.źródło
DISPLAY
domyślnie zostanie ustawiony eksport, ponieważ jest importowany przez powłokę (działa zarówno w moim przypadku, jakzsh
idash
dla mnie bez użyciaexport
). Ale tak, jeśli nie można dostać wersję dwóch linii do pracy, spróbuj wymienićDISPLAY=:0.0
zexport DISPLAY=:0.0
.Zwykle programy klienckie X używają
DISPLAY
zmiennej środowiskowej, aby wiedzieć, z którym serwerem X można się połączyć. Niektóre programy akceptują również parametr wiersza polecenia (-display
lub coś podobnego), którego można użyć do zastąpieniaDISPLAY
zmiennej środowiskowej.źródło