|
| 1 | +# Bitcoin Core QML GUI |
| 2 | + |
| 3 | +**WARNING: THIS IS EXPERIMENTAL, DO NOT USE BUILDS FROM THIS REPO FOR REAL TRANSACTIONS!** |
| 4 | + |
| 5 | +This directory contains the source code for an experimental Bitcoin Core graphical user interface (GUI) built using the [Qt Quick](https://doc.qt.io/qt-5/qtquick-index.html) framework. |
| 6 | + |
| 7 | +Unsecure CI artifacts are available for local testing of the master branch, avoiding the need to build. These can be found under the [Actions](https://github.com/bitcoin-core/gui-qml/actions?query=branch%3Amain) tab. It is required to have and be logged into a github account in order to download these. |
| 8 | + |
| 9 | +Note: For macOS, the CI artifact binary must be made executable and code-signed before it can |
| 10 | +be ran. To make executable and apply a signature, run the following on the unzipped CI artifact: |
| 11 | + |
| 12 | +``` |
| 13 | +chmod +x ./Downloads/bitcoin-qt && codesign -s - ./Downloads/bitcoin-qt |
| 14 | +``` |
| 15 | + |
| 16 | +## Goals and Limitations |
| 17 | + |
| 18 | +The current Bitcoin Core GUI has gathered enough technical debt and hacked on features; it is time to begin anew. |
| 19 | +This project will start from a clean slate to produce a feature-rich GUI with intuitive user flows and first-class design. |
| 20 | + |
| 21 | +The primary goals of the project can be summed up as follows: |
| 22 | + |
| 23 | +- Implement UX/UI best-practices as documented in the [Bitcoin Design Guide](https://bitcoin.design/guide/) |
| 24 | +- Engage with the Bitcoin Design community to implement well-designed features |
| 25 | +- Work alongside the Bitcoin Design community to develop an aesthetic GUI |
| 26 | +- Develop a mobile-optimized GUI |
| 27 | + |
| 28 | +We must avoid conflicts with the Bitcoin Core repo. |
| 29 | +As such, this project will aim to make very few changes outside of the qml directory. |
| 30 | +Pull requests must be focused on developing the GUI itself, adding build support, |
| 31 | +or improving relevant documentation. |
| 32 | + |
| 33 | +This project will **not** accept pull requests making any significant changes unrelated to the GUI. |
| 34 | + |
| 35 | +## Development Process |
| 36 | + |
| 37 | +This repo is synced with the [Bitcoin Core repo](https://github.com/bitcoin/bitcoin) on a weekly basis, or as needed to resolve conflicts. |
| 38 | + |
| 39 | +Contributions are welcome from all, developers and designers. If you are a new contributor, please read [CONTRIBUTING.md](../../CONTRIBUTING.md). |
| 40 | + |
| 41 | +### Minimum Required Qt Version |
| 42 | + |
| 43 | +All development must adhere to the current upstream Qt Version to minimize our divergence from upstream and avoid costly changes. Review of open PR's must ensure that changes are compatible with this Qt version. Currently, the required version is [Qt 5.15.2](https://github.com/bitcoin-core/gui-qml/blob/main/depends/packages/qt.mk#L2). |
| 44 | + |
| 45 | +As the Qt Version changes upstream, refactoring is allowed to use the now available features. |
| 46 | + |
| 47 | +### Policies |
| 48 | + |
| 49 | +This project has custom policies for development, see: |
| 50 | +- [Icon Policy](./doc/icon-policy.md) |
| 51 | +- [Translator Comments Policy](./doc/translator-comments.md) |
| 52 | + |
| 53 | +## Compile and Run |
| 54 | + |
| 55 | +The master branch is only guaranteed to work and build on Debian-based systems, Fedora, and macOS. |
| 56 | +Support for more systems will be confirmed and documented as the project matures. |
| 57 | + |
| 58 | +### Dependencies |
| 59 | +No additional dependencies, besides those in [build-osx.md](../../doc/build-osx.md), are needed for macOS. |
| 60 | + |
| 61 | +Aside from the dependencies listed in [build-unix.md](../../doc/build-unix.md), the following additional dependencies are required to compile: |
| 62 | + |
| 63 | +#### Debian-based systems: |
| 64 | + |
| 65 | +``` |
| 66 | +sudo apt install qtdeclarative5-dev qtquickcontrols2-5-dev |
| 67 | +``` |
| 68 | + |
| 69 | +The following runtime dependencies are also required for dynamic builds; |
| 70 | +they are not needed for static builds: |
| 71 | + |
| 72 | +``` |
| 73 | +sudo apt install qml-module-qtquick2 qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-dialogs qml-module-qtquick-layouts qml-module-qtquick-window2 qml-module-qt-labs-settings |
| 74 | +``` |
| 75 | +##### Important: |
| 76 | + |
| 77 | +If you're unable to install the dependencies through your system's package manager, you can instead perform a [depends build](../../depends/README.md). |
| 78 | + |
| 79 | +#### Fedora: |
| 80 | + |
| 81 | +``` |
| 82 | +sudo dnf install qt5-qtdeclarative-devel qt5-qtquickcontrols qt5-qtquickcontrols2-devel |
| 83 | +``` |
| 84 | + |
| 85 | +### Build |
| 86 | + |
| 87 | +For instructions on how to build and compile Bitcoin Core, refer to your respective system's build doc. |
| 88 | + |
| 89 | +As long as the required dependencies are installed, the qml GUI will be built. |
| 90 | +To ensure that you are in fact building the qml GUI, you can configure with the following option: |
| 91 | + |
| 92 | +``` |
| 93 | +./configure --with-qml |
| 94 | +``` |
| 95 | + |
| 96 | +### Run |
| 97 | + |
| 98 | +To run the qml GUI: |
| 99 | +``` |
| 100 | +./src/qt/bitcoin-qt |
| 101 | +``` |
0 commit comments