我有一些使用 GTK 提供 UI 的 Python 脚本(即它不是终端应用程序)。在 Ubuntu 21.04 中,双击 Nautilus 将为我提供使用或不使用终端运行它们的选项。升级到 21.10 后,只有一个“作为程序运行”选项,它总是打开一个(不必要的)终端。
有没有什么方法可以避免在从 Nautilus 运行脚本时打开终端?
答案1
针对该问题“可执行文本文件偏好设置被认为无用”在 gitlab 上,双击可执行文件时询问做什么的选项已从 GUI 中删除,并改为运行不带终端的程序。
我知道有两种方法可以实现这一点
1-创建一个nautilus脚本,在后台运行可执行文件,然后关闭它自己的终端:
放入一个 shell 脚本~/.local/share/nautilus/scripts/
并将其标记为可执行文件,以便它显示在子菜单下的上下文菜单中Scripts
,并在其中写入以下命令:
#!/bin/sh
nohup "./$1" >/dev/null 2>&1 &
您可以参考这个答案关于nohup
和的一些解释的问题disown
。(分离进程的另一种方法)但请注意,以这种方式分离的进程不会在您注销用户时自动关闭
您也可以直接使用,sh -c './$1 &'
而不是整个 nohup 麻烦,正如评论关于同一个问题。
2- 使用已弃用的文件管理器操作向上下文菜单添加一个选项,以便在没有终端的情况下运行可执行文件:
sudo apt-get install filemanager-actions
- 要么使用启动器运行它,要么直接从终端运行它的二进制文件
fma-config-tool
- 如果您不希望自定义上下文菜单选项位于子菜单中,请转到编辑->首选项->取消选中
Create a root 'FileManager-Actions' menu
- 现在添加一个新动作。随意命名,该名称将显示在上下文菜单中。
- 转到
Action
选项卡,确保Nautilus item
已选中selection
和未选中该部分location
,如下所示此截图 - 转到
Command
选项卡并设置路径,%f
它应该看起来像这 - 转到
Execution
选项卡并确保执行模式设置为正常。这允许在隐藏终端中执行。截屏 - 转到
Capabilities
选项卡并添加Executable
过滤器,然后检查Must match all of
该过滤器的选项。截屏 - 现在保存(就在你添加操作的位置旁边)以使更改生效。现在你会看到你的选项添加到了可执行位设置的文件的上下文菜单中,就像这样此截图(在我的例子中,我将其命名为在后台运行)
注意:您可以使用 中脚本中使用的相同命令filemanager-actions
。您只需设置命令 (截屏) 到
/bin/sh
它的参数是
-c 'nohup "%f" >/dev/null 2>&1 &'