# 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). * At the moment Enums in QML are a bit unintuitive and even partialy broken (not present at all while they should). I will try to revise and redesign this in the future. ## 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 ```