Running Photoshop or any other windows app On Linux Using WinApps Container

Switching from Windows to Linux can be liberating — faster performance, better control, and a sense of digital independence. But let’s be honest: sometimes, you still need access to that one Windows-only application — maybe Photoshop, Illustrator, or Microsoft Office.

Sure, you could dual boot, or use Wine, but both methods come with compromises. Dual booting breaks your workflow, and Wine often struggles with compatibility and keyboard shortcuts.

That’s where WinApps comes in — a powerful open-source project that lets you run Windows applications seamlessly inside Linux using a lightweight virtual machine container. In this article, we’ll go step by step through how to install WinApps, configure Docker containers, and run Photoshop or any Windows-only app directly from your Linux desktop — no lag, no crashes, and no dual boot required.

Running Photoshop on Linux (or Any Windows App) Using WinApps Container

🧭 Table of Contents

  1. What Is WinApps?
  2. How WinApps Works
  3. Prerequisites and Recommended Setup
  4. Installing Docker Properly on Linux
  5. Configuring the WinApps Container
  6. Adjusting Security and Folder Access
  7. Starting the Container and Downloading Windows
  8. Setting Up FreeRDP for Access
  9. Automating Launch with Scripts and Desktop Entry
  10. Optimizing Performance: RAM, CPU, and Restart Rules
  11. Stopping, Recreating, or Removing Containers Safely
  12. Why Use This Over Wine or VirtualBox?

💡 1. What Is WinApps?

WinApps is an open-source project that lets Linux users run native Windows applications directly from their Linux desktop.

It achieves this by running Windows in a lightweight container or virtual machine (VM) and using Remote Desktop Protocol (RDP) to display and interact with the Windows apps. From the user’s perspective, the apps feel native — complete with icons, window borders, and working shortcuts.

It’s like having Windows invisibly running in the background, but your Photoshop, Word, or Excel window appears directly in your Linux environment.


⚙️ 2. How WinApps Works

WinApps uses two main components:

  • Docker Compose Container (running a minimal Windows VM)
  • FreeRDP Client (to render the Windows application inside Linux)

When you open Photoshop (or another Windows app), Docker starts a background Windows instance, loads the app, and streams it directly to your Linux desktop with almost zero latency — because it’s running locally on your own system, not over the internet.

Unlike Wine or PlayOnLinux, WinApps doesn’t try to translate Windows APIs — it simply runs a real Windows environment inside Linux, ensuring complete compatibility and stability.


🧩 3. Prerequisites and Recommended Setup

Before we dive in, let’s make sure you have the essentials ready.

You’ll need:

  • A Linux distribution (Ubuntu, Mint, Pop!_OS, Fedora, etc.)
  • At least 8 GB of RAM (16 GB recommended if you’ll run heavy apps like Photoshop)
  • At least 30 GB of free disk space
  • Docker and Docker Compose installed
  • A Windows ISO image (the container will download this automatically)

🐳 4. Installing Docker Properly on Linux

Let’s start by setting up Docker correctly.

A common mistake is installing Docker from your distro’s package repository (like apt install docker on Ubuntu). Those packages are often outdated and may cause integration problems.

Instead, always install Docker directly from the official Docker documentation for your Linux distribution:
👉 https://docs.docker.com/engine/install/

Step-by-Step Docker Installation (Example for Ubuntu/Debian)

  1. Update your repositories: sudo apt update
  2. Install dependencies: sudo apt install ca-certificates curl gnupg lsb-release
  3. Add Docker’s GPG key: sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  4. Add the official Docker repo: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  5. Install Docker: sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Add User to Docker Group

To avoid running Docker commands with sudo, add yourself to the Docker group:

sudo usermod -aG docker $USER

Then log out and back in, or run:

newgrp docker

🪟 5. Configuring the WinApps Container

Now that Docker is running smoothly, it’s time to set up your Windows container.

  1. Go to the WinApps GitHub page.
  2. Copy the docker-compose.yml content from the repository.
  3. Create a new project folder: mkdir ~/winapps && cd ~/winapps
  4. Create the Compose file: nano docker-compose.yml
  5. Paste the contents from GitHub.

Now, let’s tweak a few important lines before saving.


🔐 6. Adjusting Security and Folder Access

There are two crucial tweaks to make before running your container.

1. Change the Username and Password

Inside your docker-compose.yml file, look for:

environment:
  USER: user
  PASS: password

Change these to something unique and secure.

2. Limit File Access

By default, WinApps exposes your entire Linux home directory to the Windows environment — not ideal from a security standpoint.

Instead, modify it like this:

volumes:
  - ~/winshared:/home/user/winshared

This way, only a folder named winshared inside your Linux home will be visible to Windows. You can use it for transferring files safely between systems.

Save and close the file.


🚀 7. Starting the Container and Downloading Windows

Now open a terminal in your WinApps folder and run:

docker compose up

Docker will start building and downloading the Windows container. The first time, it may also fetch a Windows ISO image from Microsoft’s servers.

⚠️ If you get a download error, temporarily turn off your VPN, as Microsoft’s servers may block region-masked connections.

Once the setup completes, you’ll see a message confirming that Windows is being installed. Wait until it finishes and displays the Windows login screen.


💻 8. Setting Up FreeRDP for Access

The next step is to connect to your running Windows container using FreeRDP — a fast, open-source RDP client.

Install FreeRDP

For Ubuntu/Debian-based systems:

sudo apt update
sudo apt install freerdp2-x11

Now, check if you can connect to your container:

xfreerdp /v:127.0.0.1 /u:user /p:password

You should see your Windows desktop appear inside a new window — running directly from your container!

If typing long commands each time feels inconvenient, don’t worry — we’ll automate it next.


9. Automating Launch with Scripts and Desktop Entry

To make launching Photoshop or other Windows apps smoother, let’s automate the process using a shell script and a desktop shortcut.

Step 1: Create a Launcher Script

Navigate to your WinApps folder and create a new file:

nano launcher.sh

Paste the contents from this launcher repository:
👉 https://github.com/cyb3rm4gus/winapps_launcher

Modify:

  • Your Linux username (user)
  • The Windows password (same as set in docker-compose.yml)
  • The path to your WinApps folder

Then make it executable:

chmod +x launcher.sh

Step 2: Create a Desktop Entry

Create a new file:

nano ~/.local/share/applications/winapps.desktop

Paste the following:

[Desktop Entry]
Name=WinApps Launcher
Exec=/home/yourusername/winapps/launcher.sh
Type=Application
Icon=applications-system
Categories=Utility;

Then make it executable:

chmod +x ~/.local/share/applications/winapps.desktop

Now, “WinApps Launcher” will appear in your system menu. You can pin it to your dock or panel for one-click access.

When launched, it will:

  1. Check if your container is running.
  2. Start it if not.
  3. Wait 10 seconds for boot-up.
  4. Automatically launch an RDP session.
  5. Close the container when you exit.

🧠 10. Optimizing Performance: RAM, CPU, and Restart Rules

By default, the container runs with just 4 GB of RAM, which might not be enough for Photoshop or other demanding software.

To Increase RAM:

In your docker-compose.yml file, find:

mem_limit: 4g

Change it to:

mem_limit: 8g

(if your system has 16 GB or more physical RAM)

To Control Auto-Restart:

The default restart rule is:

restart: on-failure

In some Linux distros, this may cause Windows to auto-launch at system startup.
If you don’t want that behavior, change it to:

restart: "no"

After modifying, recreate the container using:

docker compose down
docker compose up --force-recreate

🔁 11. Stopping, Recreating, or Removing Containers Safely

To stop your container:

docker compose down

To restart it:

docker compose up -d

To rebuild after config changes:

docker compose down
docker compose up --force-recreate

Remember: running Windows in the background consumes CPU and RAM. It’s better to stop it when not in use.


⚖️ 12. Why Use This Over Wine or VirtualBox?

Here’s a quick comparison between all three options:

FeatureWinApps (Docker)WineVirtualBox
PerformanceHighMediumMedium
Compatibility100% (real Windows)Partial100%
IntegrationNative app windowsLimitedFull VM
LatencyZero (local)N/ASlight
Setup ComplexityModerateLowModerate
File SharingControlled (via winshared)NativeFolder Mounts
Resource UseModerateLightHeavy

Verdict: WinApps offers the best balance between performance and usability — real Windows compatibility with Linux-level control.


13. Frequently Asked Questions

Q1. Can I install any Windows app using WinApps?

Yes. You can install Photoshop, Microsoft Office, Notepad++, or any Windows program that works in a standard Windows environment.

Q2. Does this require a Windows license?

Yes. The Windows container still runs a genuine Windows OS. You’ll need a valid Windows license key to activate it, although it will function unactivated for testing.

Q3. Is it safe to use this setup?

Absolutely, as long as you restrict shared folders and keep your system updated. Avoid exposing your full Linux home directory to the container.

Q4. Can I use another RDP client like Remmina?

Yes. FreeRDP is recommended because it integrates better with the launcher script, but Remmina or KRDC will also work.

Q5. Will this setup work on Fedora or Arch?

Yes. You just need to adjust package commands (dnf or pacman) when installing Docker and FreeRDP.

Q6. Can I connect from another computer?

No — the container is meant to run locally. It’s optimized for zero-latency usage within the same system.


🌟 14. Final Thoughts

Running Photoshop or other Windows applications on Linux has always been one of the community’s biggest challenges. WinApps finally provides a clean, efficient, and stable solution — combining the best of both worlds.

With Docker managing the Windows environment and RDP providing fluid visual performance, you can now switch between GIMP and Photoshop instantly, without rebooting or fiddling with Wine dependencies.

Once you set it up, it feels almost magical: Windows apps running like native Linux software.

So if you’ve ever hesitated to fully switch to Linux because of “that one Windows program,” give WinApps a try — it might just make you forget you ever needed dual boot.


⚠️ Disclaimer

WinApps is an open-source project that uses a virtualized Windows environment. Users must have their own valid Windows license. This setup is intended for personal or educational use only — not for bypassing license restrictions or corporate deployments.


Tags:

WinApps, Photoshop on Linux, Docker, FreeRDP, Linux Containers, Virtualization, Windows Apps on Linux, Docker Compose, Remote Desktop

Hashtags:

#Linux #WinApps #Docker #PhotoshopOnLinux #RemoteDesktop #Virtualization #OpenSource

Visited 73 times, 1 visit(s) today

Arjun Nair

Arjun Nair

Arjun is a seasoned Linux enthusiast and open-source contributor. He has worked with multiple distributions including Debian, Fedora, and Arch-based systems, and regularly tests new desktop environments and community projects. With over a decade in IT system administration, Arjun brings practical, hands-on insights to Linux tutorials and reviews.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.