Come passare il file come argomento nel file .desktop per l'applicazione wine


11

In realtà voglio fare due domande:

  1. Dove posso trovare ulteriori informazioni sulle scorciatoie / parametri disponibili per la voce Exec nei file desktop (come% U,% u,% f ...)

  2. Domanda principale, come passare il file come argomento sul launcher .desktop per l'applicazione wine?

Ho trovato qui la ricerca di questo suggerimento: z:%fche non mi è utile, come se avessi semplicemente eseguito il file .desktop senza passare il file su di esso, presuppone che l'argomento sia z:e inizia la scansione di z:"unità"


Esempio:

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

Voglio rilasciare il file XML sul mio launcher .desktop personalizzato per questa applicazione wine e posso farlo in questo modo. Il problema è che se faccio clic sull'icona di avvio per evocare questo programma, l'argomento z:viene sempre passato su di esso e questo non è accettabile


Cosa stai cercando di fare tra l'altro? Puoi aggiungere un esempio?
Bruno Pereira,

Ehi Bruno;) Ho pensato che fosse chiaro: ho creato un file desktop (scopo - launcher) per l'applicazione wine e voglio essere in grado di passarci sopra il file. La z:%fsoluzione precedente non va bene perché ogni volta che lancio questo argomento sull'applicazione del vino z:viene passato su di esso e voglio evitarlo
zetah,

Quindi hai un programma Windows chiamato (ie) application.exeche vuoi passare ad esso il file attualmente selezionato in nautilus file.txt?
Bruno Pereira,

Spiacente, avrei dovuto aggiungere un esempio nel mio primo post. L'ho aggiunto ora
zetah, il

Ho dato un'occhiata a questo fino ad ora e l'unica altra opzione per questo è uno script inserito nella execriga che controlla %fse, se esiste, avvia l'applicazione sul file, se non solo avvia l'applicazione. Prenditi cura di esso o non è un'opzione?
Bruno Pereira,

Risposte:


8

Questo è il migliore che posso finora (esempio di Blocco note)

[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

Mi aspetto risposte migliori considerando che sono principiante


Vedi il mio miglioramento di seguito per il passaggio di più file.
Harvey,


1

Un miglioramento sulla risposta di Zetah. Questo funziona per il passaggio di più file al programma. % F viene modificato in% F (maiuscolo) per passare tutti i file rilasciati, sostituendo ^ (per l'inizio della riga) con abbastanza nome del percorso per renderlo più probabile univoco, la 'g' alla fine del comando sed per fare in modo che la sostituzione si ripeta per tutti i file passati e infine $ anziché / in modo che i caratteri \ escape non siano necessari.

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

Ho anche spostato il programma da eseguire su un percorso in cui il nome del percorso non ha spazi, quindi ho spostato il mio editor di boxer da:

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

per:

/home/owner/.wine/dosdevices/c:/Progs/Boxer/

1

In questa discussione sono state pubblicate molte soluzioni hacker. Ecco una soluzione molto migliore che si occupa di più file e di spazi nei nomi dei file.

Crea il file .desktop come fai di solito e usa semplicemente questa linea 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'"

Modifica : se l'applicazione è in grado di gestire più file in una singola istanza (ad esempio un visualizzatore di PDF a più schede) e si desidera che l'istanza corrente venga focalizzata automaticamente ogni volta che si avvia un nuovo file, è necessario effettuare le seguenti operazioni:

  • Aggiungi questa riga al file .desktop: StartupWMClass=app.exe

  • Usa questo 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\")"
    

1

Una linea Exec con una pipe di winepath verso xargs, usata con quotazioni appropriate e le loro opzioni -0, funziona perfettamente in Ubuntu 14.04 per l'apertura di file singoli e multipli.

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'"

0

Questo è il modo che ha funzionato per me su una scatola RHEL 6.3 dopo alcune prove ed errori e la lettura delle specifiche della voce del desktop. Non è specifico per il vino con argomenti ma dovrebbe funzionare con qualcosa del genere Exec=wine \"filename.exe\".

Spero che aiuti qualcuno perché mi ci è voluto un po 'di ricerca per farlo funzionare.

Penso che devi usare le virgolette doppie e sfuggirle così come tutti i caratteri speciali che usano una barra rovesciata.

[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;

0

Ho appena scritto un piccolo script Python che converte i percorsi in stile Unix in formato Wine path.

Scarica lo zip , estrai wine-launcher.py nella tua cartella home e modifica il tuo file .desktop in questo modo:

Exec=python ~/wine-launcher.py "program.exe" %F
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.