What Is Wine?
Wine lets you run Windows programs on Linux — without Windows, without a Windows licence, and without a virtual machine. The name is a joke acronym: Wine Is Not an Emulator.
An emulator pretends to be a whole different computer, which is slow. Wine does something cleverer: it translates. When a Windows program asks Windows to "draw a window" or "open a file", Wine answers instead and passes the request to the Linux equivalent. The program runs at full speed on your real CPU.
notepad++.exe (a normal Windows program)
│ "Windows, please open C:\notes.txt and draw a window"
▼
┌──────────────────────────────────────────────────┐
│ Wine — its own versions of Windows' system files │
│ (kernel32.dll, user32.dll …) that call Linux │
└──────────────────────────────────────────────────┘
│ "Linux, open ~/.wine/drive_c/notes.txt,
│ and ask the desktop for a window"
▼
Linux kernel · your desktop (X11/Wayland) · PipeWire sound
You've probably used Wine already without knowing it: Proton, the technology that lets Steam run Windows games on Linux and the Steam Deck, is Valve's customised version of Wine.
How Hard Is It?
It depends entirely on the app. Roughly, Windows software falls into four groups:
| Difficulty | What to expect | Examples |
|---|---|---|
| Easy | Run the installer, it works. 10 minutes. | Notepad++, 7-Zip, IrfanView, WinSCP, many older games, most small utilities |
| Medium | Works after installing extra Windows parts (fonts, .NET, Visual C++ runtimes) with winetricks. 30–60 minutes of trial and error. | Older Microsoft Office (2010–2016), some accounting and engineering tools |
| Hard | Needs a specific Wine version or community fixes; may have glitches. | Recent Adobe Creative Cloud apps, apps with heavy online sign-in |
| Won't work | Don't bother — use a VM or dual boot. | Games with kernel-level anti-cheat, hardware drivers, antivirus, VPN clients, anything that installs a Windows driver |
Rule of thumb: the older and simpler the app, the better it runs. Always check for a native Linux version or a web version first (see Windows → Linux Apps).
Check Your App Before You Start
- WineHQ AppDB — user reports for thousands of apps, rated Platinum (flawless) → Gold → Silver → Bronze → Garbage (doesn't work). Read the newest reports; they often include the exact fix.
- ProtonDB — the same idea for Steam games.
- Search "<app name> wine" or "<app name> bottles" — community guides often exist for popular apps.
Five Words You Need to Know
| Term | Meaning |
|---|---|
| Prefix | A folder that holds a fake Windows installation — its own C: drive, registry, and settings. The default is ~/.wine. You can have as many as you like, one per app, so one app's fixes can't break another. |
| drive_c | The folder inside a prefix that Windows programs see as C:\. For example: ~/.wine/drive_c/Program Files/. |
| Z: drive | Wine maps your whole Linux filesystem to Z:\, so Windows apps can open your Linux files. /home/you/notes.txt is Z:\home\you\notes.txt. |
| winecfg | Wine's settings window: which Windows version to pretend to be, screen DPI, drives, audio. |
| winetricks | A helper that installs Windows extras apps sometimes need: fonts, .NET, Visual C++ runtimes, DirectX pieces. |
Install Wine
Ubuntu / Linux Mint / Debian (distro version — simplest)
# Enable 32-bit packages (some Windows installers are still 32-bit)
sudo dpkg --add-architecture i386
sudo apt update
# Install Wine, its 32-bit half, and winetricks
sudo apt install wine wine32:i386 winetricks -y
Ubuntu (newest Wine from WineHQ — optional)
Distro versions can be a year or more behind. If an app needs a newer Wine, use WineHQ's own repository instead (don't install both):
sudo dpkg --add-architecture i386
sudo mkdir -pm755 /etc/apt/keyrings
# Add WineHQ's signing key so apt trusts its packages
wget -O - https://dl.winehq.org/wine-builds/winehq.key \
| sudo gpg --dearmor -o /etc/apt/keyrings/winehq-archive.key
# Add the repository matching your Ubuntu version
sudo wget -NP /etc/apt/sources.list.d/ \
https://dl.winehq.org/wine-builds/ubuntu/dists/$(lsb_release -sc)/winehq-$(lsb_release -sc).sources
sudo apt update
sudo apt install --install-recommends winehq-stable -y
Fedora
sudo dnf install wine winetricks -y
Arch
# First enable the [multilib] repository: uncomment these two lines in /etc/pacman.conf
# [multilib]
# Include = /etc/pacman.d/mirrorlist
sudo pacman -Syu wine winetricks
Check it worked
wine --version
# Example output: wine-11.0
Walkthrough: Installing Notepad++ From Start to Finish
We'll install Notepad++, the popular Windows code and text editor, and make it behave like a
normal Linux app: it'll appear in your app menu, have its own icon, and open .txt files when you
double-click them. Time: about 15 minutes. Easy
Step 1: Create a Prefix Just for Notepad++
Giving each app its own prefix is the single best Wine habit. If something breaks, you delete one folder and nothing else is affected.
# WINEPREFIX tells Wine which fake Windows install to use.
# winecfg creates the prefix (first run takes ~30 seconds) and opens settings.
WINEPREFIX="$HOME/.wine-notepadpp" winecfg
- If Wine offers to install Wine Mono (for .NET apps), click Install. Notepad++ doesn't need it, but it's harmless and saves prompts later.
- In the winecfg window, on the Applications tab, set Windows Version to Windows 10.
- On a high-resolution (HiDPI) screen, go to the Graphics tab and raise Screen resolution to 120–144 dpi so text isn't tiny.
- Click OK.
You now have a fresh fake Windows at ~/.wine-notepadpp/drive_c/. Take a look: ls ~/.wine-notepadpp/drive_c
Step 2: Download the Installer
- Go to notepad-plus-plus.org/downloads and click the newest version.
- Download the 64-bit x64 Installer. It will be named something like
npp.8.x.x.Installer.x64.exeand land in~/Downloads. - (Optional but good practice) Check the download isn't corrupted or tampered with. The release page lists a SHA-256 hash; compare it to:
sha256sum ~/Downloads/npp.*.Installer.x64.exe
Step 3: Run the Installer With Wine
# Same WINEPREFIX as Step 1, so it installs into Notepad++'s own prefix
WINEPREFIX="$HOME/.wine-notepadpp" wine ~/Downloads/npp.*.Installer.x64.exe
The normal Windows installer opens, just as it would on Windows. Click through it:
- Installer Language: English → OK.
- Welcome: Next.
- License Agreement: I Agree.
- Destination Folder: leave it as
C:\Program Files\Notepad++→ Next. - Choose Components: leave the defaults → Next.
- Tick Create Shortcut on Desktop if you'd like one → Install.
- Completing Setup: leave "Run Notepad++" ticked → Finish.
Notepad++ opens in a normal window on your Linux desktop. The terminal may print lines starting with fixme: — these are normal Wine chatter and can be ignored.
Step 4: Test It Properly
- Type something, then File → Save As. In the save dialog, click Desktop or My Documents — Wine points these at your real Linux Desktop and Documents folders.
- Try File → Open and browse to
Z:\home\<your-username>\to reach any file on your Linux system. - Open a code file (e.g. a
.pyor.htmlfile) and check syntax highlighting works. - Try Plugins → Plugins Admin. It downloads plug-ins over the internet through Wine just like on Windows.
If the fonts look fuzzy or wrong, install Microsoft's core fonts and smoother font rendering into this prefix:
WINEPREFIX="$HOME/.wine-notepadpp" winetricks corefonts
WINEPREFIX="$HOME/.wine-notepadpp" winetricks fontsmooth=rgb
Step 5: Create a Launcher Script
Wine usually adds a menu entry for you (look under Wine → Programs in your app menu). But it can't
open Linux files you double-click, because Notepad++ expects Windows-style paths. This small script fixes that
by translating paths with winepath.
# Create a folder for personal scripts and open a new file in it
mkdir -p ~/.local/bin
nano ~/.local/bin/notepadpp
Paste this in, then save (Ctrl+O, Enter) and exit (Ctrl+X):
#!/bin/bash
# ─────────────────────────────────────────────────────────
# notepadpp — start Notepad++ (running in Wine) and open any
# files passed to it, e.g.: notepadpp ~/notes.txt
# ─────────────────────────────────────────────────────────
# Use Notepad++'s own Wine prefix (created in Step 1)
export WINEPREFIX="$HOME/.wine-notepadpp"
# Where the installer put the program (inside the prefix's C: drive)
APP="$WINEPREFIX/drive_c/Program Files/Notepad++/notepad++.exe"
# Convert each Linux path (/home/you/a.txt) to a Windows path (Z:\home\you\a.txt)
args=()
for f in "$@"; do
args+=("$(winepath -w "$f")")
done
# Hide Wine's debug chatter and launch Notepad++ with the converted paths
export WINEDEBUG=-all
exec wine "$APP" "${args[@]}"
# Make the script executable, then test it
chmod +x ~/.local/bin/notepadpp
~/.local/bin/notepadpp ~/.bashrc
Notepad++ should open with your .bashrc file loaded.
Step 6: Add It to Your App Menu With an Icon
Linux app menus are built from small .desktop files. First, find the icon Wine extracted during install:
find ~/.local/share/icons -iname '*notepad*' | sort | tail -n 1
# Copy the path it prints (e.g. …/256x256/apps/XXXX_notepad++.0.png)
Now create the menu entry. Paste the whole block into the terminal at once — $HOME is filled in for you automatically. Replace PASTE_ICON_PATH_HERE with the path from above:
cat > ~/.local/share/applications/notepadpp.desktop <<EOF
[Desktop Entry]
# What the menu shows
Name=Notepad++
Comment=Text and code editor (Windows app running in Wine)
# What runs when you click it (%F = any files being opened)
Exec=$HOME/.local/bin/notepadpp %F
Icon=PASTE_ICON_PATH_HERE
Type=Application
Categories=Development;TextEditor;
# Lets it appear in "Open With" for text and code files
MimeType=text/plain;text/html;text/css;text/x-python;application/json;application/xml;
StartupWMClass=notepad++.exe
EOF
# Tell the desktop to re-read the list of apps
update-desktop-database ~/.local/share/applications
Open your app menu and search for Notepad++. Pin it to your dock or taskbar if you like.
Wine also created its own menu entry during install. Once yours works, you can remove the duplicate: rm ~/.local/share/applications/wine/Programs/Notepad++.desktop
Step 7: Make It the Default for Text Files (Optional)
# Double-clicking any .txt file will now open Notepad++
xdg-mime default notepadpp.desktop text/plain
# Check it took effect — should print: notepadpp.desktop
xdg-mime query default text/plain
Or do it with the mouse: right-click a .txt file → Open With… → Notepad++ → "Always use for this file type".
Step 8: Updating and Uninstalling
Update
Download the newer installer and run it into the same prefix — it upgrades in place and keeps your settings:
WINEPREFIX="$HOME/.wine-notepadpp" wine ~/Downloads/npp.*.Installer.x64.exe
(If several installers are in Downloads, type the exact file name instead of using *.)
Uninstall — the Windows way
# Opens Wine's version of "Add or Remove Programs"
WINEPREFIX="$HOME/.wine-notepadpp" wine uninstaller
Uninstall — completely (recommended)
Because Notepad++ has its own prefix, deleting it removes every trace:
rm -rf ~/.wine-notepadpp
rm ~/.local/bin/notepadpp ~/.local/share/applications/notepadpp.desktop
rm -f ~/.local/share/applications/wine/Programs/Notepad++.desktop
update-desktop-database ~/.local/share/applications
Done. You've installed a Windows app, integrated it with your desktop, and know how to maintain and remove it. The same eight steps work for most "Easy" apps — just change the prefix name and the .exe path.
Prefer Clicking? Use Bottles
Bottles is a friendly app that does everything above with buttons. Each "bottle" is a prefix, and it ships its own tuned Wine versions (called runners).
flatpak install flathub com.usebottles.bottles
- Open Bottles → + (Create New Bottle) → name it Notepad++ → environment Application → Create.
- Open the bottle → Run Executable… → choose the installer from Downloads, and click through it as in Step 3.
- Under Programs, click the ⋮ menu next to Notepad++ → Add Desktop Entry.
- Need fonts or .NET? Open the bottle's Dependencies tab and click install — no winetricks needed.
For games, look at Steam (Proton is built in: Settings → Compatibility → Enable Steam Play) and Lutris or Heroic for Epic/GOG games.
Is Wine Safe?
Wine is not a sandbox. A Windows program in Wine runs as your Linux user and can read and delete anything in your home folder — including Windows viruses. Only run software from sources you'd trust on Windows.
- Download installers from the official website only, and check the hash when one is published.
- For software you're unsure about, reduce what it can reach:
WINEPREFIX=… winetricks sandboxremoves the prefix's links to your home folders and theZ:drive. (Don't do this for Notepad++, since it needs to open your files.) - For genuinely untrusted software, use a virtual machine instead.
Troubleshooting
- App is frozen or won't close — stop everything running in that prefix:
WINEPREFIX="$HOME/.wine-notepadpp" wineserver -k - The terminal is full of
fixme:lines — harmless. Hide them withWINEDEBUG=-allbefore the command. Lines witherr:are the ones worth searching for. - Tiny text on a 4K screen —
winecfg→ Graphics → raise the dpi (Step 1). - Missing or ugly fonts —
winetricks corefontsinto the app's prefix. - "it looks like wine32 is missing" — on Ubuntu/Debian run
sudo dpkg --add-architecture i386 && sudo apt update && sudo apt install wine32:i386. - App says it needs .NET or "MSVCP140.dll missing" — install the dependency:
winetricks dotnet48orwinetricks vcrun2022(into that prefix). - A prefix got messed up — delete it and start again:
rm -rf ~/.wine-appname. That's why we use one prefix per app.