Якщо в системі працює декілька X Windows, чи можливо отримати програму для запуску в певному вікні? Як би ви визначили Вікно та змусили програму запускатись там?
Я припускаю, що у мене є всі необхідні дозволи для запуску такої програми.
Якщо в системі працює декілька X Windows, чи можливо отримати програму для запуску в певному вікні? Як би ви визначили Вікно та змусили програму запускатись там?
Я припускаю, що у мене є всі необхідні дозволи для запуску такої програми.
Відповіді:
X програми знають, з яким X сеансом вони мають поговорити, переглядаючи DISPLAYзмінну середовища.
Спочатку вам потрібно буде з’ясувати, що DISPLAYвстановлено на X сесії, де ви хочете запускати вашу програму. Зробіть це, видавши команду echo $DISPLAYвсередині X-терміналу в цьому сеансі X. Зазвичай виходить щось подібне :0.0.
Скажімо, ви хочете запустити відмінну програму xclockпрограми на своєму X сесії, де DISPLAYє:0.0 , але ви хочете зробити це на консолі. Потім натискаєте Alt-Ctrl-F1, щоб перейти на цю консоль, а потім введіть:
DISPLAY=:0.0 xclock # variables set w/ a command are local to that command
Потім ви повертаєтесь до X, натискаючи Alt-Ctrl-F7 або Alt-Ctrl-F8 (або, можливо, якусь іншу клавішу F, залежно від вашого смаку Linux) і переглядаєте нову гарненьку годинник, який у вас є.
Насправді ви могли виконати вищевказану команду в будь-якій оболонці на тій же машині (через SSH, в будь-який X сеанс, на будь-якій консолі тощо) - той факт, що ви вказали DISPLAY=:0.0перед командою, означає, щоxclock вікно завжди з'явиться у той же X сеанс.
Насправді - окрім того, що на це дивляться програми X - немає нічого особливого у DISPLAYзмінній. Зазвичай, коли ви запускаєте програми з X-терміналу, вони починаються в потрібному місціDISPLAY що для вас уже встановлено.
Замість використання вищевказаної команди ви також можете розділити її на дві частини, спочатку встановивши DISPLAY, а потім виконавши xclock. У цьому випадку DISPLAYналаштування зберігатиметься, поки ви не закриєте цю оболонку, і всі наступні X програми, запущені звідти, відкриються в тому ж X сесії, що і xclock.
# variables set w/o a command are local to the shell,
export DISPLAY=:0.0 # unless exported
xclock
DISPLAYбуде встановлено експорт за замовчуванням, оскільки він імпортується оболонкою (він працює як для мене, так zshі dashдля мене без використання export). Але так, якщо ви не можете змусити працювати дворядкові версії, спробуйте замінити DISPLAY=:0.0на export DISPLAY=:0.0.
Зазвичай програми X-клієнта використовують DISPLAYзмінну середовища, щоб знати, до якого дисплея X-сервера підключитися. Деякі програми також приймають параметр командного рядка ( -displayабо щось подібне), який може використовуватися для заміни DISPLAYзмінної середовища.