This is an example project demonstrating how to use LVGL on a GNU/Linux systems and other Unix-like operating systems
LVGL provides drivers for many graphics backends. Legacy framebuffer (fbdev), modern DRM/KMS, Wayland, X11, GLFW3 and SDL2.
Check out this blog post for a step by step tutorial for fbdev https://blog.lvgl.io/2018-01-03/linux_fb
Clone the project
git clone https://github.com/lvgl/lv_port_linux.git
cd lv_port_linux/
LVGL is a submodule of lv_port_linux, use the following command
to fetch it, it will be downloaded to the lvgl/ directory
git submodule update --init --recursive
Adjust lv_conf.defaults to select the drivers and libraries that will be compiled by
modifying the following definitions, setting them to 1 or 0
You can also start with a default config based on the drivers you want to use, you can find a default config for each graphic driver inside the configs folder.
You can either replace lv_conf.defaults manually or using CMake
cmake -B build -DCONFIG=<config_name> With <config_name> the name of the config without the .defaults extension, eg: configs/wayland.defaults becomes wayland.
| Definition | Description |
|---|---|
| LV_USE_LINUX_FBDEV | Legacy frame buffer (/dev/fb*) |
| LV_USE_LINUX_DRM | DRM/KMS (/dev/dri/*) |
| LV_USE_SDL | SDL |
| LV_USE_WAYLAND | WAYLAND |
| LV_USE_X11 | X11 |
| LV_USE_GLFW | GLFW3 |
| Definition | Description |
|---|---|
| LV_USE_EVDEV | libevdev input devices |
| LV_USE_LIBINPUT | libinput input devices |
Install the required dependencies for the selected drivers by checking the documentation for each driver here
You can also check the Dockerfiles to get the names of the packages for various distributions
LVGL supports GNU make and CMake
cmake -B build
cmake --build build -j$(nproc)
Cross compilation is supported with CMake, edit the user_cross_compile_setup.cmake
to set the location of the compiler toolchain and build using the commands below
cmake -B build -DCMAKE_TOOLCHAIN_FILE=./user_cross_compile_setup.cmake
cmake --build build -j$(nproc)
It is possible to install LVGL to your system using cmake:
cmake --install ./build
./build/bin/lvglsim
This will start the widgets demo
If multiple backends are enabled you can run with a specific backend via the -b option
./build/bin/lvglsim -b sdl
To get a list of supported backends use the -B option
Environment variables can be set to modify the behavior of the driver(s) Check the documentation of the drivers for more details
LV_LINUX_FBDEV_DEVICE- override default (/dev/fb0) framebuffer device node.
LV_LINUX_EVDEV_POINTER_DEVICE- the path of the input device, i.e./dev/input/by-id/my-mouse-or-touchscreen. If not set, devices will be discovered and added automatically.
LV_LINUX_DRM_CARD- override default (/dev/dri/card0) card.
LV_SIM_WINDOW_WIDTH- width of the window (default800).LV_SIM_WINDOW_HEIGHT- height of the window (default480).
By default, unpriviledged users don't have access to the framebuffer device /dev/fb0. In such cases, you can either run the application
with sudo privileges or you can grant access to the video group.
sudo adduser $USER video
newgrp video
./build/bin/lvglsim