Shirakumo / alloy

A new user interface protocol and toolkit implementation
https://shirakumo.github.io/alloy
zlib License
181 stars 12 forks source link

GLFW call to SET-WINDOW-ICON failed with FEATURE-UNAVAILABLE on Wayland #37

Closed aerphanas closed 6 months ago

aerphanas commented 7 months ago

System Info

Linux Distro: Fedora Silverblue 39 (Gnome 45.5) & Gentoo (Sway 1.8.1-r2) SBCL: 2.3.6-2 (Fedora Silverblue) & 2.3.5 (Gentoo)

Expected Behavior

i can run alloy-example

Current Behavior

REPL Buffer

CL-USER> (org.shirakumo.alloy.examples:simple-window)
STYLE-WARNING:
   slot names with the same SYMBOL-NAME but different SYMBOL-PACKAGE (possible
   package problem) for class
   #<STANDARD-CLASS ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:WINDOW>:
       (ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW::ICON ORG.SHIRAKUMO.FRAF.GLFW:ICON)
       (ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:CURSOR
        ORG.SHIRAKUMO.FRAF.GLFW:CURSOR)
STYLE-WARNING:
   slot names with the same SYMBOL-NAME but different SYMBOL-PACKAGE (possible
   package problem) for class
   #<STANDARD-CLASS ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:WINDOW>:
       (ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW::ICON ORG.SHIRAKUMO.FRAF.GLFW:ICON)
       (ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:CURSOR
        ORG.SHIRAKUMO.FRAF.GLFW:CURSOR)
; Debugger entered on #<ORG.SHIRAKUMO.FRAF.GLFW:GLFW-ERROR {1002687103}>

Debugger Buffer

GLFW call to SET-WINDOW-ICON failed with FEATURE-UNAVAILABLE:
  Wayland: The platform does not support setting the window icon
   [Condition of type ORG.SHIRAKUMO.FRAF.GLFW:GLFW-ERROR]

Restarts:
 0: [RETRY] Retry SLY mREPL evaluation request.
 1: [*ABORT] Return to SLY's top level.
 2: [ABORT] abort thread (#<THREAD tid=4231 "sly-channel-1-mrepl-remote-1" RUNNING {10010B0003}>)

Backtrace:
 0: ((:METHOD (SETF ORG.SHIRAKUMO.FRAF.GLFW:ICON) :BEFORE (T ORG.SHIRAKUMO.FRAF.GLFW:WINDOW)) NIL #<ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:WINDOW (ORG.SHIRAKUMO.ALLOY:EXTENT 0.0px 0.0px 0.0px 0.0px) {1005F338..
      Locals:
        ORG.SHIRAKUMO.FRAF.GLFW::ICONS = NIL
        ORG.SHIRAKUMO.FRAF.GLFW::IMAGES = #.(SB-SYS:INT-SAP #X7F8F3CF34E90)
        ORG.SHIRAKUMO.FRAF.GLFW:WINDOW = #<ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:WINDOW (ORG.SHIRAKUMO.ALLOY:EXTENT 0.0px 0.0px 0.0px 0.0px) {1005F338D3}>
 1: ((SB-PCL::EMF (SETF ORG.SHIRAKUMO.FRAF.GLFW:ICON)) #<unused argument> #<unused argument> NIL #<ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:WINDOW (ORG.SHIRAKUMO.ALLOY:EXTENT 0.0px 0.0px 0.0px 0.0px) {1005F338D..
      Locals:
        SB-PCL::.ARG0. = NIL
        SB-PCL::.ARG1. = #<ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:WINDOW (ORG.SHIRAKUMO.ALLOY:EXTENT 0.0px 0.0px 0.0px 0.0px) {1005F338D3}>
 2: ((SB-PCL::EMF (SETF ORG.SHIRAKUMO.ALLOY.WINDOWING:ICON)) #<unused argument> #<unused argument> NIL #<ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:WINDOW (ORG.SHIRAKUMO.ALLOY:EXTENT 0.0px 0.0px 0.0px 0.0px) {100..
      Locals:
        SB-PCL::.ARG0. = NIL
        SB-PCL::.ARG1. = #<ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:WINDOW (ORG.SHIRAKUMO.ALLOY:EXTENT 0.0px 0.0px 0.0px 0.0px) {1005F338D3}>
 3: ((:METHOD ORG.SHIRAKUMO.ALLOY.WINDOWING:MAKE-WINDOW (ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:SCREEN)) #<ORG.SHIRAKUMO.ALLOY.EXAMPLES::SCREEN 1x1 HIDDEN @7F8F3C253A50> :TITLE NIL :ICON NIL :BOUNDS NIL :DECO..
      Locals:
        SB-PCL::.CLASS-ARG. = ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:WINDOW
        #:.DEFAULTING-TEMP. = NIL
        #:.DEFAULTING-TEMP.#1 = NIL
        #:.DEFAULTING-TEMP.#2 = NIL
        #:.DEFAULTING-TEMP.#3 = :NORMAL
        #:.DEFAULTING-TEMP.#4 = NIL
        #:.DEFAULTING-TEMP.#5 = NIL
        ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW::BACKGROUND-COLOR = (ORG.SHIRAKUMO.ALLOY.COLORED:RGB 0.0 0.0 0.0 1.0)
        ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW::DECORATED-P = T
        #:N-SUPPLIED-10 = 0
        #:N-SUPPLIED-8 = 0
        #:N-SUPPLIED-9 = 0
        #:NEW1 = NIL
        ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW::RESIZABLE-P = T
        ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:SCREEN = #<ORG.SHIRAKUMO.ALLOY.EXAMPLES::SCREEN 1x1 HIDDEN @7F8F3C253A50>
        ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:WINDOW = #<ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW:WINDOW (ORG.SHIRAKUMO.ALLOY:EXTENT 0.0px 0.0px 0.0px 0.0px) {1005F338D3}>
 4: ((FLET "THUNK0" :IN ORG.SHIRAKUMO.ALLOY.EXAMPLES:SIMPLE-WINDOW) #<ORG.SHIRAKUMO.ALLOY.EXAMPLES::SCREEN 1x1 HIDDEN @7F8F3C253A50>)
      Locals:
        SCREEN = #<ORG.SHIRAKUMO.ALLOY.EXAMPLES::SCREEN 1x1 HIDDEN @7F8F3C253A50>
 5: ((FLET "INIT2" :IN ORG.SHIRAKUMO.ALLOY.EXAMPLES:SIMPLE-WINDOW) #<ORG.SHIRAKUMO.ALLOY.EXAMPLES::SCREEN 1x1 HIDDEN @7F8F3C253A50>)
      Locals:
        SB-C::.ANONYMOUS. = #<ORG.SHIRAKUMO.ALLOY.EXAMPLES::SCREEN 1x1 HIDDEN @7F8F3C253A50>
 6: (ORG.SHIRAKUMO.ALLOY.RENDERERS.GLFW::CALL-WITH-SCREEN #<FUNCTION (FLET "INIT2" :IN ORG.SHIRAKUMO.ALLOY.EXAMPLES:SIMPLE-WINDOW) {53D8B06B}> ORG.SHIRAKUMO.ALLOY.EXAMPLES::SCREEN :BASE-SCALE 2.0)
      Locals:
        FUNCTION = #<FUNCTION (FLET "INIT2" :IN ORG.SHIRAKUMO.ALLOY.EXAMPLES:SIMPLE-WINDOW) {53D8B06B}>
        #:G5 = ORG.SHIRAKUMO.ALLOY.EXAMPLES::SCREEN
        SCREEN = #<ORG.SHIRAKUMO.ALLOY.EXAMPLES::SCREEN 1x1 HIDDEN @7F8F3C253A50>
        START = 135214565
        SB-DEBUG::MORE = (:BASE-SCALE 2.0)
 7: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ORG.SHIRAKUMO.ALLOY.EXAMPLES:SIMPLE-WINDOW) #<NULL-LEXENV>)
      Locals:
        SB-KERNEL:LEXENV = #<NULL-LEXENV>
        SB-IMPL::ORIGINAL-EXP = (ORG.SHIRAKUMO.ALLOY.EXAMPLES:SIMPLE-WINDOW)
 8: (EVAL (ORG.SHIRAKUMO.ALLOY.EXAMPLES:SIMPLE-WINDOW))
      Locals:
        SB-IMPL::ORIGINAL-EXP = (ORG.SHIRAKUMO.ALLOY.EXAMPLES:SIMPLE-WINDOW)
 9: ((LAMBDA NIL :IN SLYNK-MREPL::MREPL-EVAL-1))
      Locals:
        SLYNK-MREPL::FORM = (ORG.SHIRAKUMO.ALLOY.EXAMPLES:SIMPLE-WINDOW)
        SLYNK-MREPL::IN = #<SB-IMPL::STRING-INPUT-STREAM {7F8F435FDE13}>
10: (SLYNK::CALL-WITH-RETRY-RESTART "Retry SLY mREPL evaluation request." #<FUNCTION (LAMBDA NIL :IN SLYNK-MREPL::MREPL-EVAL-1) {10032492AB}>)
      Locals:
        MSG = "Retry SLY mREPL evaluation request."
        THUNK = #<FUNCTION (LAMBDA () :IN SLYNK-MREPL::MREPL-EVAL-1) {10032492AB}>
11: ((LAMBDA NIL :IN SLYNK-MREPL::MREPL-EVAL-1))
      [No Locals]
12: ((LAMBDA NIL :IN SLYNK::CALL-WITH-LISTENER))
      Locals:
        SB-C::OBJECT = #<SLYNK-MREPL::MREPL mrepl-1-1>
        SLYNK::SAVING = NIL
13: (SLYNK::CALL-WITH-BINDINGS ((*PACKAGE* . #<PACKAGE "COMMON-LISP-USER">) (*DEFAULT-PATHNAME-DEFAULTS* . #P"/var/home/adivin/") (* . #1=(ALLOY-EXAMPLES)) (** . #<QL-DIST:DIST shirakumo 2024.02.29-15.16...
      Locals:
        ALIST = ((*PACKAGE* . #<PACKAGE "COMMON-LISP-USER">) (*DEFAULT-PATHNAME-DEFAULTS* . #P"/var/home/adivin/") (* ALLOY-EXAMPLES) (** . #<QL-DIST:DIST shirakumo 2024.02.29-15.16.04>) (***) (/ (ALLOY-EXAMPLES)) ..)
        FUN = #<FUNCTION (LAMBDA () :IN SLYNK::CALL-WITH-LISTENER) {100324927B}>
14: (SLYNK-MREPL::MREPL-EVAL-1 #<SLYNK-MREPL::MREPL mrepl-1-1> "(org.shirakumo.alloy.examples:simple-window)")
      Locals:
        REPL = #<SLYNK-MREPL::MREPL mrepl-1-1>
        STRING = "(org.shirakumo.alloy.examples:simple-window)"
15: (SLYNK-MREPL::MREPL-EVAL #<SLYNK-MREPL::MREPL mrepl-1-1> "(org.shirakumo.alloy.examples:simple-window)")
      Locals:
        ABORTED = #<ORG.SHIRAKUMO.FRAF.GLFW:GLFW-ERROR {1002687103}>
        REPL = #<SLYNK-MREPL::MREPL mrepl-1-1>
        RESULTS = NIL
        STRING = "(org.shirakumo.alloy.examples:simple-window)"
16: (SLYNK:PROCESS-REQUESTS NIL)
      Locals:
        TIMEOUT = NIL
      Catch-tags:
        SLYNK::STOP-PROCESSING
17: ((LAMBDA NIL :IN SLYNK::SPAWN-CHANNEL-THREAD))
      Locals:
        SLYNK::CHANNEL = #<SLYNK-MREPL::MREPL mrepl-1-1>
18: ((LAMBDA NIL :IN SLYNK::SPAWN-CHANNEL-THREAD))
      Locals:
        SLYNK::CHANNEL = #<SLYNK-MREPL::MREPL mrepl-1-1>
        SLYNK::CONNECTION = #<SLYNK::MULTITHREADED-CONNECTION {1004522E63}>
19: (SLYNK-SBCL::CALL-WITH-BREAK-HOOK #<FUNCTION SLYNK:SLYNK-DEBUGGER-HOOK> #<FUNCTION (LAMBDA NIL :IN SLYNK::SPAWN-CHANNEL-THREAD) {10016F000B}>)
      Locals:
        CONTINUATION = #<FUNCTION (LAMBDA () :IN SLYNK::SPAWN-CHANNEL-THREAD) {10016F000B}>
        HOOK = #<FUNCTION SLYNK:SLYNK-DEBUGGER-HOOK>
20: ((FLET SLYNK-BACKEND:CALL-WITH-DEBUGGER-HOOK :IN "/var/home/adivin/.emacs.d/elpaca/repos/sly/slynk/backend/sbcl.lisp") #<FUNCTION SLYNK:SLYNK-DEBUGGER-HOOK> #<FUNCTION (LAMBDA NIL :IN SLYNK::SPAWN-CHA..
      Locals:
        SLYNK-SBCL::FUN = #<FUNCTION (LAMBDA () :IN SLYNK::SPAWN-CHANNEL-THREAD) {10016F000B}>
        SLYNK-SBCL::HOOK = #<FUNCTION SLYNK:SLYNK-DEBUGGER-HOOK>
21: ((LAMBDA NIL :IN SLYNK::CALL-WITH-LISTENER))
      Locals:
        SB-C::OBJECT = #<SLYNK-MREPL::MREPL mrepl-1-1>
        SLYNK::SAVING = NIL
22: (SLYNK::CALL-WITH-BINDINGS ((*PACKAGE* . #<PACKAGE "COMMON-LISP-USER">) (*DEFAULT-PATHNAME-DEFAULTS* . #P"/var/home/adivin/") (* . #1=(ALLOY-EXAMPLES)) (** . #<QL-DIST:DIST shirakumo 2024.02.29-15.16...
      Locals:
        ALIST = ((*PACKAGE* . #<PACKAGE "COMMON-LISP-USER">) (*DEFAULT-PATHNAME-DEFAULTS* . #P"/var/home/adivin/") (* ALLOY-EXAMPLES) (** . #<QL-DIST:DIST shirakumo 2024.02.29-15.16.04>) (***) (/ (ALLOY-EXAMPLES)) ..)
        FUN = #<FUNCTION (LAMBDA () :IN SLYNK::CALL-WITH-LISTENER) {10016F005B}>
23: ((LAMBDA NIL :IN SLYNK::SPAWN-CHANNEL-THREAD))
      Locals:
        SLYNK::CONNECTION = #<SLYNK::MULTITHREADED-CONNECTION {1004522E63}>
24: ((FLET SB-UNIX::BODY :IN SB-THREAD::RUN))
      [No Locals]
      Catch-tags:
        SB-THREAD::%RETURN-FROM-THREAD
25: ((FLET "WITHOUT-INTERRUPTS-BODY-172" :IN SB-THREAD::RUN))
      [No Locals]
26: ((FLET SB-UNIX::BODY :IN SB-THREAD::RUN))
      [No Locals]
      Catch-tags:
        SB-THREAD::%ABORT-THREAD
        SB-IMPL::%END-OF-THE-WORLD
        SB-INT:TOPLEVEL-CATCHER
27: ((FLET "WITHOUT-INTERRUPTS-BODY-165" :IN SB-THREAD::RUN))
      [No Locals]
28: (SB-THREAD::RUN)
      [No Locals]
29: ("foreign function: call_into_lisp_")
      [No Locals]

Steps to Reproduce

  1. use Wayland Gnome or Sway
  2. open sly in Emacs
  3. run (ql-dist:install-dist "http://dist.shirakumo.org/shirakumo.txt")
  4. run (ql:quickload 'alloy-examples)
  5. run (org.shirakumo.alloy.examples:simple-window)
Shinmera commented 6 months ago

Fixed in d4eb1a0