From 403d9da850c03ca41c30c0fd51ea5270affa6f5e Mon Sep 17 00:00:00 2001 From: Eric Zhang Date: Sun, 10 Sep 2023 21:31:59 -0400 Subject: [PATCH] Add image (imgcat) support in the terminal --- package-lock.json | 9 +++++++++ package.json | 1 + src/lib/ui/XTerm.svelte | 11 ++++++++--- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c275293..20506d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "sshx-xterm": "5.2.1", "svelte": "^3.59.2", "svelte-feather-icons": "^4.0.1", + "xterm-addon-image": "^0.5.0", "xterm-addon-web-links": "^0.8.0", "xterm-addon-webgl": "^0.15.0" }, @@ -4433,6 +4434,14 @@ "integrity": "sha512-cs5Y1fFevgcdoh2hJROMVIWwoBHD80P1fIP79gopLHJIE4kTzzblanoivxTiQ4+92YM9IxS36H1q0MxIJXQBcA==", "peer": true }, + "node_modules/xterm-addon-image": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xterm-addon-image/-/xterm-addon-image-0.5.0.tgz", + "integrity": "sha512-bWXUBeDzhisYh0clVKx4JgQrZjpn+/QRMRwNsfnRpjCMhgmZ+SL3Bivktd7q03O4uKMMcAOe6bSmppwP9/um0Q==", + "peerDependencies": { + "xterm": "^5.2.0" + } + }, "node_modules/xterm-addon-web-links": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/xterm-addon-web-links/-/xterm-addon-web-links-0.8.0.tgz", diff --git a/package.json b/package.json index 3e29875..5350f20 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "sshx-xterm": "5.2.1", "svelte": "^3.59.2", "svelte-feather-icons": "^4.0.1", + "xterm-addon-image": "^0.5.0", "xterm-addon-web-links": "^0.8.0", "xterm-addon-webgl": "^0.15.0" }, diff --git a/src/lib/ui/XTerm.svelte b/src/lib/ui/XTerm.svelte index e9cdaa3..1bd5a14 100644 --- a/src/lib/ui/XTerm.svelte +++ b/src/lib/ui/XTerm.svelte @@ -105,9 +105,13 @@ $: term?.resize(cols, rows); onMount(async () => { - const { Terminal } = await import("sshx-xterm"); - const { WebLinksAddon } = await import("xterm-addon-web-links"); - const { WebglAddon } = await import("xterm-addon-webgl"); + const [{ Terminal }, { WebLinksAddon }, { WebglAddon }, { ImageAddon }] = + await Promise.all([ + import("sshx-xterm"), + import("xterm-addon-web-links"), + import("xterm-addon-webgl"), + import("xterm-addon-image"), + ]); await waitForFonts(); @@ -148,6 +152,7 @@ term.loadAddon(new WebLinksAddon()); term.loadAddon(new WebglAddon()); + term.loadAddon(new ImageAddon({ enableSizeReports: false })); term.open(termEl);