我正在摆弄一个有点古怪的东西。我正在寻找一种方法来让启动 MPV(视频播放器)到视频链接变得更容易。MPV 的默认行为是mpv https://url.of.video
在终端中启动,或者将 URL 拖放到 MPV 窗口。我觉得这不是一个以键盘为中心的人。相反,我想启动一个弹出框,粘贴 URL,按回车键,然后让 MPV 将视频启动到该 URL。这样,我可以将此命令绑定到键盘快捷键,使整个过程变得非常容易。我已经完成了,但有一个小小的问题——gnome-terminal 窗口挂了。这是一个简单的单行代码:
URL=$(yad --entry) && gnome-terminal -- bash -c "mpv $URL"
如果我启动该命令,我会得到一个弹出框,这要感谢 YAD。此时我粘贴 URL,按回车键,1-2 秒后,MPV 窗口就会打开并显示该视频。太棒了。这正是我想要的。
我提到的纸张切割是指 gnome-terminal 仍在运行。这不是什么大问题,但我想知道是否有办法让上面的命令启动 gnome-terminal、调用 MPV、附加变量 (URL),然后让 gnome-terminal 关闭自身而不结束视频流。
好奇是否有人有任何想法。非常感谢!
答案1
解决您的问题
这里正确的解决方案是首先省略调用甚至设置不需要的变量,所有这些都不是您所需要的gnome-terminal
:bash
mpv -- "$(yad --entry)"
我添加了引号来正确处理 URL,这确保它可以包含空格和与号 ( &
),并且命令仍然有效。--
告诉mpv
停止寻找选项,而是将您选择的任何内容视为参数。想象一下常见的情况,您在--version
启动 mpv 的目录中有一个名为的文件,只需输入此文件名,如何mpv
知道是否向您显示其版本字符串或打开文件?
回答你的问题
nohup
或者disown
可用于将进程与启动它的 shell 分离,请参阅“<command> & disown” 和 “nohup <command> & disown” 之间的区别。
对于您来说,正确的解决方案是:
gnome-terminal -e nohup mpv -- "$(yad --entry)"
然而,要获得更好的解决方案,请参见上文。