Como passar o arquivo como argumento no arquivo .desktop para o aplicativo wine

8

Eu realmente quero fazer duas perguntas:

  1. Onde posso encontrar mais sobre os atalhos de argumentos / parâmetros disponíveis para a entrada do Exec nos arquivos da área de trabalho (como% U,% u,% f ...)

  2. Pergunta principal, como passar o arquivo como argumento no launcher do .desktop para a aplicação wine?

Eu encontrei pesquisando aqui esta sugestão: z:%f que não tem nenhum uso para mim, como se eu simplesmente executasse o arquivo .desktop sem passar o arquivo, ele assume que o argumento é z: e inicia a varredura z: " drive "

Exemplo:

[Desktop Entry]
Name=Some Windows program
Exec=wine "program.exe" z:%f
Type=Application
Terminal=false
MimeType=application/docbook+xml

Eu quero deixar o arquivo XML no meu launcher personalizado .desktop para este aplicativo de vinhos e posso fazer isso. O problema é que, se eu clicar no ícone do lançador para evocar este programa, o argumento z: é sempre transmitido e isso não é aceitável

    
por zetah 10.12.2011 / 22:53

7 respostas

4

Isso é o melhor que posso até agora (exemplo do bloco de notas)

[Desktop Entry]
Name=Notepad
Exec=sh -c "echo %f | sed 's/^\//z:\//' | xargs wine /home/zetah/.wine/drive_c/windows/notepad.exe"
Type=Application
Terminal=false
Categories=Wine
MimeType=text/plain

Espero respostas melhores, considerando que sou iniciante

    
por zetah 11.12.2011 / 14:36
2

Para a primeira pergunta, você pode dar uma olhada nas Especificação de entrada na área de trabalho - A tecla Exec

    
por enzotib 11.12.2011 / 13:09
1

Havia muitas soluções hackeadas postadas neste tópico. Aqui está uma solução muito melhor que lida com vários arquivos e com espaços em nomes de arquivos.

Crie o arquivo .desktop como você costuma fazer, e simplesmente use esta linha Exec:

Exec=/usr/bin/env bash -c "printf 'z:%%q\n' %F | WINEPREFIX='/home/<your username>/.wine' xargs wine 'C:\Path\to the executable\app.exe'"

Editar : se o aplicativo puder manipular vários arquivos em uma única instância (por exemplo, um visualizador de PDF com várias guias) e você quiser que a instância atual seja focada automaticamente sempre que você iniciar um novo arquivo então você precisa fazer o seguinte:

  • Adicione esta linha ao arquivo .desktop: StartupWMClass=app.exe

  • Use este comando Exec:

    Exec=/usr/bin/env bash -c "(printf 'z:%%q\n' %F | WINEPREFIX='/home/<your username>/.wine' xargs wine 'C:\Path\to the executable\app.exe' &); xdotool windowactivate $(xdotool search --sync --onlyvisible --class \"app.exe\")"
    
por Caleb 28.01.2015 / 16:29
0

Esta é a maneira que apenas funcionou para mim em uma caixa RHEL 6.3 após algumas tentativas e erros e a leitura da Especificação de Entrada na Área de Trabalho. Não é específico para wine com argumentos, mas deve funcionar com algo como Exec=wine \"filename.exe\" .

Espero que ajude alguém, já que precisei de algumas pesquisas para que ele funcionasse.

Eu acho que você tem que usar aspas duplas e escapar delas, assim como qualquer caractere especial usando uma barra invertida.

[Desktop Entry]
Version=1.0
Name=Ansys User Lic Prefs 12.1
GenericName=Ansys User Lic Prefs 12.1
Comment=Ansys User License Prefs 12.1
Encoding=UTF-8
Exec=anslic_admin \"\-userprefs121\"
Icon=ansysLogo_16x16.png
Terminal=false
Type=Application
Categories=Ansys;
    
por user80295 30.07.2012 / 19:38
0

Uma melhoria na resposta da zetah. Isso funciona para passar vários arquivos para o programa. O% f é alterado para% F (maiúsculas) para passar todos os arquivos eliminados, substituindo o ^ (para o início da linha) com o nome do caminho o suficiente para torná-lo mais provável exclusivo, o 'g' no final do comando sed para fazer com que a substituição seja repetida para todos os arquivos passados e, finalmente, o $ em vez de / para que os caracteres de escape não sejam necessários.

Exec=sh -c "echo %F | sed 's$/home$z:/home$g' | xargs wine /home/owner/.wine/dosdevices/c:/Progs/Boxer/b.exe"

Eu também movi o programa para ser executado em um caminho onde o nome do caminho não possui espaços, então mudei meu editor de boxer de:

/home/owner/.wine/dosdevices/c:/Program Files/Boxer Text Editor/

para:

/home/owner/.wine/dosdevices/c:/Progs/Boxer/
    
por Harvey 02.12.2014 / 07:41
0

Acabei de escrever um pequeno script Python que converte caminhos no estilo Unix para o formato de caminho do Wine.

Faça o download do zip , extraia wine-launcher.py na sua pasta pessoal e edite o seu arquivo .desktop assim:

Exec=python ~/wine-launcher.py "program.exe" %F
    
por Ivan Filho 02.01.2015 / 10:37
0

Uma linha Exec com um pipe de winepath para xargs, usado com cotação apropriada e suas opções -0, funciona perfeitamente no Ubuntu 14.04 para abrir arquivos únicos e múltiplos.

Exec=/usr/bin/env sh -c "winepath -w -0 %F | WINEPREFIX='/home/your_user_name/.wine' xargs -0 wine 'C:\\Program Files\\Some Vendor\\SomeProgram.exe'"
    
por lbo 13.12.2016 / 14:00

Tags