Запустить команду в gnome-терминал, затем закрыть gnome-терминал, не заканчивая выполненную команду?
У меня есть полу-чудак, с которым я возиться. Я ищу способ сделать запуск MPV (видеоплеер) на видео ссылки проще. Стандартное поведение MPV - запуск mpv https://url.of.video
в терминале, или перетащите URL-адрес в окно MPV. Я не нахожу этого кошерного человека, ориентированного на клавиатуру. Вместо этого я хотел бы открыть всплывающее окно, вставить URL, нажать клавишу ввода и MPV запустил видео по этому URL. Таким образом, я мог привязать эту команду к сочетанию клавиш, делая весь процесс безумным простым. У меня есть это завершено, но с одним небольшим бумажным вырезом - окно терминала гнома висит вокруг. Это простой вкладыш:
URL=$(yad --entry) && gnome-terminal -- bash -c "mpv $URL"
Если я запускаю эту команду, я получаю всплывающее окно благодаря YAD. В этот момент я вставляю URL, нажимаю ввод, и через 1-2 секунды открывается окно MPV для этого видео. Потрясающие. Именно то, что я хотел.
Разрез бумаги, который я упомянул, является фактом, что терминал гнома продолжает работать. Не большая проблема, но я хотел бы выяснить, есть ли у этой команды способ запустить gnome-терминал, вызвать MPV, добавить переменную (URL), а затем закрыть gnome-терминал без остановки видео поток.
Любопытно, если у кого-нибудь есть идеи. Большое спасибо!
1 ответ
Решение вашей проблемы
Правильное решение здесь - не звонить gnome-terminal
а также bash
и даже установка ненужной переменной в первую очередь, все это не нужно в вашем случае:
mpv -- "$(yad --entry)"
Я добавил кавычки для правильной обработки URL-адреса, это гарантирует, что он может содержать, например, пробелы и знаки амперсанда (&
) и команда все еще работает. --
говорит mpv
перестать искать варианты и обрабатывать все, что вы выберете, вместо этого в качестве аргумента. Представьте себе общий случай, когда у вас есть файл с именем --version
в каталоге вы запускаете MPV и просто введите это имя файла, как можно mpv
знаете ли показать вам свою версию строки или открыть файл?
Ответ на ваш вопрос
nohup
или же disown
может использоваться для отсоединения процесса от оболочки, которая его запустила, см. Различия между "
В вашем случае правильное решение будет:
gnome-terminal -e nohup mpv -- "$(yad --entry)"
Однако, для лучшего решения см. Выше.