Weinprogramme transparent ausführen

9

Wenn ich ein Weinprogramm ausführen möchte, muss ich z

$ wine ~/.wine/drive_c/Program\ Files/TextAloud/TextAloudMP3.exe

Wäre es möglich, direkt zu laufen TextAloudMP3? Ich meine nicht nur über die Kommandozeile (ich könnte einen Alias ​​erstellen), sondern in der gesamten grafischen Umgebung. Ich starte Programme mit dmenu.

xralf
quelle

Antworten:

10

Ich denke, Sie wollten exe-Programme direkt mit Wein starten. Sagen Sie dem Kernel also, dass er win32-Binärdateien mit Wein ausführen soll.

  1. Hängen Sie binfmt fs ein, fügen Sie eine Zeile none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0zu / etc / fstab hinzu und führen Sie sie mount -aanschließend aus

  2. echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register um das Binärformat zu registrieren

Also führen Sie später einfach die exe-Datei mit aus /path/to/XX.exe

Beachten Sie, dass dies auch ein Sicherheitsproblem mit sich bringt.

Gänseblümchen
quelle
Ich kann nicht bearbeiten /proc/sys/fs/binfmt_misc/register. Es schreibt /proc/sys/fs/binfmt_misc/register E667: Fsync failed. Ich habe versucht, unter Benutzerkonto mit sudound unter Root-Konto zu bearbeiten . Beide schreiben diesen Fehler.
Xralf
Wow! Ich wusste nicht, dass der Kernel das kann. Dieser spezielle Anwendungsfall fühlt sich jedoch böse an. Aber ich mag das auch beim Öffnen dieser Tür, Dateinamen, das heißt Erweiterungen, spielen keine Rolle, während andere Betriebssysteme ...: D
Bananguin
@xralf: Wie versuchst du die Datei zu bearbeiten? echo sollte funktionieren, aber einige (die meisten / alle?) Editoren funktionieren möglicherweise nicht, da es sich nicht um eine echte bearbeitbare Datei handelt, sondern innerhalb des proc-Dateisystems virtuell.
Chmeee
@xralf nicht mit vim bearbeiten
Gänseblümchen
@ warl0ck Ich muss es unter rootRechnung machen. Ich /path/to/habe meiner $PATHVariablen hinzugefügt und kann sie XX.exeüber die Befehlszeile ausführen , aber immer noch nicht dmenu. Entschuldigung, ich habe es xmobarin der Frage verwechselt .
Xralf
3

Stellen Sie sicher, dass Sie winesich in Ihrem Pfad befinden, und erstellen Sie ein Shell-Skript, das Folgendes enthält:

#!/bin/sh
wine "$HOME/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe"

Geben Sie sich die Erlaubnis, das Skript auszuführen, indem Sie es ausführen chmod u+x SCRIPT_NAME.

Führen Sie das Skript dann einfach über Ihren Dateimanager aus. Es wird Wein gestartet, auf dem TextAloudMP3.exe ausgeführt wird.

Gemeinschaft
quelle
Ich habe ein Skript mit dem Namen textaloudin /usr/local/binOrdner erstellt. Erste Zeile ist #! /bin/bashzweite Zeile ist wine .... textaloud wird im xmobarLauncher nicht angezeigt . Beim Ausführen sh textaloudschreibt es$ sh textaloud wine: cannot find '~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe'
xralf
Hoppla. ~Wird nicht in das Home-Verzeichnis eines Benutzers erweitert, wenn es sich in doppelten Anführungszeichen befindet. Ich habe meine Antwort geändert, um $HOMEstattdessen die Umgebungsvariable zu verwenden.
sh textaloudfunktioniert bereits, aber nur aus dem Verzeichnis /usr/local/binund ist im xmobar-Launcher immer noch nicht sichtbar.
Xralf
1
Möglicherweise möchten Sie $@nach dem Programmnamen hinzufügen, damit alle Argumente übergeben werden. Und normalerweise füge ich solche Skripte in ~ / bin ein (nachdem ich natürlich sichergestellt habe, dass sie in Ihrem PFAD sind).
Wyatt8740
Könnten Sie nicht auch einen Alias ​​in definieren ~/.bash_aliases?
Aaron Franke
3

Schritt 0

Legen Sie einen binären Pfad für Ihren Benutzer fest. Führen mkdir ~/binSie dieses Verzeichnis aus und fügen Sie es Ihrem PFAD hinzu.

Die Vorgehensweise kann je nach verwendeter Shell- und Desktop-Umgebung variieren.

Hier erfahren Sie, wie Sie Ihren PFAD in verschiedenen Shells ändern können .

Überprüfen Sie diese gelöste Frage, wenn sich Ihre Desktop-Umgebung nicht um Ihr Shell-Profil kümmert und das erstere vom Terminal aus funktioniert, nicht jedoch von der Desktop-Umgebung aus .

Schritt 1

Sobald Sie Ihre Shell und Ihre Desktop-Umgebung so eingestellt haben, dass sie einen neuen Pfad respektieren, können Sie dort Skripte ablegen und sie als reguläre Befehle ausführen, ohne ihren Pfad einzugeben.

Erstellen Sie ein kurzes Shell-Skript, um Ihr Weinprogramm in diesem Verzeichnis auszuführen, dh ~/bin/textaloud:

#!/bin/bash
cd "~/.wine/drive_c"
exec wine "~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe" "$@"

Und geben Sie ihm die Ausführungserlaubnis.

chmod +x ~/bin/textaloud

Zu dem obigen Skript sind drei Dinge zu beachten:

  • Der cdPfad ist der Ort, an dem das Programm ausgeführt werden soll (in welchem ​​Verzeichnis). Bei einigen Programmen müssen Sie sie möglicherweise in einem bestimmten Verzeichnis ausführen. Wenn Sie Probleme damit haben, legen Sie dort das Verzeichnis fest (normalerweise das gleiche, in dem sich die ausführbare Datei befindet). In einigen Fällen können Sie diese Zeile nicht verwenden.
  • Die execBefehle weisen bash an, sich mit den folgenden Argumenten in Wein zu verwandeln. Dies ist also kein bash-laufender Wein mehr, sondern ein bash-Prozess, der zu Wein wird. Die PID bleibt bestehen. Sie haben nicht zwei Prozesse ausgeführt.
  • Das $@wird durch die Argumente ersetzt, mit denen Sie das Skript ausgeführt haben, falls vorhanden. Diese werden also an Ihr Weinprogramm weitergegeben.

Jetzt können Sie Ihr Programm von der Shell aus ausführen wie ...

textaloud

Schritt 2

Erstellen Sie einen Anwendungsstarter. Heutzutage sind diese Dateien als .desktopDateien standardisiert und viele Desktop-Umgebungen bieten grafische Tools zum Erstellen.

Hier ist ein Beispielskelett, mit dem Sie es selbst schreiben können. Möglicherweise möchten Sie ein Symbol bereitstellen (häufig in PNG, SVG oder XPM).

[Desktop Entry]
Type=Application
Name=TextAloud
Exec=textaloud
Icon=textaloud.png

Legen Sie diese Datei in ~/.local/share/applications/TextAloud.desktop. Es wird (unter anderem) nach Symbolen gesucht. ~/.local/share/iconsSuchen Sie daher ein niedliches Symbol für Ihre Anwendung und platzieren Sie es dort mit dem Namen textaloud.png.

Sobald Sie dies getan haben, sollte Ihre Desktop-Umgebung Ihre Verknüpfungsdatei finden und das Programm mit dem Skript ausführen können. Wenn nicht, laden Sie es neu oder starten Sie es neu.

Alicia
quelle
Vielen Dank, ich habe Ihren Leitfaden ausprobiert, aber der letzte Schritt funktioniert nicht. Ich kann textaloudim dmenuLauncher nicht sehen .
Xralf
Schritt 2 richtet sich an Desktops wie GNOME, KDE oder XFCE. dmenu scheint sich nicht um .desktop-Dateien zu kümmern, daher sollten Sie mit Schritt 1 in Ordnung sein. Hat es vom Terminal aus funktioniert? Wenn es funktioniert hat, aber immer noch nicht funktioniert, ~/.xsessionlesen Sie Schritt 0. Vielleicht verwenden Sie es , um Ihre X11-Sitzung zu erhalten? Versuchen Sie, dort export PATH="$HOME/bin:$PATH"vor der Zeile hinzuzufügen, mit der Sie dwm ausführen und X11 neu starten.
Alicia
In Arbeiten vom Terminal ohne Probleme. PFAD ist OK. Nur die Frage, um vollständig zu sein, würde ich gerne über das Menü bearbeiten.
Xralf
Ich habe es dir gesagt. Haben Sie ~/.xsession? Beachten Sie, dass der Pfad Ihres Terminals möglicherweise nicht dem Pfad Ihrer X11-Sitzung entspricht.
Alicia
$@sollte aus Sicherheitsgründen in doppelten Anführungszeichen stehen. so würde es werden exec wine "~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe" "$@".
Wyatt8740
1

Haben Sie darüber nachgedacht, PlayOnLinux auszuprobieren? Es kann das Ganze für Sie erledigen und sogar Sie können einige Dateitypen konfigurieren, die von Weinprogrammen geöffnet werden.

Bichoy
quelle