Skip to content

ERROR IN PLUGIN when starting Zellij web interface #202

Description

@shihanng

Describe the bug

I am encountering an "ERROR IN PLUGIN" issue when starting the Zellij web interface, similar to the issue reported in #172.

To Reproduce

  1. Use the default config.kdl from Zellij and the provided layout.kdl.

    config.kdl
    keybinds clear-defaults=true {
         locked {
             bind "Ctrl g" { SwitchToMode "normal"; }
         }
         pane {
             bind "left" { MoveFocus "left"; }
             bind "down" { MoveFocus "down"; }
             bind "up" { MoveFocus "up"; }
             bind "right" { MoveFocus "right"; }
             bind "c" { SwitchToMode "renamepane"; PaneNameInput 0; }
             bind "d" { NewPane "down"; SwitchToMode "normal"; }
             bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; }
             bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; }
             bind "h" { MoveFocus "left"; }
             bind "i" { TogglePanePinned; SwitchToMode "normal"; }
             bind "j" { MoveFocus "down"; }
             bind "k" { MoveFocus "up"; }
             bind "l" { MoveFocus "right"; }
             bind "n" { NewPane; SwitchToMode "normal"; }
             bind "p" { SwitchFocus; }
             bind "Ctrl p" { SwitchToMode "normal"; }
             bind "r" { NewPane "right"; SwitchToMode "normal"; }
             bind "s" { NewPane "stacked"; SwitchToMode "normal"; }
             bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; }
             bind "z" { TogglePaneFrames; SwitchToMode "normal"; }
         }
         tab {
             bind "left" { GoToPreviousTab; }
             bind "down" { GoToNextTab; }
             bind "up" { GoToPreviousTab; }
             bind "right" { GoToNextTab; }
             bind "1" { GoToTab 1; SwitchToMode "normal"; }
             bind "2" { GoToTab 2; SwitchToMode "normal"; }
             bind "3" { GoToTab 3; SwitchToMode "normal"; }
             bind "4" { GoToTab 4; SwitchToMode "normal"; }
             bind "5" { GoToTab 5; SwitchToMode "normal"; }
             bind "6" { GoToTab 6; SwitchToMode "normal"; }
             bind "7" { GoToTab 7; SwitchToMode "normal"; }
             bind "8" { GoToTab 8; SwitchToMode "normal"; }
             bind "9" { GoToTab 9; SwitchToMode "normal"; }
             bind "[" { BreakPaneLeft; SwitchToMode "normal"; }
             bind "]" { BreakPaneRight; SwitchToMode "normal"; }
             bind "b" { BreakPane; SwitchToMode "normal"; }
             bind "h" { GoToPreviousTab; }
             bind "j" { GoToNextTab; }
             bind "k" { GoToPreviousTab; }
             bind "l" { GoToNextTab; }
             bind "n" { NewTab; SwitchToMode "normal"; }
             bind "r" { SwitchToMode "renametab"; TabNameInput 0; }
             bind "s" { ToggleActiveSyncTab; SwitchToMode "normal"; }
             bind "Ctrl t" { SwitchToMode "normal"; }
             bind "x" { CloseTab; SwitchToMode "normal"; }
             bind "tab" { ToggleTab; }
         }
         resize {
             bind "left" { Resize "Increase left"; }
             bind "down" { Resize "Increase down"; }
             bind "up" { Resize "Increase up"; }
             bind "right" { Resize "Increase right"; }
             bind "+" { Resize "Increase"; }
             bind "-" { Resize "Decrease"; }
             bind "=" { Resize "Increase"; }
             bind "H" { Resize "Decrease left"; }
             bind "J" { Resize "Decrease down"; }
             bind "K" { Resize "Decrease up"; }
             bind "L" { Resize "Decrease right"; }
             bind "h" { Resize "Increase left"; }
             bind "j" { Resize "Increase down"; }
             bind "k" { Resize "Increase up"; }
             bind "l" { Resize "Increase right"; }
             bind "Ctrl n" { SwitchToMode "normal"; }
         }
         move {
             bind "left" { MovePane "left"; }
             bind "down" { MovePane "down"; }
             bind "up" { MovePane "up"; }
             bind "right" { MovePane "right"; }
             bind "h" { MovePane "left"; }
             bind "Ctrl h" { SwitchToMode "normal"; }
             bind "j" { MovePane "down"; }
             bind "k" { MovePane "up"; }
             bind "l" { MovePane "right"; }
             bind "n" { MovePane; }
             bind "p" { MovePaneBackwards; }
             bind "tab" { MovePane; }
         }
         scroll {
             bind "e" { EditScrollback; SwitchToMode "normal"; }
             bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
         }
         search {
             bind "c" { SearchToggleOption "CaseSensitivity"; }
             bind "n" { Search "down"; }
             bind "o" { SearchToggleOption "WholeWord"; }
             bind "p" { Search "up"; }
             bind "w" { SearchToggleOption "Wrap"; }
         }
         session {
             bind "a" {
                 LaunchOrFocusPlugin "zellij:about" {
                     floating true
                     move_to_focused_tab true
                 }
                 SwitchToMode "normal"
             }
             bind "c" {
                 LaunchOrFocusPlugin "configuration" {
                     floating true
                     move_to_focused_tab true
                 }
                 SwitchToMode "normal"
             }
             bind "Ctrl o" { SwitchToMode "normal"; }
             bind "p" {
                 LaunchOrFocusPlugin "plugin-manager" {
                     floating true
                     move_to_focused_tab true
                 }
                 SwitchToMode "normal"
             }
             bind "s" {
                 LaunchOrFocusPlugin "zellij:share" {
                     floating true
                     move_to_focused_tab true
                 }
                 SwitchToMode "normal"
             }
             bind "w" {
                 LaunchOrFocusPlugin "session-manager" {
                     floating true
                     move_to_focused_tab true
                 }
                 SwitchToMode "normal"
             }
         }
         shared_except "locked" {
             bind "Alt left" { MoveFocusOrTab "left"; }
             bind "Alt down" { MoveFocus "down"; }
             bind "Alt up" { MoveFocus "up"; }
             bind "Alt right" { MoveFocusOrTab "right"; }
             bind "Alt +" { Resize "Increase"; }
             bind "Alt -" { Resize "Decrease"; }
             bind "Alt =" { Resize "Increase"; }
             bind "Alt [" { PreviousSwapLayout; }
             bind "Alt ]" { NextSwapLayout; }
             bind "Alt f" { ToggleFloatingPanes; }
             bind "Ctrl g" { SwitchToMode "locked"; }
             bind "Alt h" { MoveFocusOrTab "left"; }
             bind "Alt i" { MoveTab "left"; }
             bind "Alt j" { MoveFocus "down"; }
             bind "Alt k" { MoveFocus "up"; }
             bind "Alt l" { MoveFocusOrTab "right"; }
             bind "Alt n" { NewPane; }
             bind "Alt o" { MoveTab "right"; }
             bind "Alt p" { TogglePaneInGroup; }
             bind "Alt Shift p" { ToggleGroupMarking; }
             bind "Ctrl q" { Quit; }
         }
         shared_except "locked" "move" {
             bind "Ctrl h" { SwitchToMode "move"; }
         }
         shared_except "locked" "session" {
             bind "Ctrl o" { SwitchToMode "session"; }
         }
         shared_except "locked" "scroll" "search" "tmux" {
             bind "Ctrl b" { SwitchToMode "tmux"; }
         }
         shared_except "locked" "scroll" "search" {
             bind "Ctrl s" { SwitchToMode "scroll"; }
         }
         shared_except "locked" "tab" {
             bind "Ctrl t" { SwitchToMode "tab"; }
         }
         shared_except "locked" "pane" {
             bind "Ctrl p" { SwitchToMode "pane"; }
         }
         shared_except "locked" "resize" {
             bind "Ctrl n" { SwitchToMode "resize"; }
         }
         shared_except "normal" "locked" "entersearch" {
             bind "enter" { SwitchToMode "normal"; }
         }
         shared_except "normal" "locked" "entersearch" "renametab" "renamepane" {
             bind "esc" { SwitchToMode "normal"; }
         }
         shared_among "pane" "tmux" {
             bind "x" { CloseFocus; SwitchToMode "normal"; }
         }
         shared_among "scroll" "search" {
             bind "PageDown" { PageScrollDown; }
             bind "PageUp" { PageScrollUp; }
             bind "left" { PageScrollUp; }
             bind "down" { ScrollDown; }
             bind "up" { ScrollUp; }
             bind "right" { PageScrollDown; }
             bind "Ctrl b" { PageScrollUp; }
             bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
             bind "d" { HalfPageScrollDown; }
             bind "Ctrl f" { PageScrollDown; }
             bind "h" { PageScrollUp; }
             bind "j" { ScrollDown; }
             bind "k" { ScrollUp; }
             bind "l" { PageScrollDown; }
             bind "Ctrl s" { SwitchToMode "normal"; }
             bind "u" { HalfPageScrollUp; }
         }
         entersearch {
             bind "Ctrl c" { SwitchToMode "scroll"; }
             bind "esc" { SwitchToMode "scroll"; }
             bind "enter" { SwitchToMode "search"; }
         }
         renametab {
             bind "esc" { UndoRenameTab; SwitchToMode "tab"; }
         }
         shared_among "renametab" "renamepane" {
             bind "Ctrl c" { SwitchToMode "normal"; }
         }
         renamepane {
             bind "esc" { UndoRenamePane; SwitchToMode "pane"; }
         }
         shared_among "session" "tmux" {
             bind "d" { Detach; }
         }
         tmux {
             bind "left" { MoveFocus "left"; SwitchToMode "normal"; }
             bind "down" { MoveFocus "down"; SwitchToMode "normal"; }
             bind "up" { MoveFocus "up"; SwitchToMode "normal"; }
             bind "right" { MoveFocus "right"; SwitchToMode "normal"; }
             bind "space" { NextSwapLayout; }
             bind "\"" { NewPane "down"; SwitchToMode "normal"; }
             bind "%" { NewPane "right"; SwitchToMode "normal"; }
             bind "," { SwitchToMode "renametab"; }
             bind "[" { SwitchToMode "scroll"; }
             bind "Ctrl b" { Write 2; SwitchToMode "normal"; }
             bind "c" { NewTab; SwitchToMode "normal"; }
             bind "h" { MoveFocus "left"; SwitchToMode "normal"; }
             bind "j" { MoveFocus "down"; SwitchToMode "normal"; }
             bind "k" { MoveFocus "up"; SwitchToMode "normal"; }
             bind "l" { MoveFocus "right"; SwitchToMode "normal"; }
             bind "n" { GoToNextTab; SwitchToMode "normal"; }
             bind "o" { FocusNextPane; }
             bind "p" { GoToPreviousTab; SwitchToMode "normal"; }
             bind "z" { ToggleFocusFullscreen; SwitchToMode "normal"; }
         }
     }
     
     // Plugin aliases - can be used to change the implementation of Zellij
     // changing these requires a restart to take effect
     plugins {
         about location="zellij:about"
         compact-bar location="zellij:compact-bar"
         configuration location="zellij:configuration"
         filepicker location="zellij:strider" {
             cwd "/"
         }
         plugin-manager location="zellij:plugin-manager"
         session-manager location="zellij:session-manager"
         status-bar location="zellij:status-bar"
         strider location="zellij:strider"
         tab-bar location="zellij:tab-bar"
         welcome-screen location="zellij:session-manager" {
             welcome_screen true
         }
     }
     
     // Plugins to load in the background when a new session starts
     // eg. "file:/path/to/my-plugin.wasm"
     // eg. "https://example.com/my-plugin.wasm"
     load_plugins {
     }
     web_client {
         font "monospace"
     }
    
  2. Start Zellij with the following command:

    zellij --config config.kdl --layout layout.kdl
    
  3. In a Zellij pane, run:

    zellij web
    
  4. Connect to the web interface, e.g., http://localhost:8082.

  5. Seeing the error as recorded in the screenshot.

Expected behavior

No error should occur. I don't see any error when not running the Zellij web server.

Screenshots

Image

Desktop (please complete the following information):

  • OS: macOS 26.1
  • Zellij version: 0.43.1
  • Version: 0.21.1 (latest)

Layout

layout {
    default_tab_template {
        children
        pane size=1 borderless=true {
            plugin location="https://github.com/dj95/zjstatus/releases/latest/download/zjstatus.wasm" {
                format_left   "{mode} #[fg=#89B4FA,bold]{session}"
                format_center "{tabs}"
                format_right  "{command_git_branch} {datetime}"
                format_space  ""

                border_enabled  "false"
                border_char     "─"
                border_format   "#[fg=#6C7086]{char}"
                border_position "top"

                hide_frame_for_single_pane "true"

                mode_normal  "#[bg=blue] "
                mode_tmux    "#[bg=#ffc387] "

                tab_normal   "#[fg=#6C7086] {name} "
                tab_active   "#[fg=#9399B2,bold,italic] {name} "

                command_git_branch_command     "git rev-parse --abbrev-ref HEAD"
                command_git_branch_format      "#[fg=blue] {stdout} "
                command_git_branch_interval    "10"
                command_git_branch_rendermode  "static"

                datetime        "#[fg=#6C7086,bold] {format} "
                datetime_format "%A, %d %b %Y %H:%M"
                datetime_timezone "Europe/Berlin"
            }
        }
    }
}

Additional context

Error log that I can find:

ERROR  |zellij_server::plugins::z| 2025-11-23 17:37:45.414 [async-std/runti] [zellij-server/src/plugins/zellij_exports.rs:2503]: PANIC IN PLUGIN!
<NO PAYLOAD>
PanicHookInfo {
    payload: Any { .. },
    location: Location {
        file: "src/bin/zjstatus.rs",
        line: 35,
        col: 1,
    },
    can_unwind: true,
    force_no_backtrace: false,
}
ERROR  |zellij_server::plugins::w| 2025-11-23 17:37:45.414 [async-std/runti] [zellij-server/src/plugins/wasm_bridge.rs:748]: Failed to apply event to plugin 0

Caused by:
    0: error while executing at wasm backtrace:
           0: 0x23d686 - zjstatus-ee4dee8d548d49fa.wasm!__rustc[95feac21a9532783]::__rust_start_panic
           1: 0x23cf33 - zjstatus-ee4dee8d548d49fa.wasm!__rustc[95feac21a9532783]::rust_panic
           2: 0x23ce44 - zjstatus-ee4dee8d548d49fa.wasm!std::panicking::rust_panic_with_hook::hc20fbdbadfcc1625
           3: 0x23bc21 - zjstatus-ee4dee8d548d49fa.wasm!std::panicking::begin_panic_handler::{{closure}}::h1237330613601c3b
           4: 0x23bb8d - zjstatus-ee4dee8d548d49fa.wasm!std::sys::backtrace::__rust_end_short_backtrace::h207b568e8da931a1
           5: 0x23c7d7 - zjstatus-ee4dee8d548d49fa.wasm!__rustc[95feac21a9532783]::rust_begin_unwind
           6: 0x250dd4 - zjstatus-ee4dee8d548d49fa.wasm!core::panicking::panic_fmt::he093f8ef6966d6c7
           7: 0x2538d8 - zjstatus-ee4dee8d548d49fa.wasm!core::result::unwrap_failed::h1bc014930691ddf4
           8: 0x3b751 - zjstatus-ee4dee8d548d49fa.wasm!std::thread::local::LocalKey<T>::with::h2e1ff8f36a064522
           9: 0x1f7b6 - zjstatus-ee4dee8d548d49fa.wasm!update
    1: wasm trap: wasm `unreachable` instruction executed

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions