# lv_port_linux **Repository Path**: hkj_hll/lv_port_linux ## Basic Information - **Project Name**: lv_port_linux - **Description**: lvgl_linux - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-29 - **Last Updated**: 2024-08-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LVGL on top of Linux graphics stack Example project to use LVGL on top of Linux graphics stack. Currently supported backends are either legacy framebuffer (fbdev), modern DRM/KMS, 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 ## 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 (optional) 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 ``` 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 ``` 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 ``` ## Build the project (cmake or Makefile) ### cmake ``` mkdir build cd build cmake .. make -j ``` ### Makefile ``` make -j ``` ## Environment variables Environment variables can be set to modify behavior of the demo. The following variables are supported. ### Legacy framebuffer (fbdev) - `LV_LINUX_FBDEV_DEVICE` - override default (`/dev/fb0`) framebuffer device node. ### DRM/KMS - `LV_LINUX_DRM_CARD` - override default (`/dev/dri/card0`) card. ### SDL2 - `LV_SDL_VIDEO_WIDTH` - width of SDL2 surface (default `800`). - `LV_SDL_VIDEO_HEIGHT` - height of SDL2 surface (default `480`). ## Run the demo application ### As root Normal users don't have access to `/dev/fb0` so use `sudo` (or see below) : cmake: ``` cd ../bin sudo main ``` Makefile: ``` cd build/bin/ sudo main ``` ### Userland You can give a normal user access to the framebuffer by adding them to the `video` group : cmake: ``` sudo adduser $USER video newgrp video cd ../bin ./main ``` Makefile: ``` sudo adduser $USER video newgrp video cd build/bin/ ./main ```