如何将 shell 脚本设置为 KDE 文件关联

如何将 shell 脚本设置为 KDE 文件关联
更新

免责声明:交叉发布到 SUL(我知道这通常是不鼓励的)如何将 shell 脚本设置为 KDE 文件关联。由于只有 14 次浏览,并且 3 天内没有任何回复,所以我对此不抱太大希望。


我正在使用*.rdpCitrix Netscaler 网关通过我的 FF 下载。

我编写了一个 shell 脚本,它将文件*.rdp作为,$1并且它在猛击

...
set -x
xfreerdp "$1" /monitors:0,2 /floatbar:sticky:off,default:hidden,show:always /u:<me> /p:<...>
...

为了能够在 GUI 应用程序中运行此脚本,我创建了一个新的文件关联已知类型应用程序/rdp因为*.RDP*.rdp被分配给雷米娜之前(我从那里删除了这两个):

文件关联 RDP

有一个~/.local/share/applications/Bash-RDP.desktop

在 FF 中我已经设置:

FF 设置 > 应用程序 > RDP

*.rdp但是,在 FF 的下载下拉菜单中打开下载时,这个功能不起作用,或者下载库也不在我的下载文件夹海豚如果我这样做自由网络任务栏中只显示进度圈几秒钟,没有进一步的视觉表示。自由网络每次尝试后我都必须终止任务。

更新

这很奇怪。我的旧(工作)已知类型 x-remmina现在文件名模式 *.rdpx*.remmina。(我上面提到过,我*.RDP*.rdp那里搬到了我的新住处。):

x-雷米娜

xfreerdp首先是应用程序优先顺序正是这样选择*.rdp文件时,例如忽略我的新已知类型、我的关联文件名模式、我的应用程序首选项以及最终我的脚本。我怎么知道?我将顺序更改为:

更改应用程序优先顺序

并且*.rdp文件打开于凯特

这值得报告错误吗?

更新2

对我来说:文件关联中的新自定义已知类型被忽略

答案1

不要使用该-c选项。该选项的参数不是脚本文件– 参数本身是将接收余数为 $1、$2 等的脚本。因此,您现在拥有的是一个脚本(无名)调用另一个脚本(rdp.sh),在这种情况下,位置参数永远不会被隐式“传递” - 只有在$1或被$@明确使用时才会发生这种情况,例如:

Program: bash
Arguments: -c '~/bin/rdp.sh "$1"' -- %U

(您需要指定一个虚拟参数,例如--这里,因为后面的第一个参数实际上将存储在特殊的 $0 中,而不是 $1 中。)

不过,通常你可以省略整个-c选项,让 Bash 直接运行脚本文件最初的意图可能是:

Program: bash
Arguments: /home/gerold/bin/rdp.sh %U

(这也是为什么后面的第一个参数存储在特殊的 $0 中,而不是变成 $1。)

这确实失去了在参数中使用 -expansion 的能力~/,但这很少成为问题(如果 .desktop 文件在同一系统上的多个用户之间共享,那么脚本无论如何都会在 /usr/bin 中)。

为了进一步简化它,chmod +x您的脚本(并确保它具有通常的#!标题),然后您将能够执行以下操作:

Program: /home/gerold/bin/rdp.sh
Arguments: %U

在这种情况下,Program: rdp.sh如果您的 $PATH 正确就足够了。

答案2

最后我通过以下方式实现了我想要的:

  1. 文件关联了解类型rdp- Remove
  2. 了解类型x-remmina文件名模式+ Add*.rdp*.RDP
  3. 应用程序优先顺序+ Add...控制台
  4. 选择控制台

相关内容