aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: fab4a311b9a8a0d10f8fa6b0316cdc5ae56846a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
<img width="100" height="100" align="right" style="position: absolute;right: 0;padding: 12px;top:12px;" src="https://github.com/saturneric/Blob/blob/master/logos/icon.png?raw=true" alt="ICON"/>

# GpgFrontend

![Language](https://img.shields.io/badge/language-C%2B%2B-green)
![License](https://img.shields.io/badge/License-GPL--3.0-orange)
![CodeSize](https://img.shields.io/github/languages/code-size/saturneric/GpgFrontend)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/d1750e052a85430a8f1f84e58a0fceda)](https://www.codacy.com/gh/saturneric/GpgFrontend/dashboard?utm_source=github.com&utm_medium=referral&utm_content=saturneric/GpgFrontend&utm_campaign=Badge_Grade)
![GitHub release (latest by date)](https://img.shields.io/github/v/release/saturneric/gpgfrontend)
![Homebrew Cask](https://img.shields.io/homebrew/cask/v/gpgfrontend)
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fsaturneric%2FGpgFrontend.svg?type=small)](https://app.fossa.com/projects/git%2Bgithub.com%2Fsaturneric%2FGpgFrontend?ref=badge_small)
[![Build & Package](https://github.com/saturneric/GpgFrontend/actions/workflows/release.yml/badge.svg?branch=main)](https://github.com/saturneric/GpgFrontend/actions/workflows/release.yml)

GpgFrontend is a free, open-source, robust yet user-friendly, compact and
cross-platform tool for [OpenPGP](https://www.openpgp.org/) encryption. It
stands out as an exceptional GUI frontend for the modern
[GnuPG](https://www.gnupg.org/) (gpg).

When using GpgFrontend, you can:

- Rapidly encrypt files or text.
- Digitally sign your files or text with ease.
- Conveniently manage all your GPG keys on your device.
- Transfer all your GPG keys between devices safely and effortlessly.
- Furthermore, you can build and run it on various operating systems, including
  Windows, macOS, Linux, FreeBSD, and more.

GpgFrontend is **PERMANENTLY FREE** of charge. However, you can support us by
"starring" this project. Your contributions are highly appreciated!

[Language Supported](#language-support) by GpgFrontend including English, Chinese, French, Russian, German, Spanish, Portuguese, Arabic, etc.

[>> Download <<](https://github.com/saturneric/GpgFrontend/releases/latest)
| [>> User Manual <<](https://www.gpgfrontend.bktus.com/#/overview)
| [>> Developer Document <<](https://doxygen.gpgfrontend.bktus.com/)
| [>> Develop Repo <<](https://git.bktus.com/gpgfrontend/GpgFrontend)

## Table of Contents

- [User Manual](#user-manual)
- [System Requirement](#system-requirement)
- [Developer Document](#developer-document)
- [Build From Source Code](#build-from-source-code)
- [Language Support](#language-support)
- [Contract](#contract)
- [Licenses](#licenses)

## User Manual

GpgFrontend provides documentations on its main features. If you want to know how to install, please
read the [User Manual](https://www.gpgfrontend.bktus.com/#/quick-start) instead of README.

## System Requirement

Before proceeding with the installation and usage of GpgFrontend, it's crucial
to understand the system requirements that ensure optimal performance. This
section provides comprehensive details about the necessary software
dependencies, hardware specifications, and the compatible operating systems.
Meeting these requirements will ensure a smooth, efficient experience while
using GpgFrontend.

Please read the following subsections carefully to confirm that your system
aligns with the recommended configurations.

### Operating System

GpgFrontend is compatible with major operating systems including Linux, macOS,
and Windows. Specifically, it recommends Windows 10 and later, macOS 11 and
later, and Ubuntu 20.04 LTS or other equivalent Linux distributions.

### Software Dependencies

Qt5 or Later: GpgFrontend is developed using the Qt framework. Therefore, a
runtime of Qt5 or later is required for the software to function correctly.
Please note, the Qt5 runtime is integrated into the Release Package for Linux,
macOS, and Windows, so it generally does not need to be considered separately.
This allows for easier setup and ensures compatibility across different systems.

GnuPG: As the frontend for GnuPG, GpgFrontend requires GnuPG (version 2.2.0 or
higher) to be pre-installed in your system. Please note, GpgFrontend is not
compatible with GnuPG 1.x versions. Users employing earlier versions of GnuPG 2
may encounter some unforeseen issues. We strongly recommend updating to the
supported versions to ensure a seamless experience.

### Hardware

While the specific hardware requirements largely depend on the size and
complexity of the data you're working with, we generally recommend:

A computer with at least 1 GB of RAM. However, 2 GB or more is preferable for
smoother performance. The majority of these resources are allocated to your
operating system, but around 100 MB of memory is needed to ensure the smooth
running of GpgFrontend. At least 200 MB of free disk space for software
installation. Additional space will be needed for ongoing work.

Please note, these requirements are intended to be guidelines rather than strict
rules. It's possible that GpgFrontend will work on lower-spec hardware, but for
optimal performance, the above specifications are recommended.

### Network

Although not necessary for basic operation, an active Internet connection may be
required for software updates and accessing online help resources.

Please note that these are the minimal requirements that we tested, and actual
requirements for your use case could be higher, especially for large datasets.

## Developer Document

You can view the developer documentations that is synchronized with the current latest develop code. This document will
help you understand the source code and get involved more quickly in the process of contributing to open source.

[Developer Document](https://doxygen.gpgfrontend.bktus.com)

## Build From Source Code

For some experts, building GpgFrontend from source code is a good option. I encourage people to freely build,
package and distribute their own versions. The method I build in major operating systems is as follows:

Note: "$" Symbols indicate commands to should be executed with a normal user.

```shell
$ git clone --recurse-submodules https://github.com/saturneric/GpgFrontend.git
```

### For Windows

Before building, you need to install MSYS2. After installation, open the MSYS2 terminal (MSYS2 MinGW 64-bit), enter the
MSYS2 directory, and execute the following commands:

```shell
pacman --noconfirm -S --needed mingw-w64-x86_64-gcc mingw-w64-x86_64-make mingw-w64-x86_64-cmake autoconf
pacman --noconfirm -S --needed make texinfo mingw-w64-x86_64-libconfig mingw-w64-x86_64-boost automake
pacman --noconfirm -S --needed mingw-w64-x86_64-qt5 libintl msys2-runtime-devel gettext-devel mingw-w64-x86_64-gpgme
pacman --noconfirm -S --needed mingw-w64-x86_64-ninja mingw-w64-x86_64-gnupg mingw-w64-x86_64-libarchive
```

After executing these commands, you will start compiling.

```shell
$ cd GpgFrontend
$ mkdir build && cd build
$ cmake -G Ninja  -DCMAKE_BUILD_TYPE="Release" ..
$ ninja
```

After compiling, a release directory will be generated, which contains executable files that can be run directly.

```shell
$ ./release/GpgFrontend.exe
```

### For macOS

Install and compile dependencies.

```shell
$ brew install cmake git autoconf automake qt@5 texinfo gettext [email protected] libarchive
$ brew install boost ninja
$ brew unlink gettext && brew link --force gettext
$ brew link qt@5
```

Build the code separately for debug.

```shell
$ cd GpgFrontend
$ mkdir build && cd build
$ cmake -G Ninja  -DCMAKE_BUILD_TYPE="Debug" -DOPENSSL_ROOT_DIR=/usr/local/opt/[email protected]  ..
$ ninja
$ ./release/GpgFrontend # run the program
```

Build the code and make the App Bundle.

```shell
$ cd GpgFrontend
$ mkdir build && cd build
$ cmake -G Ninja  -DCMAKE_BUILD_TYPE="Release" -DOPENSSL_ROOT_DIR=/usr/local/opt/[email protected] ..
$ ninja
$ macdeployqt ./release/GpgFrontend.app
```

### For Ubuntu 18.04 And Later

Install and compile dependencies.

```shell
$ sudo apt-get update
$ sudo apt-get -y install build-essential binutils git autoconf automake gettext texinfo
$ sudo apt-get -y install gcc-8 g++-8 ninja-build
$ sudo apt-get -y install libconfig++-dev libboost-all-dev libarchive-dev libssl-dev
$ sudo apt-get -y install gpg # If you need to run directly after building.
```

Compile and install libgpg-error/libassuan/gpgme. Notice: These component's version in third_party directory is
newer than those in apt.

```shell
# libgpg-error
$ cd GpgFrontend
$ cd  ./third_party/libgpg-error
$ ./autogen.sh
$ ./configure --enable-maintainer-mode && make
$ sudo make install
# libassuan
$ cd GpgFrontend
$ cd  ./third_party/libassuan
$ ./autogen.sh
$ ./configure --enable-maintainer-mode && make
$ sudo make install
# gpgme
$ cd GpgFrontend
$ cd  ./third_party/gpgme
$ ./autogen.sh
$ ./configure --enable-maintainer-mode --enable-languages=cpp && make
$ sudo make install
```

Build the code and make the deb package(Please use Ubuntu 20.04 or later).

```shell
$ cd GpgFrontend
$ mkdir build && cd build
$ cmake -G Ninja  -DCMAKE_BUILD_TYPE="Release" -DGPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE=ON ..
$ ninja
$ ninja package
```

Build the code separately for debug(Please use ubuntu 18.04 or later).

```shell
$ cd GpgFrontend
$ mkdir build && cd build
$ cmake -G Ninja  -DCMAKE_BUILD_TYPE="Debug" ..
$ ninja
$ ./release/GpgFrontend # run the program
```

Package the AppImage(Should use ubuntu 18.04).

```shell
$ cd GpgFrontend
$ mkdir build && cd build
$ cmake -G Ninja  -DCMAKE_BUILD_TYPE="Release" ..
$ ninja
$ mkdir ./AppImageOut
$ cd ./AppImageOut
$ wget -c -nv https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage
$ chmod u+x linuxdeployqt-continuous-x86_64.AppImage
$ ./linuxdeployqt-continuous-x86_64.AppImage ../release/gpgfrontend/usr/share/applications/*.desktop -appimage
```

## Language Support

Listed below are the languages currently supported by GpgFrontend. Please be
aware that some of these languages are translated via machine translation and
may not have been manually verified for accuracy. If you are interested in
joining our translation and verification work, please refer to [this
link](https://gpgfrontend.bktus.com/#/translate-interface).

### Supported Languages

GpgFrontend currently supports a wide array of languages including:

- Chinese
- Spanish: 'es_ES', 'es_MX'
- French: 'fr_FR', 'fr_CA'
- German: 'de_DE', 'de_AT', 'de_CH'
- Polish: 'pl_PL'
- Russian: 'ru_RU'
- Japanese: 'ja_JP'
- Italian: 'it_IT'
- Korean: 'ko_KR'
- Brazilian Portuguese: 'pt_BR'
- Arabic: 'ar_SA', 'ar_IQ'
- Hindi: 'hi_IN'
- Afrikaans: 'af_ZA'
- Albanian: 'sq_AL'
- Belarusian: 'be_BY'
- Bulgarian: 'bg_BG'
- Catalan: 'ca_ES'
- Croatian: 'hr_HR'
- Czech: 'cs_CZ'
- Danish: 'da_DK'
- Dutch: 'nl_NL'
- Estonian: 'et_EE'
- Persian: 'fa_IR'
- Finnish: 'fi_FI'
- Hebrew: 'he_IL', 'iw_IL'
- Indonesian: 'id_ID'
- Lithuanian: 'lt_LT'
- Greek: 'el_GR'
- Ukrainian: 'uk_UA'
- English: 'en_US', 'en_GB', 'en_AU'

**Notice:** Please note that most translations are generated by Google's
automatic translation service. If you find an error in any of the translations,
we welcome you to [join our translation
work](https://www.gpgfrontend.bktus.com/#/translate-interface) to provide a more
accurate human translation.

## Contract

Please refer to [HERE](https://www.gpgfrontend.bktus.com/#/contract) for my contact details.

### Contributing & Bugs Report

Feel free to dive in! [Open an issue](https://github.com/saturneric/GpgFrontend/issues/new) or submit PRs if you prefer
to use GitHub. For anonymous users, Git patches can be delivered by [mail](mailto:[email protected]).

### Project Maintainer

[@Saturneric](https://github.com/saturneric)

### Project's LOGO

![logo](https://github.com/saturneric/Blob/blob/master/logos/gpgfrontend-logo.jpg?raw=true)

## LICENSES

GpgFrontend itself is licensed under the [GPLv3](COPYING).

[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fsaturneric%2FGpgFrontend.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fsaturneric%2FGpgFrontend?ref=badge_large)

### Dependencies and Acknowledgements

GpgFrontend incorporates various libraries and binaries that come with their
unique licenses. For additional details or to obtain the source code, please
visit their respective homepages:

- **GnuPG**: [https://gnupg.org](https://gnupg.org)
- **GPGME**: [https://gnupg.org/software/gpgme/index.html](https://gnupg.org/software/gpgme/index.html)
- **Qt (Open Source)**: [https://www.qt.io](https://www.qt.io)
- **MSYS2**: [https://www.msys2.org](https://www.msys2.org)
- **Mingw-w64**: [http://mingw-w64.org/doku.php](http://mingw-w64.org/doku.php)
- **AppImage**: [https://appimage.org](https://appimage.org)
- **JSON for Modern C++**: [https://github.com/nlohmann/json](https://github.com/nlohmann/json)
- **Qt-AES**: [https://github.com/saturneric/Qt-AES](https://github.com/saturneric/Qt-AES)
- **macOS Application Bundles**: [Link](https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1)

The icons utilized in this software are sourced from [Alibaba
Iconfont](https://www.iconfont.cn/). This vector icon library is free of use,
isn't registered as a trademark, has no copyright issues, and can be
commercially utilized.