Система сборкиpopt-1.16
(последней версии AFAICT )не совсем совместима с целью AArch64 cross -. Но несовместимость просто на стадии попытки подправить тройку платформ к какому-то стандартному виду, так что можно банально исправить. Вот как мне удалось пересечь -скомпилировать его (аналогично CLFS, я предполагаю, что вы распаковали tarball и cd
переместили его в каталог):
sed -i 's@^\(.* | armv\[.*\) \\@\1 | aarch64 \\@' config.sub
./configure --build=i686-cross-linux-gnu \
--host=aarch64-linux-gnu \
--prefix=/usr
make
После этого вы можете make DESTDIR=/your/destination/dir install
выполнить установку.
Ваша оболочка порождает такие процессы, как Zaratura, как подпроцессы, которые уничтожаются при уничтожении материнского процесса. Ваш эмулятор терминала запускает саму оболочку как подпроцесс.
Итак, самое простое решение — не открывать вещи в подпроцессе, а как отдельный процесс.
Вы можете сделать это для любого процесса, используя
nohup programname parameters..
но в вашем случае еще проще:
xdg-open yourfile.pdf
открывает приложение, которое должно открывать файлы приложения/pdf, как отдельный процесс. Это работает и с другими типами файлов -.
Думаю, я, возможно, нашел то, о чем говорил, поэтому буду считать эту тему закрытой. Чувствую себя немного глупо, но я не мог найти его в течение некоторого времени, и тогда я спросил.. Случайным образом я нашел его довольно быстро впоследствии.
Но спасибо за помощь!
(если кому интересноhttps://www.youtube.com/watch?v=mBNLzHcUtToизвините за дурацкое название видео.)
Удачи.
Это можно сделать с помощью xdotools
. Помимо "сворачивания" терминала, мы можем удалить его из отображения, сделав его скрытым от оконного менеджера.
Почистил и прокомментировал скрипт, который я сделал для этого давным-давно, и который я честно редко использую, но он должен подойти.
Хорошая вещь с использованием xdotools
, (, пока вы используете X ), это контроль, который у вас есть, и настройки, которые можно включить и т. д. Это ценный инструмент для создания пользовательских оконных инструментов. Если есть ошибка или нужная функция, с ней достаточно легко работать.
Помимо скрытия эмулятора терминала, этот скрипт также имеет несколько опций:
-p
поместите дочерний элемент в те же координаты, что и у терминала (перед снятием карты ). -r
вместо того, чтобы скрывать терминал, сделайте его дочерним по отношению к терминалу. (Скорее экспериментальный и требует дополнительной работы, если он хочет хорошо работать с различными приложениями.)-v
немного подробностей -h
помощь При отсутствии опций просто запустите программу и отключите терминал.
Также восстанавливается позиция терминала при повторном -отображении -, так как она может быть потеряна в различных оконных менеджерах.
Тщательно не тестировался, но работал нормально для того небольшого количества времени, которое я использовал.
Если использовать его для запущенных приложений, которые не создают новые экземпляры, например. qalculate
, необходимо использовать флаг -n
или любой другой, если он присутствует, чтобы приложение начало новый сеанс.
Можно, конечно, реализовать минимизировать вместо/в дополнение к unmap и т. д.
Внимание!:Из-за того, что код сайта / SE нарушает код, заменяя пробелы для вкладок, либо копируйте, нажав , редактируйте , либо повторно вставляйте после вставки в редактор. (Это относится к <<-EOF
ниже)
#! /bin/sh -
# Print various information, option: -v
verbose=0
# Position spawned window at X Y of terminal, option: -p
poschild=0
# Reparent to terminal
reparent=0
# ENABLE JOB CONTROL
set -m
print_help() {
cat<<-EOF
Usage: $(basename "$0") [OPTION] program [args...]
Hide terminal window by unmapping until program exits.
Do Ctrl+C when using -r / -p if program fails.
OPTIONS
-p Position child at X Y of terminal.
-r Reparent. Set it as child of terminal.
-v Verbose. Print geometry.
-h This help.
EOF
}
print_geom() {
cat<<-EOF
WIN-ID $WINDOW
POS $X $Y
SIZE $WIDTH $HEIGHT
EOF
}
# DEFINES by Evil Eval
# WINDOW (window id)
# X Y
# WIDTH HEIGHT
# SCREEN
get_win_geom() {
eval "$(xdotool getactivewindow getwindowgeometry --shell)"
}
# RESTORE Terminal Geom
set_win_geom() {
xdotool windowmove "$WINDOW" "$X" "$Y"
xdotool windowsize "$WINDOW" "$WIDTH" "$HEIGHT"
}
# HIDE current terminal
term_hide() {
xdotool windowunmap "$WINDOW"
}
# RESTORE Terminal
term_show() {
xdotool windowmap "$WINDOW"
# On remapping window can loose original position
# Restore to pre-unmap values
set_win_geom
}
# Position program at X Y of terminal
# Using -sync has two effects:
# 1. Need to wait for window to appear
# 2. If command fails it hangs, and we can
# abort with Ctrl+C
# Use --onlyvisible as windows can have a range of sub-windows.
# This could likely be done better.
pos_child() {
wid="$(xdotool search --sync --pid "$1" --onlyvisible --limit 1 --all)"
xdotool windowmove "$wid" "$X" "$Y"
}
# Adopt the child process's window
win_reparent() {
wid="$(xdotool search --sync --pid "$1" --onlyvisible --limit 1 --all)"
xdotool windowreparent "$wid" "$WINDOW"
}
# Bring process to foreground after mapping, moving etc.
fg_cpid() {
if ! kill -0 "$cpid" 2>/dev/null || ! fg %1 >/dev/null; then
printf 'Failed\n' >&2
return 1
fi
}
while [ -n "$1" ]; do
case "$1" in
'-h'|--help) print_help >&2 ; exit 1 ;;
'-v') verbose=1 ;;
'-p') poschild=1 ;;
'-r') reparent=1 ;;
*) break ;;
esac
shift
done
get_win_geom
[ $verbose -eq 1 ] && print_geom >&2
# Order of operation can be of importance here.
# Start child before unmap
command "$@" &
cpid="$!"
[ $poschild -eq 1 ] && pos_child "$cpid"
[ $verbose -eq 1 ] && jobs -l
if [ $reparent -eq 1 ]; then
win_reparent "$cpid"
fg_cpid || exit 1
else
term_hide
fg_cpid || exit 1
# Restore when child departs
term_show
fi