Exécutez des programmes de vin en toute transparence


9

Quand je veux lancer un programme vin, je dois taper par exemple

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

Serait-il possible de s'exécuter directement TextAloudMP3? Je veux dire non seulement à partir de la ligne de commande (je pourrais créer un alias) mais dans tout l'environnement graphique. Je lance des programmes avec dmenu.

Réponses:


10

Je suppose que vous vouliez lancer des programmes exe avec wine directement, alors dites au noyau d'exécuter les binaires win32 avec wine par,

  1. Montez binfmt fs, ajoutez une ligne none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0à / etc / fstab et exécutez mount -aensuite

  2. echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register enregistrer le format binaire

Donc, plus tard, vous exécutez simplement le fichier exe avec /path/to/XX.exe

Notez que cela introduit également un problème de sécurité.


Je ne peux pas modifier /proc/sys/fs/binfmt_misc/register. Ça écrit /proc/sys/fs/binfmt_misc/register E667: Fsync failed. J'ai essayé de modifier sous le compte utilisateur avec sudoet sous le compte root aussi. Les deux écrivent cette erreur.
xralf

Hou la la! Je ne savais pas que le noyau pouvait faire ça. Ce cas d'utilisation particulier semble cependant mal. Mais j'aime ça même en ouvrant cette porte, les noms de fichiers, c'est-à-dire les extensions, n'ont pas d'importance, alors que les autres OS ...: D
Bananguin

@xralf: Comment essayez-vous de modifier le fichier? echo devrait fonctionner, mais certains éditeurs (la plupart / tous?) peuvent ne pas fonctionner, car ce n'est pas un vrai fichier modifiable, il est virtuel dans le système de fichiers proc.
chmeee

@xralf ne modifie pas avec vim
daisy

@ warl0ck je dois le faire sous rootcompte. J'ai ajouté /path/to/à ma $PATHvariable et je peux exécuter à XX.exepartir de la ligne de commande mais je ne peux toujours pas l'exécuter à partir de dmenu. Désolé de l'avoir confondu avec xmobarla question.
xralf

3

Assurez - vous wineest dans votre chemin et de créer un script shell contenant les éléments suivants:

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

Donnez-vous la permission d'exécuter le script en exécutant chmod u+x SCRIPT_NAME.

Ensuite, exécutez simplement ce script à partir de votre gestionnaire de fichiers. Il démarrera wine, qui exécutera TextAloudMP3.exe.


J'ai créé un script nommé textalouddans le /usr/local/bindossier. La première ligne est la #! /bin/bashdeuxième ligne wine .... textaloud n'apparaîtra pas dans le xmobarlanceur. Lors de l'exécution, sh textaloudil écrit$ sh textaloud wine: cannot find '~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe'
xralf

Oops. ~ne se développe pas dans le répertoire personnel d'un utilisateur lorsqu'il se trouve entre guillemets doubles. J'ai modifié ma réponse pour utiliser la variable d'environnement à la $HOMEplace.

sh textaloudfonctionne déjà, mais uniquement à partir du répertoire /usr/local/binet il n'est toujours pas visible dans le lanceur xmobar.
xralf

1
pourrait vouloir ajouter $@après le nom du programme afin qu'il passe tous les arguments. Et j'ai l'habitude de mettre de tels scripts dans ~ / bin (après m'être assuré qu'ils sont bien dans votre PATH).
Wyatt8740

Ne pourriez-vous pas également définir un alias dans ~/.bash_aliases?
Aaron Franke

3

Étape 0

Définissez un CHEMIN binaire pour votre utilisateur. Exécutez mkdir ~/binet ajoutez ce répertoire à votre CHEMIN.

La manière de procéder peut varier en fonction du shell et de l'environnement de bureau que vous utilisez.

Ici, vous pouvez trouver comment changer votre CHEMIN dans une variété de coques .

Vérifiez cette question résolue si votre environnement de bureau ne se soucie pas de votre profil de shell et que le premier fonctionne à partir du terminal mais pas à partir de l'environnement de bureau .

Étape 1

Une fois que vous avez configuré votre shell et votre environnement de bureau pour respecter un nouveau CHEMIN, vous pouvez y déposer des scripts et les exécuter en tant que commandes normales sans taper leur chemin.

Créez un script shell court pour exécuter votre programme wine dans ce répertoire, c'est ~/bin/textaloud-à- dire :

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

Et donnez-lui la permission d'exécuter.

chmod +x ~/bin/textaloud

Il y a trois choses à noter sur le script ci-dessus:

  • Le cdchemin est l'endroit où le programme va être exécuté (dans quel répertoire). Certains programmes peuvent vous obliger à les exécuter sur un répertoire spécifique. Si cela vous pose problème, définissez-y ce répertoire (généralement le même que celui où se trouve l'exécutable). Vous pouvez souhaiter cette ligne dans certains cas.
  • Les execcommandes indiquent à bash de se transformer en wine avec les arguments suivants, donc ce n'est plus bash qui exécute wine, mais le processus bash qui devient wine. Le PID reste. Vous n'avez pas deux processus en cours d'exécution.
  • Le $@est remplacé par les arguments que vous avez exécutés le script, le cas échéant. Ceux-ci sont donc transmis à votre programme de vins.

Vous pouvez maintenant exécuter votre programme à partir du shell comme ...

textaloud

Étape 2

Créez un lanceur d'applications. De nos jours, ces fichiers sont standardisés en tant que .desktopfichiers et de nombreux environnements de bureau fournissent des outils graphiques pour les créer.

Voici un exemple de squelette que vous pouvez utiliser pour l'écrire vous-même. Vous voudrez peut-être fournir une icône (souvent en PNG, SVG ou XPM).

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

Placez ce fichier dans ~/.local/share/applications/TextAloud.desktop. Les icônes sont recherchées (entre autres) dans ~/.local/share/icons, alors assurez-vous de trouver une icône mignonne pour votre application et placez-la là avec le nom textaloud.png.

Une fois que vous avez fait cela, votre environnement de bureau devrait trouver votre fichier de raccourci et être capable d'exécuter le programme avec le script. Sinon, rechargez-le ou redémarrez-le.


Merci, j'ai essayé votre guide mais la dernière étape ne fonctionne pas. Je ne peux pas voir textalouddans le dmenulanceur.
xralf

L'étape 2 est dirigée vers les bureaux comme GNOME, KDE ou XFCE. dmenu ne semble pas se soucier des fichiers .desktop, donc avec l'étape 1, ça devrait aller. Cela a-t-il fonctionné depuis le terminal? Si cela a fonctionné mais ne fonctionne toujours pas, passez en revue l'étape 0. Peut-être que vous utilisez ~/.xsessionpour obtenir votre session X11? Essayez d'y ajouter export PATH="$HOME/bin:$PATH"avant la ligne que vous utilisez pour exécuter dwm et redémarrer X11.
Alicia

Dans les travaux du terminal sans problèmes. Le CHEMIN est OK. Seule la question pour être complète, je voudrais travailler à partir de dmenu.
xralf

Je t'ai dit. En avez-vous ~/.xsession? Sachez que le CHEMIN de votre terminal peut ne pas être égal au CHEMIN de votre session X11.
Alicia

$@devrait être entre guillemets pour la sécurité. alors ça deviendrait exec wine "~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe" "$@".
Wyatt8740

1

Avez-vous pensé à essayer PlayOnLinux? Il peut s'occuper de tout pour vous et même vous pouvez configurer certains types de fichiers à ouvrir par les programmes wine.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.