README.md 2.99 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
Finally, 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
![WineGUI](misc/winegui_screenshot.png)

Melroy van den Berg's avatar
Melroy van den Berg committed
7
8
User-interface is created by using GTK+ (gtkmm c++-interface) and C++ code.

Melroy van den Berg's avatar
Melroy van den Berg committed
9
10
11
12
13
14
## 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
15
16
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
17
18
## Development

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

* C/C++
Melroy van den Berg's avatar
Melroy van den Berg committed
22
* CMake
23
* CMake Tools
Melroy van den Berg's avatar
Melroy van den Berg committed
24
* GitLab Workflow
25

Melroy van den Berg's avatar
Melroy van den Berg committed
26
27
### Documentation

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

Melroy van den Berg's avatar
Melroy van den Berg committed
30
31
32
33
### Requirements

Dependencies should be met before build:

Melroy van den Berg's avatar
Melroy van den Berg committed
34
35
* gcc/g++ (adviced: v7.3 or later)
* cmake (adviced: v3.10 or later)
36
* ninja-build
Melroy van den Berg's avatar
Melroy van den Berg committed
37
* libgtkmm-3.0-dev (implicit dependency with libgtk-3-dev)
38
* libjson-glib-dev
Melroy van den Berg's avatar
Melroy van den Berg committed
39
* pkg-config
Melroy van den Berg's avatar
Melroy van den Berg committed
40
41
42

Optionally:

43
* doxygen
44
* graphviz
Melroy van den Berg's avatar
Melroy van den Berg committed
45
* rpm
Melroy van den Berg's avatar
Melroy van den Berg committed
46
* cppcheck
47

48
**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
49
50
51

### Build

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

54
55
Or execute: `mkdir -p build && cd build && cmake -GNinja .. && ninja`

Melroy van den Berg's avatar
Melroy van den Berg committed
56
57
### Run

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

60
Or:
Melroy van den Berg's avatar
Melroy van den Berg committed
61

62
```sh
63
./build/bin/winegui
Melroy van den Berg's avatar
Melroy van den Berg committed
64
65
66
67
68
69
70
71
72
73
74
75
```

### Rebuild

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

`ninja`

Clean the build via: `ninja clean`

*Hint:* Run `ninja help` for all available targets.

Melroy van den Berg's avatar
Melroy van den Berg committed
76
77
### Debug

78
You can use the helper script: `./scripts/build_debug.sh`
Melroy van den Berg's avatar
Melroy van den Berg committed
79
80
81

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

82
```sh
Melroy van den Berg's avatar
Melroy van den Berg committed
83
84
cd build_debug
gdb -ex=run bin/winegui
Melroy van den Berg's avatar
Melroy van den Berg committed
85
86
```

87
88
### Production

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

91
92
93
94
95
96
97
Or use:

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

Melroy van den Berg's avatar
Melroy van den Berg committed
98
### Build Doxygen
99
100
101
102
103
104
105

Or build with generated doxygen files locally:

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

Melroy van den Berg's avatar
Melroy van den Berg committed
107
108
109
110
111
### 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.

Melroy van den Berg's avatar
Melroy van den Berg committed
112
*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
113

Melroy van den Berg's avatar
Melroy van den Berg committed
114
## Coding standard
Melroy van den Berg's avatar
Melroy van den Berg committed
115

Melroy van den Berg's avatar
Melroy van den Berg committed
116
We follow the [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html).
117

Melroy van den Berg's avatar
Melroy van den Berg committed
118
119
## CI

120
121
For continuous integration we use our [Dockerfile](misc/Dockerfile) to create a Docker image.
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
122

123
A helper script can be used: `./scripts/build_and_upload_image.sh`, after successfully identified via `docker login --username=<username>`.