At last, a user-interface friendly Wine (A compatibility layer capable of running Windows applications under Linux) Manager.
You can find the latest version on the Releases page of GitLab.
Download the WineGUI package you require for your Linux distribution. I provide .deb, .rpm and .tar.gz files:
- Use the
.debpackage file for Ubuntu, Debian, Linux Mint, Zorin OS, MX linux, and other Debian-based distributions. - Use the
.rpmpackage for Fedora, RHEL, and similar distributions. - The Compressed Binary
.tar.gzfile is available for manual installation or standalone usage. This is prebuild. - The Source Code Archive (also
tar.gz) is intented for building WineGUI from source.
Install the package and you are ready to go! WineGUI should be listed in your menu.
Run-time requirement: Wine v9 or higher.
- Graphical user-interface on top of Wine
- Creating a new machine using an easy step-by-step wizard
- Application list per machine (with search feature and refresh button)
- Editing, removing and cloning Windows machines in a breeze
- Configure window installing additional software with just a single click (like installing DirectX)
- One-button click to run a program, open the
C:drive, simulate a reboot or kill all processes
The sections below are mainly relevant for software developers, who want to contribute or help the WineGUI project.
Thank you for considering contributing!
Please, read the dedicated contributing page.
More information about Gtkmm4 can be found on the official GTK documentation site.
WineGUI is created by using GTK4 toolkit (Gtkmm C++-interface) and C++ code.
The following build dependencies should be met first:
- gcc/g++ (advised: v13 or later) or clang (advised: v18 or later)
- cmake (advised: v3.25 or newer)
- ninja-build
- libgtkmm-4.0-dev (implicit dependency with libgtk-4-dev and other dev packages)
- libjson-glib-dev
- pkg-config
Optionally:
- Ccache (optional, but very much recommended)
- rpm
- clangd (v18 or higher, if clangd is used in your IDE)
Dependencies for testing:
- clang-format (v19)
- cppcheck (v2.18 or higher)
For generating docs:
- doxygen
- graphviz
Hint: You could execute ./scripts/deps.sh script for Debian based systems (incl. Ubuntu and Linux Mint) in order to get all the dependencies installed automatically.
Run script: ./scripts/build.sh
Or execute:
# Prepare
cmake -GNinja -B build
# Build WineGUI
cmake --build ./buildOptionally, use the VSCode CMake Tools extension to start the build or build with debug targets.
Building from the source code archive files (eg. tar.gz) is just as easy, however be sure to download the specially prepared WineGUI-Source-*.tar.gz archive file (instead of the GitLab generated source archives).
This WineGUI source archive contains the version.txt meaning the tarball is aware of the project version during the build.
There are various CMake options/variables flags you can set. Use cmake -LAH to see all options. For example (release build with /usr install prefix):
cmake -GNinja -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=/usrThen execute the build using: cmake --build ./build as shown earlier.
Execute: ninja -C build run
Or execute the binary directly:
./build/bin/wineguiConfiguring the Ninja build system via CMake is often only needed once (cmake -GNinja -B build), after that just execute:
cmake --build ./buildOr just: ninja within the build directory.
Clean the build via: ninja clean.
Hint: Run ninja help for all available targets.
If you would like to install the build targets (when build from source) on your machine, you can execute:
cmake --install ./buildYou can use the helper script: ./scripts/build-debug.sh
Start debugging in GDB (GNU Debugger):
cd build_debug
gdb -ex=run bin/wineguiFor production build DEB + RPM packages, you can run the script:
./scripts/build-prod.sh "DEB;RPM"First parameter is required and should be a semicolon separated list of packages to build. Some valid options are: TGZ, DEB, RPM. See cpack --help for more information.
Or build manually:
cmake -GNinja -DCMAKE_INSTALL_PREFIX:PATH=/usr -DPACKAGE -DCMAKE_BUILD_TYPE=Release -B build_prod
cmake --build ./build_prod --config Release
cd build_prod
cpack -C Release -G "DEB"Hint: You can disable the automatic startup version check by setting the -DCHECK_FOR_UPDATE=OFF variable. This will write the config init file with CheckForUpdatesStartup set to false (instead of true). Which is used for rolling release Linux distros.
Or build with generated doxygen files locally:
cmake -GNinja -DDOXYGEN=ON -B build_docs
cmake --build ./build_docs --target DoxygenSee latest WineGUI Doxygen webpage.
First build the (Linux) target including debug symbols (see Debug section above). Binary should be present in the build/bin directory.
Next, check for memory leaks using valgrind by executing:
./scripts/valgrind.shOr to generate a memory usage plot in massif format, execute:
./scripts/valgrind-plot.shBefore you can make a new release, align the version number in WineGUI with the version you want to release. Then create a new tagged version in Gitlab with the same version name.
Note: Only a release tag on the main branch will trigger the publish task.
For continuous integration & delivery we use our Dockerfile. Also hosted, build and deployed on this GitLab server.
However, the same image (gtk3-docker-cmake-ninja) is also shared on Dockerhub.
