Linux [Gelöst] - [Debian Bookworm] .desktop Shortcuts mit WINEPREFIX

Linux Betriebssystem

bemymonkey

Well-known member
Registriert
21 Juni 2009
Beiträge
10.143
Moin zusammen, nach einigem Googlen und Ausprobieren zweifel' ich langsam an meinem Verstand - könnte mich jemand mit mehr (Gnome?) Erfahrung vlt. nochmal in die richtige Spur bringen?


Ich nutze z.B. X32-Edit per Wine und würde das gerne mit einem Shortcut starten. Folgender Terminal-Befehl funktioniert einwandfrei:

Code:
WINEPREFIX=~/.wine64 wine /home/simon/SyncThing/Apps/X32-Edit/X32-Edit.exe

Wenn ich jedoch diesen Inhalt in die EXEC Zeile einer .desktop Datei packe (ganz normal in ~/.local/share/applications), gibt es folgende Probleme:
  1. taucht der Shortcut nicht im App-Launcher auf, obwohl er im selben Ordner liegt wie andere funktionierende .desktop Dateien, die nach dem selben Schema aufgebaut sind. Das scheint tatsächlich von dem Inhalt der EXEC Zeile abzuhängen, wenn ich Diesen ändere (z.B. auf "gnome-terminal" o.Ä.) taucht der Shortcut nämlich plötzlich auf.
  2. Bei direktem Doppelklick auf die Datei im Filemanager gibt es nur eine Fehlermeldung:1709456754850.png
Inhalt der .desktop Datei bisher:

Code:
[Desktop Entry]
Type=Application
Name=X32-Edit
Comment=X32-Edit
Icon=/home/simon/SyncThing/Tinkering/Linux/Desktop-AppMenu-Shortcuts/x32-edit.png
Exec=WINEPREFIX=~/.wine64 wine /home/simon/SyncThing/Apps/X32-Edit/X32-Edit.exe
Terminal=false
Categories=X32;Mixing
Name[en_US]=x32edit.desktop

Ich hab's auch schon mit

Code:
Exec="WINEPREFIX=~/.wine64 wine /home/simon/SyncThing/Apps/X32-Edit/X32-Edit.exe"
oder
Code:
Exec='WINEPREFIX=~/.wine64 wine /home/simon/SyncThing/Apps/X32-Edit/X32-Edit.exe'
probiert, da ich vermute, das nicht Auftauchen in dem Launcher liegt an dem doppelten "=" in der Zeile.


Entsprechendes Googlen hat mich darauf gebracht, dass die Exec Zeile in solchen Shortcuts noch den Befehl "env" vorab braucht - allerdings immer ohne Erklärung, weswegen...

Code:
Exec=env WINEPREFIX=~/.wine64 wine /home/simon/SyncThing/Apps/X32-Edit/X32-Edit.exe

So taucht dann der Shortcut auch im Launcher auf... aber beim Aufruf des Shortcuts (egal ob über den Launcher oder per Doppelklick aus dem Filemanager) passiert einfach nicht. Im Terminal startet aber auch dieser Befehl problemlos mein Programm.

Der "env" Befehl ergibt für mich auch überhaupt keinen Sinn an dieser Stelle. Ohne Parameter sollte der ja nur Infos zur aktuellen Umgebung ausgeben... wird er vielleicht nur als Platzhalter verwendet, damit das System nicht direkt über das zweite "=" stolpert?


Nur so am Rande: .desktop Shortcuts für Wine Dinge die mit dem Default-Prefix (also einfach Exec=wine /path/to/program.exe) funktionieren problemlos. Nur die Präfixe machen Probleme :unsure:

Ich bin gespannt auf Eure Tipps... vielen Dank vorab schon mal (y)


-edit- OK, Fehler gefunden... ~ statt /home/ war das Problem. Den Post lasse ich stehen damit ich mich die nächsten Tage in Grund und Boden schämen kann :poop:

Eine Erklärung zu dem "env" Befehl und wieso er da benötigt wird wäre natürlich trotzdem interessant :)
 
Zuletzt bearbeitet:
So geht es z.B:

Code:
[Desktop Entry]
Name=CloneDVDmobile
Exec=env WINEPREFIX="/home/marc/.wine" wine-stable C:\\\\ProgramData\\\\Microsoft\\\\Windows\\\\Start\\ Menu\\\\Programs\\\\RedFox\\\\CloneDVDmobile\\\\CloneDVDmobile.lnk
Type=Application
StartupNotify=true
Path=/home/marc/.wine/dosdevices/c:/Program Files (x86)/RedFox/CloneDVDmobile
Icon=7168_CloneDVDmobile.0
StartupWMClass=clonedvdmobile.exe

Also Wineprefix mit absolutem Pfad. Kann uns mal bitte ein Unixguru erklären. ;)
 
Ich glaube den Teil mit dem absoluten Pfad habe ich schon raus - dieser "~" Alias geht halt nur in der Shell, weil's eben ein Shell-Feature ist. Der Rest vom System ersetzt halt "~" nicht automatisch mit "/home/$user". Damit kann ich leben - eigener Fehler.

Das "env" wurmt mich aber schon noch 🤣
 
Das Problem ist nicht env, sondern die GNOMEs von freedesktop.org haben xdg-open so geschrieben, dass '~' nicht funktioniert, egal was nach "Exec=" kommt. Du kannst in der Shell testen, ob eine Shell die Ersetzung korrekt macht:
$ env WINEPREFIX=~/.wine64 env
Ah ja, das ist ein WONTFIX ... in guter alter GNOME-Tradition - "break things in a creative way and blame users for doing so"
"~" ist übrigens kein Shell-feature, das macht libc.
 
Da kommen sie ja langsam, die Gurus ;)

GNOMEs von freedesktop.org haben xdg-open so geschrieben, dass '~' nicht funktioniert, egal was nach "Exec=" kommt.
Mmmm... das kommt mir irgendwie bekannt vor.

"~" ist übrigens kein Shell-feature, das macht libc.
Gut zu wissen. An welchen Stellen außerhalb des Terminals sollte das dann noch so funktionieren? Filemanager habe ich gerade ausprobiert, da klappt's. Ist es eher so dass es nur bei XDG-Open nicht funktioniert, oder eher dass es fast nirgends außerhalb vom Terminal klappt?

Das Problem ist nicht env
Aber wieso wird das env denn benötigt? Was macht es denn in diesem Kontext?
 
Das Problem ist nicht env, sondern die GNOMEs von freedesktop.org haben xdg-open so geschrieben, dass '~' nicht funktioniert, egal was nach "Exec=" kommt. Du kannst in der Shell testen, ob eine Shell die Ersetzung korrekt macht:
$ env WINEPREFIX=~/.wine64 env
Ah ja, das ist ein WONTFIX ... in guter alter GNOME-Tradition - "break things in a creative way and blame users for doing so"
"~" ist übrigens kein Shell-feature, das macht libc.
Super Danke! Ja, ich mag GNOME (trotzdem oder eben deswegen). (y)
 
Da kommen sie ja langsam, die Gurus ;)
Wer postet denn mitten in der Nacht? Na? Poste gefälligst zu vernünftigen Zeiten!

Aber wieso wird das env denn benötigt? Was macht es denn in diesem Kontext?
Streng genommen brauchst du's gar nicht. Ob wine den WINEPREFIX braucht bezweifle ich stark - ich hab' den noch nie explizit gesetzt. "man env" gibt dir aus was es macht - oder machen sollte, und dann siehst du auch was für Klimmzüge die GNOME gemacht haben, um die Funktionalität zu verkrüppeln.
 
Wer postet denn mitten in der Nacht? Na? Poste gefälligst zu vernünftigen Zeiten!
Ich gelobe Besserung!

Streng genommen brauchst du's gar nicht. Ob wine den WINEPREFIX braucht bezweifle ich stark - ich hab' den noch nie explizit gesetzt. "man env" gibt dir aus was es macht - oder machen sollte, und dann siehst du auch was für Klimmzüge die GNOME gemacht haben, um die Funktionalität zu verkrüppeln.
Den WINEPREFIX brauche ich tatsächlich bei , liegt aber vermutlich an meiner leicht verkorksten WINE Installation. Müsste ich wohl nochmal von vorne anfangen, irgendwas ist da mit 32bit/64bit nicht ganz richtig, glaube der Default WinePrefix ist 32bit-Only.

Und ohne "env" bin ich wieder bei der im OP gezeigten Fehlermeldung:

1709485673182.png

Daher die Frage... was macht env in diesem Kontext? Die Man-Page dazu habe ich mir schon durchgelesen - das ist wenig aufschlussreich. Der Befehl soll ja ohne Parameter genutzt eigentlich nur eine Beschreibung der aktuellen Umgebung abgeben... bei mir z.B.:

Code:
simon@simon-deb-x390:~$ env
SHELL=/bin/bash
SESSION_MANAGER=local/simon-deb-x390:@/tmp/.ICE-unix/68412,unix/simon-deb-x390:/tmp/.ICE-unix/68412
QT_ACCESSIBILITY=1
COLORTERM=truecolor
XDG_MENU_PREFIX=gnome-
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GTK_IM_MODULE=ibus
GNOME_KEYRING_CONTROL=/run/user/1000/keyring
LANGUAGE=en_US:en
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
XMODIFIERS=@im=ibus
DESKTOP_SESSION=gnome-xorg
SSH_AGENT_PID=68355
GTK_MODULES=gail:atk-bridge
PWD=/home/simon
LOGNAME=simon
XDG_SESSION_DESKTOP=gnome-xorg
XDG_SESSION_TYPE=x11
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
SYSTEMD_EXEC_PID=68598
XAUTHORITY=/run/user/1000/gdm/Xauthority
WINDOWPATH=2
GDM_LANG=en_US.UTF-8
HOME=/home/simon
USERNAME=simon
LANG=en_US.UTF-8
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*~=00;90:*#=00;90:*.bak=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.swp=00;90:*.tmp=00;90:*.dpkg-dist=00;90:*.dpkg-old=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:
XDG_CURRENT_DESKTOP=GNOME
VTE_VERSION=7006
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/451e9674_e3ec_4038_a13f_22fae534c583
QTWEBENGINE_DICTIONARIES_PATH=/usr/share/hunspell-bdic/
XDG_SESSION_CLASS=user
TERM=xterm-256color
USER=simon
GNOME_TERMINAL_SERVICE=:1.110
DISPLAY=:0
SHLVL=1
QT_IM_MODULE=ibus
XDG_RUNTIME_DIR=/run/user/1000
GTK3_MODULES=xapp-gtk3-module
XDG_DATA_DIRS=/usr/share/gnome:/home/simon/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
GDMSESSION=gnome-xorg
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
_=/usr/bin/env

Was soll das für den Aufruf von Wine bringen? :unsure:
 
env setzt nu die Umgebung in einer shell (bash bei dir) und den Pfad. Und der Pfad ist der WUrm bei der Sache: xdg-open setzt den nicht, also musst du wine mit dem absoluten Pfad aufrufen. "which wine" hilft weiter
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben