README.md 4.93 KB
Newer Older
Melroy van den Berg's avatar
Melroy van den Berg committed
1
# WineGUI
2

Melroy van den Berg's avatar
Melroy van den Berg committed
3
At last, a user-interface friendly [Wine](https://www.winehq.org/) (A compatibility layer capable of running Windows applications under Linux) Manager.
Melroy van den Berg's avatar
Melroy van den Berg committed
4

Melroy van den Berg's avatar
Melroy van den Berg committed
5
6
7
8
9
[![Pipeline](https://gitlab.melroy.org/melroy/winegui/badges/master/pipeline.svg)](https://gitlab.melroy.org/melroy/winegui/-/pipelines/latest)
[![Telegram](https://img.shields.io/badge/chat-on%20telegram-brightgreen)](https://t.me/winegui)
[![Matrix](https://img.shields.io/badge/chat-on%20matrix-brightgreen)](https://matrix.to/#/#winegui:melroy.org)
[![Release](https://img.shields.io/badge/release-latest-orange)](https://gitlab.melroy.org/melroy/winegui/-/releases)

Melroy van den Berg's avatar
Melroy van den Berg committed
10
![WineGUI](misc/winegui_screenshots.gif)
Melroy van den Berg's avatar
Melroy van den Berg committed
11

Melroy van den Berg's avatar
Melroy van den Berg committed
12
13
14
15
16
17
## Download

You can find the latest version on the [Releases page](https://gitlab.melroy.org/melroy/winegui/-/releases).

Download the WineGUI package you require for your Linux distribution (we provided `.deb`, `.rpm` and `.tar.gz` files). Typically you should use `.deb` file for Ubuntu and Linux Mint distros.

Melroy van den Berg's avatar
Melroy van den Berg committed
18
19
Install the package and you are ready to go! WineGUI should be listed in your menu.

Melroy van den Berg's avatar
Melroy van den Berg committed
20
21
## Features

Melroy van den Berg's avatar
Melroy van den Berg committed
22
- **Graphical user-interface** on top of [Wine](https://www.winehq.org/)
Melroy van den Berg's avatar
Melroy van den Berg committed
23
- Creating a new machine using an **easy step-by-step wizard**
Melroy van den Berg's avatar
Melroy van den Berg committed
24
- **Application list** per machine (with _search feature_)
25
- Editing and removing Windows machines in a _breeze_
Melroy van den Berg's avatar
Melroy van den Berg committed
26
27
- 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
Melroy van den Berg's avatar
Melroy van den Berg committed
28

Melroy van den Berg's avatar
Melroy van den Berg committed
29
30
31
32
## GitHub Star History

[![Star History Chart](https://api.star-history.com/svg?repos=winegui/WineGUI&type=Date)](https://star-history.com/#winegui/WineGUI&Date)

Melroy van den Berg's avatar
Melroy van den Berg committed
33
34
## Development

Melroy van den Berg's avatar
Melroy van den Berg committed
35
36
WineGUI is created by using [GTK3 toolkit](https://www.gtk.org/) (Gtkmm C++-interface) and C++ code.

Melroy van den Berg's avatar
Melroy van den Berg committed
37
Development has been done in VSCcodium, using the following extensions:
38

Melroy van den Berg's avatar
Melroy van den Berg committed
39
40
41
42
- C/C++
- CMake
- CMake Tools
- GitLab Workflow
43

Melroy van den Berg's avatar
Melroy van den Berg committed
44
45
### Documentation

Melroy van den Berg's avatar
Melroy van den Berg committed
46
See latest [WineGUI Developer Docs](https://gitlab.melroy.org/melroy/winegui/-/jobs/artifacts/master/file/doc/doxygen/index.html?job=build).
47

Melroy van den Berg's avatar
Melroy van den Berg committed
48
49
50
51
### Requirements

Dependencies should be met before build:

Melroy van den Berg's avatar
Melroy van den Berg committed
52
- gcc/g++ (adviced: v8 or later)
Melroy van den Berg's avatar
Melroy van den Berg committed
53
54
55
56
57
- cmake (adviced: v3.10 or later)
- ninja-build
- libgtkmm-3.0-dev (implicit dependency with libgtk-3-dev)
- libjson-glib-dev
- pkg-config
Melroy van den Berg's avatar
Melroy van den Berg committed
58
59
60

Optionally:

Melroy van den Berg's avatar
Melroy van den Berg committed
61
62
63
- doxygen
- graphviz
- rpm
64
- cppcheck
65

66
**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.
Melroy van den Berg's avatar
Melroy van den Berg committed
67
68
69

### Build

70
Run: `./scripts/build.sh`
Melroy van den Berg's avatar
Melroy van den Berg committed
71

72
73
Or execute: `mkdir -p build && cd build && cmake -GNinja .. && ninja`

Melroy van den Berg's avatar
Melroy van den Berg committed
74
75
### Run

76
Execute within the build directory: `ninja run`
Melroy van den Berg's avatar
Melroy van den Berg committed
77

78
Or:
Melroy van den Berg's avatar
Melroy van den Berg committed
79

80
```sh
81
./build/bin/winegui
Melroy van den Berg's avatar
Melroy van den Berg committed
82
83
84
85
86
87
88
89
90
91
```

### Rebuild

Cmake is only needed once, after that you can often use:

`ninja`

Clean the build via: `ninja clean`

92
_Hint:_ Run `ninja help` for all available targets.
Melroy van den Berg's avatar
Melroy van den Berg committed
93

Melroy van den Berg's avatar
Melroy van den Berg committed
94
95
### Debug

96
You can use the helper script: `./scripts/build_debug.sh`
Melroy van den Berg's avatar
Melroy van den Berg committed
97
98
99

Start debugging in [GDB (GNU Debugger)](https://cs.brown.edu/courses/cs033/docs/guides/gdb.pdf):

100
```sh
Melroy van den Berg's avatar
Melroy van den Berg committed
101
102
cd build_debug
gdb -ex=run bin/winegui
Melroy van den Berg's avatar
Melroy van den Berg committed
103
104
```

Melroy van den Berg's avatar
Melroy van den Berg committed
105
106
### Memory check

107
First **build** the (Linux) target including _debug symbols_. Binary should be present in the `build/bin` folder.
Melroy van den Berg's avatar
Melroy van den Berg committed
108
109
110
111
112
113
114
115
116
117
118
119
120

Next, check for memory leaks using `valgrind` by executing:

```sh
./scripts/valgrind.sh
```

Or to generate a memory usage plot in [massif format](https://valgrind.org/docs/manual/ms-manual.html), execute:

```sh
./scripts/valgrind_plot.sh
```

121
122
### Production

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

125
126
127
128
129
130
131
Or use:

```sh
cmake -DCMAKE_BUILD_TYPE=Release
ninja
```

Melroy van den Berg's avatar
Melroy van den Berg committed
132
### Build Doxygen
133
134
135
136
137
138
139

Or build with generated doxygen files locally:

```sh
cmake -GNinja -Ddoc=ON
ninja
```
140

Melroy van den Berg's avatar
Melroy van den Berg committed
141
142
143
144
145
### 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.

146
_Note:_ Only a `release tag` on the `master` branch will trigger the publish task.
Melroy van den Berg's avatar
Melroy van den Berg committed
147

Melroy van den Berg's avatar
Melroy van den Berg committed
148
149
150
151
152
153
154
155
156
157
158
159
### Automated Clang Format

We use our [own Clang LLVM C++ Programming Style Format](.clang-format), using [clang-format](https://clang.llvm.org/docs/ClangFormat.html) command.

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

```sh
./scripts/fix-format.sh
```

Check only for errors, run: `./scripts/check-format.sh`

160
### Guidelines
Melroy van den Berg's avatar
Melroy van den Berg committed
161

162
163
164
First we try to use the [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) as basis.

Next, we also tend to follow the popular [C++ Core Guidelines](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) as much as possible.
165

Melroy van den Berg's avatar
Melroy van den Berg committed
166
### CI/CD
Melroy van den Berg's avatar
Melroy van den Berg committed
167

Melroy van den Berg's avatar
Melroy van den Berg committed
168
For continuous integration & delivery we use our [Dockerfile](misc/Dockerfile) to create a Docker image.
169
This image (`danger89/gtk3-docker-cmake-ninja`) is hosted on [Dockerhub](https://hub.docker.com/r/danger89/gtk3-docker-cmake-ninja).
Melroy van den Berg's avatar
Melroy van den Berg committed
170

Melroy van den Berg's avatar
Melroy van den Berg committed
171
A helper script can be used: `./scripts/build_and_upload_image.sh`