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 porexport WINEDEBUG=-allpro Wine calar a boca no terminal.WINEPREFIX: em qual pasta o Wine vai criar a unidadeC:\“fictícia” e jogar os arquivos de registro. Se você não disser um valor, ela vai estar na pasta.wineda 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): sempreexport WINEPREFIX=/home/use/nfscarbonem vez de, por exemplo,export WINEPREFIX=nfscarbon.WINEARCH: Se o Wine, ao usar um novoWINEPREFIX, 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 emWINEPREFIXs 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 noWINEPREFIXdefinido 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 pastadrive_cdita 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 winecfgpara criar novos atalhos/unidades.
system.reg: Simula quase todo o registro, menos HKEY_CURRENT_USERuser.reg: Simula o HKEY_CURRENT_USER.
Note que é mais prático usar o
wine regeditdo 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.dxvked9vk_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
xactexaudio2: 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 listpara 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).