Hlavní navigace

Gtk-WARNING **: cannot open display

10. 1. 2010 12:39 (aktualizováno) | Petr Krčmář

Určitě už jste se setkali s takto nepříjemnou a odmítavou hláškou. Jak problém pořešit aneb návod typu snadno, rychle a bez stresu.

(A hlavně pro mě, kdybych to někdy potřeboval a zapomněl.)

Možná se vám už stalo, že jste se přihlásili na vzdálenou mašinu, na které běžel X server, ale nedokázali jste na ní vzdáleně spustit nějaký GUI nástroj. Vždycky vás aplikace vyhodila s tím, že se nemůže připojit k X serveru. Hláška vypadá asi tak:

Gtk-WARNING **: cannot open display

V zásadě existují dvě různé situace. Pokud jste se přihlásili pod stejným uživatelem, pod jakým běží zmíněný X server, stačí do konzole napsat:

$ export DISPLAY=:0.0

A pak už můžete vesele spouštět aplikace, jako by se nechumelilo. Tímto příkazem jste totiž nastavili proměnnou DISPLAY, kterou využívají grafické aplikace a ukazuje jim, kde mají hledat svůj X server. Jednoduché.

Komplikovanější to bude, pokud se přihlašujete jako jiný uživatel. Obvykle vám to nebude fungovat ani v případě, že se přihlásíte jako root (pokud můžete). Pokud jste běžný uživatel (a jiný než ten, kdo spustil Xka), tak to určitě fungovat nebude.

Nejelegantnějším řešením, které znám, je instalace balíčku sux. Ten funguje jako klasické su, ale přidává také autoritu pro spouštění aplikací komunikujících s X serverem. Použití je opět jednoduché:

$ sux uživatel příkaz

Jako uživatele musíte samozřejmě uvést uživatelské jméno toho, kdo má na stroji právě puštěný X server. Příkaz sux se pak zeptá na jeho heslo. Je to pochopitelné, protože jde o ochranu X serveru. Nechceme přece, aby kdokoliv mohl námi spuštěný X server obsluhovat. No a pokud známe heslo, funguje nám to.

Pokud znáte nějakou jinou a hezkou cestu, určitě se o ní zmiňte v diskusi. Pokud bude hezčí a rozumnější, přidám ji do blogu.