![在自定义桌面启动器的 Exec 命令中,有条件地将 %f 传递给应用程序](https://linux22.com/image/1197368/%E5%9C%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A1%8C%E9%9D%A2%E5%90%AF%E5%8A%A8%E5%99%A8%E7%9A%84%20Exec%20%E5%91%BD%E4%BB%A4%E4%B8%AD%EF%BC%8C%E6%9C%89%E6%9D%A1%E4%BB%B6%E5%9C%B0%E5%B0%86%20%25f%20%E4%BC%A0%E9%80%92%E7%BB%99%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
我正在尝试为几个 Wine 应用程序定制一些桌面启动器。即 foobar2000 和 Winamp。我想要做的是将文件/文件夹拖放到桌面上的启动器上并直接播放它们。为此,我编辑了原始启动器并Z:%f
在命令中附加了一个参数Exex
,效果很好。例如:
Exec=env WINEPREFIX="~/.wine" wine-stable C:\\\\windows\\\\command\\\\start.exe /Unix ~/.wine/dosdevices/c:/users/Public/Desktop/foobar2000.lnk Z:%f
但是,当我尝试通过双击桌面“快捷方式”来启动应用程序时,foobar2000 和 Winamp 都尝试加载“Z:”(每个应用程序表现出不同的行为,但存在相同的根本问题)。
我如何自定义启动器,使其仅%f
在非启动器时才有条件地传递null
?也许可以采用 ( ) 的方式cmd_arg = %f != null ? "Z:%f" : ""
,然后传递cmd_arg
给Exec
...
我尝试研究command
,eval
但不确定它们是否可以合并到命令中Exec
,也不确定我是否可以使用这些命令实现我想要的效果。
解决这个问题的标准方法是什么?