<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Troubleshooting &#8211; PlotJuggler</title>
	<atom:link href="https://plotjuggler.com/troubleshooting-cat/feed/" rel="self" type="application/rss+xml" />
	<link>https://plotjuggler.com</link>
	<description>The Ultimate Resource for Time-Series Data Visualization</description>
	<lastBuildDate>Thu, 22 Oct 2026 04:38:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://plotjuggler.com/wp-content/uploads/2026/05/favicon-150x150.png</url>
	<title>Troubleshooting &#8211; PlotJuggler</title>
	<link>https://plotjuggler.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>PlotJuggler Right-Click Menu Not Working: Checks and Workarounds</title>
		<link>https://plotjuggler.com/plotjuggler-right-click-not-working/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:31:28 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://plotjuggler.com/plotjuggler-right-click-not-working/</guid>

					<description><![CDATA[You right-click in PlotJuggler and the menu you expect does not appear — or appears somewhere unexpected, or not at all. This symptom appeared in this site’s own search data (users searching variants of “right click doesn’t work”), so this guide exists — but it is written honestly, as a checklist rather than a bug...]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">You right-click in PlotJuggler and the menu you expect does not appear — or appears somewhere unexpected, or not at all. This symptom appeared in this site’s own search data (users searching variants of <em>“right click doesn’t work”</em>), so this guide exists — but it is written honestly, as a <strong>checklist rather than a bug diagnosis</strong>: there is no single documented “right-click bug” in PlotJuggler that explains most cases, and inventing one would not help you. What does exist is a short list of checkable causes — which UI surface you clicked, whether the window truly had focus, what your window manager or remote-desktop layer did with the click, and whether your version carries a known right-click interaction issue. Work through them in order. All guides are indexed on the <a href="/troubleshooting/">Troubleshooting hub</a>.</p><h2 class="wp-block-heading">Check 1 — Are you right-clicking the surface that has a menu?</h2><p class="wp-block-paragraph">Context menus in PlotJuggler belong to specific surfaces — a plot, a curve, a series in the list — and right-clicking empty chrome, a toolbar or a panel border legitimately produces nothing, or the desktop’s own behaviour. Before concluding anything is broken, right-click directly on a plotted curve and directly on a series name, and compare. Two workflow facts belong here: the long-standing way to build an XY plot is a <strong>right-button drag</strong> pairing two series (press, drag, release — not a click), so a “menu” that appears when you meant to start an XY drag may be the gesture being read as a click; and the current tracker carries a directly related report — “Can’t create XY plots from streaming topics: right-click ‘Force topic streaming’ menu blocks the XY right-drag” (issue #1428, open) — in which a streaming-topic context menu interferes with exactly that right-drag workflow. If your case involves streaming topics and XY plots, that report is your reference point, and using a loaded file’s series instead of a streaming topic is a practical sidestep while it stands.</p><h2 class="wp-block-heading">Check 2 — Focus and window-manager behaviour</h2><ul class="wp-block-list"><li><strong>Give the window focus first.</strong> Left-click once inside the PlotJuggler window, then right-click. On some desktops the first click of any kind is consumed to raise and focus the window — the click worked, it just went to the window manager instead of the application.</li><li><strong>Check for desktop-level interception.</strong> Tiling window managers, global gesture tools, and “right-click on title bar” system menus can claim right-clicks before applications see them. The control test is another Qt application on the same desktop: if right-click menus misbehave there too, you have a desktop configuration question, not a PlotJuggler question.</li><li><strong>High-DPI oddities are a documented class.</strong> The tracker has fielded menu-rendering complaints under high-DPI conditions (menus overlapping and rendering unnaturally, issue #468). If menus appear but in the wrong place or half off-screen, note your display scaling before assuming the click failed — the menu may have opened where you were not looking.</li></ul><h2 class="wp-block-heading">Check 3 — Remote desktop, VMs and screen sharing</h2><p class="wp-block-paragraph">If you use PlotJuggler over a remote desktop, a VM console or a screen share, right-click is one of the first gestures those layers remap, delay or swallow — some send it only on release, some translate it into a long-press, some reserve it for the host. The honest test costs two minutes: sit at the machine (or a direct local session) and repeat the same right-click on the same plot. If it works locally, PlotJuggler was never the problem, and the fix — if any is needed — lives in your remote tool’s mouse settings. This is also why reports of this symptom rarely reproduce for other users: the variable is the layer between the mouse and the application, which only you can see.</p><h2 class="wp-block-heading">Check 4 — Your version, and the update path</h2><p class="wp-block-paragraph">Right-click behaviour is also version-sensitive in practice — issue #1428 above is an open report against PlotJuggler 4.0.0 itself, describing a right-click menu that fires on mouse press on Linux and blocks a drag. That supports one practical conclusion: if you are on an old build, updating is a real diagnostic step. Current releases are <strong>PlotJuggler 4.0.0</strong> and <strong>PlotJuggler 3.17.2</strong>, both on the <a href="/download/">Download page</a>, with install routes in the <a href="/install/">Install hub</a>. Update, then repeat the exact clicks that failed — same plot, same series. If the behaviour changes, stay on the current version; if it does not, you have at least removed version drift from the list, which is what a checklist is for.</p><h2 class="wp-block-heading">Workarounds while you diagnose</h2><ul class="wp-block-list"><li><strong>Do the task another way once.</strong> Most menu actions in a plotting tool have a second path — a toolbar control, a different panel, or rebuilding the view. Getting your analysis done today matters more than winning the argument with the context menu.</li><li><strong>Use left-drag workflows where they exist.</strong> Time plots are built with left-button drags from the series list; only the XY pairing specifically uses the right-button drag. The <a href="/plotjuggler-xy-plot/">XY plot tutorial</a> and <a href="/plotjuggler-drag-and-drop-not-working/">drag-and-drop guide</a> cover both gestures.</li><li><strong>Record the specifics if you report it.</strong> Version, operating system, local or remote, which surface you clicked, and whether other applications behave the same way. A report with those five facts is actionable; “right click doesn’t work” alone — as the search phrase shows — is where everyone starts, not where a fix starts.</li></ul><p class="wp-block-paragraph">If the menu works but the action behind it fails, your symptom has changed categories — return to the <a href="/troubleshooting/">Troubleshooting hub</a> and follow the guide for the new symptom.</p><p class="wp-block-paragraph">Related guides on this hub: if the gesture that fails is a drag rather than a click, see <a href="/plotjuggler-large-file-slow/">large-file performance checks</a> for recordings that make every interaction feel heavy, and <a href="/plotjuggler-appimage-wont-open/">AppImage won’t open</a> if you are running the AppImage in a session where other input behaviour is also unusual.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PlotJuggler Slow with Large Log Files? Performance Checks</title>
		<link>https://plotjuggler.com/plotjuggler-large-file-slow/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:31:14 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://plotjuggler.com/plotjuggler-large-file-slow/</guid>

					<description><![CDATA[PlotJuggler has a speed reputation — it is documented as handling thousands of timeseries and millions of data points with fast OpenGL rendering — so when a large log makes it feel slow, something specific is usually costing you, and it is worth separating what is slow before changing anything. Loading a file, holding it...]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">PlotJuggler has a speed reputation — it is documented as handling <strong>thousands of timeseries and millions of data points</strong> with fast OpenGL rendering — so when a large log makes it feel slow, something specific is usually costing you, and it is worth separating <em>what</em> is slow before changing anything. Loading a file, holding it in memory, and interacting with its plots are three different costs. This guide gives you the checks for each, the honest limits, and the working habits that keep big recordings manageable. It is part of the <a href="/troubleshooting/">Troubleshooting hub</a>, and it invents no benchmark numbers: where figures appear below, they are the project’s own characterisations, not measurements.</p><h2 class="wp-block-heading">Separate the three costs first</h2><figure class="wp-block-table"><table><thead><tr><th>Cost</th><th>What you experience</th><th>What drives it</th></tr></thead><tbody><tr><td>Loading</td><td>A long wait after dropping the file, before any series appear</td><td>File size and format, how much parsing the loader must do, and how many recordings you load into one session</td></tr><tr><td>Memory</td><td>The system becomes heavy overall once the file is in</td><td>Total points held: series count × samples per series, across every loaded recording and every derived series you add</td></tr><tr><td>Interaction</td><td>Zooming, panning and scrubbing feel sluggish with the data on screen</td><td>How many curves are visible at once and how dense they are — rendering millions of points is the job OpenGL is there for, but it is not free</td></tr></tbody></table></figure><p class="wp-block-paragraph">Name which row you are in. A slow <em>load</em> will not be fixed by hiding curves, and slow <em>interaction</em> will not be fixed by a faster disk. The tracker shows users hitting these separately: “Loading multiple rosbags becomes progressively slower” (issue #896) is a loading-cost report, as is “Loading an overly large ulog file” (issue #1116), while “Performance loss on 3.9.0” (issue #936) is a reminder that version-to-version performance can genuinely change — one more reason the checks below start with knowing your version.</p><h2 class="wp-block-heading">Loading checks</h2><ul class="wp-block-list"><li><strong>Load one recording at a time.</strong> Issue #896’s title is the finding: loading additional rosbags into the same session becomes progressively slower. For big investigations, one recording per PlotJuggler instance — comparing runs in two windows — can be faster to work with than one overloaded session. Our <a href="/compare-multiple-bag-files-plotjuggler/">multiple-bag comparison tutorial</a> covers the deliberate, aligned way to compare when you do load several.</li><li><strong>Mind the ULog size cliff.</strong> The project’s own content-gap landscape names <strong>ULog files over 2 GB</strong> as a known hard case for this workflow. If your .ulg is in that territory, expect the load to be the expensive step, plan for it (load once, then work from a saved <a href="/plotjuggler-layouts/">layout</a>), and treat “the same file loads slowly on every machine” as information about the file, not about your install.</li><li><strong>Know your format’s parsing cost.</strong> A loader must parse every message it reads; structured binary recordings and text formats do not cost the same per point. If one format is consistently your bottleneck, recording or converting future captures into the format your workflow handles best is a legitimate upstream fix.</li><li><strong>Check the version.</strong> Performance work continues upstream — a current feature request asks for “faster, progress-reporting and truncation-tolerant ULog import” (issue #1418) — so being on a current release (PJ3 3.17.2 or PJ4 4.0.0, from the <a href="/download/">Download page</a>) is a real check, not boilerplate.</li></ul><h2 class="wp-block-heading">Interaction checks: plot less, see more</h2><p class="wp-block-paragraph">Once the data is in, the cheapest performance technique is not a setting — it is restraint. PlotJuggler is built to render millions of points, but every visible curve at full density is work the GPU must repeat on every zoom and pan. Practical habits, in order of payoff:</p><ol class="wp-block-list"><li><strong>Plot only the series the current question needs.</strong> Thirty visible curves is a reading problem before it is a performance problem; both get better when you cut to the five that matter. Keep the rest loaded, just not drawn.</li><li><strong>Downsample or decimate for overview work — as a technique, honestly labelled.</strong> When you are scanning an hours-long recording for the interesting minute, a reduced-resolution copy of a series (fewer points, same shape) is the standard general technique: compute it as a derived series or produce a reduced export of the segment you care about, and return to the full-density data for the detailed inspection. This is general data-handling advice, not a hidden PlotJuggler switch — do not mistake a downsampled overview for the data itself when measuring peaks.</li><li><strong>Zoom before you judge performance.</strong> Interaction cost scales with what is on screen. A tool that feels heavy showing a whole flight can feel instant inside a ten-second window; evaluate responsiveness at the zoom level you actually analyse at.</li><li><strong>Be deliberate with derived series.</strong> Every transform, custom function and resampled curve adds points the session must hold and draw. They are worth it — that is the point of the tool — but a layout that computes a dozen derived series “just in case” is carrying weight on every interaction. Build them when the question needs them; the <a href="/plotjuggler-lua-custom-functions/">Lua custom functions tutorial</a> covers building them well.</li></ol><h2 class="wp-block-heading">When slow is a signal, not a nuisance</h2><p class="wp-block-paragraph">If a recording that used to load comfortably suddenly does not — on the same machine and version — treat the change as data: a logger that started recording more topics, a higher sample rate, a longer capture. And if one specific file is slow everywhere while similar files are fine, suspect the file (unusually many series, an awkward structure, partial damage) before suspecting PlotJuggler; the <a href="/plotjuggler-mcap-wont-open/">MCAP guide</a> covers the damaged-file branch for that format. Rule of thumb for the whole topic: PlotJuggler’s documented design centre — thousands of series, millions of points, OpenGL rendering — covers most real logs comfortably. When you are outside that centre, the fixes are workflow fixes: fewer simultaneous recordings, fewer visible curves, reduced-resolution overviews, and a current version. Those are unglamorous, and they are what actually works.</p><p class="wp-block-paragraph">More symptoms and fixes are indexed on the <a href="/troubleshooting/">Troubleshooting hub</a>; install-side slowness and start-up problems belong to the <a href="/install/">Install guides</a>.</p><p class="wp-block-paragraph">Related guides on this hub: if a large recording will not load at all — rather than loading slowly — work through <a href="/plotjuggler-ros2-plugin-not-loading/">ROS 2 plugin not loading</a> for ROS bags and <a href="/plotjuggler-no-such-plugin/">missing data loaders explained</a> for other formats, before returning to the performance checks above.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>MCAP File Won&#8217;t Open in PlotJuggler? Causes and Fixes</title>
		<link>https://plotjuggler.com/plotjuggler-mcap-wont-open/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:31:01 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://plotjuggler.com/plotjuggler-mcap-wont-open/</guid>

					<description><![CDATA[An .mcap file is sitting on your disk, PlotJuggler is supposed to read MCAP — and it will not open. Of all the file problems on this site, this is the one where which PlotJuggler line you are running decides everything, because PJ3 and PJ4 reach MCAP by genuinely different routes. This guide separates the...]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">An <code>.mcap</code> file is sitting on your disk, PlotJuggler is supposed to read MCAP — and it will not open. Of all the file problems on this site, this is the one where <strong>which PlotJuggler line you are running decides everything</strong>, because PJ3 and PJ4 reach MCAP by genuinely different routes. This guide separates the causes: wrong route for your line, a recording whose structure needs its ROS context, and a genuinely damaged file — including the one hopeful fact in this area, that PJ4 specifically improved reading of corrupted MCAP files. It belongs to the <a href="/troubleshooting/">Troubleshooting hub</a>; the happy-path workflow is in the <a href="/plotjuggler-rosbag-mcap/">ROS bag and MCAP tutorial</a>.</p><h2 class="wp-block-heading">Cause 1 — You are on PJ3 without the MCAP plugin set</h2><p class="wp-block-paragraph">In the PJ3 world, rosbag2 and MCAP support lives in the <strong>ROS 2 / MCAP plugin set</strong> — the separate <code>plotjuggler-ros-plugins</code> package — not in a standalone PJ3 binary. A PJ3 install without that package has no MCAP loader, and the file will be refused for the reason explained in <a href="/plotjuggler-no-such-plugin/">missing data loaders explained</a>. The documented install is <code>sudo apt install ros-$ROS_DISTRO-plotjuggler-ros</code>, launched with <code>ros2 run plotjuggler plotjuggler</code>; if the plugin layer itself is in question, work through <a href="/plotjuggler-ros2-plugin-not-loading/">ROS 2 plugin not loading</a> first. This failure class is well attested on the project tracker, under titles such as “cannot open mcap bags” (issue #783) and “Error reading the mcap file” (issue #754) — real reports, with real files, that mostly resolve into route and environment questions.</p><h2 class="wp-block-heading">Cause 2 — You expected PJ3 behaviour from PJ4, or the reverse</h2><p class="wp-block-paragraph"><strong>PlotJuggler 4 reads MCAP natively.</strong> MCAP is on PJ4’s own file list, alongside CSV, Parquet, PX4 ULog, LeRobot, MP4, PCD and PLY — no ROS installation is required for the file itself. So the diagnostic fork is sharp: if a plain <code>.mcap</code> will not open in <em>PJ4</em>, the plugin-route explanation does not apply, and you should look at the file itself (causes 3 and 4 below) and at whether your PJ4 build is current — 4.0.0 from the <a href="/download/">Download page</a>. Conversely, if it opens in PJ4 and not in your PJ3, nothing is broken: the generations differ here by design. One tracker report captures a subtler version of this — “Having trouble opening an mcap file created on Linux in PlotJuggler for Windows?” (issue #958, still open) — a reminder that where a file was written, and with what message definitions, can matter as much as where it is read.</p><h2 class="wp-block-heading">Cause 3 — The recording needs its message context</h2><p class="wp-block-paragraph">An MCAP file is a container of timestamped, topic-structured messages, and reading it means understanding the messages inside it. Phrase this carefully, because it is where folklore grows: a rosbag2 recording carries a <strong>storage identifier</strong> — the recording’s metadata names which storage implementation wrote it (MCAP being one of them) — and readers use that recorded structure to interpret the data. When a recording was written with custom message types, the reading side needs those message definitions available; a reader that lacks them can fail on a file that is perfectly intact. In practice: if the file came from a ROS 2 system with custom messages, open it in an environment that has those definitions — typically the ROS route, on the machine (or a machine configured like the one) that recorded it. If the same file opens on the recording machine and nowhere else, this is almost certainly your cause, and it is an environment fix, not a file repair.</p><h2 class="wp-block-heading">Cause 4 — The file is actually damaged</h2><p class="wp-block-paragraph">Recordings get truncated — a recorder killed mid-write, a copy interrupted, a disk that filled up. Here the version history genuinely helps you: during the PJ4 preview cycle, <strong>3.999.9 (10 August 2026) specifically added improved reading of corrupted MCAP files</strong>, and that capability shipped in the 4.0 line. So the practical advice is concrete: a damaged MCAP that a strict reader rejects is worth <em>one attempt in a current PJ4</em> before you declare it lost. Keep expectations honest — “attempt” is the project’s own framing, not a promise of recovery — and work on a copy of the file, never the only original. If PJ4 recovers the data, export or re-save what you need immediately (PJ4 can export to CSV and Arrow-Parquet) rather than trusting the damaged container for future sessions.</p><h2 class="wp-block-heading">A diagnostic order that respects all four causes</h2><ol class="wp-block-list"><li>State your line out loud: PJ4 (native MCAP) or PJ3 (plugin route)? Half of all MCAP confusion dies here.</li><li>On PJ3: confirm the ROS plugins package is installed for your distribution and launch via <code>ros2 run</code>.</li><li>Test a second, known-good MCAP if you can get one. If it opens, your install is healthy and the problem is this specific file.</li><li>Ask where the file was recorded and whether custom messages were involved; if so, reproduce that message environment.</li><li>Suspect damage only after the route checks — then try the file, as a copy, in current PJ4 for its corrupted-file reading.</li></ol><p class="wp-block-paragraph">For the normal opening workflow once it works, see the <a href="/plotjuggler-rosbag-mcap/">ROS bag and MCAP tutorial</a> and the <a href="/tutorials/">Tutorials hub</a>. Other symptoms are indexed on the <a href="/troubleshooting/">Troubleshooting hub</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PlotJuggler ROS 2 Plugin Not Loading: Package and Distro Checks</title>
		<link>https://plotjuggler.com/plotjuggler-ros2-plugin-not-loading/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:30:47 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://plotjuggler.com/plotjuggler-ros2-plugin-not-loading/</guid>

					<description><![CDATA[PlotJuggler itself opens fine. The problem is narrower and more frustrating: the ROS 2 side of it is not there — no topic subscriber, no rosbag loading, as if the ROS plugin never loaded. Because ROS support in PlotJuggler is a separate plugin package, “the plugin is not loading” usually means one of four checkable...]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">PlotJuggler itself opens fine. The problem is narrower and more frustrating: the ROS 2 side of it is not there — no topic subscriber, no rosbag loading, as if the ROS plugin never loaded. Because ROS support in PlotJuggler <em>is</em> a separate plugin package, “the plugin is not loading” usually means one of four checkable things: the package is not installed, it is installed for a different ROS distribution, you launched PlotJuggler in a way that bypasses the ROS environment, or your install channel confines the plugin away from what it needs. Work through them in that order. This guide is part of the <a href="/troubleshooting/">Troubleshooting hub</a> and assumes the install model from our <a href="/install-plotjuggler-ros2/">ROS 2 install guide</a>.</p><h2 class="wp-block-heading">Check 1 — Is the ROS plugins package actually installed?</h2><p class="wp-block-paragraph">PlotJuggler is not itself a ROS application; ROS is supported through external plugins in the <code>plotjuggler-ros-plugins</code> repository. The documented Debian route installs the application and the plugins together:</p><pre class="wp-block-code"><code>sudo apt install ros-$ROS_DISTRO-plotjuggler-ros</code></pre><p class="wp-block-paragraph">A standalone PlotJuggler — from GitHub binaries, the snap or an AppImage — does not become ROS-capable by wishing. If you never installed this package on this machine, the plugin is not “failing to load”; it was never there. This is the same architecture explained in <a href="/plotjuggler-no-such-plugin/">missing data loaders explained</a>: the rosbag DataLoader, the topic subscriber and the re-publisher all live in this plugin set.</p><h2 class="wp-block-heading">Check 2 — Does the package match your ROS distribution?</h2><p class="wp-block-paragraph">The ROS Index lists <code>plotjuggler_ros</code> at version <strong>2.3.1</strong> for the distributions <strong>humble, jazzy, kilted, lyrical and rolling</strong>. Three consequences follow. First, <code>$ROS_DISTRO</code> must actually resolve to your distribution when you install — echo it in the same terminal if you are unsure. Second, a package built for one distribution is not interchangeable with another; a Humble plugin set in a Jazzy environment is a mismatch, not a near miss. Third — and routinely missed — <strong>from v2.3 onward the plugins line supports ROS 2 only</strong>; ROS 1 plugin support is frozen in older versions, so a ROS 1 expectation against a current plugin install will present exactly like a loading failure. Availability is a live question on the tracker as well: the plugins repository carries reports such as “Package ros-lyrical-plotjuggler-ros is not available”, which is what a distribution gap looks like from the user’s side.</p><h2 class="wp-block-heading">Check 3 — Did you launch it through the ROS environment?</h2><p class="wp-block-paragraph">The documented launch is:</p><pre class="wp-block-code"><code>ros2 run plotjuggler plotjuggler</code></pre><p class="wp-block-paragraph">That is logical guidance, not ritual. Launching via <code>ros2 run</code> in a terminal where your ROS setup is sourced guarantees that PlotJuggler starts <em>inside</em> the environment the plugins were built for — the same distribution, the same libraries, the same message definitions. Launching a bare executable from a desktop icon, or from a terminal where ROS was never sourced, can produce a PlotJuggler that runs perfectly and sees no ROS world at all. If the plugin appears when launched the documented way and not otherwise, you have found your cause: always launch it that way. The tracker’s ROS 2 reports underline how environment-sensitive this layer is — from “ROS2 topic subscriber is not connecting” (issue #1013) to “Custom message package not found” (issue #762), where the plugin was present but the user’s own message definitions were not visible to it.</p><h2 class="wp-block-heading">Check 4 — Is your install channel confining the plugin?</h2><ul class="wp-block-list"><li><strong>Snap:</strong> the PJ3 documentation recommends the snap on Ubuntu, including for ROS users, while noting it works with ROS 2 <em>with some limitations</em>. Confinement is the mechanism behind most of those limitations, and the tracker has the matching report: “Snap installation doesn’t work with custom built messages” (issue #1379). If your workflow uses custom message packages, the apt ROS package is the documented route — not a workaround.</li><li><strong>Source builds:</strong> the documented source route clones <code>plotjuggler_msgs</code>, the main repository and <code>plotjuggler-ros-plugins</code> into one workspace, then runs <code>rosdep install</code> and <code>colcon build</code>. A partially built or unsourced workspace produces exactly the “plugin not loading” symptom; rebuild completely and source the workspace before launching.</li><li><strong>Mixed lines:</strong> PlotJuggler 4 does not make the PJ3 ROS plugin packages load — the ROS ecosystem is still on the PJ3 line. Expecting PJ4 to pick up <code>plotjuggler_ros</code> plugins is a line mismatch, covered in our <a href="/plotjuggler-3-vs-4/">PJ3 vs PJ4 comparison</a>.</li></ul><h2 class="wp-block-heading">Putting it together</h2><ol class="wp-block-list"><li>In one terminal: source your ROS setup, confirm <code>echo $ROS_DISTRO</code> names your distribution.</li><li>Confirm the package: <code>sudo apt install ros-$ROS_DISTRO-plotjuggler-ros</code> (it will report already-installed if present).</li><li>Launch only this way for the test: <code>ros2 run plotjuggler plotjuggler</code>.</li><li>Test with a bag or topic you know is good. If ROS features appear now, standardise on that launch method.</li><li>If they still do not appear and you are on the snap with custom messages, switch to the apt route from the <a href="/install/">Install hub</a> and retest before digging deeper.</li></ol><p class="wp-block-paragraph">If the plugin loads but a specific recording still refuses, the problem has moved downstream — continue with <a href="/plotjuggler-mcap-wont-open/">MCAP file won’t open</a> or return to the <a href="/troubleshooting/">Troubleshooting hub</a>. Files and versions are on the <a href="/download/">Download page</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PlotJuggler AppImage Won&#8217;t Open on Linux: Fixes</title>
		<link>https://plotjuggler.com/plotjuggler-appimage-wont-open/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:30:34 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://plotjuggler.com/plotjuggler-appimage-wont-open/</guid>

					<description><![CDATA[You downloaded the PlotJuggler AppImage, double-clicked it — and nothing happened. No window, no message, just nothing. That silent failure is the normal failure shape for AppImages, and it almost always comes down to a short list of checks: the file is not marked executable, your system’s glibc is too old for this build, the...]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">You downloaded the PlotJuggler AppImage, double-clicked it — and nothing happened. No window, no message, just nothing. That silent failure is the normal failure shape for AppImages, and it almost always comes down to a short list of checks: the file is not marked executable, your system’s glibc is too old for this build, the AppImage runtime support on your system is incomplete, or the download itself is damaged. This guide works through them in order for <strong>PlotJuggler 4</strong>, then gives you the escape hatch — the .deb and apt routes — for systems where the AppImage is the wrong tool. It sits on the <a href="/troubleshooting/">Troubleshooting hub</a>, alongside the broader <a href="/plotjuggler-install-troubleshooting/">install troubleshooting guide</a>.</p><h2 class="wp-block-heading">Check 1 — Make the file executable</h2><p class="wp-block-paragraph">A downloaded AppImage is data until you mark it as a program. The PJ4 documentation’s own instruction is exactly this: download <code>PlotJuggler-&lt;version&gt;-x86_64.AppImage</code>, run <code>chmod +x</code> on it, then run it. If you skipped that step, a double-click will do precisely nothing, and that is the system working as designed.</p><pre class="wp-block-code"><code>chmod +x PlotJuggler-4.0.0-x86_64.AppImage
./PlotJuggler-4.0.0-x86_64.AppImage</code></pre><p class="wp-block-paragraph">Run it from a terminal, at least for diagnosis. A terminal launch shows you any message the program or the runtime prints on failure, while a file-manager double-click hides all of it. Most AppImage mysteries stop being mysteries the moment they are launched once from a terminal. The full AppImage walkthrough, including where to keep the file, is in the <a href="/install-plotjuggler-ubuntu/">Ubuntu install guide</a>.</p><h2 class="wp-block-heading">Check 2 — Your glibc version (PJ4 requires 2.35 or newer)</h2><p class="wp-block-paragraph">This is the check specific to PlotJuggler 4, and it is a hard requirement, not a recommendation: the PJ4 AppImage requires <strong>glibc ≥ 2.35</strong> — Ubuntu 22.04 or later, or an equivalent distribution. On an older system the file can be perfectly downloaded, correctly marked executable, and still unable to run, because the system library it was built against is not there. Check yours with:</p><pre class="wp-block-code"><code>ldd --version</code></pre><p class="wp-block-paragraph">If the version is below 2.35, re-downloading the same AppImage will never help. Your realistic options are a newer system, the PJ3 AppImage builds (PJ3 also shipped an aarch64 AppImage, which PJ4 does not), or building from source. Do not spend an afternoon fighting a version floor — it does not negotiate.</p><h2 class="wp-block-heading">Check 3 — FUSE and the AppImage runtime (general Linux guidance)</h2><p class="wp-block-paragraph">Flagged honestly as <em>general Linux guidance, not a PlotJuggler-specific fault</em>: AppImages traditionally rely on FUSE support to mount themselves when run, and some minimal or newer-default systems lack the compatibility library AppImages expect. The symptom class is “the AppImage will not run at all on this system, for any AppImage”. The test is simple: try a different, known AppImage. If no AppImage runs, the problem is your system’s AppImage support — consult your distribution’s documentation for its FUSE library package — and the direct fix for PlotJuggler specifically is to stop using the AppImage format and install the .deb instead (next section). Launching from a terminal, again, is how you see this class of failure instead of guessing at it.</p><h2 class="wp-block-heading">Check 4 — Architecture and download integrity</h2><ul class="wp-block-list"><li><strong>Architecture:</strong> PJ4 4.0.0 ships an <strong>x86_64</strong> AppImage only. There is no PJ4 aarch64 AppImage; on ARM hardware, that file will never run, however correct everything else is. PJ3 is the line with an aarch64 AppImage.</li><li><strong>Integrity:</strong> compare the file’s SHA-256 with the GitHub digest published on the <a href="/download/">Download page</a> (<code>sha256sum &lt;file&gt;</code>). A truncated or corrupted download fails in ways that imitate every other check on this page; ruling it out takes a minute.</li><li><strong>It is a real tracker topic, too:</strong> the project has fielded reports such as “Errors when launching AppImage” (issue #816) and, in the PJ4 era, an AppImage that had silently lost a streaming plugin (issue #1420) — a reminder that if the program opens but a feature is missing, that is a different guide: <a href="/plotjuggler-no-such-plugin/">missing data loaders</a>.</li></ul><h2 class="wp-block-heading">The escape hatch: install the .deb or use the apt repository instead</h2><p class="wp-block-paragraph">On Debian and Ubuntu, the AppImage is the portable option, not the only option — and for a machine you use every day, it is arguably not the best one. PJ4 offers a single-release .deb (<code>plotjuggler4_4.0.0-1_amd64.deb</code>) installed with <code>sudo apt install ./plotjuggler4_4.0.0-1_amd64.deb</code>, and, new in this generation, an official apt repository that keeps PlotJuggler 4 updated through your normal system upgrades:</p><pre class="wp-block-code"><code>curl -fsSL https://apt.plotjuggler.io/pj4_install.sh | sudo sh
sudo apt install plotjuggler4</code></pre><p class="wp-block-paragraph">The repository route is documented for Ubuntu 22.04+ and Debian 12+, and it sidesteps the executable-bit and FUSE questions entirely, because a package manager does that work. Step-by-step instructions are in the <a href="/plotjuggler-apt-repository/">apt repository guide</a> and the <a href="/install-plotjuggler-ubuntu/">Ubuntu install guide</a>; all channels start from the <a href="/install/">Install hub</a>. If PlotJuggler now opens but a file will not, continue on the <a href="/troubleshooting/">Troubleshooting hub</a>.</p><p class="wp-block-paragraph">Related guides on this hub: if the AppImage opens but a ROS feature or file format is missing once it runs, that is a plugin question — see <a href="/plotjuggler-ros2-plugin-not-loading/">ROS 2 plugin not loading</a>; and if the program opens but files will not drop into it under Wayland, see <a href="/plotjuggler-drag-and-drop-not-working/">drag and drop not working</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PlotJuggler Drag and Drop Not Working? What to Check</title>
		<link>https://plotjuggler.com/plotjuggler-drag-and-drop-not-working/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:30:20 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://plotjuggler.com/plotjuggler-drag-and-drop-not-working/</guid>

					<description><![CDATA[Drag-and-drop is PlotJuggler’s whole interaction model, so when it stops working the tool feels broken in a way a menu failure never does. Users describe this symptom to search engines — including in this site’s own search data — with phrases like “drag and drop doesnt work”, but that one phrase hides two different gestures...]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">Drag-and-drop is PlotJuggler’s whole interaction model, so when it stops working the tool feels broken in a way a menu failure never does. Users describe this symptom to search engines — including in this site’s own search data — with phrases like <em>“drag and drop doesnt work”</em>, but that one phrase hides <strong>two different gestures with two different failure modes</strong>: dropping a <em>file</em> into the window to load it, and dragging a <em>series</em> from the list onto a plot to display it. This guide separates them, then works through the checks for each. Start from the <a href="/troubleshooting/">Troubleshooting hub</a> if your symptom is different.</p><h2 class="wp-block-heading">First, which drag is failing?</h2><figure class="wp-block-table"><table><thead><tr><th>Gesture</th><th>What should happen</th><th>Typical failure shape</th></tr></thead><tbody><tr><td>File drop: drag a data file from your file manager into the PlotJuggler window</td><td>The matching data loader reads the file and its series appear in the list</td><td>Nothing happens on drop, or the file is refused — the second shape is often a loader problem, not a drag problem</td></tr><tr><td>Curve drag: drag a series name from the list onto a plotting area</td><td>A curve appears on that plot, against the shared timeline</td><td>The drag will not start, the drop is rejected, or the curve lands somewhere unexpected</td></tr><tr><td>XY drag (PJ3 workflow): drag with the right mouse button to build an XY plot</td><td>Two series are paired as X and Y</td><td>A context menu or a normal time plot appears instead</td></tr></tbody></table></figure><p class="wp-block-paragraph">Be precise about which row you are in before changing anything — the checks below barely overlap. The baseline workflows, so you can compare against intended behaviour, are in <a href="/getting-started-with-plotjuggler/">Getting Started with PlotJuggler</a> and the <a href="/tutorials/">Tutorials hub</a>.</p><h2 class="wp-block-heading">If the file will not drop</h2><ol class="wp-block-list"><li><strong>Rule out a loader refusal dressed as a drag failure.</strong> If the drop “does nothing” only for one file type — bags and MCAP recordings are the usual ones — test the same gesture with a small CSV. If the CSV loads, dragging works and the missing piece is a plugin: see <a href="/plotjuggler-no-such-plugin/">“No such plugin”: missing data loaders explained</a> and, for recordings specifically, <a href="/plotjuggler-mcap-wont-open/">MCAP file won’t open</a>.</li><li><strong>Check your session and install channel as variables.</strong> Drag behaviour is partly a property of the desktop session and the packaging, not just the application — the clearest documented case is the right-drag one in the next section, where on Linux the context menu fires on mouse press rather than release (issue #1428, reported from a Wayland session). As control tests, try the same drag in a different session type (Wayland vs X11) and, if you run the AppImage, try the .deb / apt install instead, as covered in the <a href="/install/">Install guides</a>. If the drag works in one combination and not another, you have localised the problem without touching your data.</li><li><strong>Drop onto the window, from a real file manager.</strong> Drags that start inside another sandboxed application, a browser download bar or a remote-desktop window can be intercepted before PlotJuggler ever sees them. Save the file locally and drag it from the system file manager as a control test.</li><li><strong>Check basic file facts.</strong> Confirm the file exists where you think it does, is readable by your user, and is complete — a recording still being copied or written by another program is a file problem, not a PlotJuggler problem. These are checks to perform, not error messages to expect.</li></ol><h2 class="wp-block-heading">If the series will not drag onto a plot</h2><ol class="wp-block-list"><li><strong>Confirm data is actually loaded.</strong> A series can only be dragged after a file has loaded and populated the list. An empty list after a “successful” drop points back to the loader question above.</li><li><strong>Drag the series name, drop on the plotting area.</strong> The documented gesture is list → plot area. Dropping onto toolbars, the timeline scrubber or another panel is not the same target and being rejected there is expected behaviour.</li><li><strong>Mind the mouse button for XY plots.</strong> The long-standing workflow pairs two series for an XY plot with a <em>right-button</em> drag. If a right-drag produces a menu instead, read <a href="/plotjuggler-right-click-not-working/">Right-click menu not working</a> — and note the current tracker report (#1428) in which a right-click streaming menu interferes with the XY right-drag from streaming topics.</li><li><strong>Know that drag-related bugs have existed and been fixed.</strong> The tracker, for example, carries a closed report titled “Some Mouse Events not Captured After Drag and Drop” (issue #716). If you are on an old build, updating to a current release — PJ3 3.17.2 or PJ4 4.0.0, from the <a href="/download/">Download page</a> — is a rational step, not superstition.</li></ol><h2 class="wp-block-heading">Environment checks that apply to both gestures</h2><ul class="wp-block-list"><li><strong>Remote desktop and VMs:</strong> drag-and-drop between host and guest is a separate feature from dragging inside one application, and it is frequently disabled. Test with a purely local file and a purely local drag first.</li><li><strong>Window focus:</strong> click once inside the PlotJuggler window to give it focus, then drag. A drag that starts while another window holds an active grab can be swallowed by the desktop.</li><li><strong>One gesture at a time:</strong> after any change — different install channel, updated version, different session type — retest with the same small file and the same series, so you know which change mattered.</li></ul><p class="wp-block-paragraph">If dragging works with a small CSV but your real recording still will not load, the drag was never the problem: continue with <a href="/plotjuggler-no-such-plugin/">missing data loaders</a> or <a href="/plotjuggler-large-file-slow/">large-file performance checks</a> if the file is very big. Everything else is indexed on the <a href="/troubleshooting/">Troubleshooting hub</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>&#8216;No Such Plugin&#8217; in PlotJuggler: Missing Data Loaders Explained</title>
		<link>https://plotjuggler.com/plotjuggler-no-such-plugin/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:30:07 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://plotjuggler.com/plotjuggler-no-such-plugin/</guid>

					<description><![CDATA[You dropped a file into PlotJuggler, or picked it from the open dialog, and instead of curves you got a refusal — the experience users describe, and search for, as a “no such plugin” problem. The wording matters less than what it reveals: in PlotJuggler, opening a file is a plugin’s job. If no installed...]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">You dropped a file into PlotJuggler, or picked it from the open dialog, and instead of curves you got a refusal — the experience users describe, and search for, as a <strong>“no such plugin”</strong> problem. The wording matters less than what it reveals: in PlotJuggler, <strong>opening a file is a plugin’s job</strong>. If no installed plugin claims your file’s format, there is nothing to open it with. This guide explains that architecture, the specific case of ROS bags, and how to fix the gap on both PlotJuggler lines. It is part of the <a href="/troubleshooting/">Troubleshooting hub</a>; if the program itself will not start, work through the <a href="/install/">Install guides</a> first.</p><h2 class="wp-block-heading">Why PlotJuggler answers this way: loaders are plugins</h2><p class="wp-block-paragraph">PlotJuggler’s core is deliberately small. The documented plugin architecture splits capability into <strong>DataLoaders</strong> (read files), <strong>DataStreamers</strong> (receive live data), <strong>Message Parsers</strong> (understand encodings) and <strong>Toolboxes</strong>, all extendable in C++, with a sample-plugins repository for authors. CSV and PX4 ULog loading ship with the classic application; other formats arrive through plugin packages. So a “no plugin for this file” outcome is not PlotJuggler failing to recognise a file it should know — it is PlotJuggler truthfully reporting that the loader for that format is not present in <em>this</em> installation. That is also why two machines can behave differently on the same file: they do not have the same plugins installed.</p><p class="wp-block-paragraph">This is not a theoretical edge case. On the project’s GitHub tracker, users have filed exactly this class of failure — for example two reports titled “The plugin [DataLoad ROS bags] thrown the following exception: map::at” (issues #901 and #991), where the ROS bags plugin itself threw an exception instead of loading the data. An older report, “AppImage fails to load ROS related plugins and/or ROS bags” (issue #166), makes the same point from the packaging side: the application was present, the ROS plugin layer was not reachable.</p><h2 class="wp-block-heading">The most common case: ROS bags without the ROS plugins</h2><p class="wp-block-paragraph">ROS support is the textbook example, because PlotJuggler is not itself a ROS application. The project’s own description is explicit: ROS is supported through <strong>external plugins</strong> in the separate <code>plotjuggler-ros-plugins</code> repository — a DataLoader for rosbags (ROS 1 and ROS 2), a ROS topic subscriber, and related tools. A standalone PlotJuggler install without that plugin set has no way to open a <code>.bag</code> file or a rosbag2 recording, however healthy the file is. The fix is to install the plugins the documented way:</p><pre class="wp-block-code"><code>sudo apt install ros-$ROS_DISTRO-plotjuggler-ros
ros2 run plotjuggler plotjuggler</code></pre><p class="wp-block-paragraph">That package is version 2.3.1 on the ROS Index, listed for the distributions humble, jazzy, kilted, lyrical and rolling, and from the v2.3 series the plugins line supports <strong>ROS 2 only</strong>. The full walkthrough — including why launching through <code>ros2 run</code> matters — is our <a href="/install-plotjuggler-ros2/">ROS 2 install guide</a>, and the loading-specific version of this problem has its own guide: <a href="/plotjuggler-ros2-plugin-not-loading/">ROS 2 plugin not loading</a>.</p><h2 class="wp-block-heading">Check the packaging limitation before reinstalling</h2><ul class="wp-block-list"><li><strong>Snap installs have documented limits.</strong> The PJ3 documentation recommends the snap (<code>sudo snap install plotjuggler</code>) on Ubuntu, including for ROS users, while noting it works with ROS 2 <em>with some limitations</em>. A confined snap is exactly the kind of install where an external plugin or a custom message type may not be reachable. If your workflow depends on ROS plugins, the apt ROS package route is the safer default.</li><li><strong>An AppImage is one file, not an ecosystem.</strong> The AppImage carries the application; it does not magically carry your system’s ROS plugin libraries. Issue #166 above is the historical record of that mismatch.</li><li><strong>Check the file extension honestly.</strong> A loader claims formats it understands. A file renamed to a familiar extension, or a rosbag2 recording folder treated as if it were a single file, can present as a missing-plugin problem when the real issue is what you handed it.</li></ul><h2 class="wp-block-heading">The PJ4 answer: the Extensions Marketplace</h2><p class="wp-block-paragraph">PlotJuggler 4 (4.0.0) keeps the plugin model and gives it a distribution channel: the <strong>Extensions Marketplace</strong> (File → Marketplace), backed by the project’s public plugin registry, where loaders, streamers, parsers and toolboxes can be installed and updated from inside the application. PJ4 also widens what is built in — its native file list includes CSV, MCAP, Parquet, PX4 ULog, LeRobot, MP4, PCD and PLY — so some files that needed a plugin route under PJ3 open directly in PJ4; MCAP is the clearest example, covered in <a href="/plotjuggler-mcap-wont-open/">MCAP file won’t open</a>. Our <a href="/plotjuggler-extensions-marketplace/">Marketplace guide</a> explains how installing extensions works. Note the honest limit: the ROS package ecosystem is still built on the PJ3 line, so “switch to PJ4” is not the fix for a ROS-bag loader gap — installing the ROS plugins is.</p><h2 class="wp-block-heading">A short diagnostic order</h2><ol class="wp-block-list"><li>Confirm a built-in format works: load a small CSV. If that fails too, you have a broader install problem — go to the <a href="/plotjuggler-install-troubleshooting/">install troubleshooting guide</a>.</li><li>Name the format you actually need (ROS 1 bag, rosbag2/MCAP, a CAN log, a custom format) and identify which plugin provides it.</li><li>Check how this copy of PlotJuggler was installed (standalone, snap, AppImage, ROS apt package) and whether that channel can carry the plugin.</li><li>Install the missing piece by its documented route, restart PlotJuggler, and retest with the same file.</li><li>Still stuck? Compare notes with the sibling guides on this hub — <a href="/plotjuggler-mcap-wont-open/">MCAP won’t open</a> and <a href="/plotjuggler-ros2-plugin-not-loading/">ROS 2 plugin not loading</a> cover the two most specific versions of this problem.</li></ol><p class="wp-block-paragraph">Files for both lines, with checksums, are on the <a href="/download/">Download page</a>. The symptom index for everything else is the <a href="/troubleshooting/">Troubleshooting hub</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
