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 (we provide .deb
, .rpm
and .tar.gz
files). Typically you should use .deb
file for Ubuntu and Linux Mint distros.
Install the package and you are ready to go! WineGUI should be listed in your menu.
- 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
Thank you for considering contributing!
Please, read the dedicated contributing page.
WineGUI is created by using GTK3 toolkit (Gtkmm C++-interface) and C++ code.
Dependencies should be met before build:
- gcc/g++ (advised: v8 or later)
- cmake (advised: v3.10 or later)
- ninja-build
- libgtkmm-3.0-dev (implicit dependency with libgtk-3-dev)
- libjson-glib-dev
- pkg-config
Optionally:
- Ccache (optional, but recommended)
- doxygen
- graphviz
- rpm
- clang-format (v14)
- cppcheck (v2.10 or higher)
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 ./build
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=/usr
Then execute the build using: cmake --build ./build
as shown earlier.
Execute: ninja -C build run
Or execute the binary directly:
./build/bin/winegui
Configuring the Ninja build system via CMake is often only needed once (cmake -GNinja -B build
), after that just execute:
cmake --build ./build
Or just: ninja
within the build directory.
Clean the build via: ninja clean
.
Hint: Run ninja help
for all available targets.
You can use the helper script: ./scripts/build_debug.sh
Start debugging in GDB (GNU Debugger):
cd build_debug
gdb -ex=run bin/winegui
For production build and DEB file package, you can run: ./scripts/build_prod.sh
Or use:
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"
Or build with generated doxygen files locally:
cmake -GNinja -DDOXYGEN=ON -B build_docs
cmake --build ./build_docs --target Doxygen
See 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.sh
Or to generate a memory usage plot in massif format, execute:
./scripts/valgrind_plot.sh
Before 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 to create a Docker image.
This image (danger89/gtk3-docker-cmake-ninja
) is hosted on Dockerhub.
A helper script can be used: ./scripts/build_and_upload_image.sh