自己新建桌面快捷方式不成功

[Desktop Entry]
Version=1.0
Type=Application
Name=War3
Comment=War Craft III Frozen Throne
Exec=WINEPREFIX=~/.wine-war3 wine /run/media/dudu/Data/Entertainment/Games/Warcraft\ III/Frozen\ Throne.exe
Icon=/run/media/dudu/Data/Entertainment/Games/Warcraft\ III/support/Images/Logo.jpg
Terminal=false
Categories=Game;

按上面这样建桌面快捷方式,直接运行是可以正常运行的,但桌面图标不能运行:

1,桌面上的图标显示一个X,双击则提示如下:

2, 尝试过直接复制一个正常的桌面快捷方式来改,只要输入到exec那一行就会提示有问题。

看起来是exec这行写法的问题?但为什么直接在终端里运行又没问题?desktop文件对这些写法有什么限制或要求吗?

这个应该是 shell 中执行命令的语法,Desktop 文件好像不可以这样写。

您可以尝试这么办:

(1)创建一个 shell 脚本文件,把它放到某个地方。比如,创建脚本文件 wine-war3.sh,放在 ~/.local/bin 下面。

(2)在 wine-war3.sh 中写入如下内容:

#!/bin/sh

WINEPREFIX=~/.wine-war3 wine /run/media/dudu/Data/Entertainment/Games/Warcraft\ III/Frozen\ Throne.exe

(3)给脚本文件赋予可执行权限。

(4)再编辑 Desktop 文件,Exec= 后面这样写:

Exec=~/.local/bin/wine-war3.sh

另外,本论坛使用 markdown 语法。为保持版面美观,大段代码建议使用代码块包裹。就像这样:

```python
#!/usr/bin/python3

print("Hello world!")
```

这个方法可以,谢谢!

好像还有个更简洁的方法:改一下 Exec= 那行,改成:

Exec=sh -c "WINEPREFIX=~/.wine-war3 wine /run/media/dudu/Data/Entertainment/Games/Warcraft\ III/Frozen\ Throne.exe"

sh -c "命令" 的意思就是使用 shell 运行后面那串命令。

这个试了一下不行。

我查了一下 Arch Linux 中文百科,好像 .desktop 文件中,涉及环境变量的内容,需要这样写:

要设置环境变量,在 .desktop 文件中,编辑 Exec= 行以首先使用 env(1) 命令设置变量。例如,将原始行注释掉:

...
# Exec=abiword %U
Exec=env LANG=he_IL.UTF-8 abiword %U
...

那么,您的那个 .desktop 文件中 Exec 行应该就是要这样写:

Exec=env WINEPREFIX=~/.wine-war3 wine /run/media/dudu/Data/Entertainment/Games/Warcraft\ III/Frozen\ Throne.exe