visualnovel:vnsonlinux

Playing Visual Novels on GNU/Linux

This page explains how to play Windows-only visual novels on GNU/Linux, but there are some native GNU/Linux visual novels available, which we touch on at the end of this guide.

There's no need to be a command-line wizard—aside from pasting a few commands into your terminal in the beginning, you'll be living in graphical programs most of the time.

If your visual novel was released on Steam, see the Proton section. If you bought your visual novel from anywhere else, the rest of this guide is for you!

What are you waiting for, Senpai? Join the GNU/Linux Visual Novel Club!

Using Wine

Most visual novels are designed only to run on Windows, but many can likely run on GNU/Linux through Wine. Wine works by providing Linux-compatible replacements for the Windows features these games rely on.1) However, most visual novels that are encumbered by DRM do not work in Wine. You should first check if the visual novel you want to play is DRM-free.

The first step is to install Wine for your distribution and setup your environment to work with Japanese visual novels. We recommend Wine Staging, as it contains many useful but experimental patches not found in the Wine Development branch.

Other Ubuntu-Based Distributions

These steps may not apply to all Ubuntu-based distributions. To install Wine on an Ubuntu-based distribution, you should refer to your distribution's documentation.

Open the Terminal program and enable 32-bit libraries:

sudo dpkg --add-architecture i386

Import the key for the WineHQ repository:

sudo mkdir -pm755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key

You now need to add the WineHQ repository. The following command will automatically detect your Ubuntu version and add the relevant WineHQ repository:

sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/$(lsb_release -cs)/winehq-$(lsb_release -cs).sources
sudo apt update

Install Wine Staging with all recommended dependencies:

sudo apt install --install-recommends winehq-staging

If any of the above steps don't work, see the WineHQ Ubuntu page.

We now need Lutris so we can install and manage our games. You can get the latest version of Lutris from https://github.com/lutris/lutris/releases/latest. You need to download the .deb package and install it:

sudo apt install ./lutris_x.x.xx_all.deb

You may need to install some unmet dependencies before you can install the package:

sudo apt --fix-broken install

When a new version of Lutris is released, you will need to repeat the process.

Open the Language Support program, click Install / Remove Languages, select Japanese, and click Apply. This will enable Japanese Locale and install a set of language packs with Japanese fonts.

Open the Terminal program and enable 32-bit libraries:

sudo dpkg --add-architecture i386

Import the key for the WineHQ repository:

sudo mkdir -pm755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key

You now need to add the WineHQ repository. The following command will automatically detect your upstream Ubuntu version and add the relevant WineHQ repository:

sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/$(awk -F= '{a[$1]=$2} /DISTRIB_CODENAME/ {print $2}' /etc/upstream-release/lsb-release)/winehq-$(awk -F= '{a[$1]=$2} /DISTRIB_CODENAME/ {print $2}' /etc/upstream-release/lsb-release).sources

Now pull the latest updates from the WineHQ repository:

sudo apt update

Install Wine Staging with all recommended dependencies:

sudo apt install --install-recommends winehq-staging

If any of the above steps don't work, see the WineHQ Ubuntu page.

We now need Lutris so we can install and manage our games. The packaged version of Lutris is old, so you'll need to install the Flatpak version. Open Software Manager, search for Lutris, and install Lutris (Flathub).

Go to the System Settings, open Languages, and click Install / Remove Languages, click Add, select Japanese, Japan, and click Install. Select Japanese, Japan and click Install language packs. This will enable Japanese Locale and install a set of language packs with Japanese fonts.

Open the Terminal. Install Wine and Lutris to pull in all the recommended dependencies:

sudo dnf install wine lutris

Japanese Locale is enabled by default, so you only need to install the Japanese Language Pack:

sudo dnf install langpacks-ja

openSUSE enables Japanese Locale by default and pre-installs Japanese fonts, so you only need to install Wine and Lutris.

Open YAST Software Management and search for Wine. Tick the box next to wine-staging. Search for Lutris and tick the box for lutris too.

Click Accept and click Continue to install all the recommended dependencies.

Open the Terminal. You need to switch user to root so you can make system-level changes.

How to Become root

This will depend on how you've set up your system.

If you set the root password, run this command:

su -

If you didn't set the root password, run this command:

sudo su

Enable 32-bit libraries:

dpkg --add-architecture i386

Import the key for the WineHQ repository:

mkdir -pm755 /etc/apt/keyrings
wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key

You now need to add the WineHQ repository. The following command will automatically detect your Debian version and add the relevant WineHQ repository:

wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/$(lsb_release -cs)/winehq-$(lsb_release -cs).sources
apt update

Install Wine Staging with all recommended dependencies:

apt install --install-recommends winehq-staging

If any of the above steps don't work, see the WineHQ Debian page.

We now need Lutris so we can install and manage our games. There are several ways to install Lutris. Flatpak is the easiest way to keep it up-to-date, but if you just want to install it as a normal .deb package, download the latest release of Lutris for your version of Debian from here: https://software.opensuse.org/download.html?project=home%3Astrycore&package=lutris

You can then right-click on the file, select Open With… and click Software Install.

Run this command and enable the ja_JP.UTF-8 locale with the Spacebar key:

dpkg-reconfigure locales

Install a set of Japanese fonts:

apt install fonts-noto-cjk fonts-ipafont fonts-vlgothic

You can now leave the root environment with exit or CTRL+D.

Install wine-staging and lutris with all optional dependencies:

sudo pacman -S wine wine-staging lutris giflib lib32-giflib libpng lib32-libpng libldap lib32-libldap gnutls lib32-gnutls mpg123 lib32-mpg123 libpulse lib32-libpulse alsa-plugins lib32-alsa-plugins alsa-lib lib32-alsa-lib libjpeg-turbo lib32-libjpeg-turbo libxcomposite lib32-libxcomposite libxinerama lib32-libxinerama ncurses lib32-ncurses opencl-icd-loader lib32-opencl-icd-loader libxslt lib32-libxslt libva lib32-libva gtk3 lib32-gtk3 gst-plugins-base-libs lib32-gst-plugins-base-libs lib32-gst-plugins-good lib32-gst-plugins-base-libs lib32-gstreamer gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav vulkan-icd-loader lib32-vulkan-icd-loader cups samba dosbox

(See https://www.gloriouseggroll.tv/how-to-get-out-of-wine-dependency-hell/ for an explanation of why these dependencies are necessary)

Edit /etc/locale.gen and remove the # character from the beginning of the ja_JP.UTF-8 UTF-8 line. Run sudo locale-gen to generate the Japanese locale.

You need Japanese fonts to display Japanese characters. We recommend installing noto-fonts-cjk for good coverage, but it’s worth installing other Japanese fonts too.2)


You've now setup Wine for playing visual novels! Next, find your game files. If you purchased a download edition that came in a compresed archive, you'll need to extract the files. If your game came on a physical disk, insert it into the disk drive.

Now you can install the game using Lutris.

If you have a download edition with only a launch executable and no installation executable, you need to create a Wineprefix, then add the game to Lutris.

Japanese Text Issues

If you're having trouble with Japanese text not displaying properly, such as mangled filenames when extracting an archive, unreadable text files, or garbled text in the installer window and in-game, see Japanese Text Issues.

Lutris is an all-in-one game manager for GNU/Linux. It supports various Runners; you can add native GNU/Linux games, games played through Wine, and games played through an emulator like Dolphin to your Lutris library. We recommend Lutris for both beginner and advanced users.

Lutris has an installer wizard for Windows-only visual novels, which works well for most visual novels.

Vulkan Drivers

Lutris uses DXVK by default, which requires you to have Vulkan drivers installed. Wine comes with its own graphics stack (WineD3D), which can work for many visual novels, but we recommend DXVK for better compatibility.

If you don't want to use DXVK, or your GPU doesn't support Vulkan, you can toggle it off in the game's settings inside the Runner Settings tab or Lutris' Preferences.

You can check if your GPU supports Vulkan here (most GPUs released since 2015 do): https://en.wikipedia.org/wiki/Vulkan#Support_across_vendors

See the Lutris Documentation for installing vulkan support for your distribution.

Default Installation Folder

By default, Lutris suggests ~/Games/game-name, but you may want to install your games in a directory like ~/.local/share/Games to avoid cluttering your home directory.

To change it, click the ≡ icon in the top-right, click Preferences, click Global Options, and set the path for Default Installation Folder.

Installing The Game

Once Lutris launches, follow these steps to install your visual novel:

1. Click the + icon in the top left, then select Install a Windows game from an executable.

2. Provide the Game Name and select Windows XP 32-bit as the preset.

2a. If you're installing a Japanese language visual novel, change the Locale to ja_JP.UTF-8.

2b. Click Install.

3. Click Install next to wine.

4. Accept the installation directory and click Continue. If you want to change it, we recommend setting the Default Installation Folder—instructions for this are above.

5. Click Browse next to Select the setup file and find your game installer. It's often named Setup.exe.

6. Click Install, wait for it to create the Wineprefix and pop up the installer window, and follow the prompts to install the game.

7. Wait for the game to install. The game will likely install inside of your new Wineprefix's drive_c/Program Files directory.

8. When the installer finishes, click Launch to launch the game.

Watch a Video - Installation

This video guides you through the installation process.

If you're playing a Japanese language game, see Configuring for your next steps.

Otherwise, if the game launches successfully, you're done! You can sit down and play your visual novel now! You may also want to add the game to your program launcher so you can launch it without opening Lutris, or find some nice banner images and cover art for your game.

Problems

If the game fails to launch, it's possible that Lutris is not picking up the correct directory for the launch executable. Look around your file manager to see if you can find the executable, and select it under Game Executable in Game Options. You can get to this menu by right-clicking the game and clicking Configure.

If you get a “Bad Exe Format” error, try again with the Windows 10 64-bit preset, as this indicates the installer requires a 64-bit environment.

If Japanese text isn't displaying properly, you may need to apply the fakejapanese quick fix to the Wineprefix Lutris created, then try the Lutris install process again with the same Wineprefix.

If you have issues when playing the game, like the game crashing when it tries to play a video, or Japanese text not displaying properly, see our Troubleshooting section for more assistance.

Configuring

These instructions apply if you installed a Japanese language visual novel.

Right-click the game and click Configure.

System Options

  • Under Game Execution, add a new environment variable. Use TZ as the key and Asia/Tokyo as the value for the environment variable.
  • Set Locale to ja_JP.UTF-8.
  • You can configure Gamescope at the top of the tab, and get more options by enabling Advanced. Gamescope is useful for solving windowing issues and for upscaling games, but you need to install it first.

Click Save to finish configuring the game. You can launch it with the Play button.

If you’re experiencing issues, click the dropdown button next to the Play button and click Show Logs so you can get a better understanding of what is going wrong. Then have a look at the troubleshooting section on our Problems page.

If you couldn't install the game through Lutris, or you don't want to use Lutris, you can use the Terminal to install your game.

Some visual novels will only work in a 32-bit environment, and some will only work in a 64-bit environment, so create a 32-bit and 64-bit Wineprefix3):

mkdir -p ~/.local/share/wineprefixes
WINEARCH=win32 WINEPREFIX=~/.local/share/wineprefixes/vn32 wineboot
WINEARCH=win64 WINEPREFIX=~/.local/share/wineprefixes/vn64 wineboot

We use the WINEARCH environment variable to specify the architecture together with wineboot, which will build a new Wineprefix. We use WINEPREFIX to specify where we want to create the prefix—we recommend creating them inside the standard directory, ~/.local/share/wineprefixes.

Now, try launching the game in Wine with Japanese Locale set:

WINEPREFIX=~/.local/share/wineprefixes/vn32 LANG=ja_JP.UTF-8 TZ=Asia/Tokyo wine <game-exectuable.exe>

Follow the prompts in the installer window to install the game. Once installed, add it to Lutris.

Still having trouble? See if you can find your issue on our Troubleshooting section on our Problems page.

Lutris Configuration

Click the + icon in the top left and select Add locally installed game.

Game Info

  • Make sure the Wine (Runs Windows games) Runner is selected.

Game Options

  • Choose the Wineprefix. If you used the location we recommend, that will be ~/.local/share/wineprefixes/vn32 or ~/.local/share/wineprefixes/vn64, depending on which architecture you used to install the game.
  • Find and select the Game Executable.

Runner Options

  • Choose the Wine-Staging (System) Wine version.
  • Disable Fsync, as the System version does not support this.

System Options

  • Under Game Execution, add a new environment variable. Use TZ as the key and Asia/Tokyo as the value for the environment variable.
  • Set Locale to ja_JP.UTF-8.
  • You can configure Gamescope at the top of the tab, and get more options by enabling Advanced. Gamescope is useful for solving windowing issues and for upscaling games, but you need to install it first.

Click Save to finish configuring the game. You can launch it with the Play button.

Watch a Video - Configuration

This video guides you through the configuration process:

If you’re experiencing issues, click the dropdown button next to the Play button and click Show Logs so you can get a better understanding of what is going wrong. Then have a look at the troubleshooting section on our Problems page.

You can add your visual novel to your program launcher so you can launch it from your desktop without opening Lutris. To do this, click the dropdown menu next to Play and select Create Application Menu Shortcut, which will create a .desktop file in ~/.local/share/applications. It may take a few seconds to detect the new desktop entry, but you should now be able to launch it from your program launcher.

Troubleshooting Wine

If your visual novel didn’t work with Wine after following the steps above, don’t give up! There are plenty more tricks you can try, depending on the issue you’re facing.

If you have issues when playing the game, like the game crashing when it tries to play a video, or Japanese text not displaying properly, see our Troubleshooting section for more assistance.

If you want to know whether a visual novel you want to buy is compatible with GNU/Linux, or are having trouble getting it to work, you can try checking a compatibility database. These databases are very much incomplete, but they’re a good place to start for popular titles:

  • Our Troubleshooting Page has a small, but growing list of visual novels with troubleshooting steps to get the game working on GNU/Linux.
  • Our Compatibility List has a small, but growing list of known good/bad titles.
  • VisualNovelWiki has a list of visual novels that indicates whether the games are compatible with GNU/Linux and macOS, and explains how to get the game working.
  • WineHQ’s AppDB sometimes has an entry for the visual novel you’re looking to play, but the database doesn’t support Japanese text.
  • ProtonDB is a great resource for visual novels on Steam, although most Steam visual novels will work through Proton without any special configuration.

Miscellaneous

You've finished the main routes for this guide, but there's more to see! This information doesn't apply to everyone, but it may just be what you're looking for.

To learn about different Wine versions and managers, see Wine Distributions.

Textractor works well in Wine. For information on what Textractor is and how to use it, see this section in Reading Visual Novels in Japanese.

You should download the (English Only) zip file, which is a portable version of Textractor: https://github.com/Artikash/Textractor/releases/latest

You can easily launch this version of Textracor from any Wineprefix. Textractor can only inject hooks into the processes for games it can see, and it can only see games running in the same Wineprefix. As such, it doesn't work on native GNU/Linux games.

The easiest way to launch Textractor inside your game's Wineprefix is by clicking the dropdown menu next to Play for your visual novel, clicking Run EXE Inside Wine prefix, and selecting the x86 Textractor.exe file you extracted earlier. The relative file path is Textractor/x86/Textractor.exe.

Some publishers will release a native GNU/Linux build of their game. The majority of these games are made in the Ren’Py engine, which has best-in-class cross-platform support.

You can find these native games on several of the stores listed on our Buying Visual Novels page. The stores we know offer native GNU/Linux games with a way to easily filter for them are JAST, GOG, Steam, and MangaGamer.

NScripter was a visual novel engine popular with developers in Japan for many years. Many 07th Expansion games, like TRianThology, were developed with NScripter. NScripter only creates Windows builds, but there exists a clone of NScripter called ONScripter, which works on many different operating systems. ONScripter is very compatible with NScripter games, meaning we can use this engine to play NScripter visual novels on GNU/Linux with no modification to the game data.

The ONScripter page provides instructions on how it works and how to use it: https://onscripter.osdn.jp/onscripter.html

It’s easy to get games to run with ONScripter. In most cases, all you need to do is run onscripter in the game directory, and the game window will appear.

ONScripter Patches

If you're on Arch Linux, we recommend installing ONScripter with the two patches included in this AUR package: https://aur.archlinux.org/packages/onscripter

Using the Windows Version of ONScripter

If you experience issues with the GNU/Linux build of ONScripter, you can try running the Windows build of ONScripter through Wine.

The default banner resolution in Lutris is 184x69, cover art is 264x352, and the icon is 128x128, but Lutris will accept most sizes. Lutris usually extracts the icon from the executable when selecting it, but if it doesn’t, you can use icoextract to extract the executable’s bundled icon.

The banner resolution is the same as Steam’s banner resolution. All games on Steam have banner and cover art, so if the game is on Steam, you can get the banner from https://cdn.akamai.steamstatic.com/steam/apps/[APP_ID]/capsule_184x69.jpg ([APP_ID] should be replaced with the game’s Steam App ID).

You can get cover art for the game from https://cdn.akamai.steamstatic.com/steam/apps/[APP_ID]/hero_capsule.jpg.

For example:

That works for Steam, but most visual novels don’t have a banner with the aspect ratio Lutris expects, so for the majority of VNs you will need to learn how to create something decent with GIMP, Krita, or another photo editor.

To acquire a source image to work with, visit the visual novel’s official site, explore every single page, and see if you can find an image that matches something closely to what you want. Use inspect element (right click and select Inspect) to grab individual image assets and create something with them that somewhat matches the look of the game’s cover art but in banner form.

It might take some work, but your game library will look much nicer for it.

lutris-library-01-cropped.jpeg
Lutris showing cover art.
Lutris showing banner images.

Try out these quick-access Shell Functions to work with Wine more easily in the terminal.

If all else fails, you can run Windows in a virtual machine. While virtual machines have very basic graphic acceleration unless you pass-through a GPU4), the majority of visual novels will run acceptably even on integrated graphics. We recommend downloading the Japanese version of Windows for maximum compatibility with DRM schemes. GNOME Boxes is the simplest virtual machine manager for GNU/Linux, and it has better performance than Virtualbox. For a more advanced libvirt-based virtual machine manager, try virt-manager.

Virtualizing Windows is almost never necessary unless the game is encumbered by DRM.


1)
For a more technical explanation of how Wine works, see this article by CodeWeavers: https://www.codeweavers.com/blog/aeikum/2019/1/3/working-on-wine-part-1-the-wine-ecosystem
2)
Arch Linux suggests some additional Japanese fonts you could install: https://wiki.archlinux.org/title/Localization/Japanese#Fonts
3)
A Wineprefix is a directory that contains all of the files and directories a Windows program expects, like many of the system libraries, the Program Files directory, and the Users directory. 32-bit is more mature than 64-bit, so we use 32-bit by default.
  • visualnovel/vnsonlinux.txt
  • Last modified: 2024/02/03 05:52
  • by neo