如何让 Firefox 在指定终端中打开 CLI 应用程序

如何让 Firefox 在指定终端中打开 CLI 应用程序

我有两个终端:uxterm 和 urxvt。我还使用 ranger 作为文件浏览器。每当我选择打开包含文件夹Firefox 下载,Firefox 在 uxterm 中打开 ranger。如何在不删除 uxterm 的情况下让 Firefox 在 urxvt 而不是 uxterm 中打开 ranger?

如果我安装了其他文件管理器(我试过 Thunar 和 PCManFM),Firefox 会自动选择它们。

我也尝试将$TERM和设置$TERMINALurxvtrxvt-unicode-256color,但没有什么区别。

我正在运行 Arch Linux。

答案1

以下是我解决这个问题的方法:

  1. 将系统ranger.desktop文件复制到本地文件夹。

    $ sudo cp /usr/share/applications/ranger.desktop ~/.local/share/applications
    
  2. 更改所有者和群组。

    $ sudo chown $USER ~/.local/share/applications/ranger.desktop && chgrp 
    $USER ~/.local/share/applications/ranger.desktop
    
  3. 改变终端错误的执行官urxvt-e 游侠

    $ sed -i 's/Terminal=true/Terminal=false/g' 
    ~/.local/share/applications/ranger.desktop && sed -i 
    's/Exec=ranger/Exec=urxvt -e ranger/g' 
    ~/.local/share/applications/ranger.desktop
    
  4. 更新桌面数据库

    $ update-desktop-database ~/.local/share/applications
    

答案2

创建一个桌面文件,~/.local/share/applications如本例file.desktop所示,我设置文件夹以vifm在终端仿真器中运行来打开st

    [Desktop Entry]
    Type=Application
    Name=File Manager
    Exec=/usr/local/bin/st -e vifm %u

然后更新您的.config/mimeapps.list文件以使用新的桌面文件:

    inode/directory=file.desktop     

答案3

因此,这里的终端仿真器来自您的桌面环境,可能是 GNOME。只需在那里设置您的默认设置(转到概述并查找“默认应用程序”)。

对于非 DE WM,您需要查找 WM 的功能。对于i3,它使用i3-敏感终端包装器。

由于您使用了$TERMINAL变量:您是否在其中设置了它.xinitrc或者使用了什么来启动i3

对于背景,/usr/share/applications/ranger.desktop仅说明Terminal=true并让桌面环境确定要使用哪个终端。

答案4

不幸的是,Firefox 使用 Gio 来检查 中是否存在几个特定的​​终端$PATH。请参见:

https://gitlab.gnome.org/GNOME/glib/blob/2.21.6/gio/gdesktopappinfo.c#L773

正如您所看到的,rxvt-unicode-256color$TERMINAL均未经过检查。因此,解决方案是创建一个名为 (eg) 的可执行文件,rxvt并确保 Firefox 在他的 $PATH

$PATH您可以通过以下方式了解 Firefox

grep -z '^PATH=' /proc/$(pidof -s firefox)/environ | tr ':' '\n'

在 Firefox 运行时运行此命令。通常,/usr/local/bin会打印在那里,但不会打印您在启动文件(即.bashrc)。

例如,这里有一个命令,可用termite如下rxvt方式$PATH

sudo ln -s $(which termite) /usr/local/bin/rxvt

termite根据您选择的终端进行更改。

这个想法是,当 Firefox 搜索它知道的某个可执行文件时(switch case 中的可执行文件这里),它会rxvt在其中找到一个可执行文件$PATH,但它不知道这实际上是一个符号链接termite

信用:https://bbs.archlinux.org/viewtopic.php?pid=1750642#p1750642

相关内容