Makie live animation not working

Hi,
I am trying to visualize a simulation live in makie.
However my plot is not updated in VSCode when the observable it depends on is changed. The following is my code:

function getStickPositions(c::Config)
    unitVectorAlongStick=[cos(c.ϕ),sin(c.ϕ)];
    leftPos=c.Rg-l/2*unitVectorAlongStick;
    rightPos=c.Rg+l/2*unitVectorAlongStick;
    return [[leftPos[1],rightPos[1]],[leftPos[2],rightPos[2]]]
end
currentConfig=Node(Config([0,1],0.1,[0,0],0));
fig=CairoMakie.Figure()
axis=Axis(fig[1, 1])
xlims!(axis,(-3,3))
ylims!(axis,(-1,3))
axis.aspect=DataAspect()
xPosObs=lift(c->getStickPositions(c)[1],currentConfig)
yPosObs=lift(c->getStickPositions(c)[2],currentConfig)
#drawConfig(fig,currentConfig)
Makie.lines!(axis,xPosObs,yPosObs)
display(fig)


fps = 20
nframes = 120

for i=1:nframes
    currentConfig[]=updateConfig(currentConfig[],1/fps)
    sleep(1/fps)
end

A “Config” is a state in the simulation which can be drawn. “updateConfig” implements the update logic for the simulation.

Once I type “fig” in the terminal, the correct figure is plotted again. However the existing is not updated when the observable it depends on changes.
What’s going wring here?

Cairomakie makes static pngs or svgs that are then shown in the vscode plot pane. Changing an observable updates the relevant axis / figure state but it neither causes a new representation of the figure to be shown, nor is the CairoMakie output in any way backlinked to the figure. The backends that can update displayed figures are GLMakie and WGLMakie. Glmakie uses native windows, wglmakie can be embedded in web contexts, so it should in principle also work in VSCode. But it’s the least polished of the three backends currently

Ok, that makes sense, thank you!
Unfortunately I do get a strange error when trying GLMakie:

libGL error: MESA-LOADER: failed to open radeonsi: /usr/bin/../lib/julia/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /usr/lib/dri/radeonsi_dri.so) (search paths /usr/lib/dri)
libGL error: failed to load driver: radeonsi
libGL error: MESA-LOADER: failed to open radeonsi: /usr/bin/../lib/julia/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /usr/lib/dri/radeonsi_dri.so) (search paths /usr/lib/dri)
libGL error: failed to load driver: radeonsi
libGL error: MESA-LOADER: failed to open swrast: /usr/bin/../lib/julia/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /usr/lib/dri/swrast_dri.so) (search paths /usr/lib/dri)
libGL error: failed to load driver: swrast
┌ Warning:     GLFW couldn't create an OpenGL window.
│     This likely means, you don't have an OpenGL capable Graphic Card,
│     or you don't have an OpenGL 3.3 capable video driver installed.
│     Have a look at the troubleshooting section in the GLMakie readme:
│     https://github.com/JuliaPlots/GLMakie.jl#troubleshooting-opengl.
└ @ GLMakie ~/.julia/packages/GLMakie/rcykA/src/screen.jl:324
ERROR: LoadError: GLFWError (VERSION_UNAVAILABLE): GLX: Failed to create context: GLXBadFBConfig
Stacktrace:
  [1] _ErrorCallbackWrapper(code::Int32, description::Cstring)
    @ GLFW ~/.julia/packages/GLFW/BWxfF/src/callback.jl:43
  [2] CreateWindow(width::Int64, height::Int64, title::String, monitor::GLFW.Monitor, share::GLFW.Window)
    @ GLFW ~/.julia/packages/GLFW/BWxfF/src/glfw3.jl:499
  [3] GLFW.Window(; name::String, resolution::Tuple{Int64, Int64}, debugging::Bool, major::Int64, minor::Int64, windowhints::Vector{Tuple{UInt32, Integer}}, contexthints::Vector{Tuple{UInt32, Integer}}, visible::Bool, focus::Bool, fullscreen::Bool, monitor::Nothing, share::GLFW.Window)
    @ GLFW ~/.julia/packages/GLFW/BWxfF/src/glfw3.jl:344
  [4] GLMakie.Screen(; resolution::Tuple{Int64, Int64}, visible::Bool, title::String, kw_args::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ GLMakie ~/.julia/packages/GLMakie/rcykA/src/screen.jl:316
  [5] Screen
    @ ~/.julia/packages/GLMakie/rcykA/src/screen.jl:289 [inlined]
  [6] global_gl_screen
    @ ~/.julia/packages/GLMakie/rcykA/src/screen.jl:235 [inlined]
  [7] global_gl_screen(resolution::Tuple{Int64, Int64}, visibility::Bool, tries::Int64)
    @ GLMakie ~/.julia/packages/GLMakie/rcykA/src/screen.jl:382
  [8] global_gl_screen
    @ ~/.julia/packages/GLMakie/rcykA/src/screen.jl:381 [inlined]
  [9] backend_display
    @ ~/.julia/packages/GLMakie/rcykA/src/display.jl:2 [inlined]
 [10] display(scene::Scene)
    @ AbstractPlotting ~/.julia/packages/AbstractPlotting/M8Nlv/src/display.jl:61
 [11] display(fig::Figure)
    @ AbstractPlotting ~/.julia/packages/AbstractPlotting/M8Nlv/src/display.jl:51
 [12] top-level scope
    @ ~/Documents/Studium/Semester2/EM2/HW/04/simulation.jl:76
in expression starting at /home/olep/Documents/Studium/Semester2/EM2/HW/04/simulation.jl:76

(I’m on manjaro linux)
Do you also have an idea how to fix this?

Maybe google around for that one, I’m not a Linux user, sorry. It seems to me that I’ve seen similar things quite often, there’s some libc issue I think or sometimes graphics driver issues.

Seems like your system doesn’t have drivers installed - Are you on a headless machine without a graphics card?

No, it’s a laptop and all other graphics work perfectly…