Eu tenho um aplicativo do MS Windows que precisa de uma nova versão do Wine. Eu o instalei localmente na pasta pessoal usando o PlayOnLinux.
Estou preso à criação de um script simples bash/dash/sh para iniciar o aplicativo .exe dentro de sua pasta. Tentei a abordagem padrão pushd/popd
, cd && exec
, (cd && exec)
mas falhou.
O que eu preciso:
Arquivo da área de trabalho como iniciador para um script
Um roteiro que:
- altera o diretório para o diretório do aplicativo .exe
- executa
wine .exe
dentro do diretório do aplicativo
Atualmente estou feliz com o seguinte código Python para script wrapper (a ser colocado em /usr/local/bin/wine32-wrapper ):
#!/usr/bin/python3
import os
import sys
import subprocess
if len(sys.argv) >= 2:
path = sys.argv[1]
wd = os.path.dirname(path)
exec_path = ["/home/{}/.PlayOnLinux/wine/linux-x86/6.15/bin/wine".format(os.getenv('USER'), path), "{}".format(path)]
p = subprocess.run(exec_path, cwd=wd)
else:
print("\nUsage {} with one argument - full file path.".format(sys.argv[0]));
e .desktop-file (a ser colocado em ~/.local/share/applications/wine32.desktop ), para ele:
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon=mate-panel-launcher
Exec=wine32-wrapper %f
Name=Local Wine32-6.15
então associo meus arquivos exe com este script de vinho usando o Caja.
É possível substituir o script python acima pelo script bash/dash/sh com exatamente a mesma funcionalidade?
Para as entradas da área de trabalho, há um parâmetro Path disponível. Aqui está a aparência do inicializador de StarCraft II (criado durante a instalação pelo Wine):
Após uma análise mais profunda, encontrei arquivos de desktop bons e interessantes para o "Wine Windows Program Loader", que vieram de pacotes do Wine. Possui opções especiais em
Exec
campo :e força o arquivo exe a ser lançado em seu diretório.
Para o meu caso, pode ser adaptado para ~/.local/share/applications/wine32.desktop conforme mostrado abaixo:
Assim, a parte do script não é necessária, terminamos com um único arquivo desktop com
start /unix
opção especial.Nota: quando o Wine é instalado a partir de repositórios oficiais do Ubuntu, o "Wine Windows Program Loader" pode ser registrado usando comandos como
mkdir -p ~/.local/share/applications/ && cp /usr/share/doc/wine-stable/examples/wine.desktop ~/.local/share/applications/
.