更新
免责声明:交叉发布到 SUL(我知道通常不鼓励这样做)如何将 shell 脚本设置为 KDE 文件关联。由于只有 14 个浏览量,并且 3 天内没有任何回复,我对此不抱太大希望。
我正在使用Citrix Netscaler Gateway*.rdp
通过在我的 FF 中下载提供的文件连接到 Win10 。
我编写了一个 shell 脚本,该脚本将*.rdp
文件作为$1
并在Bash中运行:
...
set -x
xfreerdp "$1" /monitors:0,2 /floatbar:sticky:off,default:hidden,show:always /u:<me> /p:<...>
...
为了能够从 GUI 应用程序中运行此脚本,我创建了一个具有已知类型的新文件关联:application/rdp,因为之前已分配给Remmina(我从那里删除了这两个文件):*.RDP
*.rdp
有一个~/.local/share/applications/Bash-RDP.desktop
。
在FF中我设置了:
*.rdp
但是,在 FF 的下载下拉列表或下载库中打开下载的文件或在Dolphin的我的下载文件夹中打开下载的文件时,这都不起作用。如果我这样做,xfreerdp会出现在任务栏中,并带有进度圈,仅持续几秒钟,并且没有任何进一步的视觉表示。每次尝试时都会保留一个xfreerdp任务,之后我必须将其杀死。
更新
这很奇怪。我的旧(工作)已知类型 x-remmina
现在有文件名模式 *.rdpx
,*.remmina
. (我上面提到我从那里搬到*.RDP
了*.rdp
新的地方。):
首先是应用程序xfreerdp
首选项顺序,这正是在选择*.rdp
文件时采取的,例如忽略我的新已知类型、关联的文件名模式、我的应用程序首选项以及最后的脚本。我怎么知道?我将顺序更改为:
文件在Kate*.rdp
中打开。
这值得提交错误报告吗?
更新2
对我来说,这是:文件关联中的新自定义已知类型被忽略。
不要使用该
-c
选项。该选项的参数不是脚本文件- 参数本身是将余数接收为 $1、$2 等的脚本。因此,您现在拥有的是一个脚本(无名)调用另一个脚本(rdp.sh),在这种情况下,位置参数永远不会隐式“传递”——只有显式使用$1
或时才会发生这种情况,例如:$@
(您需要指定一个虚拟参数,例如此处
--
,因为后面的第一个参数实际上将存储在特殊的 $0 中,而不是 $1 中。)不过,通常情况下,您可以省略整个
-c
选项并让 Bash 直接运行脚本文件,因为最初的意图可能是:(这也是为什么后面的第一个参数存储在特殊的 $0 而不是 $1 中。)
这确实失去了在参数中使用 -expansion 的能力
~/
,但这很少是一个问题(如果 .desktop 文件在同一系统上的多个用户之间共享,那么脚本无论如何都会位于 /usr/bin 中)。为了进一步简化它,
chmod +x
您的脚本(并确保它具有常用的#!
标题),然后您将能够执行以下操作:在这种情况下,
Program: rdp.sh
如果您的 $PATH 正确就足够了。最后我实现了我想要的:
rdp
⮕- Removex-remmina
⮕文件名模式⮕ + Add:*.rdp
&*.RDP
/bin/bash
/home/<user>/bin/rdp.sh %U
更新
如果发现这有一个缺点:当从系统菜单或底部面板中选择Konsole时,它会在底部面板上出现不到一秒钟,然后消失。如果我右键单击其图标并选择打开新窗口或...选项卡,它会正常打开。