Execute programas de vinho de forma transparente

9

Quando eu quero rodar um programa de vinho eu tenho que digitar eg

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

Seria possível executar diretamente TextAloudMP3? Quero dizer, não apenas na linha de comando (eu poderia criar um pseudônimo), mas em todo o ambiente gráfico. Estou lançando programas com dmenu.

xralf
fonte

Respostas:

10

Eu acho que você pretendia lançar programas exe diretamente com o vinho, então diga ao kernel para executar binários win32 com o vinho,

  1. Monte binfmt fs, adicione uma linha none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0ao / etc / fstab e execute mount -adepois

  2. echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register registrar o formato binário

Então, mais tarde, você apenas executa o arquivo exe com /path/to/XX.exe

Observe que isso também apresenta um problema de segurança.

margarida
fonte
Não consigo editar /proc/sys/fs/binfmt_misc/register. Escreve /proc/sys/fs/binfmt_misc/register E667: Fsync failed. Tentei editar também na conta de usuário sudoe na conta raiz. Ambos escrevem esse erro.
Xralf #
Uau! Eu não sabia que o kernel poderia fazer isso. Esse caso de uso específico parece ruim, no entanto. Mas assim mesmo quando da abertura que porta, nomes de arquivos, que é extensões, não importa, enquanto outros sistemas operacionais ...: D
Bananguin
@xralf: Como você está tentando editar o arquivo? O eco deve funcionar, mas alguns editores (a maioria / todos?) podem não funcionar, porque não é um arquivo editável real, é virtual no sistema de arquivos proc.
amigos estão dizendo sobre chmeee
@xralf não editar com o vim
daisy
@ warl0ck Eu tenho que fazer isso em rootconta. Eu adicionei /path/to/à minha $PATHvariável e posso executar a XX.exepartir da linha de comando, mas ainda não a podemos executar dmenu. Desculpe, eu errei xmobarna pergunta.
precisa saber é o seguinte
3

Verifique se wineestá no seu caminho e crie um script de shell contendo o seguinte:

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

Permita-se executar o script executando chmod u+x SCRIPT_NAME.

Em seguida, basta executar esse script no seu gerenciador de arquivos. Ele iniciará o wine, que executará o TextAloudMP3.exe.

Comunidade
fonte
Eu criei um script nomeado textaloudna /usr/local/binpasta Primeira linha é a #! /bin/bashsegunda linha é wine .... O textaloud não aparecerá no xmobariniciador. Ao executá- sh textaloudlo, escreve$ sh textaloud wine: cannot find '~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe'
xralf 31/03
Opa ~não se expande para o diretório inicial de um usuário quando estiver entre aspas duplas. Modifiquei minha resposta para usar a variável ambiental $HOME.
sh textaloudjá funciona, mas apenas a partir do diretório /usr/local/bine ainda não é visível no iniciador do xmobar.
xralf
1
$@convém adicionar após o nome do programa para que ele transmita todos os argumentos. E eu costumo colocar esses scripts em ~ / bin (depois de ter certeza de que está no seu PATH, é claro).
Wyatt8740
Você também não pode definir um alias ~/.bash_aliases?
Aaron Franke
3

Etapa 0

Defina um caminho binário para o seu usuário. Execute mkdir ~/bine adicione este diretório ao seu PATH.

Como isso é feito pode variar dependendo do ambiente de shell e da área de trabalho que você usa.

Aqui você pode encontrar como alterar seu PATH em uma variedade de conchas .

Verifique esta questão resolvida se o seu ambiente de área de trabalho não se importa com o seu perfil de shell e o primeiro funciona no terminal, mas não no ambiente de área de trabalho .

Passo 1

Depois de definir seu shell e seu ambiente de área de trabalho para respeitar um novo PATH, você pode soltar scripts lá e executá-los como comandos regulares sem digitar seu caminho.

Crie um script de shell curto para executar seu programa wine neste diretório, ou seja ~/bin/textaloud:

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

E dê permissão para executar.

chmod +x ~/bin/textaloud

Há três coisas a serem observadas sobre o script acima:

  • O cdcaminho é o local em que o programa será executado (em qual diretório). Alguns programas podem exigir que você os execute em um diretório específico. Se você tiver problemas com isso, defina o diretório (geralmente o mesmo em que o executável está localizado). Você pode indesejar esta linha em alguns casos.
  • Os execcomandos dizem ao bash para se transformar em vinho com os seguintes argumentos; portanto, isso não é mais um vinho em execução, mas o processo do bash se tornando vinho. O PID permanece. Você não tem dois processos em execução.
  • O $@é substituído pelos argumentos nos quais você executou o script, se houver. Então, esses são passados ​​para o seu programa de vinhos.

Agora você pode executar seu programa a partir do shell como ...

textaloud

Passo 2

Crie um iniciador de aplicativos. Atualmente, esses arquivos são padronizados como .desktoparquivos e muitos ambientes de área de trabalho fornecem ferramentas gráficas para criá-los.

Aqui está um exemplo de esqueleto que você pode usar para escrevê-lo. Convém fornecer um ícone (geralmente em PNG, SVG ou XPM).

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

Coloque este arquivo no ~/.local/share/applications/TextAloud.desktop. Os ícones são pesquisados ​​(entre outros lugares) ~/.local/share/icons, por isso, encontre um ícone atraente para o seu aplicativo e coloque-o ali com o nome textaloud.png.

Depois de fazer isso, o ambiente da área de trabalho deverá encontrar seu arquivo de atalho e poder executar o programa com o script. Caso contrário, recarregue ou reinicie.

Alicia
fonte
Obrigado, tentei o seu guia, mas o último passo não funciona. Não consigo ver textaloudno dmenulançador.
Xralf
A etapa 2 é direcionada para desktops como GNOME, KDE ou XFCE. O dmenu parece não se importar com arquivos .desktop, portanto, com a Etapa 1, você deve estar bem. Funcionou no terminal? Se funcionou, mas ainda não funciona, reveja a Etapa 0. Talvez você esteja usando ~/.xsessionpara obter sua sessão do X11? Tente adicionar lá export PATH="$HOME/bin:$PATH"antes da linha que você usa para executar o dwm e reiniciar o X11.
Alicia
Em obras do terminal sem problemas. CAMINHO está OK. Apenas a pergunta a ser concluída, eu gostaria de trabalhar com ela no dmenu.
Xralf
Eu te disse. Você tem ~/.xsession? Esteja ciente de que o CAMINHO do seu terminal pode não ser igual ao CAMINHO da sua sessão X11.
Alicia
$@deve estar entre aspas duplas para segurança. assim seria exec wine "~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe" "$@".
Wyatt8740
1

Você já pensou em experimentar o PlayOnLinux? Ele pode cuidar de tudo e até você pode configurar alguns tipos de arquivos para serem abertos pelos programas do wine.

Bichoy
fonte