Как скрыть терминал при открытии приложения с графическим интерфейсом (pdf, jpg и т. д. )и заставить его снова появляться при закрытии?

Система сборки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выполнить установку.

0
24.06.2021, 12:58
3 ответа

Ваша оболочка порождает такие процессы, как Zaratura, как подпроцессы, которые уничтожаются при уничтожении материнского процесса. Ваш эмулятор терминала запускает саму оболочку как подпроцесс.

Итак, самое простое решение — не открывать вещи в подпроцессе, а как отдельный процесс.

Вы можете сделать это для любого процесса, используя

 nohup programname parameters..

но в вашем случае еще проще:

 xdg-open yourfile.pdf

открывает приложение, которое должно открывать файлы приложения/pdf, как отдельный процесс. Это работает и с другими типами файлов -.

0
28.07.2021, 11:22

Думаю, я, возможно, нашел то, о чем говорил, поэтому буду считать эту тему закрытой. Чувствую себя немного глупо, но я не мог найти его в течение некоторого времени, и тогда я спросил.. Случайным образом я нашел его довольно быстро впоследствии.

Но спасибо за помощь!

(если кому интересноhttps://www.youtube.com/watch?v=mBNLzHcUtToизвините за дурацкое название видео.)

Удачи.

0
28.07.2021, 11:22

Это можно сделать с помощью 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
2
28.07.2021, 11:22

Теги

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