Как изменить ДИСПЛЕЙ запущенного в данный момент приложения

#!/bin/bash

start=$(date +%s)
#
# do something
sleep 10
#
#
end=$(date +%s)

seconds=$(echo "$end - $start" | bc)
echo $seconds' sec'

echo 'Formatted:'
awk -v t=$seconds 'BEGIN{t=int(t*1000); printf "%d:%02d:%02d\n", t/3600000, t/60000%60, t/1000%60}'
5
03.11.2017, 23:37
1 ответ

Невозможно переместить запущенное приложение X Window на другой дисплей, как это определено переменной DISPLAY, по двум причинам.

Во-первых, трудно изменить среду запущенного процесса и невозможно сделать это надежно и таким образом, чтобы это изменение учитывалось.

Во-вторых, переменная DISPLAYявляется только входной, и обычно она учитывается только при запуске приложения. X-приложение вызываетXOpenDisplayв начале своего запуска, прямо или косвенно, и именно (или, скорее,XTOpenDisplay)принимает во внимание DISPLAY(, если это необходимо — используемый X-сервер может быть указан в другие способы ). XOpenDisplayвозвращает указатель на непрозрачную структуру Display, которая представляет соединение с X-сервером, и это все, что после этого используется для связи с X-сервером. Изменение значения DISPLAYпосле этого не будет иметь никакого эффекта; приложение каким-то образом должно понять, что значение изменилось, закрыть свое соединение с X-сервером и открыть новое.

Оба пункта, взятые вместе, означают, что очень сложно даже написать приложение, которое может изменять свое отображение (, потому что оно предназначено для этого ), не говоря уже об изменении отображения, когда приложение этого не ожидает.

1
27.01.2020, 20:43

Теги

Похожие вопросы