1
FalkonTutorials/qml/articles/1.Introduction.md

49 lines
2.0 KiB
Markdown
Raw Normal View History

# Falkon QML Tutorial - 1. Introduction
Hello, in this series I would like to introduce and describe how to write extensions for [Falkon](https://www.falkon.org/) web browser with QML.
Starting with Falkon 3.2 there is support for installing extensions from store which can be found at [store.falkon.org](https://store.falkon.org/)
Falkon supports extensions written in C++, Python and QML.
This series will go over the QML implementation.
## Requirements
1. Knowledge of C++ (Beneficial, Optional)
There is no way around this, while there are times when just looking at documentation is enough I prefer the code.
2. The Falkon source code
* The source code for stable release of Falkon can be found at [download.kde.org/stable/falkon/](https://download.kde.org/stable/falkon/)
* The latest source code can be found at the [Gitlab](https://invent.kde.org/network/falkon)
3. Knowledge of QML, QtQuick and Qt
It is good to have Qt documentation and Qt development tools like [Qt Designer](https://doc.qt.io/qt-5/qtdesigner-manual.html) at hand.
## Limitations
> **NOTE:** First I have to mention that I do not know much about QML
development, only bits here and there.
* The instance of `FalkonAction` (toolbar button) is shared between all
Falkon windows in the same instance. This makes it unsuitable for
showing live status of website since it will be totaly broken the moment
another window is opened and I do not want to see that happening to my
extensions.
* The button created with `FalkonAction` always requires to have `popup`
property present or it will not work properly (e.g. icon will be
missing from the button, maybe more).
* The Graphical User Interface created by QML extensions is not styled
according to system color settings and looks awkward on my machine.
* The extennsion settings window cannot be closed from within QML code
(e.g. by pressing a "Cancel" button).
## Falkon module
To access Falkon specific features and functions inside the QML script
you need to use `Falkon` module.
```qml
import org.kde.falkon 1.0 as Falkon
```