Хорошо, нашел.
Вам нужно добавить сеть только для хоста в виртуальный ящик.
Затем настройте виртуальную машину для использования сети только для хоста.
И, наконец, возьмите адрес в этой виртуальной сети с помощью команды ip:
sudo ip addr add 192.168.56.1/24 dev vboxnet
То, что вы видите здесь, довольно специфично для самого mate-terminal
, хотя в более общем плане используется некоторая общая инфраструктура GNOME/GTK+, которую вы также можете найти в других приложениях (, которые вы упомянули pcmanfm
.)
Когда вы запускаете новую копию mate-terminal
, возможно, из другого двоичного файла, она действительно создает для нее новый процесс. Но mate-terminal
запрограммирован на подключение к шине D -и попытку найти «фабрику», и в этом случае он передаст ей аргументы для запуска в терминале, и «фабрика» будет управлять этим, затем завершить новый процесс. (Если фабрики нет, она зарегистрирует себя как фабрику, поэтому первый запущенный процесс в конечном итоге будет управлять всеми терминалами.)
"Фабрика" находится по пути -шины D, /org/mate/Terminal/Factory
, который жестко запрограммирован в двоичном коде. (Таким образом, реплицируется в другие копии бинарника.)
В частности, в случае mate-terminal
вы можете отключить это поведение, передав ему --disable-factory
аргумент строки команды -. (См. справочную страницу для получения дополнительной информации.)
Это довольно уникальный способ работы mate-terminal
. В частности, pcmanfm
делает это иначе. Неясно, поддерживает ли pcmanfm
способ запуска отдельного процесса, или единственный способ, которым он работает, — это связь через шину D -с существующим экземпляром. (Вам нужно заглянуть в pcmanfm
, чтобы убедиться, что это так.)
У меня есть шелл-скрипт, который создает три терминальных окна на рабочем столе моего основного компьютера. Используя некоторые идеи из моего сценария, я предпринял следующую попытку, которая может сработать для вас (или помочь вам сделать то, что вам нужно ),
#!/bin/bash
vdockw=0 #68
hdockw=60
resol=$(xrandr|grep current|cut -d, -f2)
resol=$(<<< "$resol" sed 's/.*current //')
echo $resol
xres=${resol%% *}
yres=${resol##* }
echo $xres $yres
xmid=$(( (xres-vdockw)/2 ))
ymid=$((yres-hdockw))
echo $xmid $ymid
#xterm -title "term v" & pid=$!
sakura --title="term v" & pid=$!
sleep 0.5
wid=$(wmctrl -lp | grep "$pid" | cut "-d " -f1)
sleep 1
echo $pid $wid
wmctrl -i -r $wid -e 1,0,0,$xmid,$ymid
#xterm -title "term h" & pid=$!
sakura --title="term h" & pid=$!
sleep 0.5
wid=$(wmctrl -lp | grep "$pid" | cut "-d " -f1)
sleep 1
echo $pid $wid
wmctrl -i -r $wid -e 1,$((xmid+vdockw)),0,$xmid,$ymid
Я проверил, что он работает в двух установленных системах 18.04 LTS, Lubuntu (как есть )и в стандартной Ubuntu (сvdockw=68
).
Сценарий оболочки использует пакеты программ sakura wmctrl
и, возможно, xterm
, которые доступны в репозитории universe
и могут быть установлены с помощью
sudo apt update
sudo apt install sakura wmctrl xterm