2 апр. 2008 г.

Firefox: Remote Control

долго не мог понять - это bug или фичо ? оказывается - фиччо

запущен firefox на локальной машине (назовём её thishost, а удалённую remotehost)

thishost $ xhost +remotehost
захожу на удалённую машину (под тем же пользователем),
thishost $ ssh remotehost
remotehost $ export DISPLAY="thishost:0"
remotehost $ firefox

при этому открывается новое окно, но локального ff !!!
если же выключить ff, запущенный с локальной машины - и запустить с удалённой - то запуститься удалённый ff, но если сделать (не закрывая удалённый ff)
thishost$ firefox

то откроется новое окно удаённого ff

Спасибо Бассу за указание вектора поиска ответа - смысл таков: Опрашиваются все окна в рамках данного DISPLAY, и находится окно, выставившее определённые X11 atoms и открывает через remote contol новое окно.

Мат.часть: REMOTE CONTROL OF UNIX NETSCAPE

поиск кандидатов в /usr/libexec/mozilla-launcher:319
# find_running: sets the candidates array
find_running() {
declare screens s

# Try to start in an existing session; check all screens
# with priority on the current screen.
#
# If xdpyinfo isn't installed, then this will just check $DISPLAY
screens=("$DISPLAY"
$(xdpyinfo 2>/dev/null | awk '
/^name of display:/ {
disp = substr($NF, 0, match($NF, /\.[^.]*$/)-1)
}
/^number of screens:/ {
for (i = 0; i < $NF; i++) {
this = sprintf("%s.%d", disp, i)
if (this != ENVIRON["DISPLAY"])
print this
}
}')
)

# We used to check displays with xwininfo here but that isn't
# necessary with the advent of -a programname.
# Instead just test for a running program if we're on a local
# display.
if [[ $DISPLAY != :* ]] || killall -0 ${mozbin##*/} &>/dev/null; then
candidates=("${screens[@]}")
else
candidates=()
fi
}

1 комментарий:

frost комментирует...

Бассу это рассказал Джим, года 3 назад, за чашкой чая у басса в комнет, в 2ке. Господи, сколько всякой хуйни я помню...