我有两个终端:uxterm 和 urxvt。我还使用 ranger 作为文件浏览器。每当我选择打开包含文件夹在Firefox 下载,Firefox 在 uxterm 中打开 ranger。如何在不删除 uxterm 的情况下让 Firefox 在 urxvt 而不是 uxterm 中打开 ranger?
如果我安装了其他文件管理器(我试过 Thunar 和 PCManFM),Firefox 会自动选择它们。
我也尝试将$TERM
和设置$TERMINAL
为urxvt
和rxvt-unicode-256color
,但没有什么区别。
我正在运行 Arch Linux。
答案1
以下是我解决这个问题的方法:
将系统
ranger.desktop
文件复制到本地文件夹。$ sudo cp /usr/share/applications/ranger.desktop ~/.local/share/applications
更改所有者和群组。
$ sudo chown $USER ~/.local/share/applications/ranger.desktop && chgrp $USER ~/.local/share/applications/ranger.desktop
改变终端到错误的和执行官到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
更新桌面数据库
$ 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