Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lvgl/lv_port_linux
LVGL configured to work with a standard Linux framebuffer
https://github.com/lvgl/lv_port_linux
framebuffer linux lvgl
Last synced: 10 days ago
JSON representation
LVGL configured to work with a standard Linux framebuffer
- Host: GitHub
- URL: https://github.com/lvgl/lv_port_linux
- Owner: lvgl
- License: mit
- Created: 2019-01-13T15:23:40.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-24T08:30:08.000Z (23 days ago)
- Last Synced: 2024-10-25T05:09:06.799Z (22 days ago)
- Topics: framebuffer, linux, lvgl
- Language: C
- Homepage:
- Size: 942 KB
- Stars: 238
- Watchers: 13
- Forks: 152
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# LVGL on top of Linux graphics stack
Example project to use LVGL on top of Linux graphics stack.
Currently supported backends are legacy framebuffer
(fbdev), modern DRM/KMS, Wayland or SDL2.By default, legacy framebuffer backend uses `/dev/fb0` device node,
DRM/KMS backend uses '/dev/dri/card0' card node, SDL2 uses window
resolution of 800x480.Check out this blog post for a step by step tutorial:
https://blog.lvgl.io/2018-01-03/linux_fb## Build dependencies
Check the [Dockerfiles](docker/) for the build dependencies.## Clone the project
Clone the LVGL Framebuffer Demo project and its related sub modules.
```
git clone https://github.com/lvgl/lv_port_linux.git
cd lv_port_linux/
git submodule update --init --recursive
```## Select graphics backend
To use legacy framebuffer (fbdev) support, adjust `lv_conf.h` as follows:
```
#define LV_USE_LINUX_FBDEV 1
#define LV_USE_LINUX_DRM 0
#define LV_USE_SDL 0
#define LV_USE_WAYLAND 0
```To use modern DRM/KMS support, adjust `lv_conf.h` as follows:
```
#define LV_USE_LINUX_FBDEV 0
#define LV_USE_LINUX_DRM 1
#define LV_USE_SDL 0
#define LV_USE_WAYLAND 0
```To use SDL2 support, adjust `lv_conf.h` as follows:
```
#define LV_USE_LINUX_FBDEV 0
#define LV_USE_LINUX_DRM 0
#define LV_USE_SDL 1
#define LV_USE_WAYLAND 0
```To use wayland, adjust `lv_conf.h` as follows:
```
#define LV_USE_LINUX_FBDEV 0
#define LV_USE_LINUX_DRM 0
#define LV_USE_SDL 0
#define LV_USE_WAYLAND 1
```### cmake
```
cmake -B build -S .
make -C build -j
```### Makefile
```
make -j
```## Command line options
Command line options are used to modify behavior of the demo, they take precedence over environment variables.
### Wayland
- `-f` - enters fullscreen on startup
- `-m` - maximizes window on startup
- `-w ` - set the width of the window
- `-h ` - set the height of the window### SDL2
- `-w ` - set the width of the window
- `-h ` - set the height of the window## Environment variables
Environment variables can be set to modify the behavior of the demo.
### Legacy framebuffer (fbdev)
- `LV_LINUX_FBDEV_DEVICE` - override default (`/dev/fb0`) framebuffer device node.
### EVDEV touchscreen/mouse pointer device
- `LV_LINUX_EVDEV_POINTER_DEVICE` - override default (`/dev/input/by-id/my-mouse-or-touchscreen`) input device
### DRM/KMS
- `LV_LINUX_DRM_CARD` - override default (`/dev/dri/card0`) card.
### SDL2
- `LV_SIM_WINDOW_WIDTH` - width of SDL2 surface (default `800`).
- `LV_SIM_WINDOW_HEIGHT` - height of SDL2 surface (default `480`).### Wayland
- `LV_SIM_WINDOW_WIDTH` - width of the window (default `800`).
- `LV_SIM_WINDOW_HEIGHT` - height of the window (default `480`).## Run the demo application
### FBDEV
Unpriviledged users don't have access to the framebuffer device `/dev/fb0`
`sudo` or `su` must be used.cmake:
```
sudo ./bin/lvglsim
```Makefile:
```
cd build/bin/
sudo main
```Access to the framebuffer device can be granted by adding the unpriviledged user to the `video` group
cmake:
```
sudo adduser $USER video
newgrp video
./bin/lvglsim
```