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=-all
pro 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.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): sempreexport WINEPREFIX=/home/use/nfscarbon
em 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 emWINEPREFIX
s 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 noWINEPREFIX
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 pastadrive_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_USERuser.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
ed9vk_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
exaudio2
: 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).