No description
Find a file
2024-02-11 19:24:49 +01:00
.vscode Add support for default Wine prefix bottle/machine. Sort WineGUI machines by name alphabetically. Add display default Wine machine to preference/general config file. Plus minor code improvements 2022-10-29 23:12:00 +02:00
cmake Add plain text only description to packages. Fixes #28 2022-10-31 17:50:12 +01:00
images Add winefile + oleview 2024-02-01 22:11:19 +01:00
include Move to includ folder and fix PROJECT_VER_PATCH typo 2024-02-11 15:43:16 +01:00
misc Add winefile + oleview 2024-02-01 22:11:19 +01:00
scripts Just to be sure, also set cpack to release. 2024-01-03 13:46:20 +01:00
src Move to includ folder and fix PROJECT_VER_PATCH typo 2024-02-11 15:43:16 +01:00
.clang-format Increase column width. Fix wait before bottle renaming during edit 2022-05-25 17:01:12 +02:00
.gitignore Create latest release file during the deployment job as well 2023-01-25 22:13:32 +01:00
.gitlab-ci.yml Also run on main 2023-12-13 23:50:28 +01:00
CHANGELOG Update CHANGELOG 2020-06-08 03:26:47 +02:00
CMakeLists.txt Fallback to version 1.0.0 2024-02-11 19:24:49 +01:00
CODEOWNERS Add codeowners file 2021-04-11 21:45:00 +02:00
doxygen.conf Some last refactorings with doxygen improvements 2022-05-26 02:14:46 +02:00
LICENSE first example 2019-05-30 21:42:50 +02:00
README.md Just use a define without env 2024-02-11 00:55:17 +01:00
suppressions.txt All functions are now used in helper.cc 2023-04-15 02:48:26 +02:00
winegui.code-workspace New code workspace file 2021-02-23 23:23:21 +01:00

WineGUI

At last, a user-interface friendly Wine (A compatibility layer capable of running Windows applications under Linux) Manager.

Pipeline Telegram Matrix Release

WineGUI

Download

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.

Features

  • 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

GitHub Star History

Star History Chart


Development

WineGUI is created by using GTK3 toolkit (Gtkmm C++-interface) and C++ code.

Development has been done in VSCcodium, using the following extensions:

  • C/C++
  • CMake
  • CMake Tools
  • GitLab Workflow

Documentation

See latest WineGUI Developer Docs.

Requirements

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 much 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.

Build

Run script: ./scripts/build.sh

Or execute:

# Prepare
cmake -GNinja -B build
# Build WineGUI
cmake --build ./build

Building from source

Building from the source code archive files (eg. tar.gz) is just as easy, however you are missing the git tag information I use to set the project version within CMake.

Luckily, I provide an easy solution just setting a define: -DCUSTOM_PROJECT_VERSION flag to the version you want, for example:

cmake -GNinja -B build -DCUSTOM_PROJECT_VERSION:STRING="1.0.0"

Then execute the build using cmake as shown earlier.

Run

Execute: ninja -C build run

Or execute the binary directly:

./build/bin/winegui

Rebuild

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.

Debug

You can use the helper script: ./scripts/build_debug.sh

Start debugging in GDB (GNU Debugger):

cd build_debug
gdb -ex=run bin/winegui

Memory check

First build the (Linux) target including debug symbols. 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

Production

For production build and DEB file package, you can run: ./scripts/build_prod.sh

Or use:

cmake -GNinja -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE=Release -B build_prod

cmake --build ./build_prod --config Release

Build Doxygen

Or build with generated doxygen files locally:

cmake -GNinja -Ddoc=ON -B build_docs
cmake --build ./build_docs --target Doxygen

Releasing

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.

Automated Clang Format

We use our own Clang LLVM C++ Programming Style Format, using clang-format command.

To automatically comply to our style format execute following script (inplace edits are performed for you):

./scripts/fix_format.sh

Or depend on the docker image instead of your local clang-format:

./scripts/fix_format.sh docker

Check only for errors, run: ./scripts/check_format.sh (same idea with Docker, run: ./scripts/check_format.sh docker to not depend on your local clang-format tool)

Guidelines

First we try to use the Google C++ Style Guide as basis.

Next, we also tend to follow the popular C++ Core Guidelines as much as possible.

CI/CD

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