Um guia para Wine "vanilla" (sem PoL nem Lutris)

Em alguns casos, talvez você prefira usar o Wine puro, sem essas ferramentas facilitadoras. Ao menos, é esse o meu caso. Então, tendo já instalado um bom número de jogos nos meus Wineprefix, faço esse guia que traz o básico de como gerenciar o WINE pelo terminal e alguns problemas comuns que esses utilitários lidam.

Variáveis de ambiente - um lembrete e porque é relevante

Variáveis de ambiente são valores, com nomes (diferenciam maiúscula de minúscula, preparem o Capslock), que o terminal repassa para quaisquer programas que rodam sob ele. Para saber quais variáveis de ambiente estão ativas, digite apenas export. Para definir uma varíavel, digite export NOME=valor. Para o Wine, há três variáveis de ambiente relevantes:

  • WINEDEBUG: quão detalhados devem ser os erros apresentados no terminal quando você inicia o Wine. No geral, ou você vai deixar vazia, porque o valor padrão dela é suficiente para detectar a maioria das causas de erro, ou você vai por export WINEDEBUG=-all pro Wine calar a boca no terminal.
  • WINEPREFIX: em qual pasta o Wine vai criar a unidade C:\ “fictícia” e jogar os arquivos de registro. Se você não disser um valor, ela vai estar na pasta .wine da sua pasta Home. É recomendado que você mude esse valor para cada programa que você vai instalar, já que é possível que as medidas que você toma para consertar um programa quebrem outro.
    Note que esse caminho tem que ser absoluto (você vai ter que digitar todo o caminho a partir da raiz): sempre export WINEPREFIX=/home/use/nfscarbon em vez de, por exemplo, export WINEPREFIX=nfscarbon.
  • WINEARCH: Se o Wine, ao usar um novo WINEPREFIX, deve simular um Windows de 32 bits (para isso, export WINEARCH=win32) ou de 64 bits (export WINEARCH=win64). Essa variável não possui efeito algum em WINEPREFIXs que já foram usados.

Lembre-se que elas são perdidas ao fechar o terminal.

Comandos do Wine

  • wine programa.exe: inicia a simulação de Windows e abre o programa pedido, usando as bibliotecas que estiverem instaladas no WINEPREFIX definido pelo terminal.
  • wine wineboot -u: Atualiza/cria um novo prefixo. Ele vai pedir a instalação de alguns componentes, como o Wine Gecko e o Wine Mono, que podem ser ignorados.
  • wine winecfg: abre a configuração do Wine. Aqui é possível definir a versão do Windows simulada, ativar ou desativar alguns comportamentos e (avançado) ativar ou desativar bibliotecas.
  • wine control: abre uma simulação do painel de controle do Windows. Aqui é possível testar joysticks e usar os desinstaladores nativos de programas do Windows. Muito menos útil que o painel de controle do Janelas.
  • wine regedit: abre o editor do registro do Wine.
  • wine winemine, wine notepad, wine iexplore: Versões feitas pelo Wine do (respectivamente) Campo Minado, Bloco de Notas e Internet Explorer.
  • winetricks: Não vem por padrão com o Wine e é feito por terceiros, mas é muito, mas muito útil. Automatiza a instalação de bibliotecas do Janelas (semelhante à aba Instalar Componentes do PlayOnLinux).

Estrutura de um Wineprefix

Muito bem. Você criou uma pasta, digamos jogo, na sua home. Abriu o terminal e fez o seguinte:

export WINEPREFIX=$HOME/jogo # Definir onde o jogo vai ser instalado
export WINEARCH=win32 # Simular windows de 32 bits
wine wineboot -u # Criar o Wineprefix

Ao abrir a pasta jogo, você vai encontrar:

  • Pasta drive_c: Mais detalhes em baixo.
  • Pasta dosdevices: As unidades (C:, D:, E:) que o Wine vai simular. Por padrão, há duas subpastas (que na verdade são atalhos):
    • c: – um atalho para a pasta drive_c dita acima. Ou seja, aquela pasta simula o C:\ de um Windows.
    • z: – um atalho para a raiz do sistema. Meio perigoso mantê-lo aqui caso você for rodar programas de origem duvidosa aqui, mas é necessário para abrir arquivos fora do prefixo.

Use o comando wine winecfg para criar novos atalhos/unidades.

  • system.reg: Simula quase todo o registro, menos HKEY_CURRENT_USER
  • user.reg: Simula o HKEY_CURRENT_USER.

Note que é mais prático usar o wine regedit do que editar esses arquivos diretamete.

  • userdef.reg: Armazena alguns valores definidos pelo Winecfg.

Prefira usar wine winecfg.


Uma vez feita essa configuração inicial, você rodaria o setup do programa com, por exemplo, wine setup.exe, ou copiaria os arquivos do Zip do programa para a drive_c, não muito diferente do Windows. O que seria mais diferente é a maneira como você lida com dependências e DLLs de programas: em vez ir atrás do instalador de coisas como Visual Studio, .NET Framework, DirectX Redistributable, etc., você os instalaria pelo winetricks. Os comandos do winetricks estão no formato winetricks <coisas para instalar, separadas por espaço>. Algumas das mais úteis:

  • DLLs em geral:
    • vcrun2008, vcrun2013, vcrun2015, etc.: O Visual C++ Runtime de cada ano.
    • dotnet20, dotnet40, dotnet461, etc.: O .NET Framework. O formato é dotnet<versão tirando os pontos>.
  • Gráficos:
    • gdiplus: Pode resolver lentidão em gráficos de programas antigos do Windows (antes de 2008)
    • d3dx9, d3dx10, d3x11: Extensões para cada versão do DirectX. Instalá-las pode resolver problemas como distorção de formas geométricas e ausência de efeitos gráficos avançados.
    • d3dcompiler_42, d3dcompiler_43, d3dcompiler_47: Substitui o interpretador de shaders do Wine pelo original do Windows. Pode resolver problemas como textura e iluminação bugadas.
    • dxvk e d9vk_master: substitui a tradução DirectX→OpenGL padrão do Wine pela DirectX→Vulkan usada no Steam Proton. Pode aumentar a performance e resolver alguns bugs gráficos.
  • Áudio
    • xact e xaudio2: podem resolver problemas como ausência de áudio (leia a saída do programa no terminal para ver qual você deve instalar).

Veja a saída de winetricks dlls list para ver tudo que o Winetricks tem a oferecer.

Exemplo meu: Rayman Origins
Ao iniciar Rayman Origins, que usa DirectX9.0c, observam-se os seguintes problemas:

  • Texturas ausentes ou estraçalhadas na tela de início e no jogo em geral.
    Solução inicial:
    winetricks d3dcompiler_43 d3dcompiler_47
  • Vê-se que alguns objetos transparentes. Isso não está presente nos relatos do Steam Proton (protondb.com)
    Solução:
    winetricks d9vk_master

Esse é um post mais educativo. Na maioria das vezes, é mais prático usar um Lutris ou PoL da vida. Isso aqui, no entanto, pode permitir soluções experimentais que ainda não chegaram a essas ferramentas facilitadas (por exemplo, apliquei a solução para o patch 9.23 do LoL antes de que ela chegasse ao Lutris).

11 curtidas

Só faltou o comando "wine uninstaller", sempre uso para desinstalar programas pela clássica janela do Windows.

1 curtida

É de fato bem interessante. Por um tempo usei o Wine puro só com o Winetricks. Estava muito chateado pelo PlayOnLinux mais causar problemas do que resolvê-los enquanto o Lutris penava para fazer o Need for Speed Most Wanted funcionar, e nem funcionava nem um pouco bem, me forçando a usar a versão de GameCube pelo Dolphin Emulator. Nos dois casos, eu cheguei as seguintes conclusões:

  • PlayOnLinux muitas vezes baixa versões super antigas do Wine sem um real motivo. Está certo que podem ter funcionado no passado mas o Wine está muito bem ultimamente e raramente vejo a necessidade de voltar alguma versão. Mas esse é só o meu caso;
  • Lutris funciona bem para automatizar alguns processos de instalação mas honestamente fiquei chateado quando o script de instalação do Need for Speed Most Wanted com hack de widescreen não funcionou. São problemas bobos que eu consegui resolver eu mesmo. O hack de widescreen não funcionou porque o próprio hack não funcionava. Precisei baixar direto da fonte para usar. Segundo, o hack usa a DLL Dinput para funcionar. Significa que vai ter de escolher entre usar o controle enquanto joga e ter toda a compatibilidade com os gatilhos analógicos para aceleração e freio variáveis, ou instalar a biblioteca Dinput pelo winetricks para o hack funcionar e perder o suporte para controle. Isso sem mencionar que o hack vai dar crash no jogo o tempo todo se não ativar a parte de desktop virtual do Wine;
3 curtidas