Inspiration

I use Linux for everything, but a lot of older and independent games still arrive as Windows folders, archives, or EXE files. Wine and Proton can often run them, but the setup still involves prefixes, runners, executable hunting, and handmade launchers.

I wanted one simple action: drop in a Windows game and get a normal Linux launcher back.

What it does

Funnel turns an offline Windows game into a Linux desktop app.

Open Funnel and drop in a game folder, ZIP, RAR, 7z archive, EXE, or installer. Funnel extracts it safely, finds the real game instead of a configuration tool or updater, creates an isolated Wine or Proton environment, and puts a launcher on the Desktop and in the application menu.

The original game files stay where they are. Steam is optional and no Steam account is required.

How I built it

Funnel is a local Python and GTK application. It uses normal archive tools, FreeDesktop launchers, and either UMU or Wine.

I built it with Codex and GPT-5.6 during Build Week. Codex helped implement the GTK drop interface, safe extraction, game-executable selection, isolated compatibility prefixes, and generated Linux launchers. GPT-5.6 helped inspect failures from real games and refine the workflow while I tested it on Fedora.

There is no AI model inside Funnel. Conversion is local and deterministic.

Challenges

Choosing the correct EXE was harder than launching one. A game folder can contain a configuration tool, updater, crash reporter, uninstaller, and the actual game. The largest executable is not always the right one.

Spelunky initially caused Funnel to choose config.exe instead of Spelunky.exe. Sengoku Rance needed its own launch behavior and runtime handling. Testing with real games exposed mistakes that clean sample files never showed.

Funnel now uses several pieces of evidence together: filenames, directory structure, executable metadata, known helper names, and game-specific runtime needs.

What I learned

Compatibility is only half the problem. Proton may be able to run a game, but that does not make the game feel installed. Players still need extraction, executable selection, an isolated prefix, and a launcher they can find later.

I also learned to be honest about the product boundary. Funnel is for offline and DRM-free Windows games. Games that depend on kernel anti-cheat, proprietary launchers, or unsupported online services may not work under Wine or Proton.

What's next

I want to test more games and Linux distributions, package Funnel for easier installation, and keep improving game detection without turning the interface into another compatibility-tool dashboard.

Built With

  • 7-zip
  • codex
  • freedesktop
  • gaming
  • gpt-5.6
  • gtk3
  • linux
  • proton
  • python
  • umu
  • unrar
  • windows-games
  • wine
Share this project:

Updates