Skip to content

perry/ui: UI didnt update with state change (Linux/GTK4) #791

@genius-alray

Description

@genius-alray

What happened

The counter UI text didnt react to state changes on Linux/GTK4

What you expected

The app should work as same as the example

Minimal reproduction

import { App, VStack, Text, Button, State } from "perry/ui";

const count = State(0);

App({
  title: "Counter",
  width: 400,
  height: 300,
  body: VStack(16, [
    Text(`Count: ${count.value}`),
    Button("Increment", () => {
      count.set(count.value + 1);
      console.log("clicked", count.value);
    }),
  ]),
});

Command you ran:

perry run

Environment

  • Perry version: perry 0.5.891
  • Host OS: ArchLinux x86_64
  • Target: native
  • Installed via: bun

Diagnostic output

Perry Doctor

Environment Checks
──────────────────
[OK] perry version: 0.5.891
[OK] update status: up to date
[OK] clang (LLVM codegen): clang version 22.1.5
[OK] system linker (cc): cc (GCC) 16.1.1 20260430
[OK] runtime library: /home//.bun/install/global/node_modules/@perryts/perry-linux-x64/lib/libperry_runtime.a
[OK] project config (perry.toml): found

All checks passed!

console output

Collecting modules...
Found 1 module(s): 1 native, 0 JavaScript
Generating code...
Wrote object file: main_ts.o
Linking (runtime-only)...
[strip-dedup] Processing: /home/<username>/.bun/install/global/node_modules/@perryts/perry-linux-x64/lib/libperry_ui_gtk4.a
[strip-dedup] llvm-ar found: /home/<username>/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin/llvm-ar
[strip-dedup] libperry_ui_gtk4.a: 466 total members
[strip-dedup] libperry_stdlib.a found: /home/<username>/.bun/install/global/node_modules/@perryts/perry-linux-x64/lib/libperry_stdlib.a — 1076 members loaded
[strip-dedup] libperry_runtime.a found: /home/<username>/.bun/install/global/node_modules/@perryts/perry-linux-x64/lib/libperry_runtime.a — 17 members loaded
[strip-dedup] Total exclude set: 1093 members from stdlib+runtime .lib files
[strip-dedup] rlib NOT found: /home/<username>/.bun/install/global/node_modules/@perryts/perry-linux-x64/lib/libperry_ui_gtk4.rlib
[strip-dedup] libperry_stdlib.a symbols loaded: 119672
[strip-dedup] libperry_runtime.a symbols loaded: 4534
[strip-dedup] libperry_ui_gtk4.a: keeping 114 of 466 members (excluded: 87 by symbol-subset, 265 by name pattern)
[strip-dedup] Building trimmed libperry_ui_gtk4.a: 114 objects total
[strip-dedup] OK: /home/<username>/.bun/install/global/node_modules/@perryts/perry-linux-x64/lib/libperry_ui_gtk4.a -> /tmp/perry_strip_81161/_libperry_ui_gtk4.a_trimmed.lib
Linking perry/ui (native UI) from /tmp/perry_strip_81161/_libperry_ui_gtk4.a_trimmed.lib
Wrote executable: my-app
Binary size: 3.1MB

Running my-app...


(my-app:81368): Gdk-WARNING **: 19:08:46.728: vkAcquireNextImageKHR(): A surface has changed in such a way that it is no longer compatible with the swapchain. (VK_ERROR_OUT_OF_DATE_KHR) (-1000001004)
clicked 1
clicked 2
clicked 3
clicked 4
clicked 5
clicked 6
clicked 7
clicked 8

But the text label kept showing "Count: 0"

Anything else

also occur in other UI examples (Slider,Option,etc...)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions