sars
1
[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