<!DOCTYPE html><html lang="en" dir="ltr"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/blog/_next/static/chunks/876c965caa6f6e6e.css?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" data-precedence="next"/><link rel="stylesheet" href="/blog/_next/static/chunks/35659ae98de5cd4a.css?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" data-precedence="next"/><link rel="stylesheet" href="/blog/_next/static/chunks/9abad3ffb7a72819.css?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/blog/_next/static/chunks/83906da5a746ba60.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/><script src="/blog/_next/static/chunks/d82e31eaf01f68ba.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" async=""></script><script src="/blog/_next/static/chunks/d9394be0573297f2.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" async=""></script><script src="/blog/_next/static/chunks/78570a9126328eb9.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" async=""></script><script src="/blog/_next/static/chunks/turbopack-70cdf4c742349ef0.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" async=""></script><script src="/blog/_next/static/chunks/35b0e666b92287b3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" async=""></script><script src="/blog/_next/static/chunks/011e309884a3f95c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" async=""></script><script src="/blog/_next/static/chunks/adef4e106dddef9f.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" async=""></script><script src="/blog/_next/static/chunks/10db44f37a749dc5.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" async=""></script><script src="/blog/_next/static/chunks/10d6fcf6e7b4ad7c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" async=""></script><script src="/blog/_next/static/chunks/72386e5631a248a6.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" async=""></script><script src="/blog/_next/static/chunks/0e93c0a00633dd37.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" async=""></script><script src="/blog/_next/static/chunks/b4df8384a3de31d3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" async=""></script><script src="/blog/_next/static/chunks/d3059b8434273088.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" async=""></script><script src="/blog/_next/static/chunks/6affb0ae697e6e9a.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" async=""></script><link rel="preload" href="https://www.googletagmanager.com/gtm.js?id=GTM-TRZSR7TP" as="script"/><meta name="next-size-adjust" content=""/><title>LVGL Blog - Embedded Graphics Tutorials, News &amp; Showcases</title><meta name="description" content="Tutorials, releases, case studies, and community stories on how embedded UIs are designed, built, and shipped with LVGL."/><link rel="canonical" href="https://lvgl.io/blog"/><link rel="alternate" hrefLang="en" href="https://lvgl.io/blog"/><link rel="alternate" hrefLang="zh-Hans" href="https://lvgl.io/blog/zh"/><link rel="alternate" hrefLang="x-default" href="https://lvgl.io/blog"/><meta property="og:title" content="LVGL Blog - Embedded Graphics Tutorials, News &amp; Showcases"/><meta property="og:description" content="Tutorials, releases, case studies, and community stories on how embedded UIs are designed, built, and shipped with LVGL."/><meta property="og:url" content="https://lvgl.io/blog"/><meta property="og:site_name" content="LVGL Blog"/><meta property="og:locale" content="en_US"/><meta property="og:image:alt" content="LVGL Blog"/><meta property="og:image:type" content="image/png"/><meta property="og:image" content="https://lvgl.io/blog/en/opengraph-image/og?7c3ee8d2be4f436e"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="LVGL Blog - Embedded Graphics Tutorials, News &amp; Showcases"/><meta name="twitter:description" content="Tutorials, releases, case studies, and community stories on how embedded UIs are designed, built, and shipped with LVGL."/><meta name="twitter:image:alt" content="LVGL Blog"/><meta name="twitter:image:type" content="image/png"/><meta name="twitter:image" content="https://lvgl.io/blog/en/opengraph-image/og?7c3ee8d2be4f436e"/><meta name="twitter:image:width" content="1200"/><meta name="twitter:image:height" content="630"/><link rel="icon" href="/favicon.ico" sizes="any"/><link rel="icon" href="/favicon.svg" type="image/svg+xml"/><link rel="icon" href="/favicon-16x16.png" sizes="16x16" type="image/png"/><link rel="icon" href="/favicon-32x32.png" sizes="32x32" type="image/png"/><link rel="icon" href="/favicon-96x96.png" sizes="96x96" type="image/png"/><link rel="icon" href="/favicon-128x128.png" sizes="128x128" type="image/png"/><link rel="apple-touch-icon" href="/favicon-180x180.png" sizes="180x180"/><script src="/blog/_next/static/chunks/a6dad97d9634a72d.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" noModule=""></script></head><body class="inter_cb0c501c-module__AUPRoG__variable source_code_pro_c1005c2f-module__s4q9aa__variable doto_ca317b3f-module__odtlEG__variable antialiased"><div hidden=""><!--$--><!--/$--></div><a href="https://pro.lvgl.io" class="flex items-center justify-center gap-1 bg-[var(--lvgl-purple)] px-5 py-2.5 text-sm font-medium text-white"><span>Try out LVGL Pro - A complete toolkit to build, test, share, and ship UIs efficiently!</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right size-4 shrink-0" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a><header class="sticky top-0 z-50 flex w-full items-center justify-center bg-white/95 px-4 py-2 text-sm font-medium backdrop-blur-xl sm:shadow-[0_1px_0_rgba(0,0,0,0.06)] min-h-[3rem]"><button aria-label="Navigation Menu" class="absolute left-4 top-1/2 -translate-y-1/2 cursor-pointer flex-col justify-center gap-[6px] size-6 hidden max-[1139px]:flex" type="button" aria-haspopup="dialog" aria-expanded="false" aria-controls="radix-_R_1aivb_" data-state="closed"><span class="block h-[2px] w-full bg-current transition-all duration-300"></span><span class="block h-[2px] w-full bg-current transition-all duration-300"></span></button><a href="https://lvgl.io" class="absolute left-4 flex h-8 items-center max-[1139px]:static"><img alt="LVGL" loading="lazy" width="120" height="32" decoding="async" data-nimg="1" class="h-8 w-auto" style="color:transparent" src="/blog/images/icons/main-nav-logo.svg?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></a><nav class="flex items-center gap-6 max-[1139px]:hidden"><div class="group relative"><button class="flex cursor-pointer items-center font-medium transition-colors hover:text-purple-600 leading-[3rem] lg:leading-[3rem]">LVGL Open</button><div class="pointer-events-none absolute left-[-1.5rem] top-full z-50 flex min-w-[10rem] flex-col rounded-md border bg-white p-1.5 opacity-0 shadow-lg transition-all group-hover:pointer-events-auto group-hover:opacity-100 group-hover:translate-y-0 translate-y-2 max-lg:static max-lg:border-0 max-lg:bg-transparent max-lg:p-0 max-lg:shadow-none max-lg:translate-y-0 max-lg:h-0 max-lg:overflow-hidden max-lg:opacity-0"><a href="https://docs.lvgl.io/master/intro/getting_started/" target="_blank" rel="noopener noreferrer" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">Get Started</a><a href="https://lvgl.io/features" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">Features</a><a href="https://lvgl.io/boards" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">Boards</a><a href="https://github.com/lvgl/lvgl" target="_blank" rel="noopener noreferrer" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">GitHub</a><a href="https://docs.lvgl.io/master/" target="_blank" rel="noopener noreferrer" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">Documentation</a><a href="https://forum.lvgl.io/" target="_blank" rel="noopener noreferrer" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">Forum</a><div class="whitespace-nowrap px-4 py-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground mt-1 border-t border-border pt-3 -mx-1.5 max-lg:border-t-0 max-lg:px-4 max-lg:text-sm max-lg:font-medium max-lg:normal-case max-lg:tracking-normal max-lg:mt-0 max-lg:pt-2 max-lg:mx-0">Tools</div><a href="https://lvgl.io/tools/project-creator" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">Project Creator</a><a href="https://lvgl.io/tools/fontconverter" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">Font Converter</a><a href="https://lvgl.io/tools/imageconverter" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">Image Converter</a></div></div><a href="https://lvgl.io/safe" class="font-medium transition-colors hover:text-purple-600 leading-[3rem] lg:leading-[3rem]">LVGL Safe</a><a href="https://pro.lvgl.io/" target="_blank" rel="noopener noreferrer" class="font-medium transition-colors hover:text-purple-600 leading-[3rem] lg:leading-[3rem]">LVGL Pro</a><span class="text-muted-foreground/40 select-none">·</span><a class="font-medium transition-colors hover:text-purple-600 leading-[3rem] lg:leading-[3rem] text-purple-600" href="/blog">Blog</a><div class="group relative"><button class="flex cursor-pointer items-center font-medium transition-colors hover:text-purple-600 leading-[3rem] lg:leading-[3rem]">Showcase</button><div class="pointer-events-none absolute left-[-1.5rem] top-full z-50 flex min-w-[10rem] flex-col rounded-md border bg-white p-1.5 opacity-0 shadow-lg transition-all group-hover:pointer-events-auto group-hover:opacity-100 group-hover:translate-y-0 translate-y-2 max-lg:static max-lg:border-0 max-lg:bg-transparent max-lg:p-0 max-lg:shadow-none max-lg:translate-y-0 max-lg:h-0 max-lg:overflow-hidden max-lg:opacity-0"><a href="https://lvgl.io/case-studies" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">Case Studies</a><a href="https://lvgl.io/demos" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">Demos</a></div></div><a href="https://lvgl.io/services" class="font-medium transition-colors hover:text-purple-600 leading-[3rem] lg:leading-[3rem]">Services</a><div class="group relative"><button class="flex cursor-pointer items-center font-medium transition-colors hover:text-purple-600 leading-[3rem] lg:leading-[3rem]">Company</button><div class="pointer-events-none absolute left-[-1.5rem] top-full z-50 flex min-w-[10rem] flex-col rounded-md border bg-white p-1.5 opacity-0 shadow-lg transition-all group-hover:pointer-events-auto group-hover:opacity-100 group-hover:translate-y-0 translate-y-2 max-lg:static max-lg:border-0 max-lg:bg-transparent max-lg:p-0 max-lg:shadow-none max-lg:translate-y-0 max-lg:h-0 max-lg:overflow-hidden max-lg:opacity-0"><a href="https://lvgl.io/about" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">About</a><a href="https://lvgl.io/jobs" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">Jobs</a><a href="https://lvgl.io/#newsletter" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">Newsletter</a><a href="https://www.linkedin.com/company/lvglgui/" target="_blank" rel="noopener noreferrer" class="whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-lg:rounded-none max-lg:hover:bg-transparent max-lg:hover:text-purple-600 max-lg:pl-4 max-lg:text-sm">News</a></div></div></nav><div class="absolute right-4 flex items-center gap-3"><div class="hidden min-[1140px]:block"><button type="button" id="radix-_R_caivb_" aria-haspopup="menu" aria-expanded="false" data-state="closed" class="flex cursor-pointer items-center gap-1.5 rounded-md px-2 py-1.5 text-sm font-medium transition-colors hover:text-muted-foreground outline-none"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-globe size-4" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg><span class="hidden sm:inline">English</span></button></div><a href="https://github.com/lvgl/lvgl" target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-2 rounded-md border border-border px-3 py-1.5 text-sm font-medium transition-colors hover:bg-accent max-[1139px]:border-0 max-[1139px]:px-0" aria-label="LVGL on GitHub"><img alt="" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="size-5" style="color:transparent" src="/blog/images/icons/github.svg?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/><span class="hidden xl:inline">LVGL on GitHub</span></a></div></header><div class="min-h-[calc(100vh-var(--nav-height))]"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"LVGL Blog","description":"Tutorials, releases, case studies, and community stories on how embedded UIs are designed, built, and shipped with LVGL.","url":"https://lvgl.io/blog","inLanguage":"en","publisher":{"@type":"Organization","@id":"https://lvgl.io/#organization","name":"LVGL","legalName":"LVGL LLC","url":"https://lvgl.io","logo":{"@type":"ImageObject","url":"https://lvgl.io/images/lvgl-logo.png"},"foundingDate":"2016","description":"Light and Versatile Graphics Library - Free and open-source embedded graphics library","sameAs":["https://github.com/lvgl","https://twitter.com/lvaborras","https://www.youtube.com/@kilobytetech"]},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://lvgl.io/blog?q={search_term_string}"},"query-input":"required name=search_term_string"}}</script><!--$?--><template id="B:0"></template><section class="w-full border-b border-border bg-white px-6 pb-20 pt-24"><div class="mx-auto max-w-6xl animate-pulse"><div class="max-w-2xl"><div class="h-4 w-24 rounded bg-muted"></div><div class="mt-4 h-14 w-3/4 rounded bg-muted"></div><div class="mt-2 h-14 w-1/2 rounded bg-muted"></div><div class="mt-6 h-5 w-full rounded bg-muted"></div></div><div class="mt-10 h-12 w-full rounded bg-muted"></div></div></section><main class="mx-auto flex w-full max-w-3xl flex-col items-start gap-8 px-6 py-12"><div class="w-full"><div class="mb-6 h-8 w-32 rounded bg-muted"></div><div class="flex flex-col gap-6"><div class="rounded-lg border border-border bg-white p-6"><div class="mb-2 h-4 w-24 rounded bg-muted"></div><div class="mb-2 h-6 w-3/4 rounded bg-muted"></div><div class="h-4 w-full rounded bg-muted"></div></div><div class="rounded-lg border border-border bg-white p-6"><div class="mb-2 h-4 w-24 rounded bg-muted"></div><div class="mb-2 h-6 w-3/4 rounded bg-muted"></div><div class="h-4 w-full rounded bg-muted"></div></div><div class="rounded-lg border border-border bg-white p-6"><div class="mb-2 h-4 w-24 rounded bg-muted"></div><div class="mb-2 h-6 w-3/4 rounded bg-muted"></div><div class="h-4 w-full rounded bg-muted"></div></div></div></div></main><!--/$--><!--$--><!--/$--></div><section class="relative z-50 w-full bg-[#0e0e0e] text-white"><div class="relative overflow-hidden border-t border-border bg-neutral-50 py-8"><div class="pointer-events-none absolute inset-0 opacity-10" style="background:radial-gradient(circle at 0% 50%, rgba(184, 64, 224, 0.15) 0%, transparent 50%), radial-gradient(circle at 100% 50%, rgba(0, 153, 170, 0.15) 0%, transparent 50%)"></div><div class="relative mx-auto flex w-full max-w-6xl items-center justify-between gap-6 px-6"><div class="flex-1"><h2 class="text-lg font-semibold text-foreground sm:text-xl">Meet the people behind the blog</h2><p class="mt-1 max-w-2xl text-sm text-muted-foreground">Discover the talented writers sharing their knowledge about LVGL</p></div><a class="shrink-0 rounded-full bg-foreground px-6 py-2.5 text-sm font-semibold text-background transition-all hover:bg-foreground/90" href="/blog/authors">View Authors</a></div></div><div class="h-4 w-full" style="background:linear-gradient(90deg, var(--lvgl-yellow) 0%, var(--lvgl-orange) 13.5%, var(--lvgl-red) 28%, var(--lvgl-magenta) 43%, var(--lvgl-purple) 58%, var(--lvgl-blue) 71%, var(--lvgl-teal) 85%, var(--lvgl-green) 100%)"></div><div class="mx-auto w-full max-w-6xl px-6"><div class="flex flex-col gap-6 border-b border-white/10 py-10 lg:flex-row lg:items-center lg:justify-between lg:gap-12"><p class="max-w-[22.5rem] text-sm text-white/60"><strong class="text-white">Subscribe to our newsletter</strong> <!-- -->to not miss any news about LVGL. We will send maximum of 2 mails per month.</p><div class="flex-1"><form class="flex w-full flex-col gap-3 sm:flex-row sm:items-center"><div class="flex flex-1 gap-3"><input type="text" data-slot="input" class="file:text-foreground selection:bg-primary selection:text-primary-foreground flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:opacity-50 md:text-sm focus-visible:ring-[3px] aria-invalid:ring-destructive/20 aria-invalid:border-destructive border-white/20 bg-white/10 text-white placeholder:text-white/50 focus-visible:border-white/40 focus-visible:ring-white/20" placeholder="Name" required="" name="name"/><input type="email" data-slot="input" class="file:text-foreground selection:bg-primary selection:text-primary-foreground flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:opacity-50 md:text-sm focus-visible:ring-[3px] aria-invalid:ring-destructive/20 aria-invalid:border-destructive border-white/20 bg-white/10 text-white placeholder:text-white/50 focus-visible:border-white/40 focus-visible:ring-white/20" placeholder="Email" required="" name="email"/></div><button type="submit" class="inline-flex h-9 shrink-0 cursor-pointer items-center justify-center rounded-md bg-white px-4 text-sm font-medium text-[#0e0e0e] transition-opacity hover:opacity-90 disabled:pointer-events-none disabled:opacity-50">Subscribe</button></form></div></div><div class="flex flex-col gap-0 py-10 lg:flex-row lg:gap-12"><div class="flex max-w-[22.5rem] flex-col"><img alt="LVGL" loading="lazy" width="120" height="32" decoding="async" data-nimg="1" class="h-8 w-auto self-start" style="color:transparent" src="/blog/images/icons/footer-logo.svg?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/><p class="mt-6 text-sm leading-relaxed text-white/60">LVGL is the most popular free and open source embedded graphics library targeting any MCU, MPU and display type to build beautiful UIs.<br/><br/>We also do services like UI design, implementation and consulting.</p></div><div class="mt-10 flex flex-col gap-3 lg:mt-0"><a href="https://docs.lvgl.io/master/" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-white transition-colors hover:text-white/60">Documentation</a><a href="https://lvgl.io/demos" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-white transition-colors hover:text-white/60">Demos</a><a href="https://lvgl.io/features" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-white transition-colors hover:text-white/60">Features</a><a href="https://lvgl.io/boards" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-white transition-colors hover:text-white/60">Boards</a><a href="https://lvgl.io/services" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-white transition-colors hover:text-white/60">Services</a><a href="https://lvgl.io/tools/project-creator" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-white transition-colors hover:text-white/60">Project Creator</a><a href="https://lvgl.io/tools/imageconverter" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-white transition-colors hover:text-white/60">Image Converter</a><a href="https://lvgl.io/tools/fontconverter" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-white transition-colors hover:text-white/60">Font Converter</a></div><div class="mt-10 flex flex-col gap-3 lg:mt-0"><a href="https://lvgl.io/jobs" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-white transition-colors hover:text-white/60">Jobs</a><a href="https://forum.lvgl.io" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-white transition-colors hover:text-white/60">Forum</a><a href="https://lvgl.io/about" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-white transition-colors hover:text-white/60">About</a><a class="text-sm font-medium text-white transition-colors hover:text-white/60" href="/blog">Blog</a><a href="https://lvgl.io/#contact" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-white transition-colors hover:text-white/60">Contact Us</a><a href="https://lvgl.io/privacy-policy" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-white transition-colors hover:text-white/60">Privacy Policy</a></div></div><div class="flex flex-wrap items-center justify-between gap-3 border-t border-white/10 py-6"><div class="text-xs text-white/40">© 2026 LVGL. All rights reserved.</div><div class="flex gap-4"><a href="https://www.youtube.com/channel/UC0fMcpuRA0Zxn_EJYCL88-Q" target="_blank" rel="noopener noreferrer" class="opacity-60 transition-opacity hover:opacity-100"><img alt="YouTube" loading="lazy" width="24" height="24" decoding="async" data-nimg="1" class="size-6 invert" style="color:transparent" src="/blog/images/icons/youtube.svg?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></a><a href="https://github.com/lvgl" target="_blank" rel="noopener noreferrer" class="opacity-60 transition-opacity hover:opacity-100"><img alt="GitHub" loading="lazy" width="24" height="24" decoding="async" data-nimg="1" class="size-6 invert" style="color:transparent" src="/blog/images/icons/github.svg?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></a><a href="https://www.linkedin.com/company/lvglgui/" target="_blank" rel="noopener noreferrer" class="opacity-60 transition-opacity hover:opacity-100"><img alt="LinkedIn" loading="lazy" width="24" height="24" decoding="async" data-nimg="1" class="size-6 invert" style="color:transparent" src="/blog/images/icons/linkedin.svg?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></a></div></div></div></section><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><script>requestAnimationFrame(function(){$RT=performance.now()});</script><script src="/blog/_next/static/chunks/83906da5a746ba60.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp" id="_R_" async=""></script><div hidden id="S:0"><div class="sticky top-[3rem] sm:top-[4rem] z-40 w-full border-b border-border bg-white/95 px-4 pb-2.5 pt-0 backdrop-blur-xl shadow-[0_1px_0_rgba(0,0,0,0.06)] sm:px-6 sm:py-2.5"><div class="mx-auto max-w-6xl"><div class="mx-auto flex w-full flex-col gap-2 sm:max-w-5xl sm:flex-row sm:items-center sm:gap-2 sm:px-6"><div class="flex w-full items-center gap-2 sm:flex-1"><div role="search" class="relative flex-1 sm:min-w-[10rem]"><label for="blog-search" class="sr-only">Search posts...</label><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg><input id="blog-search" type="search" placeholder="Search posts..." class="h-9 w-full rounded-md border border-border bg-white pl-9 pr-9 text-sm text-foreground placeholder:text-muted-foreground/60 outline-none transition-colors focus:border-foreground/40" value=""/></div><button type="button" class="flex h-9 w-9 flex-shrink-0 items-center justify-center rounded-md border border-border bg-white text-muted-foreground hover:text-foreground transition-colors sm:hidden" aria-label="Toggle filters" aria-expanded="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-funnel size-4" aria-hidden="true"><path d="M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z"></path></svg></button></div><div class="hidden sm:flex sm:flex-wrap sm:items-center sm:gap-2"><button aria-pressed="false" class="inline-flex h-8 items-center gap-1 rounded-md border px-2.5 text-xs font-medium capitalize backdrop-blur-xs transition-colors whitespace-nowrap border-border bg-white/10 text-muted-foreground hover:bg-muted/80"><span class="inline-flex" style="opacity:1;transform:none"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus size-3" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></span>Announcement</button><button aria-pressed="false" class="inline-flex h-8 items-center gap-1 rounded-md border px-2.5 text-xs font-medium capitalize backdrop-blur-xs transition-colors whitespace-nowrap border-border bg-white/10 text-muted-foreground hover:bg-muted/80"><span class="inline-flex" style="opacity:1;transform:none"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus size-3" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></span>Insight</button><button aria-pressed="false" class="inline-flex h-8 items-center gap-1 rounded-md border px-2.5 text-xs font-medium capitalize backdrop-blur-xs transition-colors whitespace-nowrap border-border bg-white/10 text-muted-foreground hover:bg-muted/80"><span class="inline-flex" style="opacity:1;transform:none"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus size-3" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></span>Release</button><button aria-pressed="false" class="inline-flex h-8 items-center gap-1 rounded-md border px-2.5 text-xs font-medium capitalize backdrop-blur-xs transition-colors whitespace-nowrap border-border bg-white/10 text-muted-foreground hover:bg-muted/80"><span class="inline-flex" style="opacity:1;transform:none"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus size-3" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></span>Showcase</button><button aria-pressed="false" class="inline-flex h-8 items-center gap-1 rounded-md border px-2.5 text-xs font-medium capitalize backdrop-blur-xs transition-colors whitespace-nowrap border-border bg-white/10 text-muted-foreground hover:bg-muted/80"><span class="inline-flex" style="opacity:1;transform:none"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus size-3" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></span>Tutorial</button><div class="relative w-32 sm:w-36"><input type="text" role="combobox" aria-expanded="false" aria-controls="tag-suggestions" aria-autocomplete="list" aria-label="Filter by tag" placeholder="Filter by tag..." class="h-8 w-full rounded-md border border-border bg-white px-2.5 text-xs text-foreground placeholder:text-muted-foreground/60 outline-none transition-colors focus:border-foreground/40" value=""/></div></div></div></div></div><section aria-label="Hero" class="relative w-full pb-8 pt-8 sm:pb-12 sm:pt-12"><div class="pointer-events-none absolute inset-0 overflow-hidden"><div class="pixel-blast-container " aria-label="PixelBlast interactive background"></div></div><div class="relative mx-auto max-w-4xl px-6 text-center"><p class="text-xs font-medium tracking-wide text-muted-foreground sm:text-sm">Blog</p><h1 class="mt-2 text-3xl font-semibold leading-tight sm:text-[2.75rem] sm:leading-none lg:text-6xl"><span class="text-foreground">Follow our journey</span><br/><span class="relative inline-block leading-tighter tracking-tighter font-pixel font-bold text-4xl sm:text-6xl lg:text-8xl"><span class="sr-only">Pixel by Pixel</span><span class="animate-aurora relative bg-size-[200%_auto] bg-clip-text text-transparent" style="background-image:linear-gradient(135deg, #b840e0, #0099aa, #c830a0, #b840e0);-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation-duration:10s" aria-hidden="true">Pixel by Pixel</span></span></h1><p class="mx-auto mt-4 max-w-2xl text-base leading-relaxed tracking-tight text-muted-foreground sm:mt-6 sm:text-xl sm:leading-[1.66]">Tutorials, releases, case studies, and community stories on how embedded UIs are designed, built, and shipped with LVGL.</p><a class="mt-4 inline-block text-sm font-medium text-muted-foreground transition-colors hover:text-foreground" href="/blog/authors">Meet our authors →</a></div></section><div class="mx-auto w-full max-w-3xl px-6" aria-hidden="true"><div class="relative h-12"><div class="absolute left-1/2 top-0 h-full w-px -translate-x-1/2 bg-border"></div><div class="absolute bottom-0 left-0 right-1/2 h-px bg-border"></div><span class="absolute -bottom-[3px] left-1/2 h-[7px] w-[7px] -translate-x-1/2 bg-border"></span></div></div><main aria-label="Blog posts" class="mx-auto w-full max-w-3xl px-6 pb-12"><div><div class="relative flex flex-col border-l border-border"><span class="absolute -left-[4px] -top-[4px] h-[7px] w-[7px] bg-border" aria-hidden="true"></span><article class="group relative py-5 pl-5 first:pt-8"><a class="block" href="/blog/release-lvgl-pro-v1-2-1"><div class="flex items-center justify-between gap-4 text-base text-muted-foreground"><p class="-ml-[2.2rem] inline-flex items-center gap-1.5 bg-white py-1 pl-2 pr-3"><span class="inline-flex"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-package-open h-3.5 w-3.5" aria-hidden="true"><path d="M12 22v-9"></path><path d="M15.17 2.21a1.67 1.67 0 0 1 1.63 0L21 4.57a1.93 1.93 0 0 1 0 3.36L8.82 14.79a1.655 1.655 0 0 1-1.64 0L3 12.43a1.93 1.93 0 0 1 0-3.36z"></path><path d="M20 13v3.87a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13"></path><path d="M21 12.43a1.93 1.93 0 0 0 0-3.36L8.83 2.2a1.64 1.64 0 0 0-1.63 0L3 4.57a1.93 1.93 0 0 0 0 3.36l12.18 6.86a1.636 1.636 0 0 0 1.63 0z"></path></svg></span><span class="font-medium text-foreground/70">William Sember</span> <!-- -->releases</p><time dateTime="2026-05-26" class="shrink-0 text-sm">May 26</time></div><h3 class="mt-1.5 text-2xl font-bold tracking-tight text-foreground group-hover:underline group-hover:decoration-foreground/30 sm:text-3xl">LVGL Pro Editor v1.2.1: Bundled Runtimes, LVGL 9.5 Support, and Local Emscripten</h3><div class="mt-2.5 flex items-center gap-2"><div class="h-7 w-7 shrink-0 overflow-hidden rounded-full border border-border"><img alt="William Sember" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="h-full w-full object-cover" style="color:transparent" srcSet="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fwilliam.jpeg&amp;w=32&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 1x, /blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fwilliam.jpeg&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 2x" src="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fwilliam.jpeg&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></div><span class="text-sm text-muted-foreground">Team Lead - LVGL Pro<span class="inline-block" style="opacity:0;transform:translateX(4px)"><span class="mx-1" aria-hidden="true">·</span>6<!-- --> <!-- -->min read</span></span></div></a></article><article class="group relative py-5 pl-5 first:pt-8"><a class="block" href="/blog/tutorial-custom-lvgl-with-fsp"><div class="flex items-center justify-between gap-4 text-base text-muted-foreground"><p class="-ml-[2.2rem] inline-flex items-center gap-1.5 bg-white py-1 pl-2 pr-3"><span class="inline-flex"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-graduation-cap h-3.5 w-3.5" aria-hidden="true"><path d="M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z"></path><path d="M22 10v6"></path><path d="M6 12.5V16a6 3 0 0 0 12 0v-3.5"></path></svg></span><span class="font-medium text-foreground/70">Akos Vandra-Meyer</span> <!-- -->teaches</p><time dateTime="2026-05-07" class="shrink-0 text-sm">May 7</time></div><h3 class="mt-1.5 text-2xl font-bold tracking-tight text-foreground group-hover:underline group-hover:decoration-foreground/30 sm:text-3xl">Using a Custom LVGL Version in e² studio with FSP</h3><div class="mt-2.5 flex items-center gap-2"><div class="h-7 w-7 shrink-0 overflow-hidden rounded-full border border-border"><img alt="Akos Vandra-Meyer" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="h-full w-full object-cover" style="color:transparent" srcSet="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fakos.png&amp;w=32&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 1x, /blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fakos.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 2x" src="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fakos.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></div><span class="text-sm text-muted-foreground">LVGL Open Team<span class="inline-block" style="opacity:0;transform:translateX(4px)"><span class="mx-1" aria-hidden="true">·</span>6<!-- --> <!-- -->min read</span></span></div></a></article><article class="group relative py-5 pl-5 first:pt-8"><a class="block" href="/blog/insight-ram-shortage-2026"><div class="flex items-center justify-between gap-4 text-base text-muted-foreground"><p class="-ml-[2.2rem] inline-flex items-center gap-1.5 bg-white py-1 pl-2 pr-3"><span class="inline-flex"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-lightbulb h-3.5 w-3.5" aria-hidden="true"><path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"></path><path d="M9 18h6"></path><path d="M10 22h4"></path></svg></span><span class="font-medium text-foreground/70">Jonathan Hoffmann</span> <!-- -->shares</p><time dateTime="2026-04-09" class="shrink-0 text-sm">April 9</time></div><h3 class="mt-1.5 text-2xl font-bold tracking-tight text-foreground group-hover:underline group-hover:decoration-foreground/30 sm:text-3xl">Why RAM Costs Are Exploding, How the Iran Conflict Could Make It Worse</h3><div class="mt-2.5 flex items-center gap-2"><div class="h-7 w-7 shrink-0 overflow-hidden rounded-full border border-border"><img alt="Jonathan Hoffmann" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="h-full w-full object-cover" style="color:transparent" srcSet="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fjonathan.jpeg&amp;w=32&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 1x, /blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fjonathan.jpeg&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 2x" src="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fjonathan.jpeg&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></div><span class="text-sm text-muted-foreground">Head of Sales, EMEA/NA<span class="inline-block" style="opacity:0;transform:translateX(4px)"><span class="mx-1" aria-hidden="true">·</span>9<!-- --> <!-- -->min read</span></span></div></a></article><article class="group relative py-5 pl-5 first:pt-8"><a class="block" href="/blog/tutorial-lvgl-pro-custom-widgets"><div class="flex items-center justify-between gap-4 text-base text-muted-foreground"><p class="-ml-[2.2rem] inline-flex items-center gap-1.5 bg-white py-1 pl-2 pr-3"><span class="inline-flex"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-graduation-cap h-3.5 w-3.5" aria-hidden="true"><path d="M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z"></path><path d="M22 10v6"></path><path d="M6 12.5V16a6 3 0 0 0 12 0v-3.5"></path></svg></span><span class="font-medium text-foreground/70">Felix Biego</span> <!-- -->teaches</p><time dateTime="2026-04-02" class="shrink-0 text-sm">April 2</time></div><h3 class="mt-1.5 text-2xl font-bold tracking-tight text-foreground group-hover:underline group-hover:decoration-foreground/30 sm:text-3xl">Building a Custom Widget with Scroll Effects in LVGL Pro</h3><div class="mt-2.5 flex items-center gap-2"><div class="h-7 w-7 shrink-0 overflow-hidden rounded-full border border-border"><img alt="Felix Biego" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="h-full w-full object-cover" style="color:transparent" srcSet="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Ffbiego.png&amp;w=32&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 1x, /blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Ffbiego.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 2x" src="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Ffbiego.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></div><span class="text-sm text-muted-foreground">Embedded UI Developer - LVGL Services<span class="inline-block" style="opacity:0;transform:translateX(4px)"><span class="mx-1" aria-hidden="true">·</span>6<!-- --> <!-- -->min read</span></span></div></a></article><article class="group relative py-5 pl-5 first:pt-8"><a class="block" href="/blog/announcement-lvgl-safe"><div class="flex items-center justify-between gap-4 text-base text-muted-foreground"><p class="-ml-[2.2rem] inline-flex items-center gap-1.5 bg-white py-1 pl-2 pr-3"><span class="inline-flex"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-megaphone h-3.5 w-3.5" aria-hidden="true"><path d="M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z"></path><path d="M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14"></path><path d="M8 6v8"></path></svg></span><span class="font-medium text-foreground/70">Mutahhar Mustafa Khan</span> <!-- -->announces</p><time dateTime="2026-03-31" class="shrink-0 text-sm">March 31</time></div><h3 class="mt-1.5 text-2xl font-bold tracking-tight text-foreground group-hover:underline group-hover:decoration-foreground/30 sm:text-3xl">Introducing LVGL Safe: Building UIs for Mission-Critical Devices</h3><div class="mt-2.5 flex items-center gap-2"><div class="h-7 w-7 shrink-0 overflow-hidden rounded-full border border-border"><img alt="Mutahhar Mustafa Khan" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="h-full w-full object-cover" style="color:transparent" srcSet="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fmutahhar.png&amp;w=32&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 1x, /blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fmutahhar.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 2x" src="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fmutahhar.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></div><span class="text-sm text-muted-foreground">Head of Ecosystem at LVGL<span class="inline-block" style="opacity:0;transform:translateX(4px)"><span class="mx-1" aria-hidden="true">·</span>8<!-- --> <!-- -->min read</span></span></div></a></article><article class="group relative py-5 pl-5 first:pt-8"><a class="block" href="/blog/release-lvgl-pro-v1-1-2"><div class="flex items-center justify-between gap-4 text-base text-muted-foreground"><p class="-ml-[2.2rem] inline-flex items-center gap-1.5 bg-white py-1 pl-2 pr-3"><span class="inline-flex"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-package-open h-3.5 w-3.5" aria-hidden="true"><path d="M12 22v-9"></path><path d="M15.17 2.21a1.67 1.67 0 0 1 1.63 0L21 4.57a1.93 1.93 0 0 1 0 3.36L8.82 14.79a1.655 1.655 0 0 1-1.64 0L3 12.43a1.93 1.93 0 0 1 0-3.36z"></path><path d="M20 13v3.87a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13"></path><path d="M21 12.43a1.93 1.93 0 0 0 0-3.36L8.83 2.2a1.64 1.64 0 0 0-1.63 0L3 4.57a1.93 1.93 0 0 0 0 3.36l12.18 6.86a1.636 1.636 0 0 0 1.63 0z"></path></svg></span><span class="font-medium text-foreground/70">William Sember</span> <!-- -->releases</p><time dateTime="2026-03-27" class="shrink-0 text-sm">March 27</time></div><h3 class="mt-1.5 text-2xl font-bold tracking-tight text-foreground group-hover:underline group-hover:decoration-foreground/30 sm:text-3xl">LVGL Pro v1.1.2: Stability, Polish, and Rapid Bug Fixes</h3><div class="mt-2.5 flex items-center gap-2"><div class="h-7 w-7 shrink-0 overflow-hidden rounded-full border border-border"><img alt="William Sember" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="h-full w-full object-cover" style="color:transparent" srcSet="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fwilliam.jpeg&amp;w=32&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 1x, /blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fwilliam.jpeg&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 2x" src="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fwilliam.jpeg&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></div><span class="text-sm text-muted-foreground">Team Lead - LVGL Pro<span class="inline-block" style="opacity:0;transform:translateX(4px)"><span class="mx-1" aria-hidden="true">·</span>4<!-- --> <!-- -->min read</span></span></div></a></article><article class="group relative py-5 pl-5 first:pt-8"><a class="block" href="/blog/lvgl-pro-project-structure-guide"><div class="flex items-center justify-between gap-4 text-base text-muted-foreground"><p class="-ml-[2.2rem] inline-flex items-center gap-1.5 bg-white py-1 pl-2 pr-3"><span class="inline-flex"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-graduation-cap h-3.5 w-3.5" aria-hidden="true"><path d="M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z"></path><path d="M22 10v6"></path><path d="M6 12.5V16a6 3 0 0 0 12 0v-3.5"></path></svg></span><span class="font-medium text-foreground/70">Felix Biego</span> <!-- -->teaches</p><time dateTime="2026-03-17" class="shrink-0 text-sm">March 17</time></div><h3 class="mt-1.5 text-2xl font-bold tracking-tight text-foreground group-hover:underline group-hover:decoration-foreground/30 sm:text-3xl">LVGL Pro Project Structure and Naming Guide</h3><div class="mt-2.5 flex items-center gap-2"><div class="h-7 w-7 shrink-0 overflow-hidden rounded-full border border-border"><img alt="Felix Biego" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="h-full w-full object-cover" style="color:transparent" srcSet="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Ffbiego.png&amp;w=32&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 1x, /blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Ffbiego.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 2x" src="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Ffbiego.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></div><span class="text-sm text-muted-foreground">Embedded UI Developer - LVGL Services<span class="inline-block" style="opacity:0;transform:translateX(4px)"><span class="mx-1" aria-hidden="true">·</span>4<!-- --> <!-- -->min read</span></span></div></a></article><article class="group relative py-5 pl-5 first:pt-8"><a class="block" href="/blog/release-v9-5"><div class="flex items-center justify-between gap-4 text-base text-muted-foreground"><p class="-ml-[2.2rem] inline-flex items-center gap-1.5 bg-white py-1 pl-2 pr-3"><span class="inline-flex"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-package-open h-3.5 w-3.5" aria-hidden="true"><path d="M12 22v-9"></path><path d="M15.17 2.21a1.67 1.67 0 0 1 1.63 0L21 4.57a1.93 1.93 0 0 1 0 3.36L8.82 14.79a1.655 1.655 0 0 1-1.64 0L3 12.43a1.93 1.93 0 0 1 0-3.36z"></path><path d="M20 13v3.87a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13"></path><path d="M21 12.43a1.93 1.93 0 0 0 0-3.36L8.83 2.2a1.64 1.64 0 0 0-1.63 0L3 4.57a1.93 1.93 0 0 0 0 3.36l12.18 6.86a1.636 1.636 0 0 0 1.63 0z"></path></svg></span><span class="font-medium text-foreground/70">Andre Costa</span> <!-- -->releases</p><time dateTime="2026-02-18" class="shrink-0 text-sm">February 18</time></div><h3 class="mt-1.5 text-2xl font-bold tracking-tight text-foreground group-hover:underline group-hover:decoration-foreground/30 sm:text-3xl">LVGL v9.5 is here</h3><div class="mt-2.5 flex items-center gap-2"><div class="h-7 w-7 shrink-0 overflow-hidden rounded-full border border-border"><img alt="Andre Costa" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="h-full w-full object-cover" style="color:transparent" srcSet="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fandre.jpeg&amp;w=32&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 1x, /blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fandre.jpeg&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 2x" src="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fandre.jpeg&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></div><span class="text-sm text-muted-foreground">Team Lead - LVGL Open<span class="inline-block" style="opacity:0;transform:translateX(4px)"><span class="mx-1" aria-hidden="true">·</span>10<!-- --> <!-- -->min read</span></span></div></a></article><article class="group relative py-5 pl-5 first:pt-8"><a class="block" href="/blog/showcase-cortex-m85-helium-benchmark"><div class="flex items-center justify-between gap-4 text-base text-muted-foreground"><p class="-ml-[2.2rem] inline-flex items-center gap-1.5 bg-white py-1 pl-2 pr-3"><span class="inline-flex"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layers h-3.5 w-3.5" aria-hidden="true"><path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"></path><path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"></path><path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"></path></svg></span><span class="font-medium text-foreground/70">Gabor Kiss-Vamosi</span> <!-- -->showcases</p><time dateTime="2024-08-30" class="shrink-0 text-sm">August 30, 2024</time></div><h3 class="mt-1.5 text-2xl font-bold tracking-tight text-foreground group-hover:underline group-hover:decoration-foreground/30 sm:text-3xl">Cortex-M85 Helium Benchmark - Compiler Performance Comparison</h3><div class="mt-2.5 flex items-center gap-2"><div class="h-7 w-7 shrink-0 overflow-hidden rounded-full border border-border"><img alt="Gabor Kiss-Vamosi" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="h-full w-full object-cover" style="color:transparent" srcSet="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fgabor.png&amp;w=32&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 1x, /blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fgabor.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 2x" src="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fgabor.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></div><span class="text-sm text-muted-foreground">CEO &amp; Creator of LVGL<span class="inline-block" style="opacity:0;transform:translateX(4px)"><span class="mx-1" aria-hidden="true">·</span>4<!-- --> <!-- -->min read</span></span></div></a></article><article class="group relative py-5 pl-5 first:pt-8"><a class="block" href="/blog/announcement-ui-editor"><div class="flex items-center justify-between gap-4 text-base text-muted-foreground"><p class="-ml-[2.2rem] inline-flex items-center gap-1.5 bg-white py-1 pl-2 pr-3"><span class="inline-flex"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-megaphone h-3.5 w-3.5" aria-hidden="true"><path d="M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z"></path><path d="M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14"></path><path d="M8 6v8"></path></svg></span><span class="font-medium text-foreground/70">Gabor Kiss-Vamosi</span> <!-- -->announces</p><time dateTime="2024-07-05" class="shrink-0 text-sm">July 5, 2024</time></div><h3 class="mt-1.5 text-2xl font-bold tracking-tight text-foreground group-hover:underline group-hover:decoration-foreground/30 sm:text-3xl">LVGL UI Editor Development Begins</h3><div class="mt-2.5 flex items-center gap-2"><div class="h-7 w-7 shrink-0 overflow-hidden rounded-full border border-border"><img alt="Gabor Kiss-Vamosi" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="h-full w-full object-cover" style="color:transparent" srcSet="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fgabor.png&amp;w=32&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 1x, /blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fgabor.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 2x" src="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fgabor.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></div><span class="text-sm text-muted-foreground">CEO &amp; Creator of LVGL<span class="inline-block" style="opacity:0;transform:translateX(4px)"><span class="mx-1" aria-hidden="true">·</span>2<!-- --> <!-- -->min read</span></span></div></a></article><article class="group relative py-5 pl-5 first:pt-8"><a class="block" href="/blog/showcase-4d-systems-gen4-esp32-32ct"><div class="flex items-center justify-between gap-4 text-base text-muted-foreground"><p class="-ml-[2.2rem] inline-flex items-center gap-1.5 bg-white py-1 pl-2 pr-3"><span class="inline-flex"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layers h-3.5 w-3.5" aria-hidden="true"><path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"></path><path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"></path><path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"></path></svg></span><span class="font-medium text-foreground/70">Zoltan Janosy</span> <!-- -->showcases</p><time dateTime="2024-04-18" class="shrink-0 text-sm">April 18, 2024</time></div><h3 class="mt-1.5 text-2xl font-bold tracking-tight text-foreground group-hover:underline group-hover:decoration-foreground/30 sm:text-3xl">4D Systems gen4-ESP32-32CT Board Certification Review</h3><div class="mt-2.5 flex items-center gap-2"><div class="h-7 w-7 shrink-0 overflow-hidden rounded-full border border-border"><img alt="Zoltan Janosy" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="h-full w-full object-cover" style="color:transparent" srcSet="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fzjanosy.png&amp;w=32&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 1x, /blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fzjanosy.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 2x" src="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fzjanosy.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></div><span class="text-sm text-muted-foreground">Community Contributor<span class="inline-block" style="opacity:0;transform:translateX(4px)"><span class="mx-1" aria-hidden="true">·</span>6<!-- --> <!-- -->min read</span></span></div></a></article><article class="group relative py-5 pl-5 first:pt-8"><a class="block" href="/blog/showcase-4d-systems-esp32-50ct"><div class="flex items-center justify-between gap-4 text-base text-muted-foreground"><p class="-ml-[2.2rem] inline-flex items-center gap-1.5 bg-white py-1 pl-2 pr-3"><span class="inline-flex"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layers h-3.5 w-3.5" aria-hidden="true"><path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"></path><path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"></path><path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"></path></svg></span><span class="font-medium text-foreground/70">Zoltan Janosy</span> <!-- -->showcases</p><time dateTime="2024-04-18" class="shrink-0 text-sm">April 18, 2024</time></div><h3 class="mt-1.5 text-2xl font-bold tracking-tight text-foreground group-hover:underline group-hover:decoration-foreground/30 sm:text-3xl">4D Systems gen4-ESP32-50CT - Board Certification Review</h3><div class="mt-2.5 flex items-center gap-2"><div class="h-7 w-7 shrink-0 overflow-hidden rounded-full border border-border"><img alt="Zoltan Janosy" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="h-full w-full object-cover" style="color:transparent" srcSet="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fzjanosy.png&amp;w=32&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 1x, /blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fzjanosy.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp 2x" src="/blog/_next/image?url=%2Fblog%2Fimages%2Fauthors%2Fzjanosy.png&amp;w=64&amp;q=75&amp;dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp"/></div><span class="text-sm text-muted-foreground">Community Contributor<span class="inline-block" style="opacity:0;transform:translateX(4px)"><span class="mx-1" aria-hidden="true">·</span>6<!-- --> <!-- -->min read</span></span></div></a></article><span class="absolute -bottom-[4px] -left-[4px] h-[7px] w-[7px] bg-border" aria-hidden="true"></span></div><div class="mt-8 flex justify-center py-8"><p class="text-sm text-muted-foreground flex items-center gap-2" style="opacity:0;transform:translateY(10px)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-4 w-4 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Fetching more pixels for you...</p></div></div></main></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0};
$RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[79681,[\"/blog/_next/static/chunks/35b0e666b92287b3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/011e309884a3f95c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"default\"]\n3:I[64324,[\"/blog/_next/static/chunks/35b0e666b92287b3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/011e309884a3f95c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"default\"]\n4:I[81756,[\"/blog/_next/static/chunks/adef4e106dddef9f.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"\"]\n7:I[82640,[\"/blog/_next/static/chunks/35b0e666b92287b3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/011e309884a3f95c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:I[82640,[\"/blog/_next/static/chunks/35b0e666b92287b3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/011e309884a3f95c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"ViewportBoundary\"]\nc:I[82640,[\"/blog/_next/static/chunks/35b0e666b92287b3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/011e309884a3f95c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"MetadataBoundary\"]\ne:I[87926,[],\"default\"]\nf:I[35759,[\"/blog/_next/static/chunks/10db44f37a749dc5.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/10d6fcf6e7b4ad7c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/72386e5631a248a6.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/0e93c0a00633dd37.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/b4df8384a3de31d3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"GoogleTagManager\"]\n11:I[84193,[\"/blog/_next/static/chunks/10db44f37a749dc5.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/10d6fcf6e7b4ad7c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/72386e5631a248a6.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/0e93c0a00633dd37.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/b4df8384a3de31d3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"default\"]\n13:I[46798,[\"/blog/_next/static/chunks/10db44f37a749dc5.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/10d6fcf6e7b4ad7c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/72386e5631a248a6.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/0e93c0a00633dd37.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/b4df8384a3de31d3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"TooltipProvider\"]\n15:I[45144,[\"/blog/_next/static/chunks/10db44f37a749dc5.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/10d6fcf6e7b4ad7c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/72386e5631a248a6.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/0e93c0a00633dd37.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/b4df8384a3de31d3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"MainNav\"]\n17:I[77855,[\"/blog/_next/static/chunks/10db44f37a749dc5.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/10d6fcf6e7b4ad7c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/72386e5631a248a6.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/0e93c0a00633dd37.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/b4df8384a3de31d3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"Toaster\"]\n19:I[58649,[\"/blog/_next/static/chunks/10db44f37a749dc5.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/10d6fcf6e7b4ad7c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/72386e5631a248a6.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/0e93c0a00633dd37.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/b4df8384a3de31d3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"NewsletterForm\"]\n1a:I[44342,[\"/blog/_next/static/chunks/10db44f37a749dc5.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/10d6fcf6e7b4ad7c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/72386e5631a24"])</script><script>self.__next_f.push([1,"8a6.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/0e93c0a00633dd37.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/b4df8384a3de31d3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"Image\"]\n1f:I[48507,[\"/blog/_next/static/chunks/10db44f37a749dc5.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/10d6fcf6e7b4ad7c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/72386e5631a248a6.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/0e93c0a00633dd37.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/b4df8384a3de31d3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"default\"]\n20:I[75976,[\"/blog/_next/static/chunks/35b0e666b92287b3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/011e309884a3f95c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"IconMark\"]\n:HL[\"/blog/_next/static/chunks/876c965caa6f6e6e.css?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"style\"]\n:HL[\"/blog/_next/static/chunks/35659ae98de5cd4a.css?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"style\"]\n:HL[\"/blog/_next/static/media/3aa92723cf3d5342-s.p.4421ca65.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/blog/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/blog/_next/static/media/c9e42e3eae6237c2-s.p.24d96596.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/blog/_next/static/chunks/9abad3ffb7a72819.css?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"igxbu5kpWscDy88Dab7bl\",\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[[\"locale\",\"en\",\"d\"],{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"antialiased\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex min-h-screen items-center justify-center bg-zinc-50 font-sans dark:bg-black\",\"children\":[\"$\",\"main\",null,{\"className\":\"flex flex-col items-center justify-center gap-8 px-16 py-32 text-center\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-6xl font-bold tracking-tight text-black dark:text-white\",\"children\":\"404\"}],[\"$\",\"h2\",null,{\"className\":\"text-2xl font-semibold text-black dark:text-white\",\"children\":\"Page Not Found\"}],[\"$\",\"p\",null,{\"className\":\"max-w-md text-lg text-zinc-600 dark:text-zinc-400\",\"children\":\"The page you're looking for doesn't exist or has been moved.\"}],[\"$\",\"$L4\",null,{\"href\":\"/\",\"className\":\"mt-4 rounded-full bg-black px-6 py-3 text-white transition-colors hover:bg-zinc-800 dark:bg-white dark:text-black dark:hover:bg-zinc-200\",\"children\":\"Back to home\"}]]}]}]}]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/blog/_next/static/chunks/876c965caa6f6e6e.css?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/blog/_next/static/chunks/35659ae98de5cd4a.css?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/blog/_next/static/chunks/10db44f37a749dc5.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/blog/_next/static/chunks/10d6fcf6e7b4ad7c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/blog/_next/static/chunks/72386e5631a248a6.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/blog/_next/static/chunks/0e93c0a00633dd37.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/blog/_next/static/chunks/b4df8384a3de31d3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L5\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$L6\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/blog/_next/static/chunks/9abad3ffb7a72819.css?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/blog/_next/static/chunks/d3059b8434273088.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/blog/_next/static/chunks/6affb0ae697e6e9a.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":false}\n"])</script><script>self.__next_f.push([1,"5:[\"$\",\"html\",null,{\"lang\":\"en\",\"dir\":\"ltr\",\"children\":[[\"$\",\"$Lf\",null,{\"gtmId\":\"GTM-TRZSR7TP\"}],[\"$\",\"body\",null,{\"className\":\"inter_cb0c501c-module__AUPRoG__variable source_code_pro_c1005c2f-module__s4q9aa__variable doto_ca317b3f-module__odtlEG__variable antialiased\",\"children\":\"$L10\"}]]}]\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"10:[\"$\",\"$L11\",null,{\"formats\":\"$undefined\",\"locale\":\"en\",\"messages\":{\"nav\":{\"home\":\"Home\",\"blog\":\"Blog\",\"authors\":\"Authors\",\"about\":\"About\",\"search\":\"Search\",\"toggleTheme\":\"Toggle theme\",\"toggleLanguage\":\"Switch language\",\"lvglOpen\":\"LVGL Open\",\"lvglSafe\":\"LVGL Safe\",\"lvglPro\":\"LVGL Pro\",\"showcase\":\"Showcase\",\"getStarted\":\"Get Started\",\"features\":\"Features\",\"github\":\"GitHub\",\"documentation\":\"Documentation\",\"forum\":\"Forum\",\"tools\":\"Tools\",\"projectCreator\":\"Project Creator\",\"fontConverter\":\"Font Converter\",\"imageConverter\":\"Image Converter\",\"caseStudies\":\"Case Studies\",\"demos\":\"Demos\",\"boards\":\"Boards\",\"services\":\"Services\",\"company\":\"Company\",\"jobs\":\"Jobs\",\"newsletter\":\"Newsletter\",\"news\":\"News\",\"contactUs\":\"Contact Us\",\"lvglOnGithub\":\"LVGL on GitHub\"},\"common\":{\"home\":\"Home\",\"back\":\"Back\",\"goBack\":\"← Go back\",\"loading\":\"Loading...\",\"error\":\"An error occurred\",\"notFound\":\"Page not found\",\"readMore\":\"Read more\",\"backToHome\":\"Back to home\",\"share\":\"Share\",\"copyLink\":\"Copy link\",\"copied\":\"Copied!\",\"minuteRead\":\"{count} min read\",\"writtenBy\":\"Written by\",\"publishedOn\":\"Published on {date}\",\"updatedOn\":\"Updated on {date}\",\"blog\":\"Blog\",\"website\":\"Website\"},\"blog\":{\"title\":\"Blog\",\"homeTitle\":\"LVGL Blog - Embedded Graphics Tutorials, News \u0026 Showcases\",\"description\":\"Tutorials, releases, case studies, and community stories on how embedded UIs are designed, built, and shipped with LVGL.\",\"heroTitle1\":\"Follow our journey\",\"heroTitle2\":\"Pixel by Pixel\",\"allPosts\":\"All Posts\",\"latestPosts\":\"Latest Posts\",\"featuredPosts\":\"Featured Posts\",\"noPosts\":\"No posts found\",\"noResults\":\"No posts match your search\",\"mdxComingSoon\":\"Full MDX rendering coming in Phase 3. Here's a preview of the raw content:\",\"searchPlaceholder\":\"Search posts...\",\"filterByTag\":\"Filter by tag\",\"filterByType\":\"Type\",\"tags\":\"Tags\",\"clearFilters\":\"Clear filters\",\"showingResults\":\"Showing {count} results\",\"showing\":\"Showing\",\"of\":\"of\",\"posts\":\"posts\",\"loadMore\":\"Load more\",\"loadingMore\":\"Fetching more pixels for you...\",\"previousPage\":\"Previous\",\"nextPage\":\"Next\",\"page\":\"Page {current} of {total}\",\"type_tutorial\":\"Tutorial\",\"type_showcase\":\"Showcase\",\"type_release\":\"Release\",\"type_announcement\":\"Announcement\",\"type_insight\":\"Insight\",\"meetAuthors\":\"Meet our authors →\",\"verb_teaches\":\"teaches\",\"verb_showcases\":\"showcases\",\"verb_releases\":\"releases\",\"verb_announces\":\"announces\",\"verb_shares\":\"shares\",\"remaining\":\"{count} remaining\",\"noTagsFound\":\"No tags found.\",\"seriesPart\":\"Part {current} of {total}\",\"youAreHere\":\"You are here\"},\"authors\":{\"title\":\"Authors\",\"heroTitle1\":\"Our wonderful\",\"heroTitle2\":\"Authors\",\"description\":\"Meet the writers, engineers, and contributors sharing their embedded graphics expertise.\",\"searchPlaceholder\":\"Search authors...\",\"postsBy\":\"Posts by {name}\",\"noAuthors\":\"No authors found\",\"viewProfile\":\"View profile\",\"totalPosts\":\"{count} posts\"},\"categories\":{\"title\":\"Category\",\"exploreCount\":\"Explore {count} posts\",\"tutorials\":\"Tutorials\",\"showcases\":\"Showcases\",\"releases\":\"Releases\",\"announcements\":\"Announcements\",\"insights\":\"Insights\"},\"tags\":{\"title\":\"Tags\",\"allTags\":\"All Tags\",\"postsTagged\":\"Posts tagged with \\\"{tag}\\\"\",\"postsTaggedWith\":\"Posts tagged with\",\"exploreCount\":\"Explore {count} posts\",\"noPostsWithTag\":\"No posts found with this tag\"},\"og\":{\"blogTitle\":\"LVGL Blog\",\"blogAuthor\":\"LVGL Blog Author\",\"blogTag\":\"{name} - LVGL Blog Tag\",\"postsTaggedWith\":\"Posts tagged with\",\"postCount\":\"{count, plural, one {# post} other {# posts}}\",\"category\":\"Category\",\"author\":\"Author\",\"minRead\":\"{count} min read\"},\"post\":{\"tableOfContents\":\"Table of Contents\",\"relatedPosts\":\"Related Posts\",\"writtenBy\":\"Written by\",\"editOnGithub\":\"Edit on GitHub\",\"sharePost\":\"Share this post\",\"aboutAuthor\":\"About the author\",\"moreFromAuthor\":\"More from {name}\",\"viewAllPosts\":\"View all posts\",\"copyCode\":\"Copy code\",\"codeCopied\":\"Copied!\",\"callout_info\":\"Info\",\"callout_warning\":\"Warning\",\"callout_tip\":\"Tip\",\"callout_danger\":\"Danger\",\"before\":\"Before\",\"after\":\"After\",\"change\":\"Change\",\"metric\":\"Metric\",\"performanceBenchmark\":\"Performance Benchmark\",\"datasheet\":\"Datasheet\",\"buyNow\":\"Buy now\",\"peripherals\":\"Peripherals\",\"preview\":\"Preview\",\"code\":\"Code\"},\"footer\":{\"copyright\":\"© {year} LVGL. All rights reserved.\",\"poweredBy\":\"Powered by Next.js\",\"sourceCode\":\"Source code\",\"rss\":\"RSS Feed\",\"newsletterTitle\":\"Subscribe to our newsletter\",\"newsletterBlurb\":\"to not miss any news about LVGL. We will send maximum of 2 mails per month.\",\"subscribe\":\"Subscribe\",\"namePlaceholder\":\"Name\",\"emailPlaceholder\":\"Email\",\"description\":\"LVGL is the most popular free and open source embedded graphics library targeting any MCU, MPU and display type to build beautiful UIs.\",\"descriptionServices\":\"We also do services like UI design, implementation and consulting.\",\"privacyPolicy\":\"Privacy Policy\",\"meetAuthorsHeading\":\"Meet the people behind the blog\",\"meetAuthorsDescription\":\"Discover the talented writers sharing their knowledge about LVGL\",\"viewAuthors\":\"View Authors\"},\"banner\":{\"promo\":\"Try out LVGL Pro — A complete toolkit to build, test, share, and ship UIs efficiently!\"},\"errors\":{\"404\":{\"title\":\"Page Not Found\",\"description\":\"The page you're looking for doesn't exist or has been moved.\"},\"500\":{\"title\":\"Server Error\",\"description\":\"Something went wrong on our end. Please try again later.\"}}},\"now\":\"$undefined\",\"timeZone\":\"UTC\",\"children\":\"$L12\"}]\n"])</script><script>self.__next_f.push([1,"12:[\"$\",\"$L13\",null,{\"delayDuration\":300,\"children\":[\"$L14\",[\"$\",\"$L15\",null,{}],[\"$\",\"div\",null,{\"className\":\"min-h-[calc(100vh-var(--nav-height))]\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],\"$L16\",[\"$\",\"$L17\",null,{}]]}]\n"])</script><script>self.__next_f.push([1,"16:[\"$\",\"section\",null,{\"className\":\"relative z-50 w-full bg-[#0e0e0e] text-white\",\"children\":[[\"$\",\"div\",null,{\"className\":\"relative overflow-hidden border-t border-border bg-neutral-50 py-8\",\"children\":[[\"$\",\"div\",null,{\"className\":\"pointer-events-none absolute inset-0 opacity-10\",\"style\":{\"background\":\"radial-gradient(circle at 0% 50%, rgba(184, 64, 224, 0.15) 0%, transparent 50%), radial-gradient(circle at 100% 50%, rgba(0, 153, 170, 0.15) 0%, transparent 50%)\"}}],[\"$\",\"div\",null,{\"className\":\"relative mx-auto flex w-full max-w-6xl items-center justify-between gap-6 px-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex-1\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold text-foreground sm:text-xl\",\"children\":\"Meet the people behind the blog\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 max-w-2xl text-sm text-muted-foreground\",\"children\":\"Discover the talented writers sharing their knowledge about LVGL\"}]]}],\"$L18\"]}]]}],[\"$\",\"div\",null,{\"className\":\"h-4 w-full\",\"style\":{\"background\":\"linear-gradient(90deg, var(--lvgl-yellow) 0%, var(--lvgl-orange) 13.5%, var(--lvgl-red) 28%, var(--lvgl-magenta) 43%, var(--lvgl-purple) 58%, var(--lvgl-blue) 71%, var(--lvgl-teal) 85%, var(--lvgl-green) 100%)\"}}],[\"$\",\"div\",null,{\"className\":\"mx-auto w-full max-w-6xl px-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-6 border-b border-white/10 py-10 lg:flex-row lg:items-center lg:justify-between lg:gap-12\",\"children\":[[\"$\",\"p\",null,{\"className\":\"max-w-[22.5rem] text-sm text-white/60\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"text-white\",\"children\":\"Subscribe to our newsletter\"}],\" \",\"to not miss any news about LVGL. We will send maximum of 2 mails per month.\"]}],[\"$\",\"div\",null,{\"className\":\"flex-1\",\"children\":[\"$\",\"$L19\",null,{\"subscribePlaceholder\":\"\",\"namePlaceholder\":\"Name\",\"emailPlaceholder\":\"Email\",\"subscribeLabel\":\"Subscribe\"}]}]]}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-0 py-10 lg:flex-row lg:gap-12\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex max-w-[22.5rem] flex-col\",\"children\":[[\"$\",\"$L1a\",null,{\"src\":\"/blog/images/icons/footer-logo.svg\",\"alt\":\"LVGL\",\"width\":120,\"height\":32,\"className\":\"h-8 w-auto self-start\"}],[\"$\",\"p\",null,{\"className\":\"mt-6 text-sm leading-relaxed text-white/60\",\"children\":[\"LVGL is the most popular free and open source embedded graphics library targeting any MCU, MPU and display type to build beautiful UIs.\",[\"$\",\"br\",null,{}],[\"$\",\"br\",null,{}],\"We also do services like UI design, implementation and consulting.\"]}]]}],[[\"$\",\"div\",\"0\",{\"className\":\"mt-10 flex flex-col gap-3 lg:mt-0\",\"children\":[[\"$\",\"a\",\"documentation\",{\"href\":\"https://docs.lvgl.io/master/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-white transition-colors hover:text-white/60\",\"children\":\"Documentation\"}],[\"$\",\"a\",\"demos\",{\"href\":\"https://lvgl.io/demos\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-white transition-colors hover:text-white/60\",\"children\":\"Demos\"}],[\"$\",\"a\",\"features\",{\"href\":\"https://lvgl.io/features\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-white transition-colors hover:text-white/60\",\"children\":\"Features\"}],[\"$\",\"a\",\"boards\",{\"href\":\"https://lvgl.io/boards\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-white transition-colors hover:text-white/60\",\"children\":\"Boards\"}],[\"$\",\"a\",\"services\",{\"href\":\"https://lvgl.io/services\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-white transition-colors hover:text-white/60\",\"children\":\"Services\"}],[\"$\",\"a\",\"projectCreator\",{\"href\":\"https://lvgl.io/tools/project-creator\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-white transition-colors hover:text-white/60\",\"children\":\"Project Creator\"}],[\"$\",\"a\",\"imageConverter\",{\"href\":\"https://lvgl.io/tools/imageconverter\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-white transition-colors hover:text-white/60\",\"children\":\"Image Converter\"}],\"$L1b\"]}],\"$L1c\"]]}],\"$L1d\"]}]]}]\n"])</script><script>self.__next_f.push([1,"1b:[\"$\",\"a\",\"fontConverter\",{\"href\":\"https://lvgl.io/tools/fontconverter\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-white transition-colors hover:text-white/60\",\"children\":\"Font Converter\"}]\n1c:[\"$\",\"div\",\"1\",{\"className\":\"mt-10 flex flex-col gap-3 lg:mt-0\",\"children\":[[\"$\",\"a\",\"jobs\",{\"href\":\"https://lvgl.io/jobs\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-white transition-colors hover:text-white/60\",\"children\":\"Jobs\"}],[\"$\",\"a\",\"forum\",{\"href\":\"https://forum.lvgl.io\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-white transition-colors hover:text-white/60\",\"children\":\"Forum\"}],[\"$\",\"a\",\"about\",{\"href\":\"https://lvgl.io/about\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-white transition-colors hover:text-white/60\",\"children\":\"About\"}],\"$L1e\",[\"$\",\"a\",\"contactUs\",{\"href\":\"https://lvgl.io/#contact\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-white transition-colors hover:text-white/60\",\"children\":\"Contact Us\"}],[\"$\",\"a\",\"privacyPolicy\",{\"href\":\"https://lvgl.io/privacy-policy\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-white transition-colors hover:text-white/60\",\"children\":\"Privacy Policy\"}]]}]\n1d:[\"$\",\"div\",null,{\"className\":\"flex flex-wrap items-center justify-between gap-3 border-t border-white/10 py-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"text-xs text-white/40\",\"children\":\"© 2026 LVGL. All rights reserved.\"}],[\"$\",\"div\",null,{\"className\":\"flex gap-4\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://www.youtube.com/channel/UC0fMcpuRA0Zxn_EJYCL88-Q\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"opacity-60 transition-opacity hover:opacity-100\",\"children\":[\"$\",\"$L1a\",null,{\"src\":\"/blog/images/icons/youtube.svg\",\"alt\":\"YouTube\",\"width\":24,\"height\":24,\"className\":\"size-6 invert\"}]}],[\"$\",\"a\",null,{\"href\":\"https://github.com/lvgl\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"opacity-60 transition-opacity hover:opacity-100\",\"children\":[\"$\",\"$L1a\",null,{\"src\":\"/blog/images/icons/github.svg\",\"alt\":\"GitHub\",\"width\":24,\"height\":24,\"className\":\"size-6 invert\"}]}],[\"$\",\"a\",null,{\"href\":\"https://www.linkedin.com/company/lvglgui/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"opacity-60 transition-opacity hover:opacity-100\",\"children\":[\"$\",\"$L1a\",null,{\"src\":\"/blog/images/icons/linkedin.svg\",\"alt\":\"LinkedIn\",\"width\":24,\"height\":24,\"className\":\"size-6 invert\"}]}]]}]]}]\n18:[\"$\",\"$L1f\",null,{\"ref\":\"$undefined\",\"href\":\"/authors\",\"locale\":\"$undefined\",\"localeCookie\":{\"name\":\"NEXT_LOCALE\",\"sameSite\":\"lax\",\"maxAge\":31536000},\"className\":\"shrink-0 rounded-full bg-foreground px-6 py-2.5 text-sm font-semibold text-background transition-all hover:bg-foreground/90\",\"children\":\"View Authors\"}]\n1e:[\"$\",\"$L1f\",\"blog\",{\"ref\":\"$undefined\",\"href\":\"/\",\"locale\":\"$undefined\",\"localeCookie\":\"$18:props:localeCookie\",\"className\":\"text-sm font-medium text-white transition-colors hover:text-white/60\",\"children\":\"Blog\"}]\n9:null\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"title\",\"0\",{\"children\":\"LVGL Blog - Embedded Graphics Tutorials, News \u0026 Showcases\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Tutorials, releases, case studies, and community stories on how embedded UIs are designed, built, and shipped with LVGL.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"canonical\",\"href\":\"https://lvgl.io/blog\"}],[\"$\",\"link\",\"3\",{\"rel\":\"alternate\",\"hrefLang\":\"en\",\"href\":\"https://lvgl.io/blog\"}],[\"$\",\"link\",\"4\",{\"rel\":\"alternate\",\"hrefLang\":\"zh-Hans\",\"href\":\"https://lvgl.io/blog/zh\"}],[\"$\",\"link\",\"5\",{\"rel\":\"alternate\",\"hrefLang\":\"x-default\",\"href\":\"https://lvgl.io/blog\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:title\",\"content\":\"LVGL Blog - Embedded Graphics Tutorials, News \u0026 Showcases\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:description\",\"content\":\"Tutorials, releases, case studies, and community stories on how embedded UIs are designed, built, and shipped with LVGL.\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:url\",\"content\":\"https://lvgl.io/blog\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:site_name\",\"content\":\"LVGL Blog\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:alt\",\"content\":\"LVGL Blog\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:type\",\"content\":\"image/png\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image\",\"content\":\"https://lvgl.io/blog/en/opengraph-image/og?7c3ee8d2be4f436e\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:title\",\"content\":\"LVGL Blog - Embedded Graphics Tutorials, News \u0026 Showcases\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:description\",\"content\":\"Tutorials, releases, case studies, and community stories on how embedded UIs are designed, built, and shipped with LVGL.\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:image:alt\",\"content\":\"LVGL Blog\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image:type\",\"content\":\"image/png\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:image\",\"content\":\"https://lvgl.io/blog/en/opengraph-image/og?7c3ee8d2be4f436e\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"25\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"sizes\":\"any\"}],[\"$\",\"link\",\"26\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"27\",{\"rel\":\"icon\",\"href\":\"/favicon-16x16.png\",\"sizes\":\"16x16\",\"type\":\"image/png\"}],[\"$\",\"link\",\"28\",{\"rel\":\"icon\",\"href\":\"/favicon-32x32.png\",\"sizes\":\"32x32\",\"type\":\"image/png\"}],[\"$\",\"link\",\"29\",{\"rel\":\"icon\",\"href\":\"/favicon-96x96.png\",\"sizes\":\"96x96\",\"type\":\"image/png\"}],[\"$\",\"link\",\"30\",{\"rel\":\"icon\",\"href\":\"/favicon-128x128.png\",\"sizes\":\"128x128\",\"type\":\"image/png\"}],[\"$\",\"link\",\"31\",{\"rel\":\"apple-touch-icon\",\"href\":\"/favicon-180x180.png\",\"sizes\":\"180x180\"}],[\"$\",\"$L20\",\"32\",{}]]\n"])</script><script>self.__next_f.push([1,"14:[\"$\",\"a\",null,{\"href\":\"https://pro.lvgl.io\",\"className\":\"flex items-center justify-center gap-1 bg-[var(--lvgl-purple)] px-5 py-2.5 text-sm font-medium text-white\",\"children\":[[\"$\",\"span\",null,{\"children\":\"Try out LVGL Pro - A complete toolkit to build, test, share, and ship UIs efficiently!\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-arrow-right size-4 shrink-0\",\"aria-hidden\":\"true\",\"children\":[[\"$\",\"path\",\"1ays0h\",{\"d\":\"M5 12h14\"}],[\"$\",\"path\",\"xquz4c\",{\"d\":\"m12 5 7 7-7 7\"}],\"$undefined\"]}]]}]\n"])</script><script>self.__next_f.push([1,"21:I[19771,[\"/blog/_next/static/chunks/10db44f37a749dc5.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/10d6fcf6e7b4ad7c.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/72386e5631a248a6.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/0e93c0a00633dd37.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/b4df8384a3de31d3.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/d3059b8434273088.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\",\"/blog/_next/static/chunks/6affb0ae697e6e9a.js?dpl=dpl_54wxzDATndytULZYKcJssEkxRpzp\"],\"HomeContent\"]\n"])</script><script>self.__next_f.push([1,"6:[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"WebSite\\\",\\\"name\\\":\\\"LVGL Blog\\\",\\\"description\\\":\\\"Tutorials, releases, case studies, and community stories on how embedded UIs are designed, built, and shipped with LVGL.\\\",\\\"url\\\":\\\"https://lvgl.io/blog\\\",\\\"inLanguage\\\":\\\"en\\\",\\\"publisher\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"@id\\\":\\\"https://lvgl.io/#organization\\\",\\\"name\\\":\\\"LVGL\\\",\\\"legalName\\\":\\\"LVGL LLC\\\",\\\"url\\\":\\\"https://lvgl.io\\\",\\\"logo\\\":{\\\"@type\\\":\\\"ImageObject\\\",\\\"url\\\":\\\"https://lvgl.io/images/lvgl-logo.png\\\"},\\\"foundingDate\\\":\\\"2016\\\",\\\"description\\\":\\\"Light and Versatile Graphics Library - Free and open-source embedded graphics library\\\",\\\"sameAs\\\":[\\\"https://github.com/lvgl\\\",\\\"https://twitter.com/lvaborras\\\",\\\"https://www.youtube.com/@kilobytetech\\\"]},\\\"potentialAction\\\":{\\\"@type\\\":\\\"SearchAction\\\",\\\"target\\\":{\\\"@type\\\":\\\"EntryPoint\\\",\\\"urlTemplate\\\":\\\"https://lvgl.io/blog?q={search_term_string}\\\"},\\\"query-input\\\":\\\"required name=search_term_string\\\"}}\"}}],[\"$\",\"$8\",null,{\"fallback\":[[\"$\",\"section\",null,{\"className\":\"w-full border-b border-border bg-white px-6 pb-20 pt-24\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-6xl animate-pulse\",\"children\":[[\"$\",\"div\",null,{\"className\":\"max-w-2xl\",\"children\":[[\"$\",\"div\",null,{\"className\":\"h-4 w-24 rounded bg-muted\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 h-14 w-3/4 rounded bg-muted\"}],[\"$\",\"div\",null,{\"className\":\"mt-2 h-14 w-1/2 rounded bg-muted\"}],[\"$\",\"div\",null,{\"className\":\"mt-6 h-5 w-full rounded bg-muted\"}]]}],[\"$\",\"div\",null,{\"className\":\"mt-10 h-12 w-full rounded bg-muted\"}]]}]}],[\"$\",\"main\",null,{\"className\":\"mx-auto flex w-full max-w-3xl flex-col items-start gap-8 px-6 py-12\",\"children\":[\"$\",\"div\",null,{\"className\":\"w-full\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-6 h-8 w-32 rounded bg-muted\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-6\",\"children\":[[\"$\",\"div\",\"1\",{\"className\":\"rounded-lg border border-border bg-white p-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-2 h-4 w-24 rounded bg-muted\"}],[\"$\",\"div\",null,{\"className\":\"mb-2 h-6 w-3/4 rounded bg-muted\"}],[\"$\",\"div\",null,{\"className\":\"h-4 w-full rounded bg-muted\"}]]}],[\"$\",\"div\",\"2\",{\"className\":\"rounded-lg border border-border bg-white p-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-2 h-4 w-24 rounded bg-muted\"}],[\"$\",\"div\",null,{\"className\":\"mb-2 h-6 w-3/4 rounded bg-muted\"}],[\"$\",\"div\",null,{\"className\":\"h-4 w-full rounded bg-muted\"}]]}],[\"$\",\"div\",\"3\",{\"className\":\"rounded-lg border border-border bg-white p-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-2 h-4 w-24 rounded bg-muted\"}],[\"$\",\"div\",null,{\"className\":\"mb-2 h-6 w-3/4 rounded bg-muted\"}],[\"$\",\"div\",null,{\"className\":\"h-4 w-full rounded bg-muted\"}]]}]]}]]}]}]],\"children\":[\"$\",\"$L21\",null,{\"posts\":[{\"slug\":\"release-lvgl-pro-v1-2-1\",\"title\":\"LVGL Pro Editor v1.2.1: Bundled Runtimes, LVGL 9.5 Support, and Local Emscripten\",\"description\":\"v1.2.1 of the LVGL Pro Editor ships bundled runtimes for instant live preview, first-class LVGL 9.5.0 support, and local Emscripten as a Podman replacement.\",\"date\":\"2026-05-26\",\"author\":\"william\",\"type\":\"release\",\"tags\":[\"LVGL\",\"LVGL Pro\",\"Release\",\"UI Editor\"],\"readingTime\":6,\"wordCount\":1085,\"hash\":\"813fd4ba\"},{\"slug\":\"tutorial-custom-lvgl-with-fsp\",\"title\":\"Using a Custom LVGL Version in e² studio with FSP\",\"description\":\"How to keep the Renesas FSP project structure while swapping in your own LVGL source tree, useful for testing fixes, evaluating upstream, or experimenting with patches.\",\"date\":\"2026-05-07\",\"author\":\"akos\",\"type\":\"tutorial\",\"tags\":[\"LVGL\",\"Renesas\",\"FSP\",\"Tutorial\"],\"readingTime\":6,\"wordCount\":1142,\"hash\":\"d9386dd8\",\"image\":\"/images/posts/tutorial-custom-lvgl-with-fsp/e2-fsp-lvgl2.png\",\"imageHeight\":350,\"imageAlign\":\"center\"},{\"slug\":\"insight-ram-shortage-2026\",\"title\":\"Why RAM Costs Are Exploding, How the Iran Conflict Could Make It Worse\",\"description\":\"How geopolitical tensions are adding fuel to an already volatile memory market.\",\"date\":\"2026-04-09\",\"author\":\"jonathan\",\"type\":\"insight\",\"tags\":[\"LVGL\",\"Industry\",\"Supply Chain\",\"RAM\",\"Embedded\"],\"readingTime\":9,\"wordCount\":1716,\"hash\":\"b1e791d1\"},{\"slug\":\"tutorial-lvgl-pro-custom-widgets\",\"title\":\"Building a Custom Widget with Scroll Effects in LVGL Pro\",\"description\":\"Learn how to build a custom LVGL Pro widget with a translate-on-scroll effect using XML definitions and C callbacks.\",\"date\":\"2026-04-02\",\"author\":\"fbiego\",\"type\":\"tutorial\",\"tags\":[\"LVGL\",\"Widgets\",\"LVGL Pro\",\"Tutorial\",\"XML\"],\"readingTime\":6,\"wordCount\":1044,\"hash\":\"85885091\",\"image\":\"/images/posts/tutorial-lvgl-pro-custom-widgets/tutorial-lvgl-pro-custom-widgets-hero.png\",\"imageHeight\":350,\"imageAlign\":\"top left\"},{\"slug\":\"announcement-lvgl-safe\",\"title\":\"Introducing LVGL Safe: Building UIs for Mission-Critical Devices\",\"description\":\"LVGL Safe is purpose-built for teams certifying medical, industrial, and automotive UIs. Your UI stack choice at certification locks in for the next decade. Choose carefully.\",\"date\":\"2026-03-31\",\"author\":\"mutahhar\",\"type\":\"announcement\",\"tags\":[\"LVGL\",\"LVGL Safe\",\"Functional Safety\",\"Announcement\"],\"readingTime\":8,\"wordCount\":1477,\"hash\":\"d8464c54\",\"image\":\"/images/posts/announcement-lvgl-safe/lvgl-safe-hero.png\",\"imageHeight\":350,\"imageAlign\":\"top left\"},{\"slug\":\"release-lvgl-pro-v1-1-2\",\"title\":\"LVGL Pro v1.1.2: Stability, Polish, and Rapid Bug Fixes\",\"description\":\"A stability-focused release with a custom context menu, intelligent resource conversion, 17 bug fixes, and one breaking change for widget API prop generation.\",\"date\":\"2026-03-27\",\"author\":\"william\",\"type\":\"release\",\"tags\":[\"LVGL\",\"LVGL Pro\",\"Release\",\"UI Editor\"],\"readingTime\":4,\"wordCount\":617,\"hash\":\"39075471\"},{\"slug\":\"lvgl-pro-project-structure-guide\",\"title\":\"LVGL Pro Project Structure and Naming Guide\",\"description\":\"How to organize assets, name widgets, and write reusable XML in the LVGL Pro Editor.\",\"date\":\"2026-03-17\",\"author\":\"fbiego\",\"type\":\"tutorial\",\"tags\":[\"LVGL\",\"LVGL Pro\",\"Best Practices\",\"tooling\",\"tutorial\",\"xml\"],\"readingTime\":4,\"wordCount\":681,\"hash\":\"8c570f69\",\"image\":\"/images/editor.png\",\"imageHeight\":300,\"imageAlign\":\"center\"},{\"slug\":\"release-v9-5\",\"title\":\"LVGL v9.5 is here\",\"description\":\"LVGL v9.5 brings native blur and drop shadow rendering, a rewritten Wayland driver with EGL support, a NanoVG OpenGL backend, runtime glTF manipulation, and RISC-V vector acceleration.\",\"date\":\"2026-02-18\",\"author\":\"andre\",\"type\":\"release\",\"tags\":[\"Release\",\"GPU\",\"3D\",\"Linux\",\"RISC-V\",\"Wayland\"],\"readingTime\":10,\"wordCount\":1846,\"hash\":\"0c857ce6\"},{\"slug\":\"showcase-cortex-m85-helium-benchmark\",\"title\":\"Cortex-M85 Helium Benchmark - Compiler Performance Comparison\",\"description\":\"Benchmarking GCC, LLVM, and Ac6 compilers on Cortex-M85 with Helium SIMD instruction set for LVGL rendering performance.\",\"date\":\"2024-08-30\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"performance\",\"arm\",\"renesas\",\"benchmark\",\"lvgl\"],\"readingTime\":4,\"wordCount\":607,\"hash\":\"97493f54\"},{\"slug\":\"announcement-ui-editor\",\"title\":\"LVGL UI Editor Development Begins\",\"description\":\"LVGL announces work on a new UI editor with XML/JSON DSL, component-based design, Git integration, and testing tools, targeting summer 2025 release.\",\"date\":\"2024-07-05\",\"author\":\"gabor\",\"type\":\"announcement\",\"tags\":[\"lvgl\",\"tooling\",\"ui-editor\",\"announcement\"],\"readingTime\":2,\"wordCount\":268,\"hash\":\"c5bf8ded\"},{\"slug\":\"showcase-4d-systems-gen4-esp32-32ct\",\"title\":\"4D Systems gen4-ESP32-32CT Board Certification Review\",\"description\":\"LVGL board certification review of the 4D Systems gen4-ESP32-32CT with ESP32-S3R8, 3.2 inch SPI display, and capacitive touch at Standard certification level.\",\"date\":\"2024-04-18\",\"author\":\"zjanosy\",\"type\":\"showcase\",\"tags\":[\"esp32\",\"board-review\",\"lvgl\",\"spi\",\"4d-systems\"],\"readingTime\":6,\"wordCount\":1044,\"hash\":\"925106a5\"},{\"slug\":\"showcase-4d-systems-esp32-50ct\",\"title\":\"4D Systems gen4-ESP32-50CT - Board Certification Review\",\"description\":\"Professional LVGL board certification review of the 4D Systems gen4-ESP32-50CT featuring ESP32-S3, 800x480 IPS display, and RGB interface.\",\"date\":\"2024-04-18\",\"author\":\"zjanosy\",\"type\":\"showcase\",\"tags\":[\"esp32\",\"board-review\",\"lvgl\",\"performance\",\"display\"],\"readingTime\":6,\"wordCount\":1111,\"hash\":\"ab072354\"},{\"slug\":\"release-v9-1\",\"title\":\"LVGL v9.1 Released\",\"description\":\"LVGL v9.1 brings crown input support, bitmap masks, Helium acceleration, VG-Lite enhancements, and over 150 bug fixes and improvements.\",\"date\":\"2024-03-25\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"lvgl\",\"release\",\"vg-lite\",\"performance\",\"freertos\"],\"readingTime\":5,\"wordCount\":817,\"hash\":\"86d8b81e\"},{\"slug\":\"release-v8-4-0\",\"title\":\"LVGL v8.4.0 Released\",\"description\":\"LVGL v8.4.0 brings Zephyr support for PXP acceleration, custom calendar year lists, and important bug fixes for canvas, charts, and screen loading.\",\"date\":\"2024-03-25\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"lvgl\",\"release\",\"update\",\"changelog\",\"zephyr\"],\"readingTime\":2,\"wordCount\":268,\"hash\":\"fb2aaa75\"},{\"slug\":\"showcase-renesas-ek-ra8d1\",\"title\":\"Renesas EK-RA8D1 - Professional Board Certification Review\",\"description\":\"LVGL Professional board certification review of the Renesas EK-RA8D1 featuring Cortex-M85, Dave2D GPU, and 480x854 IPS display.\",\"date\":\"2024-02-13\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"renesas\",\"board-review\",\"lvgl\",\"cortex-m85\",\"dave2d\",\"performance\"],\"readingTime\":4,\"wordCount\":779,\"hash\":\"715fdefd\"},{\"slug\":\"announcement-squareline-breakup\",\"title\":\"LVGL Ends Collaboration with SquareLine Studio\",\"description\":\"After two years of partnership, LVGL and SquareLine Studio are parting ways due to different visions, opening new opportunities for LVGL's UI development tools.\",\"date\":\"2024-02-12\",\"author\":\"gabor\",\"type\":\"announcement\",\"tags\":[\"lvgl\",\"squareline\",\"announcement\",\"partnership\"],\"readingTime\":2,\"wordCount\":250,\"hash\":\"6ab8a7f3\"},{\"slug\":\"showcase-riverdi-stm32-embedded-10\",\"title\":\"Riverdi STM32 Embedded 10.1\\\" Display - Board Certification Review\",\"description\":\"LVGL board certification review of the Riverdi STM32 Embedded 10.1\\\" display with STM32H757 dual-core MCU, 8MB RAM, and 1280x800 IPS display.\",\"date\":\"2024-02-06\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"stm32\",\"board-review\",\"riverdi\",\"lvgl\",\"performance\"],\"readingTime\":4,\"wordCount\":766,\"hash\":\"4047c355\"},{\"slug\":\"showcase-riverdi-stm32-7inch\",\"title\":\"Riverdi STM32 Embedded 7\\\" Display - Board Certification Review\",\"description\":\"Professional LVGL board certification review of Riverdi's STM32H7-based 7-inch display with 1024x600 IPS screen, industrial touchpad, and comprehensive connectivity.\",\"date\":\"2024-02-06\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"stm32\",\"riverdi\",\"board-review\",\"lvgl\",\"performance\"],\"readingTime\":5,\"wordCount\":804,\"hash\":\"19c767e4\"},{\"slug\":\"showcase-riverdi-stm32-5inch\",\"title\":\"Riverdi STM32 Embedded 5.0\\\" Display - Board Certification Review\",\"description\":\"Professional-grade board certification review of the Riverdi STM32 Embedded 5.0\\\" display featuring STM32U599, 2.5 MB RAM, and exceptional 850-nit brightness.\",\"date\":\"2024-02-06\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"stm32\",\"board-review\",\"riverdi\",\"lvgl\",\"performance\",\"embedded-display\"],\"readingTime\":4,\"wordCount\":679,\"hash\":\"607faa98\"},{\"slug\":\"showcase-generalplus-gp328530a\",\"title\":\"Generalplus GP328530A - Board Certification Review\",\"description\":\"Professional-level LVGL board certification for the Generalplus GP328530A HMI demo board featuring ARM926EJ-S at 513MHz and 800x480 IPS display.\",\"date\":\"2023-12-16\",\"author\":\"zjanosy\",\"type\":\"showcase\",\"tags\":[\"board-review\",\"lvgl\",\"performance\",\"arm\"],\"readingTime\":6,\"wordCount\":1025,\"hash\":\"ce43041e\"},{\"slug\":\"release-v8-3-11\",\"title\":\"LVGL v8.3.11 Released\",\"description\":\"LVGL v8.3.11 brings Tiny TTF font support, LittleFS driver integration, table cell user data, and numerous bug fixes.\",\"date\":\"2023-12-06\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"lvgl\",\"release\",\"changelog\",\"update\"],\"readingTime\":2,\"wordCount\":394,\"hash\":\"d2de5921\"},{\"slug\":\"showcase-renesas-ra6m3-hmi\",\"title\":\"Renesas RA6M3 HMI Board - Board Certification Review\",\"description\":\"LVGL board certification review of the RT-Thread and Renesas RA6M3 HMI board featuring Cortex-M4F at 120MHz, Dave2D GPU, and 4.3 inch IPS display.\",\"date\":\"2023-06-14\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"renesas\",\"board-review\",\"lvgl\",\"rt-thread\",\"performance\"],\"readingTime\":4,\"wordCount\":672,\"hash\":\"c5dff4af\"},{\"slug\":\"showcase-elecrow-esp-terminal-3-5\",\"title\":\"Elecrow ESP Terminal 3.5\\\" Board Certification Review\",\"description\":\"LVGL board certification review of the Elecrow ESP Terminal 3.5\\\" with ESP32-S3 dual-core, 8 MB PSRAM, and 480x320 capacitive touchscreen.\",\"date\":\"2023-05-09\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"esp32\",\"board-review\",\"lvgl\",\"performance\",\"arduino\"],\"readingTime\":4,\"wordCount\":672,\"hash\":\"e1fe1310\"},{\"slug\":\"showcase-dasqi-apollo4b\",\"title\":\"DASQI Apollo4B - Board Certification Review\",\"description\":\"LVGL Standard certification review of the DASQI Apollo4B smartwatch development board featuring Ambiq's low-power MCU, 454x454 AMOLED display, and rich sensor suite.\",\"date\":\"2023-05-03\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"board-review\",\"lvgl\",\"ambiq\",\"amoled\",\"wearables\",\"low-power\"],\"readingTime\":3,\"wordCount\":568,\"hash\":\"c6867086\"},{\"slug\":\"showcase-it986x-evb\",\"title\":\"IT986x EVB - Board Certification Review\",\"description\":\"LVGL Professional board certification review of the IT986x EVB with dual ARM9 CPUs at 800MHz, 64MB DDR2 RAM, and 2D graphics acceleration.\",\"date\":\"2023-03-17\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"board-review\",\"lvgl\",\"performance\",\"arm\",\"ite\"],\"readingTime\":4,\"wordCount\":720,\"hash\":\"1d8c1c47\"},{\"slug\":\"release-v8-3-5\",\"title\":\"LVGL v8.3.5 Released\",\"description\":\"LVGL v8.3.5 brings performance improvements for NXP PXP and VGLite GPU accelerators, enhanced STM32 DMA2D support, and various bug fixes.\",\"date\":\"2023-02-07\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"performance\",\"stm32\",\"nxp\"],\"readingTime\":1,\"wordCount\":179,\"hash\":\"ad07c993\"},{\"slug\":\"showcase-numaker-hmi-ma35d1-s1\",\"title\":\"NuMaker-HMI-MA35D1-S1 Board Certification Review\",\"description\":\"Professional LVGL board certification for Nuvoton's MA35D1 with dual Cortex-A35 cores, 256MB DDR, 7-inch 1024x600 IPS display, and 2D GPU.\",\"date\":\"2023-01-18\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"board-review\",\"nuvoton\",\"lvgl\",\"performance\",\"arm\"],\"readingTime\":4,\"wordCount\":699,\"hash\":\"b7db562d\"},{\"slug\":\"release-v8-3-4\",\"title\":\"LVGL v8.3.4 Released\",\"description\":\"Bug fix release with Arabic keyboard support, table navigation improvements, and fixes for SDL2 gradients, chart rendering, and transform accuracy.\",\"date\":\"2022-12-15\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"update\",\"changelog\"],\"readingTime\":2,\"wordCount\":240,\"hash\":\"5716a16f\"},{\"slug\":\"showcase-stm32h7b3i-dk\",\"title\":\"STM32H7B3I-DK - Board Certification Review\",\"description\":\"LVGL board certification review of the STM32H7B3I-DK Discovery kit with ARM Cortex-M7, 1.4 MB RAM, DMA2D GPU, and 4.3 inch display.\",\"date\":\"2022-12-08\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"stm32\",\"board-review\",\"lvgl\",\"performance\"],\"readingTime\":6,\"wordCount\":1089,\"hash\":\"27a9bc6f\"},{\"slug\":\"release-v8-3-2\",\"title\":\"LVGL v8.3.2 Released\",\"description\":\"Bug fix release for LVGL v8.3.2 with improvements to fragment events, SDL rendering, draw optimizations, and widget fixes.\",\"date\":\"2022-09-27\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"lvgl\",\"release\",\"update\",\"changelog\"],\"readingTime\":2,\"wordCount\":218,\"hash\":\"b951a5ff\"},{\"slug\":\"showcase-pikascript-python\",\"title\":\"PikaScript: Lightweight Python for Microcontrollers with LVGL\",\"description\":\"Run Python on microcontrollers with just 32 KB flash and 4 KB RAM. PikaScript brings LVGL8 support with MicroPython-compatible APIs and intelligent C bindings.\",\"date\":\"2022-08-24\",\"author\":\"lyon\",\"type\":\"showcase\",\"tags\":[\"python\",\"micropython\",\"pikascript\",\"embedded\",\"lvgl\"],\"readingTime\":5,\"wordCount\":940,\"hash\":\"ec9225c3\"},{\"slug\":\"release-v8-3-1\",\"title\":\"LVGL v8.3.1 Released\",\"description\":\"Bug fix release for LVGL v8.3 addressing LED drawing, slider symmetrical mode, and arc knob invalidation issues.\",\"date\":\"2022-07-28\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"lvgl\",\"release\",\"update\",\"changelog\"],\"readingTime\":1,\"wordCount\":108,\"hash\":\"a1495724\"},{\"slug\":\"release-v8-3-0\",\"title\":\"LVGL v8.3.0 Released\",\"description\":\"LVGL v8.3.0 brings layer-based transformations, inherit/initial style values, NXP GPU support, color fonts with emoji, ARM2D acceleration, and PubSub messaging.\",\"date\":\"2022-07-13\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"lvgl\",\"release\",\"changelog\",\"performance\",\"gpu\"],\"readingTime\":13,\"wordCount\":2451,\"hash\":\"f0d0cff0\"},{\"slug\":\"showcase-numaker-hmi-n9h30\",\"title\":\"NuMaker-HMI-N9H30 Board Certification Review\",\"description\":\"LVGL board certification review of the Nuvoton NuMaker-HMI-N9H30 featuring ARM926EJ-S at 300 MHz, 64 MB RAM, and 7-inch 800x480 display with 2D GPU acceleration.\",\"date\":\"2022-02-18\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"nuvoton\",\"board-review\",\"lvgl\",\"arm\",\"gpu\",\"rt-thread\"],\"readingTime\":4,\"wordCount\":739,\"hash\":\"02d18868\"},{\"slug\":\"release-v8-2\",\"title\":\"LVGL v8.2 Released with Abstract Render Layer and FFmpeg Support\",\"description\":\"LVGL v8.2 introduces an abstract render layer for external draw engines, FFmpeg support for video/images, font fallback, gradient dithering, and monkey testing.\",\"date\":\"2022-01-31\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"lvgl\",\"release\",\"update\",\"performance\",\"fonts\"],\"readingTime\":5,\"wordCount\":925,\"hash\":\"1feada6a\"},{\"slug\":\"release-v8-1\",\"title\":\"LVGL v8.1 Released with SDL GPU Support and Performance Boosts\",\"description\":\"LVGL v8.1 brings hardware-accelerated SDL rendering, 3rd party library integration, faster circle drawing, and RT-Thread/ESP32 component support.\",\"date\":\"2021-11-10\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"lvgl\",\"release\",\"performance\",\"sdl\",\"rt-thread\",\"esp32\"],\"readingTime\":7,\"wordCount\":1229,\"hash\":\"eaefd6f6\"},{\"slug\":\"showcase-wireless-tag-wt32-86\",\"title\":\"Wireless-Tag WT32-86 - Board Certification Review\",\"description\":\"LVGL board certification review of the Wireless-Tag WT-86-32-3ZW1 with ESP32-S2, 320x320 IPS display, and custom 8ms UI editor.\",\"date\":\"2021-09-09\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"esp32\",\"board-review\",\"lvgl\",\"wifi\",\"iot\"],\"readingTime\":5,\"wordCount\":836,\"hash\":\"8f613e1a\"},{\"slug\":\"showcase-wireless-tag-ido-smlcd72\",\"title\":\"Wireless-Tag IDO-SMLCD72 - Board Certification Review\",\"description\":\"LVGL Professional board certification for the Wireless-Tag IDO-SMLCD72-V1-2EC with OpenWRT, 1.2 GHz ARM Cortex-A7, and 7-inch 1024x600 display.\",\"date\":\"2021-09-09\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"board-review\",\"lvgl\",\"linux\",\"openwrt\",\"performance\"],\"readingTime\":5,\"wordCount\":858,\"hash\":\"ff54e691\"},{\"slug\":\"showcase-nxp-imxrt595-evk\",\"title\":\"NXP i.MX RT595 EVK - Board Certification Review\",\"description\":\"LVGL Standard certification review of the NXP i.MX RT595 EVK with ARM Cortex-M33, VGLITE GPU, 5 MB internal RAM, and a high-DPI 392x392 round display.\",\"date\":\"2021-06-19\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"nxp\",\"board-review\",\"lvgl\",\"performance\",\"gpu\"],\"readingTime\":5,\"wordCount\":905,\"hash\":\"fc04bb1e\"},{\"slug\":\"release-v8\",\"title\":\"LVGL v8.0 Released with CSS-Inspired Layouts and Powerful Scrolling\",\"description\":\"Major release featuring CSS Flexbox and Grid layouts, simplified scrolling, improved widgets, enhanced events, and a new architecture that makes LVGL more powerful and flexible.\",\"date\":\"2021-06-01\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"lvgl\",\"release\",\"layouts\",\"scrolling\",\"widgets\"],\"readingTime\":4,\"wordCount\":655,\"hash\":\"861c9eca\"},{\"slug\":\"showcase-nxp-lpc54s018\",\"title\":\"NXP LPCXpresso54S018 - Board Certification Review\",\"description\":\"LVGL board certification review of the NXP LPCXpresso54S018 development board featuring ARM Cortex-M4 at 220 MHz with advanced security capabilities.\",\"date\":\"2021-05-12\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"nxp\",\"board-review\",\"lvgl\",\"performance\"],\"readingTime\":7,\"wordCount\":1340,\"hash\":\"e2fd3e97\"},{\"slug\":\"showcase-nxp-imxrt1064-evk\",\"title\":\"NXP i.MX RT1064 EVK - Board Certification Review\",\"description\":\"LVGL board certification review of the NXP i.MX RT1064 EVK featuring ARM Cortex-M7 at 600 MHz, 1 MB internal RAM, 4 MB on-chip flash, and a 4.3 inch display.\",\"date\":\"2021-05-12\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"nxp\",\"board-review\",\"lvgl\",\"performance\",\"freertos\",\"zephyr\"],\"readingTime\":6,\"wordCount\":1174,\"hash\":\"a2a469c3\"},{\"slug\":\"showcase-nxp-imxrt1060-evk\",\"title\":\"NXP i.MX RT1060 EVK - Board Certification Review\",\"description\":\"LVGL board certification review of the NXP i.MX RT1060 EVK featuring ARM Cortex-M7 at 600 MHz, 1 MB RAM, PXP GPU, and a 4.3 inch display.\",\"date\":\"2021-05-12\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"nxp\",\"board-review\",\"lvgl\",\"performance\",\"freertos\"],\"readingTime\":7,\"wordCount\":1214,\"hash\":\"d578511a\"},{\"slug\":\"showcase-nxp-lpc54628\",\"title\":\"NXP LPCXpresso54628 - Board Certification Review\",\"description\":\"LVGL board certification review of the NXP LPCXpresso54628 development board featuring ARM Cortex-M4, 220 MHz, and 4.3 inch display with external RAM.\",\"date\":\"2021-03-24\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"nxp\",\"board-review\",\"lvgl\",\"performance\",\"arm\"],\"readingTime\":7,\"wordCount\":1241,\"hash\":\"48e25227\"},{\"slug\":\"showcase-nxp-imxrt1050-evk\",\"title\":\"NXP i.MX RT1050 EVK - Board Certification Review\",\"description\":\"LVGL board certification review of the NXP i.MX RT1050 EVK featuring ARM Cortex-M7 at 600 MHz, PXP GPU, and 4.3 inch display.\",\"date\":\"2021-03-24\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"nxp\",\"board-review\",\"lvgl\",\"performance\",\"arm\"],\"readingTime\":7,\"wordCount\":1210,\"hash\":\"17900bef\"},{\"slug\":\"showcase-yeacreate-nscreen32\",\"title\":\"YeaCreate Nscreen32 - Board Certification Review\",\"description\":\"LVGL board certification review of the YeaCreate Nscreen32, the world's first officially certified LVGL board featuring ESP32-WROVER-IE with 8MB PSRAM and 4-inch 480x320 display.\",\"date\":\"2021-03-23\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"esp32\",\"board-review\",\"lvgl\",\"iot\",\"wifi\",\"bluetooth\"],\"readingTime\":6,\"wordCount\":1057,\"hash\":\"f86a6204\"},{\"slug\":\"release-v7-11\",\"title\":\"LVGL v7.11.0 Released\",\"description\":\"LVGL v7.11.0 brings improved screen orientation management with software rotation support and bidirectional text animation.\",\"date\":\"2021-03-16\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"update\"],\"readingTime\":1,\"wordCount\":49,\"hash\":\"1079ffe4\"},{\"slug\":\"release-v7-10-1\",\"title\":\"LVGL v7.10.1 Released\",\"description\":\"Bug fix release for LVGL v7.10.1 with improvements to drawing, input devices, text rendering, and Arabic text support.\",\"date\":\"2021-02-16\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"bugfix\",\"update\"],\"readingTime\":1,\"wordCount\":115,\"hash\":\"78bd5f27\"},{\"slug\":\"release-v7-10\",\"title\":\"LVGL v7.10.0 Released\",\"description\":\"LVGL v7.10.0 brings input event handling for disabled objects, MicroPython spinbox improvements, and button matrix fixes.\",\"date\":\"2021-02-02\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"micropython\",\"widgets\"],\"readingTime\":1,\"wordCount\":71,\"hash\":\"a137712b\"},{\"slug\":\"announcement-gui-guider\",\"title\":\"NXP's GUI Guider: A Visual UI Editor Powered by LVGL\",\"description\":\"NXP announces GUI Guider, a free drag-and-drop UI design tool for creating embedded interfaces with LVGL for NXP MCUs.\",\"date\":\"2021-01-20\",\"author\":\"gabor\",\"type\":\"announcement\",\"tags\":[\"gui-guider\",\"nxp\",\"tools\",\"lvgl\"],\"readingTime\":2,\"wordCount\":257,\"hash\":\"1c59badb\"},{\"slug\":\"release-v7-9-1\",\"title\":\"LVGL v7.9.1 Released\",\"description\":\"Patch release fixing critical issues in color picker, dropdown, message box, and input device handling.\",\"date\":\"2021-01-19\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"bugfix\"],\"readingTime\":1,\"wordCount\":78,\"hash\":\"8b054755\"},{\"slug\":\"release-v7-9\",\"title\":\"LVGL v7.9 Released\",\"description\":\"LVGL v7.9 brings chart series management, image cache control, Zephyr RTOS support, and critical bugfixes for Arabic text and password input.\",\"date\":\"2021-01-05\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"changelog\",\"zephyr\"],\"readingTime\":2,\"wordCount\":202,\"hash\":\"09a720e6\"},{\"slug\":\"release-v7-8-1\",\"title\":\"LVGL v7.8.1 Released - Bugfix Update\",\"description\":\"Minor bugfix release for LVGL v7.8.1 addressing screen loading animations and scrollbar drag mode issues.\",\"date\":\"2020-12-15\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"bugfix\",\"update\"],\"readingTime\":1,\"wordCount\":57,\"hash\":\"ef55e029\"},{\"slug\":\"release-v7-8\",\"title\":\"LVGL v7.8.0: DMA2D Optimization and Arabic Text Support\",\"description\":\"Release of LVGL v7.8.0 with non-blocking DMA2D, enhanced Arabic text handling, KConfig support, and FPS measurement tools.\",\"date\":\"2020-12-01\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"performance\",\"internationalization\"],\"readingTime\":2,\"wordCount\":235,\"hash\":\"1acf950b\"},{\"slug\":\"release-v7-7-2\",\"title\":\"LVGL v7.7.2 Released\",\"description\":\"Bugfix release for LVGL v7.7.2 with improvements to polygon drawing, arc dragging, and button matrix handling.\",\"date\":\"2020-11-17\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"bugfix\"],\"readingTime\":1,\"wordCount\":86,\"hash\":\"ddc28f6e\"},{\"slug\":\"release-v7-7-1\",\"title\":\"LVGL v7.7.1 Released\",\"description\":\"Bug fix release for LVGL v7.7.1 addressing issues with button matrix controls, gauge styling, and group object removal.\",\"date\":\"2020-11-03\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"lvgl\",\"release\",\"bugfix\",\"v7\"],\"readingTime\":1,\"wordCount\":40,\"hash\":\"ce8a4430\"},{\"slug\":\"release-v7-7-0\",\"title\":\"LVGL v7.7.0 - GPU Support for NXP MCUs\",\"description\":\"LVGL v7.7.0 brings PXP and VG-Lite GPU acceleration for NXP MCUs, improved table functionality, and RTL layout fixes.\",\"date\":\"2020-10-20\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"lvgl\",\"release\",\"nxp\",\"performance\",\"changelog\"],\"readingTime\":1,\"wordCount\":160,\"hash\":\"7feba31d\"},{\"slug\":\"release-v7-6-1\",\"title\":\"LVGL v7.6.1 Released\",\"description\":\"Minor bugfix release addressing dropdown BIDI support, font rendering, style transitions, and focus handling.\",\"date\":\"2020-10-06\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"bugfix\",\"lvgl\"],\"readingTime\":1,\"wordCount\":101,\"hash\":\"952c3872\"},{\"slug\":\"release-v7-6-0\",\"title\":\"LVGL v7.6.0 Released\",\"description\":\"LVGL v7.6.0 brings optimized state change rendering and fixes for non-ASCII text in dropdown lists and large font format support.\",\"date\":\"2020-09-22\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"update\",\"changelog\"],\"readingTime\":1,\"wordCount\":159,\"hash\":\"3c6fbcd2\"},{\"slug\":\"release-v7-5-0\",\"title\":\"LVGL v7.5.0 Released\",\"description\":\"LVGL v7.5.0 brings cache management callbacks, GPU wait support, new built-in fonts, and critical bug fixes.\",\"date\":\"2020-09-15\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"performance\",\"fonts\"],\"readingTime\":1,\"wordCount\":175,\"hash\":\"b833ba4b\"},{\"slug\":\"release-v7-4\",\"title\":\"LVGL v7.4.0 Released\",\"description\":\"LVGL v7.4.0 introduces runtime font loading, style caching for improved performance, and enhanced arc controls with click-to-set value.\",\"date\":\"2020-09-01\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"fonts\",\"performance\",\"widgets\"],\"readingTime\":1,\"wordCount\":195,\"hash\":\"223605ab\"},{\"slug\":\"release-v7-3-1\",\"title\":\"LVGL v7.3.1 Released\",\"description\":\"Bug fix release addressing drawing issues, API naming corrections, and stability improvements across multiple widgets.\",\"date\":\"2020-08-18\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"update\",\"bugfix\"],\"readingTime\":1,\"wordCount\":164,\"hash\":\"1f558d80\"},{\"slug\":\"tutorial-micropython-stm32f746\",\"title\":\"MicroPython with LVGL on STM32F746 Discovery\",\"description\":\"Step-by-step guide to running LVGL's MicroPython binding on the STM32F746 Discovery board with display and touch support.\",\"date\":\"2020-08-10\",\"author\":\"gabor\",\"type\":\"tutorial\",\"tags\":[\"micropython\",\"stm32\",\"tutorial\",\"getting-started\"],\"readingTime\":2,\"wordCount\":259,\"hash\":\"786a2540\",\"series\":{\"name\":\"MicroPython\",\"part\":1}},{\"slug\":\"release-v7-3\",\"title\":\"LVGL v7.3 Released with Event Refresh API\",\"description\":\"LVGL v7.3 introduces refresh events for simplified UI updates, Arduino library support, and new GIF/BMP decoder libraries.\",\"date\":\"2020-08-04\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"arduino\",\"performance\"],\"readingTime\":2,\"wordCount\":311,\"hash\":\"48e104dd\"},{\"slug\":\"release-v7-2\",\"title\":\"LVGL v7.2 Released with Screen Transitions and Theme Extensions\",\"description\":\"LVGL v7.2 introduces animated screen transitions, display background customization, enhanced chart functionality, and a new theme extension system.\",\"date\":\"2020-07-21\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"animation\",\"themes\",\"charts\"],\"readingTime\":2,\"wordCount\":327,\"hash\":\"3d02dc51\"},{\"slug\":\"release-v7-1\",\"title\":\"LVGL v7.1 Released\",\"description\":\"LVGL v7.1 brings big-endian support, improved encoder input handling, and button matrix text alignment with important bug fixes.\",\"date\":\"2020-07-07\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"update\",\"changelog\"],\"readingTime\":1,\"wordCount\":184,\"hash\":\"ecfb0576\"},{\"slug\":\"release-v7\",\"title\":\"LVGL v7.0 Released with New Drawing Engine and Style System\",\"description\":\"LVGL v7.0 introduces a redesigned drawing engine with enhanced anti-aliasing, a flexible CSS-like style system, plus the announcement of LVGL LLC and rebranding from LittlevGL.\",\"date\":\"2020-06-01\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"announcement\",\"v7\"],\"readingTime\":5,\"wordCount\":893,\"hash\":\"d9a3b92d\"},{\"slug\":\"announcement-hebrew-bidi-support\",\"title\":\"LVGL Speaks Hebrew: RTL and Bidirectional Text Support\",\"description\":\"LVGL 6.1 introduces bidirectional text support for Hebrew, Arabic, and other RTL languages, enabling mixed LTR/RTL rendering on embedded devices.\",\"date\":\"2019-12-19\",\"author\":\"amirgon\",\"type\":\"announcement\",\"tags\":[\"lvgl\",\"fonts\",\"micropython\",\"internationalization\"],\"readingTime\":5,\"wordCount\":969,\"hash\":\"bc481b82\"},{\"slug\":\"release-v6-1\",\"title\":\"LVGL v6.1 Released with Bidirectional Text Support\",\"description\":\"LVGL v6.1 introduces bidirectional text support, subpixel rendering, font compression, and a new color picker widget.\",\"date\":\"2019-12-06\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"fonts\",\"widgets\",\"update\"],\"readingTime\":2,\"wordCount\":228,\"hash\":\"310d605c\"},{\"slug\":\"tutorial-micropython-pure-display-driver\",\"title\":\"Pure MicroPython Display Driver for ESP32\",\"description\":\"Building a pure MicroPython ILI9341 display driver for ESP32 using DMA and double buffering, with performance benchmarks and insights.\",\"date\":\"2019-08-05\",\"author\":\"amirgon\",\"type\":\"tutorial\",\"tags\":[\"micropython\",\"esp32\",\"tutorial\",\"lvgl\",\"display\",\"performance\"],\"readingTime\":21,\"wordCount\":4086,\"hash\":\"84c12cf0\"},{\"slug\":\"release-v6\",\"title\":\"LVGL v6.0 Released - General Events and Multi-Display Support\",\"description\":\"LVGL v6.0 introduces general events for all objects, improved font converter with kerning, multi-display support, and MicroPython integration.\",\"date\":\"2019-07-03\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"micropython\",\"fonts\",\"events\"],\"readingTime\":4,\"wordCount\":783,\"hash\":\"61db18ea\"},{\"slug\":\"tutorial-oled-monochrome\",\"title\":\"LVGL on Monochrome OLED Displays\",\"description\":\"Step-by-step guide to porting LVGL to a 128x64 monochrome OLED display with SH1106 driver using PIC24FJ microcontroller.\",\"date\":\"2019-05-06\",\"author\":\"costascal\",\"type\":\"tutorial\",\"tags\":[\"tutorial\",\"porting\",\"display\",\"oled\",\"hardware\"],\"readingTime\":8,\"wordCount\":1482,\"hash\":\"6cbc40fe\"},{\"slug\":\"tutorial-screen-snapshots\",\"title\":\"Taking Screen Snapshots in LVGL\",\"description\":\"Learn how to capture LVGL screen snapshots for pixel-level analysis and automated GUI testing using binary file exports and ImageMagick.\",\"date\":\"2019-04-25\",\"author\":\"beibean\",\"type\":\"tutorial\",\"tags\":[\"lvgl\",\"tutorial\",\"testing\",\"debugging\"],\"readingTime\":4,\"wordCount\":671,\"hash\":\"df029035\"},{\"slug\":\"tutorial-wsl-pc-simulator\",\"title\":\"Run LVGL PC Simulator on Windows 10 Using WSL and XLaunch\",\"description\":\"Step-by-step guide to running the LVGL PC simulator on Windows 10 using Windows Subsystem for Linux and VcXsrv XLaunch.\",\"date\":\"2019-02-25\",\"author\":\"beibean\",\"type\":\"tutorial\",\"tags\":[\"simulator\",\"windows\",\"linux\",\"tutorial\",\"getting-started\"],\"readingTime\":2,\"wordCount\":376,\"hash\":\"7a11b5d9\"},{\"slug\":\"release-v5-3\",\"title\":\"LVGL v5.3 - MicroPython Support and New Widgets\",\"description\":\"LVGL v5.3 brings MicroPython bindings, new object types including tileview and spinbox, plus official ESP32 and Zephyr integration.\",\"date\":\"2019-02-23\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"micropython\",\"esp32\",\"zephyr\",\"widgets\"],\"readingTime\":4,\"wordCount\":628,\"hash\":\"7f1973ee\"},{\"slug\":\"announcement-micropython-bindings\",\"title\":\"LVGL Micropython Bindings - High-Level GUI for Embedded Python\",\"description\":\"Introducing official Micropython bindings for LVGL, enabling Python developers to create embedded GUIs with interactive development and object-oriented design patterns.\",\"date\":\"2019-02-20\",\"author\":\"amirgon\",\"type\":\"announcement\",\"tags\":[\"micropython\",\"lvgl\",\"python\",\"embedded\",\"gui\"],\"readingTime\":12,\"wordCount\":2381,\"hash\":\"74a55b44\",\"series\":{\"name\":\"MicroPython\",\"part\":1}},{\"slug\":\"tutorial-ipod-nano6-lcd-esp32\",\"title\":\"Using iPod Nano 6 LCD with LVGL and ESP32\",\"description\":\"Step-by-step guide to driving an iPod Nano 6 MIPI display with LVGL using ESP32 and the SSD2805 bridge chip.\",\"date\":\"2019-02-02\",\"author\":\"techtoys\",\"type\":\"tutorial\",\"tags\":[\"esp32\",\"mipi\",\"hardware\",\"tutorial\",\"display\"],\"readingTime\":9,\"wordCount\":1623,\"hash\":\"eb99c72f\"},{\"slug\":\"tutorial-esp32-getting-started\",\"title\":\"ESP32 + LVGL Quick Start Guide\",\"description\":\"Get LVGL running on ESP32 in 15 minutes. Learn about SPI optimization, DMA, and how to achieve 30 FPS on 320x240 displays.\",\"date\":\"2019-01-31\",\"author\":\"gabor\",\"type\":\"tutorial\",\"tags\":[\"esp32\",\"tutorial\",\"getting-started\",\"performance\"],\"readingTime\":7,\"wordCount\":1346,\"hash\":\"27fd3bc1\"},{\"slug\":\"tutorial-hardware-button-stm32\",\"title\":\"Using Hardware Buttons with LVGL on STM32\",\"description\":\"Learn how to integrate physical hardware buttons with LVGL on the STM32F429I-DISC1 Discovery kit to control UI elements and LEDs.\",\"date\":\"2019-01-08\",\"author\":\"seyyah\",\"type\":\"tutorial\",\"tags\":[\"stm32\",\"tutorial\",\"getting-started\",\"hardware\",\"lvgl\"],\"readingTime\":3,\"wordCount\":477,\"hash\":\"f91ea936\"},{\"slug\":\"tutorial-qt-creator-pc-simulator\",\"title\":\"Running LVGL PC Simulator in Qt Creator on Windows\",\"description\":\"Step-by-step guide to setting up the LVGL PC simulator with Qt Creator 4.8.0 and MinGW 64-bit compiler on Windows 10.\",\"date\":\"2019-01-03\",\"author\":\"scarsfun\",\"type\":\"tutorial\",\"tags\":[\"simulator\",\"windows\",\"tutorial\",\"getting-started\"],\"readingTime\":3,\"wordCount\":455,\"hash\":\"2e4a459b\"},{\"slug\":\"tutorial-extending-objects\",\"title\":\"Extending LVGL Objects with Custom Functionality\",\"description\":\"Learn how to add custom data, design functions, and behaviors to LVGL objects using extended data, custom design functions, and signal handlers.\",\"date\":\"2018-12-13\",\"author\":\"gabor\",\"type\":\"tutorial\",\"tags\":[\"lvgl\",\"tutorial\",\"widgets\",\"customization\"],\"readingTime\":11,\"wordCount\":2085,\"hash\":\"9153edd8\"},{\"slug\":\"announcement-contributing-guide\",\"title\":\"Contributing to LVGL\",\"description\":\"A comprehensive guide to contributing to LVGL - help with documentation, report bugs, implement features, and join our friendly community.\",\"date\":\"2018-12-06\",\"author\":\"gabor\",\"type\":\"announcement\",\"tags\":[\"lvgl\",\"community\",\"contributing\",\"getting-started\"],\"readingTime\":6,\"wordCount\":1161,\"hash\":\"3913475e\"},{\"slug\":\"tutorial-png-decoder\",\"title\":\"Using PNG Images with LVGL's Custom Decoder Interface\",\"description\":\"Learn how to integrate the lodepng library with LVGL's image decoder interface to display PNG images in real-time on embedded systems.\",\"date\":\"2018-10-05\",\"author\":\"gabor\",\"type\":\"tutorial\",\"tags\":[\"lvgl\",\"tutorial\",\"images\",\"optimization\",\"c\"],\"readingTime\":10,\"wordCount\":1988,\"hash\":\"c9137bc4\"},{\"slug\":\"release-v5-2\",\"title\":\"LVGL v5.2 - New Objects, Drawing Features, and More\",\"description\":\"LVGL v5.2 introduces image buttons, calendar, arc, and preloader widgets, plus major improvements to drawing, image formats, and input handling.\",\"date\":\"2018-10-01\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"lvgl\",\"widgets\",\"animation\",\"fonts\",\"performance\"],\"readingTime\":3,\"wordCount\":507,\"hash\":\"53311acc\"},{\"slug\":\"release-v5-1\",\"title\":\"LVGL v5.1 - 4x Faster Anti-Aliasing and Sparse Fonts\",\"description\":\"Major performance update with 4x faster anti-aliasing, sparse font support for Asian languages, pixel-level opacity, and 50% code size reduction.\",\"date\":\"2018-03-12\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"release\",\"performance\",\"fonts\",\"optimization\"],\"readingTime\":5,\"wordCount\":988,\"hash\":\"b1b860f7\"},{\"slug\":\"tutorial-linux-framebuffer\",\"title\":\"Create Embedded GUIs with Linux Frame Buffer and LVGL\",\"description\":\"Learn how to create embedded GUIs on Linux systems using the frame buffer device with LVGL for simple, fast, and portable graphical interfaces.\",\"date\":\"2018-01-03\",\"author\":\"gabor\",\"type\":\"tutorial\",\"tags\":[\"linux\",\"tutorial\",\"getting-started\",\"porting\",\"display\"],\"readingTime\":5,\"wordCount\":990,\"hash\":\"47799a2c\"},{\"slug\":\"release-v5\",\"title\":\"LVGL v5.0 - Unicode Support, Themes, and Simpler Architecture\",\"description\":\"LVGL v5.0 introduces Unicode support with UTF-8 decode, style themes, new smartphone-like widgets (keyboard, roller, tabview), and a simplified architecture with object type inheritance.\",\"date\":\"2017-12-21\",\"author\":\"gabor\",\"type\":\"release\",\"tags\":[\"lvgl\",\"release\",\"changelog\",\"unicode\",\"widgets\"],\"readingTime\":2,\"wordCount\":363,\"hash\":\"f193a7c0\"},{\"slug\":\"showcase-pic32mz-da\",\"title\":\"PIC32MZ DA - Microchip's New 32-Bit MCU for Embedded Graphics\",\"description\":\"Microchip's PIC32MZ DA brings GPU acceleration and 32 MB on-chip DDR2 RAM to embedded graphics, enabling microprocessor-like GUI capabilities in a single-chip system.\",\"date\":\"2017-07-23\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"pic32\",\"microchip\",\"gpu\",\"hardware\",\"performance\"],\"readingTime\":4,\"wordCount\":680,\"hash\":\"558d93a2\"},{\"slug\":\"showcase-stm32f429-discovery\",\"title\":\"STM32F429 Discovery Board: LVGL Port and Demo\",\"description\":\"Step-by-step guide to porting LVGL to the STM32F429 Discovery board with a 2.4-inch TFT display and resistive touchpad.\",\"date\":\"2017-07-15\",\"author\":\"gabor\",\"type\":\"showcase\",\"tags\":[\"stm32\",\"board-review\",\"lvgl\",\"porting\",\"getting-started\"],\"readingTime\":4,\"wordCount\":695,\"hash\":\"303a90cf\"},{\"slug\":\"tutorial-dithering-16bit\",\"title\":\"Using Dithering for Smooth Images on 16-Bit Displays\",\"description\":\"Learn how to apply dithering to eliminate color banding on 16-bit displays and achieve smooth gradients without performance loss.\",\"date\":\"2017-07-03\",\"author\":\"gabor\",\"type\":\"tutorial\",\"tags\":[\"tutorial\",\"display\",\"optimization\",\"getting-started\"],\"readingTime\":5,\"wordCount\":849,\"hash\":\"8105de6d\"}],\"authors\":{\"gabor\":{\"name\":\"Gabor Kiss-Vamosi\",\"avatar\":\"/images/authors/gabor.png\",\"role\":\"CEO \u0026 Creator of LVGL\"},\"zjanosy\":{\"name\":\"Zoltan Janosy\",\"avatar\":\"/images/authors/zjanosy.png\",\"role\":\"Community Contributor\"},\"amirgon\":{\"name\":\"Amir Gonnen\",\"avatar\":\"/images/authors/amirgon.png\",\"role\":\"Community Contributor\"},\"william\":{\"name\":\"William Sember\",\"avatar\":\"/images/authors/william.jpeg\",\"role\":\"Team Lead - LVGL Pro\"},\"mutahhar\":{\"name\":\"Mutahhar Mustafa Khan\",\"avatar\":\"/images/authors/mutahhar.png\",\"role\":\"Head of Ecosystem at LVGL\"},\"fbiego\":{\"name\":\"Felix Biego\",\"avatar\":\"/images/authors/fbiego.png\",\"role\":\"Embedded UI Developer - LVGL Services\"},\"beibean\":{\"name\":\"Mario Rubio Gomez\",\"avatar\":\"/images/authors/beibean.png\",\"role\":\"Community Contributor\"},\"techtoys\":{\"name\":\"John Leung\",\"avatar\":\"/images/authors/techtoys.png\",\"role\":\"Community Contributor\"},\"seyyah\":{\"name\":\"Seyyah\",\"avatar\":\"/images/authors/seyyah.png\",\"role\":\"Community Contributor\"},\"scarsfun\":{\"name\":\"Pusillus\",\"avatar\":\"/images/authors/scarsfun.png\",\"role\":\"Community Contributor\"},\"lyon\":{\"name\":\"Lyon Lisboa\",\"avatar\":\"/images/authors/lyon.png\",\"role\":\"Community Contributor\"},\"jonathan\":{\"name\":\"Jonathan Hoffmann\",\"avatar\":\"/images/authors/jonathan.jpeg\",\"role\":\"Head of Sales, EMEA/NA\"},\"costascal\":{\"name\":\"Costas Calamvokis\",\"avatar\":\"/images/authors/costascal.png\",\"role\":\"Community Contributor\"},\"andre\":{\"name\":\"Andre Costa\",\"avatar\":\"/images/authors/andre.jpeg\",\"role\":\"Team Lead - LVGL Open\"},\"akos\":{\"name\":\"Akos Vandra-Meyer\",\"avatar\":\"/images/authors/akos.png\",\"role\":\"LVGL Open Team\"}},\"translations\":{\"latestPosts\":\"Latest Posts\",\"noPosts\":\"No posts found\",\"noResults\":\"No posts match your search\",\"minuteRead\":\"min read\",\"writtenBy\":\"Written by\",\"searchPlaceholder\":\"Search posts...\",\"tagsLabel\":\"Filter by tag\",\"typesLabel\":\"Type\",\"loadMore\":\"Load more\",\"loadingMore\":\"Fetching more pixels for you...\",\"showing\":\"Showing\",\"of\":\"of\",\"posts\":\"posts\",\"clearAll\":\"Clear filters\",\"meetAuthors\":\"Meet our authors →\",\"typeLabels\":{\"tutorial\":\"Tutorial\",\"showcase\":\"Showcase\",\"release\":\"Release\",\"announcement\":\"Announcement\",\"insight\":\"Insight\"},\"typeVerbs\":{\"tutorial\":\"teaches\",\"showcase\":\"showcases\",\"release\":\"releases\",\"announcement\":\"announces\",\"insight\":\"shares\"},\"remaining\":\"{count} remaining\",\"noTagsFound\":\"No tags found.\",\"seriesPartLabel\":\"Part {current} of {total}\"},\"heroContent\":{\"title\":\"Blog\",\"heroTitle1\":\"Follow our journey\",\"heroTitle2\":\"Pixel by Pixel\",\"description\":\"Tutorials, releases, case studies, and community stories on how embedded UIs are designed, built, and shipped with LVGL.\"}}]}]]\n"])</script></body></html>