├── .gitattributes ├── .github └── workflows │ └── build.yml ├── .gitignore ├── .yarn └── releases │ └── yarn-3.2.1.cjs ├── .yarnrc.yml ├── LICENSE.txt ├── README.md ├── _config.yml ├── build_scripts ├── azure_release_version_check.mjs ├── download_extraterm-commands.mjs ├── download_launcher_executables.mjs ├── download_utilities.mjs ├── extraterm-jam-pack.json ├── prepare_typedoc.mjs ├── resources │ ├── linux │ │ ├── debian │ │ │ ├── postinst │ │ │ └── prerm │ │ └── icons │ │ │ └── hicolor │ │ │ ├── 128x128 │ │ │ └── apps │ │ │ │ └── extratermqt.png │ │ │ ├── 16x16 │ │ │ └── apps │ │ │ │ └── extratermqt.png │ │ │ ├── 256x256 │ │ │ └── apps │ │ │ │ └── extratermqt.png │ │ │ ├── 32x32 │ │ │ └── apps │ │ │ │ └── extratermqt.png │ │ │ ├── 512x512 │ │ │ └── apps │ │ │ │ └── extratermqt.png │ │ │ └── 64x64 │ │ │ └── apps │ │ │ └── extratermqt.png │ └── macos │ │ ├── .DS_Store │ │ ├── .VolumeIcon.icns │ │ └── .background │ │ └── extraterm_background.png └── twemoji_ttf │ ├── Dockerfile │ ├── README.md │ ├── compute_twemoji_codepoints.js │ ├── docker_script.sh │ └── download_twemoji_ttf.sh ├── docs ├── CNAME ├── _config.yml ├── _includes │ ├── bluesky_logo.ext │ ├── navigation.ext │ ├── news_list_full.ext │ ├── news_list_short.ext │ ├── rss_feed_logo.ext │ └── star.ext ├── _layouts │ ├── default.html │ ├── home.html │ └── releases.json.liquid ├── _posts │ ├── 2017-07-23-extraterm-v0.26.0-released.md │ ├── 2017-08-25-extraterm-v0.27.0-released.md │ ├── 2017-08-25-inject-shell-integration-and-extensions.md │ ├── 2017-09-10-extraterm-v0.28.0-released.md │ ├── 2017-09-26-extraterm-v0.29.0-released.md │ ├── 2017-10-01-extraterm-v0.29.1-released.md │ ├── 2017-10-06-extraterm-v0.29.2-released.md │ ├── 2018-02-13-extraterm-v0.30.0-released.md │ ├── 2018-02-16-looking-back-at-the-last-few-months.md │ ├── 2018-02-23-looking-forward.md │ ├── 2018-02-26-extraterm-v0.31.0-released.md │ ├── 2018-03-25-extraterm-v0.32.0-released.md │ ├── 2018-04-08-extraterm-v0.33.0-released.md │ ├── 2018-04-14-extraterm-v0.33.1-released.md │ ├── 2018-05-05-extraterm-v0.34.0-released.md │ ├── 2018-05-19-extraterm-v0.35.0-released.md │ ├── 2018-05-25-extraterm-v0.35.1-released.md │ ├── 2018-06-04-extraterm-v0.35.2-released.md │ ├── 2018-08-23-extraterm-v0.36.0-released.md │ ├── 2018-09-02-extraterm-v0.36.1-released.md │ ├── 2018-09-22-extraterm-v0.36.2-released.md │ ├── 2018-10-20-extraterm-v0.37.0-released.md │ ├── 2018-11-01-extraterm-v0.37.1-released.md │ ├── 2018-11-09-extraterm-v0.37.2-released.md │ ├── 2018-11-11-extraterm-v0.37.3-released.md │ ├── 2018-11-19-extraterm-v0.37.4-released.md │ ├── 2018-12-07-extraterm-v0.38.0-released.md │ ├── 2018-12-10-extraterm-v0.38.1-released.md │ ├── 2018-12-21-extraterm-v0.39.0-released.md │ ├── 2019-01-02-extraterm-v0.40.0-released.md │ ├── 2019-03-08-extraterm-v0.41.0-released.md │ ├── 2019-03-23-extraterm-v0.41.1-released.md │ ├── 2019-03-25-extraterm-v0.41.2-released.md │ ├── 2019-04-07-extraterm-v0.41.3-released.md │ ├── 2019-04-15-extraterm-v0.41.4-released.md │ ├── 2019-05-03-extraterm-v0.42.0-released.md │ ├── 2019-05-04-extraterm-v0.42.1-released.md │ ├── 2019-05-30-extraterm-v0.42.2-released.md │ ├── 2019-08-14-extraterm-v0.43.0-released.md │ ├── 2019-08-21-extraterm-v0.44.0-released.md │ ├── 2019-09-01-extraterm-v0.44.1-released.md │ ├── 2019-09-15-extraterm-v0.45.0-released.md │ ├── 2019-10-11-extraterm-v0.46.0-released.md │ ├── 2019-11-15-extraterm-v0.47.0-released.md │ ├── 2019-11-27-extraterm-v0.48.0-released.md │ ├── 2020-01-26-extraterm-v0.49.0-released.md │ ├── 2020-02-09-extraterm-v0.49.1-released.md │ ├── 2020-03-16-extraterm-v0.49.2-released.md │ ├── 2020-04-15-extraterm-v0.49.3-released.md │ ├── 2020-05-20-extraterm-v0.50.0-released.md │ ├── 2020-06-05-extraterm-v0.51.0-released.md │ ├── 2020-07-20-extraterm-v0.52.0-released.md │ ├── 2020-08-28-extraterm-v0.53.0-released.md │ ├── 2020-09-18-extraterm-v0.53.1-released.md │ ├── 2020-10-17-extraterm-v0.54.0-released.md │ ├── 2020-10-31-extraterm-v0.55.0-released.md │ ├── 2020-11-16-extraterm-v0.55.1-released.md │ ├── 2020-11-20-extraterm-v0.55.2-released.md │ ├── 2020-12-16-extraterm-v0.56.0-released.md │ ├── 2021-01-07-extraterm-v0.57.0-released.md │ ├── 2021-01-22-extraterm-v0.57.1-released.md │ ├── 2021-02-19-extraterm-v0.58.0-released.md │ ├── 2021-04-17-extraterm-v0.59.0-released.md │ ├── 2021-04-23-extraterm-v0.59.1-released.md │ ├── 2021-05-01-extraterm-v0.59.2-released.md │ ├── 2021-06-26-new-qt-direction-same-destination.md │ ├── 2021-07-26-extraterm-v0.59.3-released.md │ ├── 2022-01-01-qt-transition-update.md │ ├── 2022-01-21-extraterm-v0.59.4-released.md │ ├── 2022-04-26-extraterm-v0.60.0-released.md │ ├── 2022-05-13-extraterm-v0.61.0-released.md │ ├── 2022-05-29-extraterm-v0.62.0-released.md │ ├── 2022-06-17-extraterm-v0.63.0-released.md │ ├── 2022-07-02-extraterm-v0.64.0-released.md │ ├── 2022-07-16-extraterm-v0.65.0-released.md │ ├── 2022-08-24-extraterm-v0.66.0-released.md │ ├── 2022-10-28-extraterm-v0.67.0-released.md │ ├── 2022-11-25-extraterm-v0.68.0-released.md │ ├── 2022-12-27-extraterm-v0.69.0-released.md │ ├── 2023-02-05-extraterm-v0.70.0-released.md │ ├── 2023-03-12-extraterm-v0.71.0-released.md │ ├── 2023-05-05-extraterm-v0.71.1-released.md │ ├── 2023-06-29-extraterm-v0.72.0-released.md │ ├── 2023-09-07-extraterm-v0.73.0-released.md │ ├── 2023-11-04-extraterm-v0.74.0-released.md │ ├── 2023-11-26-extraterm-v0.75.0-released.md │ ├── 2024-02-24-extraterm-v0.76.0-released.md │ ├── 2024-04-10-extraterm-v0.76.1-released.md │ ├── 2024-05-14-extraterm-v0.77.0-released.md │ ├── 2024-06-19-extraterm-v0.78.0-released.md │ ├── 2024-06-25-extraterm-v0.78.1-released.md │ ├── 2024-09-05-extraterm-v0.79.0-released.md │ ├── 2025-01-02-extraterm-v0.80.0-released.md │ ├── 2025-01-25-extraterm-v0.81.0-released.md │ └── 2025-05-11-extraterm-v0.81.1-released.md ├── action2.gif ├── assets │ └── css │ │ └── style.scss ├── colorizer_example.png ├── command_frames.png ├── command_palette.png ├── command_palette_450.png ├── developing_extensions.md ├── development.md ├── documentation.md ├── download.md ├── download.png ├── download_upload.png ├── empty_terminal_450.png ├── extension_api │ ├── assets │ │ ├── css │ │ │ └── main.css │ │ ├── images │ │ │ ├── icons.png │ │ │ ├── icons@2x.png │ │ │ ├── widgets.png │ │ │ └── widgets@2x.png │ │ └── js │ │ │ ├── main.js │ │ │ └── search.js │ ├── enums │ │ ├── bulkfilestate.html │ │ ├── findstartposition.html │ │ └── viewerposture.html │ ├── globals.html │ ├── index.html │ └── interfaces │ │ ├── application.html │ │ ├── backend.html │ │ ├── buffersizechange.html │ │ ├── bulkfilehandle.html │ │ ├── bulkfilemetadata.html │ │ ├── clipboard.html │ │ ├── commands.html │ │ ├── createsessionoptions.html │ │ ├── customizedcommand.html │ │ ├── disposable.html │ │ ├── environmentmap.html │ │ ├── event.html │ │ ├── extensioncontext.html │ │ ├── extensionmodule.html │ │ ├── extensionviewerbase.html │ │ ├── extensionviewerbaseconstructor.html │ │ ├── findoptions.html │ │ ├── frameviewer.html │ │ ├── listpickeroptions.html │ │ ├── logger.html │ │ ├── numberinputoptions.html │ │ ├── pty.html │ │ ├── sessionbackend.html │ │ ├── sessionconfiguration.html │ │ ├── sessioneditorbase.html │ │ ├── sessioneditorfactory.html │ │ ├── sessionsettingseditorbase.html │ │ ├── sessionsettingseditorfactory.html │ │ ├── syntaxtheme.html │ │ ├── syntaxthemeinfo.html │ │ ├── syntaxthemeprovider.html │ │ ├── syntaxtokenrule.html │ │ ├── tab.html │ │ ├── tabtitlewidget.html │ │ ├── tabtitlewidgetfactory.html │ │ ├── terminal.html │ │ ├── terminalborderwidget.html │ │ ├── terminalborderwidgetfactory.html │ │ ├── terminalenvironment.html │ │ ├── terminaloutputviewer.html │ │ ├── terminaltheme.html │ │ ├── terminalthemeinfo.html │ │ ├── terminalthemeprovider.html │ │ ├── textstyle.html │ │ ├── textviewer.html │ │ ├── viewerbase.html │ │ ├── viewermetadata.html │ │ └── window.html ├── extensions_contribution_points.md ├── extensions_logging_and_debugging.md ├── extensions_typescript.md ├── extensions_your_first_extension.md ├── extra_session_settings.png ├── extraterm_main_logo_512x367.png ├── extraterm_main_logo_tight.svg ├── extraterm_minimap.png ├── faq.md ├── features.md ├── feed.xml ├── from_command.gif ├── from_command.png ├── from_git_1.png ├── from_git_2.png ├── guide.md ├── how_to_update_dependencies.md ├── index.md ├── insert_emoji.png ├── insert_emoji_qt.png ├── issues.md ├── minimap_450.png ├── nested_panes.png ├── news.md ├── notes.md ├── protocol.md ├── releases.md ├── safe_shortcuts.md ├── selection_mode2.gif ├── settings_appearance.png ├── settings_appearance_2.png ├── settings_colorizer.png ├── settings_extensions.png ├── settings_frames.png ├── settings_general.png ├── settings_keybindings.png ├── settings_keybindings_2.png ├── settings_session.png ├── settings_tips.png ├── settings_updates.png ├── show_image.png ├── show_image_450.png ├── split_450.png ├── splits_and_panes.png ├── tips │ ├── command_editing.md │ └── from_command.md ├── tldr_optimized.gif └── why.md ├── extensions ├── About │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ ├── resources │ │ ├── extraterm_main_logo_266x193.png │ │ └── extraterm_main_logo_532x387.png │ ├── src │ │ └── AboutExtension.ts │ └── tsconfig.json ├── Autocomplete │ ├── README.md │ ├── keybindings │ │ ├── macos-style-emacs.json │ │ ├── macos-style.json │ │ ├── pc-style-emacs.json │ │ └── pc-style.json │ ├── package.json │ ├── src │ │ └── Autocomplete.ts │ └── tsconfig.json ├── Autolink │ ├── README.md │ ├── jest.config.cjs │ ├── package.json │ ├── src │ │ ├── Autolink.ts │ │ ├── UrlRegex.jest.ts │ │ └── UrlRegex.ts │ └── tsconfig.json ├── Colorizer │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ ├── src │ │ ├── ColorPatchButton.ts │ │ ├── ColorPatchPopup.ts │ │ ├── ColorPatchSelector.ts │ │ ├── ColorizerExtension.ts │ │ ├── ColorizerSettingsPage.ts │ │ ├── Config.ts │ │ └── RuleEditor.ts │ └── tsconfig.json ├── CommunityTerminalThemes │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ └── theme │ │ ├── C64.itermcolors │ │ ├── Cobalt2.itermcolors │ │ ├── Dracula.itermcolors │ │ ├── Material.itermcolors │ │ ├── Solarized Dark.itermcolors │ │ ├── Solarized Light.itermcolors │ │ ├── Tango Adapted.itermcolors │ │ ├── base16-default.dark.itermcolors │ │ ├── base16-default.light.itermcolors │ │ ├── base16-material.itermcolors │ │ ├── base16-monokai.itermcolors │ │ ├── base16-tomorrow-night.itermcolors │ │ ├── base16-tomorrow.itermcolors │ │ └── xterm.itermcolors ├── CopyBlock │ ├── README.md │ ├── package.json │ ├── src │ │ └── CopyBlockExtension.ts │ └── tsconfig.json ├── CopyLink │ ├── README.md │ ├── package.json │ ├── src │ │ └── CopyLink.ts │ └── tsconfig.json ├── DefaultKeybindings │ ├── keybindings │ │ ├── macos-style.json │ │ └── pc-style.json │ └── package.json ├── DefaultTerminalTheme │ ├── package.json │ └── theme │ │ ├── Extraterm Default.itermcolors │ │ └── Two Dark.itermcolors ├── DirectoryCommands │ ├── README.md │ ├── package.json │ ├── src │ │ └── DirectoryCommandsExtension.ts │ └── tsconfig.json ├── DownloadBlock │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ ├── src │ │ ├── DownloadBlockExtension.ts │ │ ├── SpeedTracker.ts │ │ └── TextUtils.ts │ └── tsconfig.json ├── Find │ ├── .eslintrc.cjs │ ├── keybindings │ │ ├── macos-style-emacs.json │ │ ├── macos-style.json │ │ ├── pc-style-emacs.json │ │ └── pc-style.json │ ├── package.json │ ├── src │ │ ├── FindControls.ts │ │ ├── FindExtension.ts │ │ └── RowWalker.ts │ └── tsconfig.json ├── ITermColorsTerminalThemeProvider │ ├── .eslintrc.cjs │ ├── jest.config.cjs │ ├── package.json │ ├── src │ │ ├── ITermColorsTerminalThemeProviderExtension.ts │ │ └── test │ │ │ ├── Dracula.itermcolors │ │ │ └── ITermColorsTerminalThemeProviderExtension.jest.ts │ └── tsconfig.json ├── ImageBlock │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ ├── src │ │ └── ImageBlockExtension.ts │ └── tsconfig.json ├── InjectShellIntegration │ ├── .eslintrc.js │ ├── README.md │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── InjectShellIntegrationExtension.ts │ │ ├── ScriptBuilders.ts │ │ └── test │ │ │ ├── InjectShellIntegrationExtension.jest.ts │ │ │ └── test_data │ │ │ ├── command.py │ │ │ └── library.py │ └── tsconfig.json ├── InsertEmoji │ ├── README.txt │ ├── build_scripts │ │ └── download_data.js │ ├── data │ │ └── emojis │ ├── keybindings │ │ ├── macos-style-emacs.json │ │ ├── macos-style.json │ │ ├── pc-style-emacs.json │ │ └── pc-style.json │ ├── package.json │ ├── src │ │ ├── EmojiData.ts │ │ └── main.ts │ └── tsconfig.json ├── InternalCommands │ └── package.json ├── OpenLink │ ├── README.txt │ ├── package.json │ ├── src │ │ └── OpenLink.ts │ └── tsconfig.json ├── ProxySessionBackend │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ ├── resources │ │ └── extraterm-wsl-proxy │ ├── src │ │ ├── CygwinProxySessionBackend.ts │ │ ├── ProxyPty.ts │ │ ├── ProxySessionBackendExtension.ts │ │ ├── SourceDir.ts │ │ ├── WslProxySessionBackend.ts │ │ └── python │ │ │ ├── ptyprocess │ │ │ ├── __init__.py │ │ │ ├── _fork_pty.py │ │ │ ├── ptyprocess.py │ │ │ └── util.py │ │ │ └── ptyserver2.py │ └── tsconfig.json ├── ProxySessionEditor │ ├── .eslintrc.cjs │ ├── package.json │ ├── src │ │ ├── ProxySessionEditorExtension.ts │ │ └── WslProxySessionEditor.ts │ └── tsconfig.json ├── SSHQuickOpen │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ ├── src │ │ └── SSHQuickOpenExtension.ts │ └── tsconfig.json ├── SSHSessionBackend │ ├── .eslintrc.cjs │ ├── README.md │ ├── jest.config.cjs │ ├── package.json │ ├── src │ │ ├── HostPattern.jest.ts │ │ ├── HostPattern.ts │ │ ├── KnownHosts.jest.ts │ │ ├── KnownHosts.ts │ │ ├── SSHPty.ts │ │ └── SSHSessionBackendExtension.ts │ └── tsconfig.json ├── SSHSessionEditor │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ ├── src │ │ └── SSHSessionEditorExtension.ts │ └── tsconfig.json ├── ScrollMap │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ ├── src │ │ └── ScrollMapExtension.ts │ └── tsconfig.json ├── TLDRPages │ ├── README.txt │ ├── build_scripts │ │ └── download_data.mjs │ ├── jest.config.cjs │ ├── package.json │ ├── src │ │ ├── PageDatabase.jest.ts │ │ ├── PageDatabase.ts │ │ └── main.ts │ └── tsconfig.json ├── TerminalTitle │ ├── .eslintrc.cjs │ ├── jest.config.cjs │ ├── package.json │ ├── resources │ │ └── sass │ │ │ ├── editor.scss │ │ │ └── tab-title.scss │ ├── src │ │ ├── IconFormatter.ts │ │ ├── TemplateEditor.ts │ │ ├── TemplateString.ts │ │ ├── TerminalBorderEditor.ts │ │ ├── TerminalEnvironmentFormatter.ts │ │ ├── TerminalTitleExtension.ts │ │ ├── TerminalTitleSessionSettings.ts │ │ ├── TerminalWindowTitleSessionSettings.ts │ │ ├── TitlePreview.ts │ │ └── test │ │ │ └── TemplateString.jest.ts │ └── tsconfig.json ├── Tips │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ ├── resources │ │ └── tips.json │ ├── src │ │ └── TipsExtension.ts │ └── tsconfig.json ├── UnixSessionBackend │ ├── .eslintrc.cjs │ ├── package.json │ ├── src │ │ ├── UnixPty.ts │ │ ├── UnixSessionBackendExtension.ts │ │ └── typings │ │ │ └── node-pty.d.ts │ └── tsconfig.json ├── UnixSessionEditor │ ├── .eslintrc.cjs │ ├── package.json │ ├── src │ │ └── UnixSessionEditorExtension.ts │ └── tsconfig.json ├── UpdateChecker │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Banner.ts │ │ ├── Config.ts │ │ ├── UpdateCheckerExtension.ts │ │ └── UpdateCheckerSettingsPage.ts │ └── tsconfig.json ├── WindowsConsoleSessionBackend │ ├── .eslintrc.cjs │ ├── package.json │ ├── src │ │ ├── WindowsConsolePty.ts │ │ └── WindowsConsoleSessionBackendExtension.ts │ └── tsconfig.json └── WindowsConsoleSessionEditor │ ├── .eslintrc.cjs │ ├── package.json │ ├── src │ └── WindowsConsoleSessionEditorExtension.ts │ └── tsconfig.json ├── main ├── .eslintrc.cjs ├── fixtures │ └── markdown_cheatsheet_vt.txt ├── jest.config.cjs ├── package.json ├── resources │ ├── extra_icons │ │ ├── 1_maximize.svg │ │ ├── 2_minimize.svg │ │ ├── 3_osx_close.svg │ │ ├── 4_osx_maximize.svg │ │ ├── 5_osx_minimize.svg │ │ ├── 6_triangle_down.svg │ │ ├── 7_triangle_up.svg │ │ ├── 8_rows.svg │ │ ├── 9_pocketknife.svg │ │ ├── build.js │ │ └── pocketknife_source.svg │ ├── extraterm.desktop │ ├── fonts │ │ ├── Twemoji.ttf │ │ ├── extraicons.ttf │ │ ├── fa-brands-400.ttf │ │ ├── fa-solid-900.ttf │ │ └── format_font_awesome_metadata.js │ ├── list-fonts-json-binary │ │ ├── darwin-x64 │ │ │ └── list-fonts-json │ │ ├── linux-x64 │ │ │ └── list-fonts-json │ │ └── win32-x64 │ │ │ ├── MSVCP140.dll │ │ │ ├── VCRUNTIME140.dll │ │ │ └── list-fonts-json.exe │ ├── logo │ │ ├── extraterm_green_outline_logo.svg │ │ ├── extraterm_main_logo.svg │ │ ├── extraterm_small_logo.icns │ │ ├── extraterm_small_logo.ico │ │ ├── extraterm_small_logo.svg │ │ ├── extraterm_small_logo_16x16.png │ │ ├── extraterm_small_logo_22x22.png │ │ ├── extraterm_small_logo_256x256.png │ │ ├── extraterm_small_logo_32x32.png │ │ ├── extraterm_small_logo_64x64.png │ │ └── extraterm_small_logo_BW.svg │ ├── terminal_fonts │ │ └── LigaDejaVuSansMono.ttf │ └── theme_ui │ │ └── DarkTwo │ │ ├── checkbox_checked.svg │ │ ├── close_hover.svg │ │ ├── close_icon_hover.svg │ │ ├── close_icon_normal.svg │ │ ├── close_normal.svg │ │ ├── combobox_arrow.svg │ │ ├── combobox_arrow_hover.svg │ │ ├── empty.svg │ │ ├── maximize_icon_hover.svg │ │ ├── maximize_icon_normal.svg │ │ ├── minimize_icon_hover.svg │ │ ├── minimize_icon_normal.svg │ │ ├── radio_checked.svg │ │ ├── spin_down_arrow.svg │ │ ├── spin_down_arrow_hover.svg │ │ ├── spin_up_arrow.svg │ │ └── spin_up_arrow_hover.svg ├── src │ ├── BorderlessWindowSupport.ts │ ├── CachingLigatureMarker.ts │ ├── CommandPalette.ts │ ├── CommandsRegistry.ts │ ├── ContextMenuEvent.ts │ ├── EmptyPaneTab.ts │ ├── InternalTypes.ts │ ├── ListPickerTestUtility.ts │ ├── SourceDir.ts │ ├── Tab.ts │ ├── ThemeTestUtility.ts │ ├── TwemojiConstants.ts │ ├── Window.ts │ ├── bulk_file_handling │ │ ├── BlobBulkFile.ts │ │ ├── BulkFile.ts │ │ ├── BulkFileBroker.ts │ │ ├── BulkFileRequestHandler.ts │ │ ├── BulkFileStorage.ts │ │ ├── BulkFileUploader.ts │ │ ├── BulkFileUtils.ts │ │ ├── DisposableNullTransform.ts │ │ ├── StoredBulkFile.ts │ │ ├── UploadEncoder.ts │ │ └── WriterReaderFile.ts │ ├── config │ │ ├── Config.ts │ │ ├── ConfigDatabase.ts │ │ ├── MainConfig.ts │ │ └── PersistentConfigDatabase.ts │ ├── dark_two.css │ ├── dark_two_html.css │ ├── emulator │ │ ├── FastControlSequenceParameters.jest.ts │ │ ├── FastControlSequenceParameters.ts │ │ ├── ITermParameters.ts │ │ ├── MouseEncoder.jest.ts │ │ ├── MouseEncoder.ts │ │ ├── Term.jest.ts │ │ ├── Term.ts │ │ └── TextTerm.ts │ ├── extension │ │ ├── BlockRegistry.ts │ │ ├── CommonExtensionState.ts │ │ ├── DialogPopOver.ts │ │ ├── ErrorTolerantEventEmitter.ts │ │ ├── ExtensionManager.ts │ │ ├── ExtensionManagerTypes.ts │ │ ├── ExtensionMetadata.ts │ │ ├── InternalExtensionContextImpl.ts │ │ ├── JsonToAstUtils.ts │ │ ├── ListPickerPopOver.ts │ │ ├── PackageFileParser.jest.ts │ │ ├── PackageFileParser.ts │ │ ├── SettingsTabRegistry.ts │ │ ├── TabTitleWidgetRegistry.ts │ │ ├── TextInputPopOver.ts │ │ ├── WorkspaceSessionEditorRegistry.ts │ │ ├── WorkspaceSessionSettingsEditorRegistry.ts │ │ └── api │ │ │ ├── ApplicationImpl.ts │ │ │ ├── BlockImpl.ts │ │ │ ├── ClipboardImpl.ts │ │ │ ├── CommandsImpl.ts │ │ │ ├── ConfigurationImpl.ts │ │ │ ├── ExtensionBlockImpl.ts │ │ │ ├── ExtensionContextImpl.ts │ │ │ ├── ExtensionTabImpl.ts │ │ │ ├── SessionsImpl.ts │ │ │ ├── SettingsImpl.ts │ │ │ ├── StyleImpl.ts │ │ │ ├── TabImpl.ts │ │ │ ├── TerminalEnvironmentImpl.ts │ │ │ ├── TerminalImpl.ts │ │ │ ├── TerminalOutputDetailsImpl.ts │ │ │ ├── TerminalSettingsImpl.ts │ │ │ ├── TerminalsImpl.ts │ │ │ ├── WindowImpl.ts │ │ │ └── WindowsImpl.ts │ ├── keybindings │ │ ├── KeybindingsIOManager.jest.ts │ │ ├── KeybindingsIOManager.ts │ │ ├── KeybindingsManager.ts │ │ ├── KeybindingsTypes.ts │ │ ├── QKeyEventUtilities.ts │ │ └── test_files │ │ │ └── pc-style.json │ ├── local_http_server │ │ ├── CommandRequestHandler.ts │ │ ├── LocalHttpServer.ts │ │ ├── PingHandler.ts │ │ └── RequestHandlerType.ts │ ├── main.ts │ ├── pty │ │ ├── Pty.ts │ │ └── PtyManager.ts │ ├── settings │ │ ├── AppearancePage.ts │ │ ├── ExtensionHolderPage.ts │ │ ├── ExtensionsPage.ts │ │ ├── FramesPage.ts │ │ ├── GeneralPage.ts │ │ ├── SessionTypesPage.ts │ │ ├── SettingsPageType.ts │ │ ├── SettingsTab.ts │ │ └── keybindings │ │ │ ├── CommandBindingEditor.ts │ │ │ ├── CommandKeybindingInfo.ts │ │ │ ├── KeyRecord.ts │ │ │ └── KeybindingsPage.ts │ ├── shared_map │ │ └── SharedMap.ts │ ├── terminal │ │ ├── Block.ts │ │ ├── BlockFrame.ts │ │ ├── DecoratedFrame.ts │ │ ├── DownloadApplicationModeHandler.ts │ │ ├── FontAtlasCache.ts │ │ ├── FrameFinderType.ts │ │ ├── SpacerFrame.ts │ │ ├── Terminal.ts │ │ ├── TerminalBlock.ts │ │ ├── TerminalEmbeddedImages.ts │ │ ├── TerminalEnvironmentImpl.ts │ │ └── TerminalVisualConfig.ts │ ├── theme │ │ ├── Theme.ts │ │ └── ThemeManager.ts │ ├── ui │ │ ├── FontList.ts │ │ ├── Icons.ts │ │ ├── ListPicker.ts │ │ ├── QtConstructExtra.ts │ │ ├── TerminalScrollArea.ts │ │ ├── UiStyle.ts │ │ ├── UploadProgressBar.ts │ │ ├── WindowPopOver.ts │ │ └── styles │ │ │ └── DarkTwo.ts │ └── utils │ │ ├── ByteCountingStreamTransform.ts │ │ ├── DisposableUtils.ts │ │ ├── QadsNext.ts │ │ ├── QtTimeout.ts │ │ └── TextUtils.ts └── tsconfig.json ├── package.json ├── packages ├── eslint-config-extraterm │ ├── README.md │ ├── index.js │ └── package.json ├── extraterm-boolean-expression-evaluator │ ├── .eslintrc.cjs │ ├── README.md │ ├── jest.config.cjs │ ├── package.json │ ├── src │ │ ├── main.ts │ │ └── test │ │ │ └── main.jest.ts │ └── tsconfig.json ├── extraterm-boolean-expression-parser │ ├── .eslintrc.js │ ├── README.md │ ├── package.json │ └── src │ │ ├── grammar.jison │ │ ├── parser.d.ts │ │ └── test │ │ └── parser.test.js ├── extraterm-char-cell-line │ ├── .eslintrc.cjs │ ├── README.md │ ├── jest.config.cjs │ ├── package.json │ ├── src │ │ ├── CharCellLine.ts │ │ └── test │ │ │ └── CharCellGrid.jest.ts │ └── tsconfig.json ├── extraterm-char-render-canvas │ ├── .eslintrc.cjs │ ├── package.json │ ├── src │ │ ├── CellPainter.ts │ │ ├── CursorStyle.ts │ │ ├── Disposable.ts │ │ ├── FontSlice.ts │ │ ├── NormalizedCellIterator.ts │ │ ├── RGBAToCss.ts │ │ ├── RGBAToQColor.ts │ │ ├── XTermPalette.ts │ │ ├── font_atlas │ │ │ ├── BoxDrawingCharacters.ts │ │ │ ├── FontAtlasBase.ts │ │ │ └── TextureFontAtlas.ts │ │ ├── font_metrics │ │ │ ├── FontMeasurement.ts │ │ │ └── MonospaceFontMetrics.ts │ │ ├── index.ts │ │ └── test │ │ │ ├── TestCellRendering.ts │ │ │ └── TestFontAtlas.ts │ └── tsconfig.json ├── extraterm-color-utilities │ ├── .eslintrc.cjs │ ├── README.md │ ├── jest.config.cjs │ ├── package.json │ ├── src │ │ ├── ColorUtilities.jest.ts │ │ └── ColorUtilities.ts │ └── tsconfig.json ├── extraterm-data-structures │ ├── .eslintrc.cjs │ ├── README.md │ ├── jest.config.cjs │ ├── package.json │ ├── src │ │ ├── ArrayKeyTrie.jest.ts │ │ ├── ArrayKeyTrie.ts │ │ ├── PairKeyMap.jest.ts │ │ ├── PairKeyMap.ts │ │ ├── SpeedTest.jest.ts │ │ ├── TripleKeyMap.jest.ts │ │ ├── TripleKeyMap.ts │ │ └── index.ts │ └── tsconfig.json ├── extraterm-event-emitter │ ├── .eslintrc.cjs │ ├── package.json │ ├── src │ │ └── main.ts │ └── tsconfig.json ├── extraterm-extension-api │ ├── .eslintrc.cjs │ ├── .npmignore │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Block.ts │ │ ├── BulkFiles.ts │ │ ├── Commands.ts │ │ ├── ExtensionContext.ts │ │ ├── ListPickerOptions.ts │ │ ├── Logger.ts │ │ ├── Screen.ts │ │ ├── Sessions.ts │ │ ├── Settings.ts │ │ ├── Style.ts │ │ ├── Tab.ts │ │ ├── Terminal.ts │ │ ├── TerminalEnvironment.ts │ │ ├── TerminalTheme.ts │ │ ├── Viewers.ts │ │ ├── Windows.ts │ │ └── main.ts │ ├── tsconfig.json │ └── typedoc.json ├── extraterm-font-ligatures │ ├── .eslintrc.cjs │ ├── LICENSE.md │ ├── README.md │ ├── bench │ │ ├── code.txt │ │ └── no-ligatures.txt │ ├── fonts │ │ ├── FiraCode-Regular.otf │ │ ├── Monoid-Regular.ttf │ │ ├── UbuntuMono-Regular.ttf │ │ └── iosevka-regular.ttf │ ├── package.json │ ├── src │ │ ├── flatten.ts │ │ ├── index.spec.ts │ │ ├── index.ts │ │ ├── merge.spec.ts │ │ ├── merge.ts │ │ ├── mergeRange.spec.ts │ │ ├── mergeRange.ts │ │ ├── processors │ │ │ ├── 6-1.ts │ │ │ ├── 6-2.ts │ │ │ ├── 6-3.ts │ │ │ ├── 8-1.ts │ │ │ ├── classDef.ts │ │ │ ├── coverage.ts │ │ │ ├── helper.ts │ │ │ └── substitution.ts │ │ ├── tables.ts │ │ ├── types.ts │ │ └── walk.ts │ ├── tsconfig.json │ └── tslint.json ├── extraterm-fuzzy-rank │ ├── .eslintrc.cjs │ ├── README.md │ ├── jest.config.cjs │ ├── package.json │ ├── src │ │ ├── main.jest.ts │ │ └── main.ts │ └── tsconfig.json ├── extraterm-later │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ ├── src │ │ └── DoLater.ts │ └── tsconfig.json ├── extraterm-logging │ ├── .eslintrc.cjs │ ├── package.json │ ├── src │ │ ├── FileLogWriter.ts │ │ ├── LogDecorator.ts │ │ ├── Logger.ts │ │ └── Main.ts │ └── tsconfig.json ├── extraterm-mimetype-detector │ ├── .eslintrc.cjs │ ├── README.md │ ├── jest.config.cjs │ ├── package.json │ ├── src │ │ ├── MimeTypeDetector.jest.ts │ │ ├── MimeTypeDetector.ts │ │ └── typings │ │ │ └── jschardet │ │ │ └── index.d.ts │ ├── testfiles │ │ ├── 1x1.png │ │ ├── ascii.txt │ │ ├── blank.bmp │ │ ├── blank.gif │ │ ├── blank.jpg │ │ ├── blank.webp │ │ ├── foo.fish │ │ ├── foo.ini │ │ ├── foo.sh │ │ ├── libso.bin │ │ └── random.bin │ └── tsconfig.json ├── extraterm-readonly-toolbox │ ├── .eslintrc.cjs │ ├── jest.config.cjs │ ├── package.json │ ├── src │ │ ├── main.jest.ts │ │ └── main.ts │ └── tsconfig.json ├── extraterm-shell-string-parser │ ├── .eslintrc.cjs │ ├── jest.config.cjs │ ├── package.json │ ├── src │ │ ├── main.ts │ │ └── test │ │ │ └── Main.jest.ts │ └── tsconfig.json ├── extraterm-timeoutqt │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ ├── src │ │ └── Main.ts │ └── tsconfig.json ├── extraterm-trim-between-tags │ ├── .eslintrc.cjs │ ├── package.json │ ├── src │ │ └── main.ts │ └── tsconfig.json ├── extraterm-unicode-utilities │ ├── .eslintrc.cjs │ ├── README.md │ ├── build_scripts │ │ ├── convert_emoji_table.js │ │ └── emoji-data.txt │ ├── jest.config.cjs │ ├── package.json │ ├── src │ │ ├── DumpEmojiTestFile.ts │ │ ├── UnicodeUtilities.jest.ts │ │ └── UnicodeUtilities.ts │ └── tsconfig.json ├── extraterm-uuid │ ├── .eslintrc.cjs │ ├── package.json │ ├── src │ │ └── main.ts │ └── tsconfig.json ├── qt-construct │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ ├── src │ │ ├── AbstractButton.ts │ │ ├── BoxLayout.ts │ │ ├── CheckBox.ts │ │ ├── ComboBox.ts │ │ ├── Frame.ts │ │ ├── GridLayout.ts │ │ ├── Label.ts │ │ ├── LineEdit.ts │ │ ├── ListWidget.ts │ │ ├── ListWidgetItem.ts │ │ ├── Menu.ts │ │ ├── ProgressBar.ts │ │ ├── PushButton.ts │ │ ├── RadioButton.ts │ │ ├── ScrollArea.ts │ │ ├── ScrollBar.ts │ │ ├── SpinBox.ts │ │ ├── StackedWidget.ts │ │ ├── TabBar.ts │ │ ├── TabWidget.ts │ │ ├── TableView.ts │ │ ├── TextEdit.ts │ │ ├── ToolButton.ts │ │ ├── Utilities.ts │ │ ├── Widget.ts │ │ └── index.ts │ └── tsconfig.json ├── term-api-lineimpl │ ├── .eslintrc.cjs │ ├── README.md │ ├── package.json │ ├── src │ │ ├── LineImpl.ts │ │ └── main.ts │ └── tsconfig.json ├── term-api │ ├── .eslintrc.cjs │ ├── package.json │ ├── src │ │ ├── TermApi.ts │ │ └── TextTermApi.ts │ └── tsconfig.json ├── text-term-api-lineimpl │ ├── .eslintrc.cjs │ ├── README.md │ ├── jest.config.cjs │ ├── package.json │ ├── src │ │ ├── TextLineImpl.ts │ │ ├── main.ts │ │ └── test │ │ │ └── TextLineImpl.jest.ts │ └── tsconfig.json └── text-term-api │ ├── .eslintrc.cjs │ ├── package.json │ ├── src │ └── TextTermApi.ts │ └── tsconfig.json ├── test ├── extraterm-char-render-canvas-test │ ├── README.md │ ├── package.json │ ├── src │ │ ├── TestPattern.ts │ │ ├── main.ts │ │ └── test.html │ └── tsconfig.json └── scripting │ └── list-commands.fish ├── tools └── pty_spy.py ├── tsconfig.json └── yarn.lock /.gitattributes: -------------------------------------------------------------------------------- 1 | *.sh text eol=lf 2 | *.ts text eol=lf 3 | *.tsx text eol=lf 4 | *.js text eol=lf 5 | *.html text eol=lf 6 | *.css text eol=lf 7 | *.md text eol=lf 8 | *.py text eol=lf 9 | *.json text eol=lf 10 | *.txt text eol=lf 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | dist/ 3 | build/ 4 | .cache/ 5 | .vscode/ 6 | .directory 7 | yarn-error.log 8 | __pycache__/ 9 | build_tmp/ 10 | docs/_site 11 | node_modules/ 12 | docs/.sass-cache 13 | extensions/TLDRPages/data/ 14 | .nyc_output/ 15 | coverage/ 16 | 17 | .yarn/* 18 | !.yarn/patches 19 | !.yarn/releases 20 | !.yarn/plugins 21 | !.yarn/sdks 22 | !.yarn/versions 23 | .pnp.* 24 | -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | 3 | yarnPath: .yarn/releases/yarn-3.2.1.cjs 4 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-tactile -------------------------------------------------------------------------------- /build_scripts/download_extraterm-commands.mjs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2024 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import sh from 'shelljs'; 7 | import * as fs from 'node:fs'; 8 | import * as path from 'node:path'; 9 | import * as download_utilities from './download_utilities.mjs'; 10 | 11 | const log = console.log.bind(console); 12 | 13 | const DOWNLOADS_DIR = 'downloads'; 14 | 15 | async function main(version) { 16 | const baseUrl = `https://github.com/sedwards2009/extraterm-commands/releases/download/${version}/`; 17 | const zipFilename = `extraterm-commands-${version.replace("v", "")}.zip`; 18 | const zipFileData = await download_utilities.fetchUrl(`${baseUrl}/${zipFilename}`); 19 | sh.mkdir('-p', DOWNLOADS_DIR); 20 | fs.writeFileSync(path.join(DOWNLOADS_DIR, zipFilename), zipFileData); 21 | } 22 | 23 | if (process.argv.length <= 2) { 24 | log("The version number should be passed as the first parameter to this script. i.e. v3"); 25 | process.exit(1); 26 | } 27 | 28 | main(process.argv[process.argv.length-1]); 29 | -------------------------------------------------------------------------------- /build_scripts/download_utilities.mjs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import * as https from 'node:https'; 7 | 8 | const log = console.log.bind(console); 9 | 10 | /** 11 | * @param {string} url 12 | * @return {Promise} 13 | */ 14 | export async function fetchUrl(url) { 15 | log(`Downloading ${url}`); 16 | return new Promise( (resolve, reject) => { 17 | https.get(url, {}, (resp) => { 18 | // log(resp.headers); 19 | // log(`statusCode: ${resp.statusCode}`); 20 | 21 | if (resp.statusCode === 302) { 22 | fetchUrl(resp.headers.location).then(data => resolve(data)); 23 | return; 24 | } 25 | 26 | const data = []; 27 | resp.on('data', (chunk) => { 28 | data.push(chunk); 29 | }); 30 | 31 | resp.on('end', () => { 32 | resolve(Buffer.concat(data)); 33 | }); 34 | }).on("error", (err) => { 35 | log("Error: " + err.message); 36 | reject("Error: " + err.message); 37 | }); 38 | }); 39 | } 40 | -------------------------------------------------------------------------------- /build_scripts/resources/linux/debian/postinst: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | set -e 3 | 4 | if [ "$1" = "configure" ]; then 5 | update-alternatives --install /usr/bin/x-terminal-emulator \ 6 | x-terminal-emulator /opt/extratermqt/extratermqt 30 7 | fi 8 | -------------------------------------------------------------------------------- /build_scripts/resources/linux/debian/prerm: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ "$1" = "remove" ]; then 5 | update-alternatives --remove x-terminal-emulator /opt/extratermqt/extratermqt 6 | fi 7 | -------------------------------------------------------------------------------- /build_scripts/resources/linux/icons/hicolor/128x128/apps/extratermqt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/build_scripts/resources/linux/icons/hicolor/128x128/apps/extratermqt.png -------------------------------------------------------------------------------- /build_scripts/resources/linux/icons/hicolor/16x16/apps/extratermqt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/build_scripts/resources/linux/icons/hicolor/16x16/apps/extratermqt.png -------------------------------------------------------------------------------- /build_scripts/resources/linux/icons/hicolor/256x256/apps/extratermqt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/build_scripts/resources/linux/icons/hicolor/256x256/apps/extratermqt.png -------------------------------------------------------------------------------- /build_scripts/resources/linux/icons/hicolor/32x32/apps/extratermqt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/build_scripts/resources/linux/icons/hicolor/32x32/apps/extratermqt.png -------------------------------------------------------------------------------- /build_scripts/resources/linux/icons/hicolor/512x512/apps/extratermqt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/build_scripts/resources/linux/icons/hicolor/512x512/apps/extratermqt.png -------------------------------------------------------------------------------- /build_scripts/resources/linux/icons/hicolor/64x64/apps/extratermqt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/build_scripts/resources/linux/icons/hicolor/64x64/apps/extratermqt.png -------------------------------------------------------------------------------- /build_scripts/resources/macos/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/build_scripts/resources/macos/.DS_Store -------------------------------------------------------------------------------- /build_scripts/resources/macos/.VolumeIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/build_scripts/resources/macos/.VolumeIcon.icns -------------------------------------------------------------------------------- /build_scripts/resources/macos/.background/extraterm_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/build_scripts/resources/macos/.background/extraterm_background.png -------------------------------------------------------------------------------- /build_scripts/twemoji_ttf/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM fedora:rawhide 2 | ARG CACHEBUST=no 3 | 4 | ADD ./docker_script.sh / 5 | RUN chmod u+x /docker_script.sh 6 | CMD /docker_script.sh 7 | -------------------------------------------------------------------------------- /build_scripts/twemoji_ttf/README.md: -------------------------------------------------------------------------------- 1 | The `download_twemoji_ttf.sh` script in this directory can be run to download the latest version of the Twemoji font in TTF format from Fedora. This script requires Docker. The TTF file is written to this directory. 2 | -------------------------------------------------------------------------------- /build_scripts/twemoji_ttf/docker_script.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | dnf install -y --nogpgcheck twitter-twemoji-fonts 4 | cp /usr/share/fonts/twemoji/Twemoji.ttf /output 5 | chown $USER_ID:$GROUP_ID /output/* 6 | echo "" 7 | echo "---------------------------------------------------------------------------" 8 | echo "Twemoji version:" 9 | echo "" 10 | dnf list twitter-twemoji-fonts 11 | echo "" 12 | -------------------------------------------------------------------------------- /build_scripts/twemoji_ttf/download_twemoji_ttf.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | docker build --build-arg CACHEBUST=$(date +%s) -t extraterm_twemoji . 4 | docker run -v=$(pwd):/output -e USER_ID=$(id -u) -e GROUP_ID=$(id -g) --rm extraterm_twemoji 5 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | extraterm.org -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-tactile 2 | title: Extraterm 3 | name: Extraterm 4 | description: The swiss army chainsaw of terminal emulators 5 | url: https://sedwards2009.github.io/extraterm/ 6 | -------------------------------------------------------------------------------- /docs/_includes/bluesky_logo.ext: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/_includes/news_list_full.ext: -------------------------------------------------------------------------------- 1 |
    2 | {% for post in site.posts %} 3 |
  • 4 | {{ post.date | date_to_string }} - {{ post.title }} - {{post.excerpt | remove: '

    ' | remove: '

    '}} Read more 5 |
  • 6 | {% endfor %} 7 |
8 | -------------------------------------------------------------------------------- /docs/_includes/news_list_short.ext: -------------------------------------------------------------------------------- 1 |
    2 | {% for post in site.posts limit: 5 %} 3 |
  • 4 | {{ post.date | date_to_string }} - {{ post.title }} - {{post.excerpt | remove: '

    ' | remove: '

    '}} Read more 5 |
  • 6 | {% endfor %} 7 |
8 | -------------------------------------------------------------------------------- /docs/_includes/rss_feed_logo.ext: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/_includes/star.ext: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/_layouts/releases.json.liquid: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | {%- assign pages = site.posts | where_exp: "p", "p.categories contains 'release'" | where_exp: "p", "p.version != nil" | sort: "date" -%} 4 | 5 | [ 6 | {%- for p in pages %} 7 | { 8 | "date": {{ p.date | date_to_xmlschema | jsonify }}, 9 | "url": {{ p.url | jsonify }}, 10 | "version": {{ p.version | jsonify }}, 11 | "title": {{ p.title | markdownify | strip_html | jsonify }} 12 | }{%- unless forloop.last %},{% endunless -%} 13 | {% endfor %} 14 | ] -------------------------------------------------------------------------------- /docs/_posts/2017-08-25-extraterm-v0.27.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.27.0 released 3 | date: 2017-08-25 22:31:00 +0100 4 | categories: release 5 | --- 6 | Version 0.27.0 adds an experimental feature called "Inject Shell Integration" which can set up the Extraterm shell integration by injecting it directly into the current shell. 7 | 8 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.27.0) 9 | 10 | *Changes:* 11 | 12 | * Adds "Inject Bash Shell Integration", "Inject Fish Shell Integration" and "Inject Zsh Shell Integration" commands. 13 | * Updates to the docs and the addition of a website for the project. 14 | -------------------------------------------------------------------------------- /docs/_posts/2017-09-26-extraterm-v0.29.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.29.0 released 3 | date: 2017-09-26 19:00:00 +0100 4 | categories: release 5 | --- 6 | This release focuses on eliminating UI and text alignment glitches, and adds UI scaling. 7 | 8 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.29.0) 9 | 10 | 11 | Added: 12 | * Option in the Settings tab to scale the size of UI. 13 | * Show an icon in the frame of Tips. 14 | 15 | Changed: 16 | * Disable Blink's DPI dependent UI scaling and do it manually. Fixes numerous layout glitches. 17 | * Write application logs to $SETTING_DIR/extraterm/extraterm.log 18 | * Make 'atomic-dark' the default UI theme. 19 | * Added a close pane button to the Pane Menu. 20 | 21 | Fixed: 22 | * Fix a focus bug when opening a new terminal tab using the shortcut. [issue 60](https://github.com/sedwards2009/extraterm/issues/60) 23 | * Tweaked the position and alignment of UI elements. 24 | * Fixed the Zsh integration script and made it work with zsh's prompt system. [issue 61](https://github.com/sedwards2009/extraterm/issues/61) 25 | -------------------------------------------------------------------------------- /docs/_posts/2017-10-01-extraterm-v0.29.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.29.1 released 3 | date: 2017-10-01 16:50:00 +0100 4 | categories: release 5 | --- 6 | This minor release fixes a recently introduced bug which broke the `from` command 7 | 8 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.29.1) 9 | -------------------------------------------------------------------------------- /docs/_posts/2017-10-06-extraterm-v0.29.2-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.29.2 released 3 | date: 2017-10-06 16:57:00 +0100 4 | categories: release 5 | --- 6 | This bug fix release fixes a bad problem where Extraterm won't start up if its configuration directory doesn't exist. 7 | 8 | Fixes [issue #65](https://github.com/sedwards2009/extraterm/issues/65). 9 | 10 | 11 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.29.2) 12 | -------------------------------------------------------------------------------- /docs/_posts/2018-04-08-extraterm-v0.33.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.33.0 released 3 | date: 2018-04-08 19:45:00 +0100 4 | categories: release 5 | --- 6 | UI related improvements and some bug fixes. 7 | 8 | * Organised the Settings tab and gave it a menu on the left side. 9 | * Moved the key bindings settings into the Settings tab proper. 10 | * Upgraded the icons to Font Awesome Free 5.0.9. 11 | * Removed all UI themes except for the two good ones, Atomic Light/Dark. 12 | * Tweaked the `clear` command fix to have less unexpected side-effects. 13 | * [Fixed bug #83](https://github.com/sedwards2009/extraterm/issues/83) related to native window bars causing a corrupt UI. 14 | 15 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.33.0) 16 | -------------------------------------------------------------------------------- /docs/_posts/2018-04-14-extraterm-v0.33.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.33.1 released 3 | date: 2018-04-14 10:50:00 +0100 4 | categories: release 5 | --- 6 | This is just a quick bug fix release to fix the terminal font selection not working as reported in [issue #84](https://github.com/sedwards2009/extraterm/issues/84) 7 | 8 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.33.1) 9 | -------------------------------------------------------------------------------- /docs/_posts/2018-05-05-extraterm-v0.34.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.34.0 released 3 | date: 2018-05-05 20:50:00 +0100 4 | categories: release 5 | --- 6 | This release makes it possible to have different kinds of terminal sessions with their own shell. One the new "Session Types" part of the Settings tab you can create and configure different sessions and to set the default one to use. 7 | 8 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.34.0) 9 | -------------------------------------------------------------------------------- /docs/_posts/2018-05-25-extraterm-v0.35.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.35.1 released 3 | date: 2018-05-25 21:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | This release is a bug fix release for a problem where Extraterm would crash 8 | at start up on Windows if your UI scaling was set to 150%. 9 | [issue #96](https://github.com/sedwards2009/extraterm/issues/96) 10 | 11 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.35.1) 12 | -------------------------------------------------------------------------------- /docs/_posts/2018-06-04-extraterm-v0.35.2-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.35.2 released 3 | date: 2018-06-04 21:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | This release is a bug fix release for a problem which broke the `show` command and prevented it from displaying text files. 8 | 9 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.35.2) 10 | -------------------------------------------------------------------------------- /docs/_posts/2018-09-02-extraterm-v0.36.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.36.1 released 3 | date: 2018-09-02 20:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | This is a bug fix release. 8 | 9 | * Fix some vertical spacing and alignment for frames. 10 | * Fix tabbing out of the Settings tab using the keyboard. [issue #94](https://github.com/sedwards2009/extraterm/issues/94) 11 | * Make the Command Palette available from the Settings tab. 12 | * Prevent emoji from messing up the line height and line spacing. 13 | * Give the Command Palette layout more space. 14 | * Make the `show` and `from` commands more robust if there are local disk related problems. 15 | 16 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.36.1) 17 | -------------------------------------------------------------------------------- /docs/_posts/2018-09-22-extraterm-v0.36.2-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.36.2 released 3 | date: 2018-09-22 22:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | This is a bug fix and minor improvement release. 8 | 9 | * Fix keyboard input using dead keys on macOS. [issue 113](https://github.com/sedwards2009/extraterm/issues/113) 10 | * Add "Paste to Clipboard" to the Command Palette. [issue 116](https://github.com/sedwards2009/extraterm/issues/116) 11 | * Fix the "Clear scrollback" command. [issue 101](https://github.com/sedwards2009/extraterm/issues/101) 12 | * Show the supported theme formats on the Settings tab. 13 | * Add a work-around for a text rendering bug on Linux which renders the underscore character too low. 14 | * Only show horizontal scrollbar when long lines are visible on the screen. 15 | * Prevent the tab key from escaping the Command Palette. 16 | 17 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.36.2) 18 | -------------------------------------------------------------------------------- /docs/_posts/2018-10-20-extraterm-v0.37.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.37.0 released 3 | date: 2018-10-20 21:30:00 +0200 4 | categories: release 5 | --- 6 | 7 | New features and fixes: 8 | 9 | * Keybindings are now configurable from inside Extraterm. [issue 79](https://github.com/sedwards2009/extraterm/issues/79) 10 | * Arguments for the shell can now be specified for terminal sessions. (Contributed by [Nick Shanny](https://github.com/nshanny)) 11 | * Fix for computing the width of asian characters. (Contributed by [Tatsuro YOKOTA](https://github.com/hidaruma)) 12 | * Added macOS DMG builds to releases. 13 | * Added an installer for Windows. 14 | 15 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.37.0) 16 | -------------------------------------------------------------------------------- /docs/_posts/2018-11-01-extraterm-v0.37.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.37.1 released 3 | date: 2018-11-01 22:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | This release fixes a build and packaging issue which affected macOS builds and caused problems when installing Extraterm on case-insensitive file systems. [issue 130](https://github.com/sedwards2009/extraterm/issues/130) 8 | 9 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.37.1) 10 | -------------------------------------------------------------------------------- /docs/_posts/2018-11-09-extraterm-v0.37.2-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.37.2 released 3 | date: 2018-11-09 11:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | This release just fixes a blocking bug for macOS reported in issue [131](https://github.com/sedwards2009/extraterm/issues/131). 8 | 9 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.37.2) 10 | -------------------------------------------------------------------------------- /docs/_posts/2018-11-11-extraterm-v0.37.3-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.37.3 released 3 | date: 2018-11-11 13:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | Fix for a regression introduced in the last release which broke the UI scaling. 8 | 9 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.37.3) 10 | -------------------------------------------------------------------------------- /docs/_posts/2018-11-19-extraterm-v0.37.4-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.37.4 released 3 | date: 2018-11-19 21:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | Bug fix release: 8 | 9 | * Don't show a nasty error message when closing Windows sessions via the close button. [issue #98](https://github.com/sedwards2009/extraterm/issues/98) 10 | * Fix a bug where unneeded refreshes consume too much CPU. 11 | * Improve error handling of misconfigured Cygwin sessions. 12 | * Correctly position the "restart needed" message for the title bar settings. 13 | 14 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.37.4) 15 | -------------------------------------------------------------------------------- /docs/_posts/2018-12-07-extraterm-v0.38.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.38.0 released 3 | date: 2018-12-07 11:30:00 +0100 4 | categories: release 5 | --- 6 | 7 | This release introduces a new default user interface theme called "Two Dark". It is a port and tweak of the "One Dark" theme from the [Atom text editor](https://atom.io/). It is a modern and minimal theme and just like in Atom, it also automatically adapts to the selected terminal color theme. Matching terminal and syntax color themes have also been added. The previous two UI themes are still available. 8 | 9 | Other new features: 10 | 11 | * Compact window title bar style option for all UI themes. 12 | * Configurable padding/margin for the terminal window and around frames. 13 | 14 | This release also contains significant "behind the scenes" work to simplify the CSS and styling used for the UI. 15 | 16 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.38.0) 17 | -------------------------------------------------------------------------------- /docs/_posts/2018-12-10-extraterm-v0.38.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.38.1 released 3 | date: 2018-12-10 19:30:00 +0100 4 | categories: release 5 | --- 6 | 7 | This is a small bug fix release. 8 | 9 | * Windows: Fix for keymaps which use AltGr. [issue #136](https://github.com/sedwards2009/extraterm/issues/136) 10 | * macOS: Don't let keystrokes go through to the terminal when IME is being used. 11 | 12 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.38.1) 13 | -------------------------------------------------------------------------------- /docs/_posts/2018-12-21-extraterm-v0.39.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.39.0 released 3 | date: 2018-12-21 11:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | This feature release introduces: 8 | 9 | * Configurable global shortcuts for showing and hiding the window. 10 | * Optional system tray icon. 11 | * Option to minimize the window to the system tray. 12 | * macOS: Fonts in .dfont format can also be selected. 13 | 14 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.39.0) 15 | -------------------------------------------------------------------------------- /docs/_posts/2019-01-02-extraterm-v0.40.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.40.0 released 3 | date: 2019-01-02 10:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | First feature release for 2019 has: 8 | 9 | * Added context menus through out the app. 10 | * Added "Select All" menu option. 11 | * Added option for disabling "automatic copy selection to clipboard". [issue #145](https://github.com/sedwards2009/extraterm/issues/145) 12 | * It is now possible to configure where user settings are stored. [issue #138](https://github.com/sedwards2009/extraterm/issues/138) 13 | 14 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.40.0) 15 | -------------------------------------------------------------------------------- /docs/_posts/2019-03-08-extraterm-v0.41.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.41.0 released 3 | date: 2019-03-08 19:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | Note: If you have made customised keybindings then you will have to delete it, duplicate and recreate it. Sorry. 8 | 9 | Feature: 10 | 11 | * Find in scrollback. [issue #68](https://github.com/sedwards2009/extraterm/issues/68) 12 | 13 | Bug fixes: 14 | 15 | * Correctly show/hide window controls depending on the settings. [issue #159](https://github.com/sedwards2009/extraterm/issues/159) 16 | * Fix the open folder buttons in the Appearance settings tab. [issue #151](https://github.com/sedwards2009/extraterm/issues/151) 17 | 18 | This release contains a lot of internal infrastructure work around 'commands' and keybindings and also refactoring regarding how the application is rendered. This work provides a foundation for a future extension API and also faster development. 19 | 20 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.41.0) 21 | -------------------------------------------------------------------------------- /docs/_posts/2019-03-23-extraterm-v0.41.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.41.1 released 3 | date: 2019-03-23 09:30:00 +0100 4 | categories: release 5 | --- 6 | 7 | Bug fixes: 8 | 9 | * Pasting blocks of text correctly handles line endings. [issue 164](https://github.com/sedwards2009/extraterm/issues/164), [issue 167](https://github.com/sedwards2009/extraterm/issues/167) 10 | * "Type selection" and "type selection plus CR" commands were missing keyboard shortcuts. Fixed. 11 | * Window positioning was sometimes wrong and/or unusable on MS Windows. [issue 153](https://github.com/sedwards2009/extraterm/issues/153), [issue 120](https://github.com/sedwards2009/extraterm/issues/120) 12 | 13 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.41.1) 14 | -------------------------------------------------------------------------------- /docs/_posts/2019-03-25-extraterm-v0.41.2-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.41.2 released 3 | date: 2019-03-25 22:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | Bug fix: 8 | 9 | * Don't give an ugly error message at start up if the config file is missing. 10 | 11 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.41.2) 12 | -------------------------------------------------------------------------------- /docs/_posts/2019-04-07-extraterm-v0.41.3-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.41.3 released 3 | date: 2019-04-07 21:30:00 +0100 4 | categories: release 5 | --- 6 | 7 | Bug fixes: 8 | 9 | * Fix the Atomic Light and Dark themes which failed to load. 10 | * Make the image viewer work again. [issue 177](https://github.com/sedwards2009/extraterm/issues/177) 11 | * Fix support for WSL Linux installations which mount drives in different locations. [issue 155](https://github.com/sedwards2009/extraterm/issues/155) 12 | * Fix a bug which prevented the Tip dropdown from opening. 13 | * Cosmetic fixes for the UI in the Audio viewer. 14 | * Instances of "toogle" have become "toggle". [issue 174](https://github.com/sedwards2009/extraterm/issues/174) 15 | 16 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.41.3) 17 | -------------------------------------------------------------------------------- /docs/_posts/2019-04-15-extraterm-v0.41.4-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.41.4 released 3 | date: 2019-04-15 19:30:00 +0100 4 | categories: release 5 | --- 6 | 7 | Bug fixes: 8 | 9 | * Allow the UI to scale when screen DPI changes. [issue 179](https://github.com/sedwards2009/extraterm/issues/179) 10 | * Prevent the text areas from scrolling too far at times and looking wrong 11 | 12 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.41.4) 13 | -------------------------------------------------------------------------------- /docs/_posts/2019-05-04-extraterm-v0.42.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.42.1 released 3 | date: 2019-05-04 22:55:00 +0100 4 | categories: release 5 | --- 6 | 7 | Bug fix: 8 | 9 | * Fix the problem where the clipboard copy and paste shortcuts don't work. [issue 190](https://github.com/sedwards2009/extraterm/issues/190) 10 | 11 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.42.1) 12 | -------------------------------------------------------------------------------- /docs/_posts/2019-05-30-extraterm-v0.42.2-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.42.2 released 3 | date: 2019-05-30 23:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | Bug fix release: 8 | 9 | * Fix the `list-font-json.exe` which had some compile weirdness which causes problems for some. [issue 192](https://github.com/sedwards2009/extraterm/issues/192) 10 | * Improvements and clarifications to the keybindings interface. [issue 193](https://github.com/sedwards2009/extraterm/issues/193) 11 | * Fix for switching tabs via keyboard messing things up when in edit mode. 12 | * Fix for the problem where the command palette would sometimes refuse focus. 13 | * Fixes for the `show` command. It now detects and shows more text file formats. 14 | 15 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.42.2) 16 | -------------------------------------------------------------------------------- /docs/_posts/2019-08-21-extraterm-v0.44.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.44.0 released 3 | date: 2019-08-21 20:50:00 +0200 4 | categories: release 5 | --- 6 | 7 | Cursor styles, blinking and bug fixes 8 | 9 | New features: 10 | 11 | * Added cursor style options underscore/bar and vertical beam. 12 | * Added cursor blink option. 13 | 14 | Bug fixes: 15 | 16 | * Fixes to the `list-fonts-json` utility which may have caused Extraterm not to start up. [issue 200](https://github.com/sedwards2009/extraterm/issues/200) 17 | * Fixed bug which caused the text viewer to not resize correctly. 18 | * Make color emoji once again appear on Windows. 19 | 20 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.44.0) 21 | -------------------------------------------------------------------------------- /docs/_posts/2019-09-01-extraterm-v0.44.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.44.1 released 3 | date: 2019-09-01 09:50:00 +0200 4 | categories: release 5 | --- 6 | 7 | Bug fixes: 8 | 9 | * Fix fonts with spaces in their names would fail to load. [issue 206](https://github.com/sedwards2009/extraterm/issues/206) 10 | * Use all of the available colored glyphs on Windows. 11 | * Prevent some cases where wide glyphs would be cut in half. 12 | * Fixed a whole lot of memory leaks. 13 | * The application version in `package.json` is correct this time. [issue 207](https://github.com/sedwards2009/extraterm/issues/207) 14 | * Reduce the amount of memory used when updating the terminal. (disable Ace UndoManager) 15 | * Fix problem where horizontal scrolling won't show contents. 16 | * Move focus away from the window maximise button after click. 17 | * Fix the coordinates being out by (1,1) for urxvt mouse reporting. 18 | 19 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.44.1) 20 | -------------------------------------------------------------------------------- /docs/_posts/2019-09-15-extraterm-v0.45.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.45.0 released 3 | date: 2019-09-15 15:10:00 +0200 4 | categories: release 5 | --- 6 | 7 | A lot of work has gone into improving mouse support for applications. Mouse wheel scrolling now works correctly in the `micro` and `nano` text editors and possibly others. 8 | 9 | New features: 10 | 11 | * Add Bracketed paste support. 12 | * Unwrap lines when copying to clipboard. [issue #69](https://github.com/sedwards2009/extraterm/issues/69) 13 | * Send mouse wheel events to applications with mouse support. [issue #196](https://github.com/sedwards2009/extraterm/issues/196) 14 | * Send cursor up/down to applications using the alternate screen. 15 | 16 | 17 | Bug fixes: 18 | 19 | * Fix support for right mouse button for applications with mouse support. 20 | * Fix bug where zoom wasn't applied to new frames. 21 | 22 | 23 | Changes: 24 | 25 | * Replace EmojiOne with Twemoji for better Unicode coverage. 26 | 27 | 28 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.45.0) 29 | -------------------------------------------------------------------------------- /docs/_posts/2019-11-15-extraterm-v0.47.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.47.0 released 3 | date: 2019-11-15 19:15:00 +0100 4 | categories: release 5 | --- 6 | 7 | New features: 8 | 9 | * Added window transparency options for Windows 10. [issue #66](https://github.com/sedwards2009/extraterm/issues/66) 10 | 11 | Bug fixes: 12 | 13 | * Fixed bug where Extraterm would crash if a command with no output returns a non-zero result code. [issue #225](https://github.com/sedwards2009/extraterm/issues/225) Special thanks go to Greg Resler. 14 | * Added `.desktop` file for starting Extraterm directly on Linux desktops. [issue #124](https://github.com/sedwards2009/extraterm/issues/124) 15 | 16 | Changes: 17 | 18 | * Added option to disable hardware acceleration. On some GPU and driver combinations hardware acceleration causes rendering problems. [issue #209](https://github.com/sedwards2009/extraterm/issues/209) 19 | 20 | 21 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.47.0) 22 | -------------------------------------------------------------------------------- /docs/_posts/2019-11-27-extraterm-v0.48.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.48.0 released 3 | date: 2019-11-27 19:30:00 +0100 4 | categories: release 5 | --- 6 | 7 | New features: 8 | 9 | * Added window transparency options for macOS. 10 | 11 | Bug fixes: 12 | 13 | * Correctly frame output when the cursor is half way up the screen. [issue #225](https://github.com/sedwards2009/extraterm/issues/225) 14 | * Correctly save and restore the hardware acceleration option in the settings. [issue #209](https://github.com/sedwards2009/extraterm/issues/209) 15 | * Fixed a bug where the right mouse button context menu would immediately close on Windows. 16 | * Fixed pop up menu and context menu background color in combination with window transparency. 17 | 18 | Changes: 19 | 20 | * Keyboard shortcuts on macOS are shown formatted much closer to the normal macOS standard. 21 | * Made the "restart needed" messages in Settings consistent 22 | 23 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.48.0) 24 | -------------------------------------------------------------------------------- /docs/_posts/2020-02-09-extraterm-v0.49.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.49.1 released 3 | date: 2020-02-09 20:15:00 +0100 4 | categories: release 5 | --- 6 | 7 | Bug fixes: 8 | 9 | * Pass through Ctrl-6 and related keystrokes. [issue #240](https://github.com/sedwards2009/extraterm/issues/240) 10 | * Fixed bug which caused memory usage to explode when changing DPI, zoom, font size etc. 11 | * Don't clear the selection during cursor blink. [issue #243](https://github.com/sedwards2009/extraterm/issues/243) 12 | * Make find and incremental find work correctly when there are no frames present. 13 | 14 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.49.1) 15 | -------------------------------------------------------------------------------- /docs/_posts/2020-04-15-extraterm-v0.49.3-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.49.3 released 3 | date: 2020-04-15 21:10:00 +0200 4 | categories: release 5 | --- 6 | 7 | Bug fixes: 8 | 9 | * The Atomic interface themes were broken and prevented Extraterm from being usable. [Issue #256](https://github.com/sedwards2009/extraterm/issues/256) 10 | 11 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.49.3) 12 | -------------------------------------------------------------------------------- /docs/_posts/2020-06-05-extraterm-v0.51.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.51.0 released 3 | date: 2020-06-05 17:45:00 +0200 4 | categories: release 5 | --- 6 | 7 | **New features:** 8 | 9 | * Support for multiple windows. Available via the window menu in the top right corner. 10 | 11 | **Changes:** 12 | 13 | * Some actions like the context menu are now faster. 14 | * Shortcuts are now also shown in the window menu. 15 | * Menu items inside an empty pane are now scrollable. 16 | 17 | **Bug fixes:** 18 | 19 | * Fixed adding keybindings to actions which didn't have a keybindings before. 20 | * Fixed the close button shown inside empty panes. 21 | 22 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.51.0) 23 | -------------------------------------------------------------------------------- /docs/_posts/2020-07-20-extraterm-v0.52.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.52.0 released 3 | date: 2020-07-20 23:30:00 +0200 4 | categories: release 5 | --- 6 | 7 | **New features:** 8 | 9 | * Support for multiple WSL2 distributions. Selectable in the sessions configuration tab. 10 | 11 | **Changes** 12 | 13 | * On WSL/WSL2 Python 3 no longer needs to be available inside the Linux environment. A proxy written in Go now runs inside the WSL environment. 14 | 15 | **Bug fixes:** 16 | 17 | * Fixed slow down when the scrollback is long. 18 | * Key code sent for Backspace+modifiers is conform other (Linux) emulators. #271 19 | 20 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.52.0) 21 | -------------------------------------------------------------------------------- /docs/_posts/2020-08-28-extraterm-v0.53.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.53.0 released 3 | date: 2020-08-28 20:00:00 +0200 4 | categories: release 5 | --- 6 | **New features** 7 | 8 | * GPU accelerated text rendering #218 9 | 10 | **Changes** 11 | 12 | * Improved font rendering; subpixel text antialiasing is used where possible #152 13 | * Updated emoji support and updated Twemoji glyphs. 14 | * Emoji widths more closely match iTerm2 and other terminals. 15 | * Emoji are scaled down to fit inside cells when needed. 16 | * Italic text is also scaled to fit inside cells. 17 | 18 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.53.0) 19 | -------------------------------------------------------------------------------- /docs/_posts/2020-09-18-extraterm-v0.53.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.53.1 released 3 | date: 2020-09-18 22:00:00 +0200 4 | categories: release 5 | --- 6 | 7 | **Changes** 8 | 9 | * Rendering speed improvements for ligatures 10 | * Improved latency between receiving data and rendering 11 | 12 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.53.1) 13 | -------------------------------------------------------------------------------- /docs/_posts/2020-11-20-extraterm-v0.55.2-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.55.2 released 3 | date: 2020-11-20 19:40:00 +0100 4 | categories: release 5 | --- 6 | 7 | This is a quick release to fix some regression bugs which appeared in the previous release. 8 | 9 | **Bug fixes** 10 | 11 | * Fix broken splits and panes. [#309](https://github.com/sedwards2009/extraterm/issues/309) 12 | 13 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.55.2) 14 | -------------------------------------------------------------------------------- /docs/_posts/2021-01-07-extraterm-v0.57.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.57.0 released 3 | date: 2021-01-07 18:35:00 +0100 4 | categories: release 5 | --- 6 | 7 | **Features** 8 | 9 | * URL detection and automatic linking. [#173](https://github.com/sedwards2009/extraterm/issues/173) 10 | 11 | 12 | **Bug fixes** 13 | 14 | * Fix for cell "decoration" not fully covering ligatures. 15 | 16 | 17 | **Changes** 18 | 19 | * Changes to the Extension API around how blocks are exposed inside terminals. 20 | 21 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.57.0) 22 | -------------------------------------------------------------------------------- /docs/_posts/2021-01-22-extraterm-v0.57.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.57.1 released 3 | date: 2021-01-22 19:30:00 +0100 4 | categories: release 5 | --- 6 | 7 | **Bug fixes** 8 | 9 | * Fix a memory leak which affects long running sessions. 10 | * Fix inverse text rendering on transparent windows. [#320](https://github.com/sedwards2009/extraterm/issues/320) [#283](https://github.com/sedwards2009/extraterm/issues/283) 11 | * Fix a crash when editing text directly. 12 | * Fix Python detection on Cygwin. (Thanks Doğan Çelik) 13 | 14 | **Changes** 15 | 16 | * Improve rendering speed by preventing some memory allocations. 17 | * Improve rendering speed by caching cell to JS string conversions. 18 | 19 | 20 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.57.1) 21 | -------------------------------------------------------------------------------- /docs/_posts/2021-04-17-extraterm-v0.59.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.59.0 released 3 | date: 2021-04-17 12:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | This release changes how the main Extraterm application is started up. It will now try to open the first terminal session in the same directory from where Extraterm was started. This makes it easier to support integration with operating system desktops. For example, support for the "Open in Terminal" menu item in Linux Mint's file manager and other Linux desktops. 8 | 9 | Also, if Extraterm is run again, then a new terminal tab is opened and the window is brought to the top. 10 | 11 | 12 | **Features** 13 | 14 | * "Open in Extraterm" option added to Windows Explorer's context menus during install. [#330](https://github.com/sedwards2009/extraterm/issues/330) 15 | * Added command to open the current directory in the desktop file manager. 16 | * Added command to copy the current directory path to the clipboard. 17 | 18 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.59.0) 19 | -------------------------------------------------------------------------------- /docs/_posts/2021-04-23-extraterm-v0.59.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.59.1 released 3 | date: 2021-04-23 19:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | **Bug fixes** 8 | 9 | * If Extraterm process is forced to exit or crashes, then it might not start up again. [#342](https://github.com/sedwards2009/extraterm/issues/342) 10 | 11 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.59.1) 12 | -------------------------------------------------------------------------------- /docs/_posts/2021-05-01-extraterm-v0.59.2-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.59.2 released 3 | date: 2021-05-01 21:30:00 +0100 4 | categories: release 5 | --- 6 | 7 | **Changes** 8 | 9 | * Windows: Changed the launcher program `extraterm.exe` to avoid having Microsoft Defender incorrectly flag it as being a threat, i.e. false positive. [#343](https://github.com/sedwards2009/extraterm/issues/343) 10 | 11 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.59.2) 12 | -------------------------------------------------------------------------------- /docs/_posts/2021-07-26-extraterm-v0.59.3-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm v0.59.3 released 3 | date: 2021-07-26 21:45:00 +0100 4 | categories: release 5 | --- 6 | 7 | **Bug fixes** 8 | 9 | * macOS: Set the `LANG` environment variable. [#350](https://github.com/sedwards2009/extraterm/issues/350) (Yoichi NAKAYAMA) 10 | * Make the new window command work again. 11 | 12 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.59.3) 13 | -------------------------------------------------------------------------------- /docs/_posts/2022-01-21-extraterm-v0.59.4-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extratem 0.59.4 released 3 | date: 2022-01-21 19:00:00 +0100 4 | categories: release 5 | --- 6 | 7 | **Bug fixes** 8 | 9 | * Fix for issue [#363](https://github.com/sedwards2009/extraterm/issues/363) where the middle mouse button configuration was not being respected. (thanks Dmitriy Baranov) 10 | 11 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.59.4) 12 | -------------------------------------------------------------------------------- /docs/_posts/2022-05-13-extraterm-v0.61.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.61.0 released 3 | date: 2022-05-13 20:00:00 +0200 4 | categories: release 5 | --- 6 | 7 | **Feature** 8 | 9 | * The return of the TLDR Pages extension. 10 | 11 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.61.0) 12 | -------------------------------------------------------------------------------- /docs/_posts/2022-05-29-extraterm-v0.62.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.62.0 released 3 | date: 2022-05-29 19:15:00 +0200 4 | categories: release 5 | --- 6 | 7 | **Feature** 8 | 9 | * Added "Move tab to Window" command 10 | * Implemented "Max. frames" and "Max. scrollback lines" config 11 | * Implemented "Automatically copy selection to clipboard" config 12 | 13 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.62.0) 14 | -------------------------------------------------------------------------------- /docs/_posts/2022-06-17-extraterm-v0.63.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.63.0 released 3 | date: 2022-06-17 14:30:00 +0200 4 | categories: release 5 | --- 6 | 7 | **Features** 8 | 9 | * Add the "pop out frame" feature back in 10 | * Add "open last frame in tab" command 11 | * Highlight the matched characters in the Command Palette when searching 12 | 13 | **Changes** 14 | 15 | * Increased the default UI font size 16 | * Updated Twemoji font 17 | 18 | 19 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.63.0) 20 | -------------------------------------------------------------------------------- /docs/_posts/2022-07-16-extraterm-v0.65.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.65.0 released 3 | date: 2022-07-16 20:50:00 +0200 4 | categories: release 5 | --- 6 | 7 | **Features** 8 | 9 | * Shell integration utility `from` is back and working 10 | * Added command to copy a block's contents or command line to the clipboard. These commands are also on the context menu. 11 | * Added commands to maximise, minimise, and restore the size of the current window. 12 | * Taskbar and windows now show the Extraterm logo. 13 | * Now possible to configure the window title bar text for a terminal. This works much like tab titles. 14 | 15 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.65.0) 16 | -------------------------------------------------------------------------------- /docs/_posts/2022-11-25-extraterm-v0.68.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.68.0 released 3 | date: 2022-11-25 15:38:00 +0100 4 | categories: release 5 | --- 6 | 7 | Find functionality has been added. It is fast and highlights occurences by default. 8 | 9 | This also expands the foundations in Extraterm and makes it easier to implement similar extensions in the future. 10 | 11 | **Features** 12 | 13 | * Added Find extension. 14 | 15 | **Bug Fixes** 16 | 17 | * Fixed problem where clipboard paste via a mouse button pasted twice. 18 | * Fixed the window icon. 19 | 20 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.68.0) 21 | -------------------------------------------------------------------------------- /docs/_posts/2023-05-05-extraterm-v0.71.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.71.1 released 3 | date: 2023-05-05 16:00:00 +0200 4 | categories: release 5 | version: 0.71.1 6 | --- 7 | 8 | **Bug Fixes** 9 | 10 | * Fix TTC format fonts crashing Extraterm [#402](https://github.com/sedwards2009/extraterm/issues/402) 11 | * Fix for some fonts causing Extraterm to hang when loading. 12 | * Fix for a crash when a font file is missing some TTF data tables. 13 | 14 | 15 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.71.1) 16 | -------------------------------------------------------------------------------- /docs/_posts/2023-09-07-extraterm-v0.73.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.73.0 released 3 | date: 2023-09-07 21:00:00 +0200 4 | categories: release 5 | version: 0.73.0 6 | --- 7 | 8 | **Features** 9 | 10 | * Mouse wheel on the tab bar now scrolls it horizontally 11 | * Added commands and keyboard shortcuts added to move the focus to the (split) pane on the left/right/above/below 12 | * Added commands to split the tab into vertical or horizontal panes 13 | * Empty panes now contain a command palette style menu 14 | 15 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.73.0) 16 | -------------------------------------------------------------------------------- /docs/_posts/2023-11-04-extraterm-v0.74.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.74.0 released 3 | date: 2023-11-04 20:36:00 +0200 4 | categories: release 5 | version: 0.74.0 6 | --- 7 | 8 | **Features** 9 | 10 | * "Theme" and "Theme Compact" window title styles are available again on Linux and Windows. Note: There is a known problem on Windows where window snapping doesn't work with customer window titles. 11 | 12 | **Changes** 13 | 14 | * Extraterm on Linux now rounds DPI internally to integers to avoid rendering artifacts. 15 | 16 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.74.0) 17 | -------------------------------------------------------------------------------- /docs/_posts/2023-11-26-extraterm-v0.75.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.75.0 released 3 | date: 2023-11-26 10:20:00 +0200 4 | categories: release 5 | version: 0.75.0 6 | --- 7 | 8 | **Features** 9 | 10 | * URLs can be drag and dropped into terminals. 11 | 12 | **Fixes** 13 | 14 | * "Find" extension had a performance bug when large scrollbacks are involved. 15 | 16 | * "Clipboard Paste" keyboard shortcut would sometimes not work. 17 | 18 | * Windows Start Menu shortcut icon image was wrong. 19 | 20 | 21 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.75.0) 22 | -------------------------------------------------------------------------------- /docs/_posts/2024-02-24-extraterm-v0.76.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.76.0 released 3 | date: 2024-02-24 17:20:00 +0200 4 | categories: release 5 | version: 0.76.0 6 | --- 7 | 8 | **Features** 9 | 10 | * The Extraterm Commands like `show` and `from` are now rewritten in C and don't require Python to be present to run. 11 | 12 | * Image blocks now have a "Copy image to clipboard" option available. 13 | 14 | **Fixes** 15 | 16 | * When copying multiple lines of text, now only the trailing whitespace is trimmed off. 17 | 18 | * Random bug fixes related to blocks and the `show` command. 19 | 20 | 21 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.76.0) 22 | -------------------------------------------------------------------------------- /docs/_posts/2024-04-10-extraterm-v0.76.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.76.1 released 3 | date: 2024-04-10 20:10:00 +0200 4 | categories: release 5 | version: 0.76.1 6 | --- 7 | 8 | **Fixes** 9 | 10 | * Fixed bug which prevented Extraterm from starting up on Windows. 11 | 12 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.76.1) 13 | -------------------------------------------------------------------------------- /docs/_posts/2024-05-14-extraterm-v0.77.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.77.0 released 3 | date: 2024-05-14 20:20:00 +0200 4 | categories: release 5 | version: 0.77.0 6 | --- 7 | 8 | **Features** 9 | 10 | * [iTerm image protocol](https://iterm2.com/documentation-images.html) support 11 | * Block cursor becomes an outline after losing focus 12 | * Option for a blinking cursor 13 | 14 | **Changes** 15 | 16 | * Support for `CSI > q` terminal query command 17 | 18 | 19 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.77.0) 20 | -------------------------------------------------------------------------------- /docs/_posts/2024-06-19-extraterm-v0.78.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.78.0 released 3 | date: 2024-06-19 23:00:00 +0200 4 | categories: release 5 | version: 0.78.0 6 | --- 7 | 8 | **Features** 9 | 10 | * Initial SSH client support - Supports password and private/public key authentication. 11 | 12 | **Changes** 13 | 14 | * Italic fonts are shown in a smaller size to fit in the cell size. 15 | 16 | 17 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.78.0) 18 | -------------------------------------------------------------------------------- /docs/_posts/2024-06-25-extraterm-v0.78.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.78.1 released 3 | date: 2024-06-25 21:30:00 +0200 4 | categories: release 5 | version: 0.78.1 6 | --- 7 | 8 | **Fixes** 9 | 10 | * Windows resizes on SSH terminals gave wrong cols/rows. 11 | 12 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.78.1) 13 | -------------------------------------------------------------------------------- /docs/_posts/2024-09-05-extraterm-v0.79.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.79.0 released 3 | date: 2024-09-05 21:20:00 +0200 4 | categories: release 5 | version: 0.79.0 6 | --- 7 | 8 | **Features** 9 | 10 | * Added "SSH Quick Open" command 11 | * Support for SSH Agents 12 | 13 | **Fixes** 14 | 15 | * Small bug when copying multiple lines to the clipboard 16 | 17 | 18 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.79.0) 19 | -------------------------------------------------------------------------------- /docs/_posts/2025-01-02-extraterm-v0.80.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.80.0 released 3 | date: 2025-01-02 13:12:00 +0100 4 | categories: release 5 | version: 0.80.0 6 | --- 7 | 8 | This release add a mini-map or "Scroll Map" to the right hand side or terminal sessions, much like that seen in text editors like VSCode. This provides a zoomed out view of the contents of your terminal session, making it easier to navigate long command outputs or to find previous commands. 9 | 10 | 11 | **Features** 12 | 13 | * Added mini-map 14 | 15 | **Fixes** 16 | 17 | * Bug which caused the terminal size to not propagate to remote TTYs during SSH connecting. 18 | 19 | 20 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.80.0) 21 | -------------------------------------------------------------------------------- /docs/_posts/2025-01-25-extraterm-v0.81.0-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.81.0 released 3 | date: 2025-01-25 10:35:00 +0100 4 | categories: release 5 | version: 0.81.0 6 | --- 7 | 8 | **Features** 9 | 10 | * Added recent history to the SSH Quick Open dialog. 11 | 12 | **Fixes** 13 | 14 | * Crash when loading Sudo font (#424) 15 | * Ligature support was broken for a couple of releases. 16 | 17 | 18 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.81.0) 19 | -------------------------------------------------------------------------------- /docs/_posts/2025-05-11-extraterm-v0.81.1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Extraterm Qt v0.81.1 released 3 | date: 2025-05-11 21:00:00 +0200 4 | categories: release 5 | version: 0.81.1 6 | --- 7 | 8 | **Fixes** 9 | 10 | * Fix for mouse selection when mouse protocol is active. This was breaking double click in editors like micro. 11 | 12 | Download it from [Github](https://github.com/sedwards2009/extraterm/releases/tag/v0.81.1) 13 | -------------------------------------------------------------------------------- /docs/action2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/action2.gif -------------------------------------------------------------------------------- /docs/colorizer_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/colorizer_example.png -------------------------------------------------------------------------------- /docs/command_frames.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/command_frames.png -------------------------------------------------------------------------------- /docs/command_palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/command_palette.png -------------------------------------------------------------------------------- /docs/command_palette_450.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/command_palette_450.png -------------------------------------------------------------------------------- /docs/documentation.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Documentation 3 | --- 4 | 5 | [Guide](guide.html) - People new to Extraterm should start here. 6 | 7 | [Frequently Asked Questions](faq.html) 8 | 9 | [Developing Extensions](developing_extensions.md) - Extraterm Extension SDK information 10 | 11 | [Project Goals, or "Why bother at all?](why.html) 12 | -------------------------------------------------------------------------------- /docs/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/download.png -------------------------------------------------------------------------------- /docs/download_upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/download_upload.png -------------------------------------------------------------------------------- /docs/empty_terminal_450.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/empty_terminal_450.png -------------------------------------------------------------------------------- /docs/extension_api/assets/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/extension_api/assets/images/icons.png -------------------------------------------------------------------------------- /docs/extension_api/assets/images/icons@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/extension_api/assets/images/icons@2x.png -------------------------------------------------------------------------------- /docs/extension_api/assets/images/widgets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/extension_api/assets/images/widgets.png -------------------------------------------------------------------------------- /docs/extension_api/assets/images/widgets@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/extension_api/assets/images/widgets@2x.png -------------------------------------------------------------------------------- /docs/extra_session_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/extra_session_settings.png -------------------------------------------------------------------------------- /docs/extraterm_main_logo_512x367.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/extraterm_main_logo_512x367.png -------------------------------------------------------------------------------- /docs/extraterm_minimap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/extraterm_minimap.png -------------------------------------------------------------------------------- /docs/feed.xml: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | 5 | 6 | {{ site.name | xml_escape }} 7 | {% if site.description %}{{ site.description | xml_escape }}{% endif %} 8 | {{ site.url }} 9 | 10 | {% for post in site.posts limit:10 %} 11 | 12 | {{ post.title | xml_escape }} 13 | {% if post.author.name %} 14 | {{ post.author.name | xml_escape }} 15 | {% endif %} 16 | {{ post.content | xml_escape }} 17 | {{ post.date | date_to_rfc822 }} 18 | {{ site.url }}{{ post.url }} 19 | {{ site.url }}{{ post.url }} 20 | 21 | {% endfor %} 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/from_command.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/from_command.gif -------------------------------------------------------------------------------- /docs/from_command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/from_command.png -------------------------------------------------------------------------------- /docs/from_git_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/from_git_1.png -------------------------------------------------------------------------------- /docs/from_git_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/from_git_2.png -------------------------------------------------------------------------------- /docs/insert_emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/insert_emoji.png -------------------------------------------------------------------------------- /docs/insert_emoji_qt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/insert_emoji_qt.png -------------------------------------------------------------------------------- /docs/minimap_450.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/minimap_450.png -------------------------------------------------------------------------------- /docs/nested_panes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/nested_panes.png -------------------------------------------------------------------------------- /docs/news.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: News 3 | --- 4 | {% include news_list_full.ext %} 5 | -------------------------------------------------------------------------------- /docs/releases.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: releases.json 3 | permalink: releases.json 4 | --- 5 | -------------------------------------------------------------------------------- /docs/selection_mode2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/selection_mode2.gif -------------------------------------------------------------------------------- /docs/settings_appearance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/settings_appearance.png -------------------------------------------------------------------------------- /docs/settings_appearance_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/settings_appearance_2.png -------------------------------------------------------------------------------- /docs/settings_colorizer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/settings_colorizer.png -------------------------------------------------------------------------------- /docs/settings_extensions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/settings_extensions.png -------------------------------------------------------------------------------- /docs/settings_frames.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/settings_frames.png -------------------------------------------------------------------------------- /docs/settings_general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/settings_general.png -------------------------------------------------------------------------------- /docs/settings_keybindings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/settings_keybindings.png -------------------------------------------------------------------------------- /docs/settings_keybindings_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/settings_keybindings_2.png -------------------------------------------------------------------------------- /docs/settings_session.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/settings_session.png -------------------------------------------------------------------------------- /docs/settings_tips.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/settings_tips.png -------------------------------------------------------------------------------- /docs/settings_updates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/settings_updates.png -------------------------------------------------------------------------------- /docs/show_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/show_image.png -------------------------------------------------------------------------------- /docs/show_image_450.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/show_image_450.png -------------------------------------------------------------------------------- /docs/split_450.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/split_450.png -------------------------------------------------------------------------------- /docs/splits_and_panes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/splits_and_panes.png -------------------------------------------------------------------------------- /docs/tips/command_editing.md: -------------------------------------------------------------------------------- 1 | Use cursor mode to prepare complex commands inside a frame and then immediately run them. 2 | 3 | ![Directly edit and execute command output](../edit_direct.gif) 4 | -------------------------------------------------------------------------------- /docs/tips/from_command.md: -------------------------------------------------------------------------------- 1 | The “from” command lets you use previous command output as input for terminal commands. 2 | 3 | ![From command](../from_command.gif) 4 | -------------------------------------------------------------------------------- /docs/tldr_optimized.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/docs/tldr_optimized.gif -------------------------------------------------------------------------------- /extensions/About/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/About/README.md: -------------------------------------------------------------------------------- 1 | About tab and new release watcher. 2 | -------------------------------------------------------------------------------- /extensions/About/resources/extraterm_main_logo_266x193.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/extensions/About/resources/extraterm_main_logo_266x193.png -------------------------------------------------------------------------------- /extensions/About/resources/extraterm_main_logo_532x387.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/extensions/About/resources/extraterm_main_logo_532x387.png -------------------------------------------------------------------------------- /extensions/About/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/Autocomplete/README.md: -------------------------------------------------------------------------------- 1 | Autocomplete 2 | ============ 3 | -------------------------------------------------------------------------------- /extensions/Autocomplete/keybindings/macos-style-emacs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "macos-style-emacs", 3 | "bindings": [ 4 | { 5 | "command": "autocomplete:autocomplete", 6 | "keys": [ 7 | "Cmd-;" 8 | ] 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extensions/Autocomplete/keybindings/macos-style.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "macos-style", 3 | "bindings": [ 4 | { 5 | "command": "autocomplete:autocomplete", 6 | "keys": [ 7 | "Cmd-;" 8 | ] 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extensions/Autocomplete/keybindings/pc-style-emacs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "pc-style-emacs", 3 | "bindings": [ 4 | { 5 | "command": "autocomplete:autocomplete", 6 | "keys": [ 7 | "Ctrl-;" 8 | ] 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extensions/Autocomplete/keybindings/pc-style.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "pc-style", 3 | "bindings": [ 4 | { 5 | "command": "autocomplete:autocomplete", 6 | "keys": [ 7 | "Ctrl-;" 8 | ] 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extensions/Autocomplete/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/Autolink/README.md: -------------------------------------------------------------------------------- 1 | Autolink 2 | ======== 3 | Extension to detect and automatically link URLs which appear on the screen and in the scrollback area. 4 | -------------------------------------------------------------------------------- /extensions/Autolink/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "build", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /extensions/Autolink/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "autolink", 3 | "displayName": "Autolink", 4 | "version": "1.0.0", 5 | "description": "", 6 | "type": "module", 7 | "exports": "./dist/Autolink.cjs", 8 | "scripts": { 9 | "build": "yarn run build-code && yarn run build-bundle", 10 | "build-code": "tsc", 11 | "build-bundle": "esbuild build/Autolink.js --bundle --outfile=dist/Autolink.cjs --platform=node --format=cjs --external:@nodegui/nodegui \"--external:nodegui-plugin-*\"", 12 | "clean": "shx rm -rf build dist", 13 | "test": "yarn run build && yarn node --experimental-vm-modules $(yarn bin jest)" 14 | }, 15 | "author": "", 16 | "license": "MIT", 17 | "contributes": {}, 18 | "devDependencies": { 19 | "@extraterm/extraterm-extension-api": "0.15.0", 20 | "@types/jest": "27.0.1", 21 | "esbuild": "^0.15.5", 22 | "jest": "27.5.1", 23 | "shelljs": "0.8.5", 24 | "typescript": "5.2.2" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /extensions/Autolink/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/Colorizer/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/Colorizer/README.md: -------------------------------------------------------------------------------- 1 | Colorizer Extension 2 | =================== 3 | Detect and color keywords in the terminal output. 4 | -------------------------------------------------------------------------------- /extensions/Colorizer/src/Config.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | 7 | export interface ColorRule { 8 | uuid: string; 9 | pattern: string; 10 | isCaseSensitive: boolean; 11 | isRegex: boolean; 12 | foreground: number; 13 | background: number; 14 | isBold: boolean; 15 | isItalic: boolean; 16 | isUnderline: boolean; 17 | } 18 | 19 | export interface Config { 20 | enabled: boolean; 21 | rules: ColorRule[]; 22 | } 23 | -------------------------------------------------------------------------------- /extensions/Colorizer/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/CommunityTerminalThemes/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/CommunityTerminalThemes/README.md: -------------------------------------------------------------------------------- 1 | This extension holds a number of popular terminal themes gathered from around the internet. Information about the origin and license is given below. 2 | 3 | 4 | base16 5 | ====== 6 | base16-default.dark.itermcolors 7 | base16-default.light.itermcolors 8 | 9 | https://github.com/chriskempson/base16-iterm2 10 | 11 | 12 | 13 | === 14 | C64.itermcolors 15 | Cobalt2.itermcolors 16 | Solarized Dark.itermcolors 17 | Solarized Light.itermcolors 18 | Tango Adapted.itermcolors 19 | 20 | https://github.com/mbadolato/iTerm2-Color-Schemes 21 | 22 | 23 | Dracula 24 | ======= 25 | 26 | https://github.com/dracula/iterm 27 | 28 | MIT license 29 | 30 | 31 | base16 32 | ====== 33 | base16-material.itermcolors 34 | base16-monokai.itermcolors 35 | base16-tomorrow.itermcolors 36 | base16-tomorrow-night.itermcolors 37 | 38 | 39 | https://github.com/martinlindhe/base16-iterm2 40 | 41 | MIT license 42 | -------------------------------------------------------------------------------- /extensions/CommunityTerminalThemes/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "community-terminal-themes", 3 | "displayName": "Community Terminal Themes", 4 | "description": "A collection of terminal color themes gathered from the community.", 5 | "version": "1.0.0", 6 | "isInternal": true, 7 | "contributes": { 8 | "terminalThemes": [ 9 | { 10 | "path": "theme" 11 | } 12 | ] 13 | }, 14 | "devDependencies": { 15 | "eslint": "8.53.0" 16 | }, 17 | "dependencies": { 18 | "eslint-config-extraterm": "1.0.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /extensions/CopyBlock/README.md: -------------------------------------------------------------------------------- 1 | Commands related to copying block contents 2 | -------------------------------------------------------------------------------- /extensions/CopyBlock/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/CopyLink/README.md: -------------------------------------------------------------------------------- 1 | Copy Link 2 | ========= 3 | 4 | Extension for copying a hyperlink URL to the clipboard. 5 | -------------------------------------------------------------------------------- /extensions/CopyLink/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/DefaultKeybindings/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "default-keybindings", 3 | "description": "Extraterm Default Keybindings", 4 | "version": "1.0.0", 5 | "isInternal": true, 6 | "contributes": { 7 | "keybindings": [ 8 | { 9 | "path": "keybindings" 10 | } 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /extensions/DefaultTerminalTheme/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "default-terminal-theme", 3 | "description": "Extraterm Default Terminal theme", 4 | "version": "1.0.0", 5 | "isInternal": true, 6 | "contributes": { 7 | "terminalThemes": [ 8 | { 9 | "path": "theme" 10 | } 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /extensions/DirectoryCommands/README.md: -------------------------------------------------------------------------------- 1 | Commands related to the current working directory in a terminal session. 2 | 3 | * "Copy Directory Path to Clipboard" - Copy the current directory path to the clipboard. 4 | * "Open Directory in File Manager" - Open the system file manager like Explorer on Windows, or the Finder on MacOS, to display the current directory. 5 | -------------------------------------------------------------------------------- /extensions/DirectoryCommands/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/DownloadBlock/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/DownloadBlock/README.md: -------------------------------------------------------------------------------- 1 | DownloadBlock 2 | ============= 3 | -------------------------------------------------------------------------------- /extensions/DownloadBlock/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/Find/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/Find/keybindings/macos-style-emacs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "macos-style-emacs", 3 | "bindings": [ 4 | { 5 | "command": "find:find", 6 | "keys": [ 7 | "Cmd-F" 8 | ] 9 | }, 10 | { 11 | "command": "find:findNext", 12 | "keys": [ 13 | "Cmd-G" 14 | ] 15 | }, 16 | { 17 | "command": "find:findPrevious", 18 | "keys": [ 19 | "Cmd-Shift-G" 20 | ] 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /extensions/Find/keybindings/macos-style.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "macos-style", 3 | "bindings": [ 4 | { 5 | "command": "find:find", 6 | "keys": [ 7 | "Cmd-F" 8 | ] 9 | }, 10 | { 11 | "command": "find:findNext", 12 | "keys": [ 13 | "Cmd-G" 14 | ] 15 | }, 16 | { 17 | "command": "find:findPrevious", 18 | "keys": [ 19 | "Cmd-Shift-G" 20 | ] 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /extensions/Find/keybindings/pc-style-emacs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "pc-style-emacs", 3 | "bindings": [ 4 | { 5 | "command": "find:find", 6 | "keys": [ 7 | "Ctrl-Shift-F" 8 | ] 9 | }, 10 | { 11 | "command": "find:findNext", 12 | "keys": [ 13 | "F3" 14 | ] 15 | }, 16 | { 17 | "command": "find:findPrevious", 18 | "keys": [ 19 | "Shift-F3" 20 | ] 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /extensions/Find/keybindings/pc-style.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "pc-style", 3 | "bindings": [ 4 | { 5 | "command": "find:find", 6 | "keys": [ 7 | "Ctrl-Shift-F" 8 | ] 9 | }, 10 | { 11 | "command": "find:findNext", 12 | "keys": [ 13 | "F3" 14 | ] 15 | }, 16 | { 17 | "command": "find:findPrevious", 18 | "keys": [ 19 | "Shift-F3" 20 | ] 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /extensions/Find/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/ITermColorsTerminalThemeProvider/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/ITermColorsTerminalThemeProvider/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "build", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /extensions/ITermColorsTerminalThemeProvider/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/ImageBlock/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/ImageBlock/README.md: -------------------------------------------------------------------------------- 1 | ImageBlock 2 | ========== 3 | A custom block which can show an image. 4 | -------------------------------------------------------------------------------- /extensions/ImageBlock/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/InjectShellIntegration/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/InjectShellIntegration/README.md: -------------------------------------------------------------------------------- 1 | Extension for injecting the Extraterm commands into an open terminal 2 | ==================================================================== 3 | -------------------------------------------------------------------------------- /extensions/InjectShellIntegration/jest.config.js: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "dist", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /extensions/InjectShellIntegration/src/test/test_data/command.py: -------------------------------------------------------------------------------- 1 | import os 2 | ##@inline 3 | from library import * 4 | 5 | def main(): 6 | print("Main run") 7 | SomeLibrary.run() 8 | main() 9 | -------------------------------------------------------------------------------- /extensions/InjectShellIntegration/src/test/test_data/library.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | class SomeLibrary: 4 | def run(): 5 | print("Library run") 6 | -------------------------------------------------------------------------------- /extensions/InjectShellIntegration/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/InsertEmoji/README.txt: -------------------------------------------------------------------------------- 1 | Insert Emoji 2 | ============ 3 | 4 | This extension makes it easy to select and input emojis. Emojis can be filter by their GitHub names. 5 | 6 | The mapping of GitHub name to unicode code point is updated from the GitHub API. 7 | -------------------------------------------------------------------------------- /extensions/InsertEmoji/keybindings/macos-style-emacs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "macos-style-emacs", 3 | "bindings": [ 4 | { 5 | "command": "insert-emoji:insert-emoji", 6 | "keys": [ 7 | "Cmd-E" 8 | ] 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extensions/InsertEmoji/keybindings/macos-style.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "macos-style", 3 | "bindings": [ 4 | { 5 | "command": "insert-emoji:insert-emoji", 6 | "keys": [ 7 | "Cmd-E" 8 | ] 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extensions/InsertEmoji/keybindings/pc-style-emacs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "pc-style-emacs", 3 | "bindings": [ 4 | { 5 | "command": "insert-emoji:insert-emoji", 6 | "keys": [ 7 | "Ctrl-Shift-E" 8 | ] 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extensions/InsertEmoji/keybindings/pc-style.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "pc-style", 3 | "bindings": [ 4 | { 5 | "command": "insert-emoji:insert-emoji", 6 | "keys": [ 7 | "Ctrl-Shift-E" 8 | ] 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extensions/InsertEmoji/src/main.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { ExtensionContext, Logger, ListPickerOptions } from '@extraterm/extraterm-extension-api'; 7 | import { emojiNames, emojiCodePoints } from "./EmojiData.js"; 8 | 9 | 10 | let log: Logger = null; 11 | let context: ExtensionContext = null; 12 | 13 | export function activate(_context: ExtensionContext): any { 14 | context = _context; 15 | log = context.logger; 16 | context.commands.registerCommand("insert-emoji:insert-emoji", showEmojiList); 17 | } 18 | 19 | async function showEmojiList(): Promise { 20 | const allEmojiOptions: ListPickerOptions = { 21 | items: emojiNames, 22 | selectedItemIndex: 0, 23 | widthPx: 250, 24 | }; 25 | 26 | const selected = await context.activeTerminal.showOnCursorListPicker(allEmojiOptions); 27 | if (selected == null) { 28 | return; 29 | } 30 | 31 | context.activeTerminal.type(String.fromCodePoint(emojiCodePoints[selected])); 32 | } 33 | -------------------------------------------------------------------------------- /extensions/InsertEmoji/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/OpenLink/README.txt: -------------------------------------------------------------------------------- 1 | Open Link 2 | ========= 3 | 4 | Extension for adding the command for opening hyperlinks in terminal output. 5 | -------------------------------------------------------------------------------- /extensions/OpenLink/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/ProxySessionBackend/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/ProxySessionBackend/README.md: -------------------------------------------------------------------------------- 1 | The source code for the `resources/extraterm-wsl-proxy` can be found at https://github.com/sedwards2009/extraterm-wsl-proxy A pre-compiled binary is kept here in this repository for convenience. 2 | -------------------------------------------------------------------------------- /extensions/ProxySessionBackend/resources/extraterm-wsl-proxy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/extensions/ProxySessionBackend/resources/extraterm-wsl-proxy -------------------------------------------------------------------------------- /extensions/ProxySessionBackend/src/ProxySessionBackendExtension.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { ExtensionContext } from '@extraterm/extraterm-extension-api'; 7 | import { CygwinProxySessionBackend } from './CygwinProxySessionBackend.js'; 8 | import { WslProxySessionBackend } from './WslProxySessionBackend.js'; 9 | 10 | export function activate(context: ExtensionContext): any { 11 | context.sessions.registerSessionBackend("cygwin", new CygwinProxySessionBackend(context.logger)); 12 | context.sessions.registerSessionBackend("wsl", new WslProxySessionBackend(context.logger)); 13 | } 14 | -------------------------------------------------------------------------------- /extensions/ProxySessionBackend/src/python/ptyprocess/__init__.py: -------------------------------------------------------------------------------- 1 | from .ptyprocess import PtyProcess, PtyProcessUnicode, PtyProcessError 2 | 3 | __version__ = '0.5' 4 | -------------------------------------------------------------------------------- /extensions/ProxySessionBackend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/ProxySessionEditor/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/ProxySessionEditor/src/ProxySessionEditorExtension.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { ExtensionContext } from "@extraterm/extraterm-extension-api"; 7 | import { init as wslInit, wslProxySessionEditorFactory } from "./WslProxySessionEditor.js"; 8 | 9 | 10 | export function activate(context: ExtensionContext): any { 11 | context.logger.info("ProxySessionEditorExtension activate"); 12 | 13 | wslInit(); 14 | context.sessions.registerSessionEditor("wsl", wslProxySessionEditorFactory.bind(null, context.logger)); 15 | } 16 | -------------------------------------------------------------------------------- /extensions/ProxySessionEditor/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/SSHQuickOpen/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/SSHQuickOpen/README.md: -------------------------------------------------------------------------------- 1 | Quick Open SSH session 2 | -------------------------------------------------------------------------------- /extensions/SSHQuickOpen/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/SSHSessionBackend/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/SSHSessionBackend/README.md: -------------------------------------------------------------------------------- 1 | Back-end for SSH connections 2 | -------------------------------------------------------------------------------- /extensions/SSHSessionBackend/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "build", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /extensions/SSHSessionBackend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/SSHSessionEditor/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/SSHSessionEditor/README.md: -------------------------------------------------------------------------------- 1 | Editor for SSH sessions 2 | -------------------------------------------------------------------------------- /extensions/SSHSessionEditor/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/ScrollMap/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/ScrollMap/README.md: -------------------------------------------------------------------------------- 1 | Sidebar Scrolling Map 2 | -------------------------------------------------------------------------------- /extensions/ScrollMap/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/TLDRPages/README.txt: -------------------------------------------------------------------------------- 1 | TLDR Pages 2 | ========== 3 | 4 | This extension puts [TLDR Pages'](https://tldr.sh/) set of command example for many commons utilities, at your finger tips. Select the "TLDR Pages" command from the Commmand Palette to open the index of pages. Select a command to go to the list of examples, and then select an example to have it entered directly into the current terminal. 5 | 6 | The main TLDR Pages site is https://tldr.sh/ 7 | -------------------------------------------------------------------------------- /extensions/TLDRPages/build_scripts/download_data.mjs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import sh from 'shelljs'; 7 | 8 | if ( ! sh.test('-d', 'data')) { 9 | sh.echo("Downloading TLDR Pages data files..."); 10 | sh.exec('download --extract --out data http://tldr-pages.github.io/assets/tldr.zip'); 11 | sh.rm('-r', 'data/pages.*'); 12 | sh.mv('data/index.json', 'data/pages/index.json'); 13 | sh.echo("Done downloading TLDR Pages data."); 14 | } 15 | -------------------------------------------------------------------------------- /extensions/TLDRPages/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "build", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /extensions/TLDRPages/src/PageDatabase.jest.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | 7 | import { PageDatabase } from "./PageDatabase.js"; 8 | 9 | test("Scan", async () => { 10 | const db = new PageDatabase("./data/pages"); 11 | await db.loadIndex(); 12 | 13 | const commandNames = db.getCommandNames(); 14 | 15 | expect(commandNames).not.toBe(0); 16 | expect(commandNames.indexOf("ack")).not.toBe(-1); 17 | 18 | const info = await db.getPageInfoByName("cd", "windows"); 19 | 20 | expect(info.examples.length).not.toBe(0); 21 | expect(info.examples[0].commandLine).toMatch(/^[^`].*[^`]$/); 22 | expect(info.examples[0].description).toMatch(/^.*[^:]$/); 23 | }); 24 | -------------------------------------------------------------------------------- /extensions/TLDRPages/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/TerminalTitle/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/TerminalTitle/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "build", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /extensions/TerminalTitle/resources/sass/tab-title.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 Simon Edwards 3 | */ 4 | 5 | DIV.tab_title { 6 | overflow: hidden; 7 | text-overflow: ellipsis; 8 | } 9 | -------------------------------------------------------------------------------- /extensions/TerminalTitle/src/IconFormatter.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { Style } from '@extraterm/extraterm-extension-api'; 7 | import { FieldFormatter, FormatResult } from "./TemplateString.js"; 8 | 9 | 10 | export class IconFormatter implements FieldFormatter { 11 | #style: Style; 12 | 13 | constructor(style: Style) { 14 | this.#style = style; 15 | } 16 | 17 | format(key: string): FormatResult { 18 | return { 19 | html: this.#style.createHtmlIcon( key) ?? "???", 20 | iconName: key 21 | }; 22 | } 23 | 24 | getErrorMessage(key: string): string { 25 | return null; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /extensions/TerminalTitle/src/TerminalEnvironmentFormatter.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import he from "he"; 7 | import { FieldFormatter, FormatResult } from "./TemplateString.js"; 8 | 9 | 10 | /*** 11 | * Translate keys to values from the given terminal environment. 12 | */ 13 | export class TerminalEnvironmentFormatter implements FieldFormatter { 14 | #namespace: string; 15 | #env: { get(key: string): string; }; 16 | 17 | constructor(namespace: string, env: { get(key: string): string; }) { 18 | this.#namespace = namespace; 19 | this.#env = env; 20 | } 21 | 22 | format(key: string): FormatResult { 23 | const value = this.#env.get(this.#namespace + ":" + key.toLowerCase()); 24 | return {text: value == null ? "" : value}; 25 | } 26 | 27 | getErrorMessage(key: string): string { 28 | const value = this.#env.get(this.#namespace + ":" + key.toLowerCase()); 29 | return value == null ? "Unknown key '" + he.encode(key) + "'" : null; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /extensions/TerminalTitle/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/Tips/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/Tips/README.md: -------------------------------------------------------------------------------- 1 | Tips Extension 2 | ============== 3 | Shows handy tips at the start of a terminal session. 4 | -------------------------------------------------------------------------------- /extensions/Tips/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/UnixSessionBackend/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/UnixSessionBackend/src/typings/node-pty.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2019, Simon Edwards 3 | */ 4 | import * as net from 'node:net'; 5 | 6 | /** 7 | * This exposes additional properties of the node-pty implementation. 8 | */ 9 | declare module 'node-pty' { 10 | 11 | export interface IPty { 12 | on(event: 'drain', listener: () => void): void; 13 | 14 | pause(): void; 15 | resume(): void; 16 | destroy(): void; 17 | _socket: net.Socket; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /extensions/UnixSessionBackend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/UnixSessionEditor/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/UnixSessionEditor/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/UpdateChecker/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/UpdateChecker/README.md: -------------------------------------------------------------------------------- 1 | Update Checker 2 | ============== 3 | 4 | Checks for new Extraterm releases. 5 | -------------------------------------------------------------------------------- /extensions/UpdateChecker/src/Config.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | 7 | export interface Config { 8 | checkOn: boolean; 9 | requestedPermission: boolean; 10 | lastCheck: number; 11 | newVersion: string; 12 | newUrl: string; 13 | lastDismissedVersion: string; 14 | } 15 | -------------------------------------------------------------------------------- /extensions/UpdateChecker/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/WindowsConsoleSessionBackend/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/WindowsConsoleSessionBackend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /extensions/WindowsConsoleSessionEditor/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /extensions/WindowsConsoleSessionEditor/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /main/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /main/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "build", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /main/resources/extra_icons/3_osx_close.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /main/resources/extra_icons/4_osx_maximize.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /main/resources/extra_icons/5_osx_minimize.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /main/resources/extra_icons/6_triangle_down.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 31 | -------------------------------------------------------------------------------- /main/resources/extra_icons/7_triangle_up.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 31 | -------------------------------------------------------------------------------- /main/resources/extraterm.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=ExtratermQt 3 | Exec=/opt/extratermqt/extratermqt 4 | Terminal=false 5 | Type=Application 6 | Comment=The swiss army chainsaw of terminal emulators 7 | Categories=System;TerminalEmulator;X-GNOME-Utilities; 8 | Icon=extratermqt 9 | -------------------------------------------------------------------------------- /main/resources/fonts/Twemoji.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/fonts/Twemoji.ttf -------------------------------------------------------------------------------- /main/resources/fonts/extraicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/fonts/extraicons.ttf -------------------------------------------------------------------------------- /main/resources/fonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/fonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /main/resources/fonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/fonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /main/resources/fonts/format_font_awesome_metadata.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | 3 | const fileContents = fs.readFileSync("/home/sbe/fontawesome-free-5.15.3-web/metadata/icons.json", {encoding: "utf8"}); 4 | const iconData = JSON.parse(fileContents); 5 | for (const key in iconData) { 6 | const item = iconData[key]; 7 | console.log(` "fa-${key}": {string: "\\u{${item.unicode}}", set: "${item.free[0]}"},`); 8 | } 9 | -------------------------------------------------------------------------------- /main/resources/list-fonts-json-binary/darwin-x64/list-fonts-json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/list-fonts-json-binary/darwin-x64/list-fonts-json -------------------------------------------------------------------------------- /main/resources/list-fonts-json-binary/linux-x64/list-fonts-json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/list-fonts-json-binary/linux-x64/list-fonts-json -------------------------------------------------------------------------------- /main/resources/list-fonts-json-binary/win32-x64/MSVCP140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/list-fonts-json-binary/win32-x64/MSVCP140.dll -------------------------------------------------------------------------------- /main/resources/list-fonts-json-binary/win32-x64/VCRUNTIME140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/list-fonts-json-binary/win32-x64/VCRUNTIME140.dll -------------------------------------------------------------------------------- /main/resources/list-fonts-json-binary/win32-x64/list-fonts-json.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/list-fonts-json-binary/win32-x64/list-fonts-json.exe -------------------------------------------------------------------------------- /main/resources/logo/extraterm_small_logo.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/logo/extraterm_small_logo.icns -------------------------------------------------------------------------------- /main/resources/logo/extraterm_small_logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/logo/extraterm_small_logo.ico -------------------------------------------------------------------------------- /main/resources/logo/extraterm_small_logo_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/logo/extraterm_small_logo_16x16.png -------------------------------------------------------------------------------- /main/resources/logo/extraterm_small_logo_22x22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/logo/extraterm_small_logo_22x22.png -------------------------------------------------------------------------------- /main/resources/logo/extraterm_small_logo_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/logo/extraterm_small_logo_256x256.png -------------------------------------------------------------------------------- /main/resources/logo/extraterm_small_logo_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/logo/extraterm_small_logo_32x32.png -------------------------------------------------------------------------------- /main/resources/logo/extraterm_small_logo_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/logo/extraterm_small_logo_64x64.png -------------------------------------------------------------------------------- /main/resources/terminal_fonts/LigaDejaVuSansMono.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/resources/terminal_fonts/LigaDejaVuSansMono.ttf -------------------------------------------------------------------------------- /main/resources/theme_ui/DarkTwo/empty.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /main/src/ContextMenuEvent.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | 7 | import { BlockFrame } from "./terminal/BlockFrame.js"; 8 | import { Terminal } from "./terminal/Terminal.js"; 9 | 10 | export interface ContextMenuEvent { 11 | x: number; 12 | y: number; 13 | blockFrame: BlockFrame; 14 | terminal: Terminal; 15 | } 16 | -------------------------------------------------------------------------------- /main/src/Tab.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { QWidget } from "@nodegui/nodegui"; 7 | import { Disposable, Event } from "@extraterm/extraterm-extension-api"; 8 | 9 | 10 | export interface Tab extends Disposable { 11 | getIconName(): string; 12 | getTitle(): string; 13 | getContents(): QWidget; 14 | getTabWidget(): QWidget; 15 | setIsCurrent(isCurrent: boolean): void; 16 | focus(): void; 17 | unfocus(): void; 18 | getWindowTitle(): string; 19 | setWindowTitle(title: string): void; 20 | onWindowTitleChanged: Event; 21 | setParent(parent: any); 22 | getParent(): any; 23 | } 24 | -------------------------------------------------------------------------------- /main/src/TwemojiConstants.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | 7 | export const TWEMOJI_FAMILY = "twemoji"; 8 | export const TWEMOJI_UNICODE_START = 0x1f000; 9 | export const TWEMOJI_UNICODE_END = 0x20000; 10 | -------------------------------------------------------------------------------- /main/src/bulk_file_handling/BulkFile.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017-2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { BulkFileMetadata, BulkFileState, Disposable, Event } from "@extraterm/extraterm-extension-api"; 7 | 8 | 9 | export interface BulkFile { 10 | 11 | // TODO: Maybe this interface should have a "writeable" sub-interface 12 | onStateChanged: Event; 13 | onAvailableSizeChanged: Event; 14 | 15 | getTotalSize(): number; 16 | getFilePath(): string; 17 | getByteCount(): number; 18 | getState(): BulkFileState; 19 | ref(): number; 20 | deref(): number; 21 | getRefCount(): number; 22 | getMetadata(): BulkFileMetadata; 23 | getPeekBuffer(): Buffer; 24 | getUrl(): string; 25 | createReadableStream(): NodeJS.ReadableStream & Disposable; 26 | } 27 | -------------------------------------------------------------------------------- /main/src/bulk_file_handling/BulkFileUtils.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | 7 | import * as MimeTypeDetector from 'extraterm-mimetype-detector'; 8 | import { BulkFile } from './BulkFile.js'; 9 | 10 | 11 | export function guessMimetype(bulkFileHandle: BulkFile): {mimeType: string, charset:string} { 12 | const buffer = bulkFileHandle.getPeekBuffer(); 13 | const metadata = bulkFileHandle.getMetadata(); 14 | return MimeTypeDetector.detectWithMetadata(metadata, buffer); 15 | } 16 | -------------------------------------------------------------------------------- /main/src/bulk_file_handling/DisposableNullTransform.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { Transform } from "node:stream"; 7 | import { Disposable } from '@extraterm/extraterm-extension-api'; 8 | 9 | 10 | // This is an elaborate way of passing back a dispose() method and a Readable in one object. 11 | export class DisposableNullTransform extends Transform implements Disposable { 12 | #disposable: Disposable = null; 13 | 14 | constructor(disposable: Disposable) { 15 | super(); 16 | this.#disposable = disposable; 17 | } 18 | 19 | _transform(chunk: any, encoding: string, callback: Function): void { 20 | this.push(chunk); 21 | callback(); 22 | } 23 | 24 | dispose(): void { 25 | if (this.#disposable == null) { 26 | return; 27 | } 28 | this.#disposable.dispose(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /main/src/extension/CommonExtensionState.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019-2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { Tab } from "../Tab.js"; 7 | import { BlockFrame } from "../terminal/BlockFrame.js"; 8 | import { Terminal } from "../terminal/Terminal.js"; 9 | import { Window } from "../Window.js"; 10 | 11 | // This is a way of passing through all of the state which is common across all extension contexts. 12 | 13 | export interface CommonExtensionWindowState { 14 | activeWindow: Window; 15 | activeTab: Tab; 16 | activeTerminal: Terminal; 17 | activeBlockFrame: BlockFrame; 18 | activeHyperlinkURL: string; 19 | } 20 | -------------------------------------------------------------------------------- /main/src/extension/ExtensionManagerTypes.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import * as _ from "lodash-es"; 7 | import { ExtensionBlock, SessionBackend, TerminalThemeProvider } from "@extraterm/extraterm-extension-api"; 8 | 9 | import { ExtensionMetadata, ExtensionSessionBackendContribution, ExtensionSettingsTabContribution } from "./ExtensionMetadata.js"; 10 | 11 | 12 | export interface LoadedSessionBackendContribution { 13 | metadata: ExtensionMetadata; 14 | sessionBackendMetadata: ExtensionSessionBackendContribution; 15 | sessionBackend: SessionBackend; 16 | } 17 | 18 | export interface LoadedTerminalThemeProviderContribution { 19 | metadata: ExtensionMetadata; 20 | terminalThemeProvider: TerminalThemeProvider; 21 | } 22 | -------------------------------------------------------------------------------- /main/src/extension/api/ClipboardImpl.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import * as ExtensionApi from '@extraterm/extraterm-extension-api'; 7 | import { QApplication, QMimeData } from '@nodegui/nodegui'; 8 | 9 | 10 | export class ClipboardImpl implements ExtensionApi.Clipboard { 11 | #log: ExtensionApi.Logger = null; 12 | 13 | constructor(logger: ExtensionApi.Logger) { 14 | this.#log = logger; 15 | } 16 | 17 | writeText(text: string): void { 18 | if (text == null) { 19 | this.#log.warn(`An invalid value ('null' or 'undefined') was passed to 'clipboard.writeText()'.`); 20 | return; 21 | } 22 | QApplication.clipboard().setText(text); 23 | } 24 | 25 | writeBuffer(mimeType: string, buffer: Buffer): void { 26 | const mimeData = new QMimeData(); 27 | mimeData.setData(mimeType, buffer); 28 | QApplication.clipboard().setMimeData(mimeData); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /main/src/extension/api/ConfigurationImpl.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import * as ExtensionApi from "@extraterm/extraterm-extension-api"; 7 | import { ConfigDatabase } from "../../config/ConfigDatabase.js"; 8 | 9 | 10 | export class ConfigurationImpl implements ExtensionApi.Configuration, ExtensionApi.Disposable { 11 | #configDatabase: ConfigDatabase = null; 12 | 13 | #extensionName: string = null; 14 | 15 | constructor(configDatabase: ConfigDatabase, extensionName: string) { 16 | this.#configDatabase = configDatabase; 17 | this.#extensionName = extensionName; 18 | } 19 | 20 | dispose(): void { 21 | } 22 | 23 | get(): any { 24 | return this.#configDatabase.getExtensionConfig(this.#extensionName); 25 | } 26 | 27 | set(config: any): void { 28 | this.#configDatabase.setExtensionConfig(this.#extensionName, config); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /main/src/extension/api/TerminalEnvironmentImpl.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/main/src/extension/api/TerminalEnvironmentImpl.ts -------------------------------------------------------------------------------- /main/src/extension/api/TerminalSettingsImpl.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import * as ExtensionApi from "@extraterm/extraterm-extension-api"; 7 | import { ConfigDatabase } from "../../config/ConfigDatabase"; 8 | import { ThemeManager } from "../../theme/ThemeManager.js"; 9 | 10 | 11 | export class TerminalSettingsImpl implements ExtensionApi.TerminalSettings { 12 | #configDatabase: ConfigDatabase; 13 | #themeManager: ThemeManager; 14 | 15 | constructor(configDatabase: ConfigDatabase, themeManager: ThemeManager) { 16 | this.#configDatabase = configDatabase; 17 | this.#themeManager = themeManager; 18 | } 19 | 20 | get currentTheme(): ExtensionApi.TerminalTheme { 21 | const config = this.#configDatabase.getGeneralConfig(); 22 | return this.#themeManager.getTerminalTheme(config.themeTerminal); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /main/src/extension/api/TerminalsImpl.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import * as ExtensionApi from "@extraterm/extraterm-extension-api"; 7 | import { InternalExtensionContext } from "../../InternalTypes.js"; 8 | 9 | 10 | export class TerminalsImpl implements ExtensionApi.Terminals { 11 | 12 | #internalExtensionContext: InternalExtensionContext; 13 | 14 | constructor(internalExtensionContext: InternalExtensionContext) { 15 | this.#internalExtensionContext = internalExtensionContext; 16 | } 17 | 18 | get onDidCreateTerminal(): ExtensionApi.Event { 19 | return this.#internalExtensionContext.onDidCreateTerminal; 20 | } 21 | 22 | get terminals(): ExtensionApi.Terminal[] { 23 | return this.#internalExtensionContext.getAllTerminals(); 24 | } 25 | 26 | registerBlock(name: string, factory: ExtensionApi.ExtensionBlockFactory): void { 27 | this.#internalExtensionContext.blockRegistry.registerBlock(name, factory); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /main/src/extension/api/WindowsImpl.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import * as ExtensionApi from "@extraterm/extraterm-extension-api"; 7 | import { InternalExtensionContext } from "../../InternalTypes.js"; 8 | 9 | export class WindowsImpl implements ExtensionApi.Windows { 10 | 11 | #internalExtensionContext: InternalExtensionContext; 12 | 13 | constructor(internalExtensionContext: InternalExtensionContext) { 14 | this.#internalExtensionContext = internalExtensionContext; 15 | } 16 | 17 | registerTabTitleWidget(name: string, factory: ExtensionApi.TabTitleWidgetFactory): void { 18 | this.#internalExtensionContext.tabTitleWidgetRegistry.registerTabTitleWidget(name, factory); 19 | } 20 | 21 | registerTerminalThemeProvider(name: string, provider: ExtensionApi.TerminalThemeProvider): void { 22 | this.#internalExtensionContext.registerTerminalThemeProvider(name, provider); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /main/src/keybindings/test_files/pc-style.json: -------------------------------------------------------------------------------- 1 | { 2 | "basedOn": "pc-style", 3 | "customBindings": [ 4 | { 5 | "command": "extraterm:application.openCommandPalette", 6 | "keys": [] 7 | }, 8 | { 9 | "command": "extraterm:global.globalToggleShowHide", 10 | "keys": ["Ctrl-F1"] 11 | } 12 | 13 | ] 14 | } -------------------------------------------------------------------------------- /main/src/local_http_server/PingHandler.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import * as http from "node:http"; 7 | import { getLogger, Logger } from "extraterm-logging"; 8 | 9 | import { RequestContext, RequestHandler } from "../local_http_server/RequestHandlerType.js"; 10 | 11 | 12 | export class PingHandler implements RequestHandler { 13 | private _log: Logger = null; 14 | 15 | constructor() { 16 | this._log = getLogger("PingHandler", this); 17 | } 18 | 19 | handle(req: http.IncomingMessage, res: http.ServerResponse, path: string, context: RequestContext): void { 20 | res.statusCode = 200; 21 | res.setHeader("Content-Type", "text/plain"); 22 | res.end("pong"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /main/src/local_http_server/RequestHandlerType.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import * as http from "node:http"; 7 | 8 | export interface RequestContext { 9 | 10 | } 11 | 12 | export interface RequestHandler { 13 | handle(req: http.IncomingMessage, res: http.ServerResponse, path: string, context: RequestContext): void; 14 | } 15 | -------------------------------------------------------------------------------- /main/src/settings/SettingsPageType.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { QWidget } from "@nodegui/nodegui"; 7 | 8 | 9 | export interface SettingsPageType { 10 | getIconName(): string; 11 | getMenuText(): string; 12 | getPage(): QWidget; 13 | getName(): string; 14 | } 15 | -------------------------------------------------------------------------------- /main/src/terminal/Block.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { QWidget } from "@nodegui/nodegui"; 7 | import { Disposable, BlockMetadata } from "@extraterm/extraterm-extension-api"; 8 | import { Event } from "extraterm-event-emitter"; 9 | import { BulkFile } from "../bulk_file_handling/BulkFile.js"; 10 | 11 | 12 | export interface Block extends Disposable { 13 | getWidget(): QWidget; 14 | getMetadata(): BlockMetadata; 15 | onMetadataChanged: Event; 16 | getBulkFile(): BulkFile; 17 | setParent(parent: any): void; 18 | getParent(): any; 19 | } 20 | -------------------------------------------------------------------------------- /main/src/terminal/BlockFrame.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { QWidget } from "@nodegui/nodegui"; 7 | import { Block } from "./Block.js"; 8 | 9 | /** 10 | * A frame around a Block. 11 | * 12 | * Every block inside a terminal is held within a a `BlockFrame`. The visual 13 | * appearance of the `BlockFrame` can vary from invisible to a full frame 14 | * with title bar and surrounding visible frame. 15 | */ 16 | export interface BlockFrame { 17 | getBlock(): Block; 18 | setBlock(block: Block): void; 19 | 20 | getWidget(): QWidget; 21 | 22 | setViewportTop(relativeTopPx: number): void; 23 | 24 | getTag(): number; 25 | } 26 | -------------------------------------------------------------------------------- /main/src/terminal/FrameFinderType.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { BulkFile } from '../bulk_file_handling/BulkFile'; 7 | 8 | 9 | /** 10 | * Given a frame ID, this locates and returns the coresponding content if found. 11 | */ 12 | export interface FrameFinder { 13 | (frameId: string): BulkFile; 14 | } 15 | -------------------------------------------------------------------------------- /main/src/terminal/TerminalEmbeddedImages.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2024 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | 7 | import { EmbeddedImage, EmbeddedImageMap } from "extraterm-char-render-canvas"; 8 | 9 | export class TerminalEmbeddedImages { 10 | 11 | #embeddedImageMap: EmbeddedImageMap = new Map(); 12 | 13 | constructor(original: TerminalEmbeddedImages=null) { 14 | if (original == null) { 15 | this.#embeddedImageMap = new Map(); 16 | } else { 17 | this.#embeddedImageMap = new Map([...original.getMap()]); 18 | } 19 | } 20 | 21 | getMap(): EmbeddedImageMap { 22 | return this.#embeddedImageMap; 23 | } 24 | 25 | clone(): TerminalEmbeddedImages { 26 | return new TerminalEmbeddedImages(this); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /main/src/theme/Theme.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2021 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | 7 | export type ThemeType = "terminal"; 8 | 9 | export interface ThemeInfo { 10 | name: string; 11 | id: string; 12 | type: ThemeType; 13 | path: string; 14 | provider: string; 15 | debug: boolean; 16 | comment: string; 17 | loadingBackgroundColor: string; 18 | loadingForegroundColor: string; 19 | } 20 | 21 | export const FALLBACK_TERMINAL_THEME = "itermcolors-terminal-theme-provider:Two Dark.itermcolors"; 22 | -------------------------------------------------------------------------------- /main/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/eslint-config-extraterm/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eslint-config-extraterm", 3 | "version": "1.0.0", 4 | "description": "ESLint rules for use in Extraterm", 5 | "main": "index.js", 6 | "files": [ 7 | "index.js" 8 | ], 9 | "author": "Simon Edwards", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "@typescript-eslint/parser": "^6.x", 13 | "eslint": "8.53.0" 14 | }, 15 | "peerDependencies": { 16 | "@typescript-eslint/parser": "^6.x", 17 | "eslint": "8.53.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/extraterm-boolean-expression-evaluator/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-boolean-expression-evaluator/README.md: -------------------------------------------------------------------------------- 1 | A boolean expression evaluator. It accepts an object with keys defining variables mapping to boolean values. Symbols in the expressions are looked up against this object. 2 | -------------------------------------------------------------------------------- /packages/extraterm-boolean-expression-evaluator/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "dist", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /packages/extraterm-boolean-expression-evaluator/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src", 6 | }, 7 | "include": [ 8 | "./src/*.ts", 9 | "./src/test/*.ts" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /packages/extraterm-boolean-expression-parser/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-boolean-expression-parser/README.md: -------------------------------------------------------------------------------- 1 | A boolean expression parser which outputs an AST. The details of the output is descrived in `parser.d.ts`. It accepts alphabetic symbol/variables and some C/JS style operators, like &&, ||, ! and brackets for grouping, with precedence. 2 | -------------------------------------------------------------------------------- /packages/extraterm-boolean-expression-parser/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extraterm-boolean-expression-parser", 3 | "version": "1.0.0", 4 | "description": "Parse a JS style boolean expression", 5 | "author": "Simon Edwards", 6 | "license": "MIT", 7 | "main": "./dist/parser.js", 8 | "repository": { 9 | "type": "git", 10 | "url": "git://github.com/sedwards2009/extraterm.git" 11 | }, 12 | "devDependencies": { 13 | "eslint": "8.53.0", 14 | "eslint-config-extraterm": "1.0.0", 15 | "eslint-plugin-unicorn": "42.0.0", 16 | "jest": "27.5.1", 17 | "jison": "^0.4.18", 18 | "shx": "^0.3.2" 19 | }, 20 | "scripts": { 21 | "clean": "shx rm -rf dist", 22 | "build": "shx mkdir -p dist && jison src/grammar.jison -o dist/parser.js && shx cp -r src/* dist/", 23 | "lint": "eslint \"src/**/*.ts\"", 24 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"", 25 | "run": "false", 26 | "test": "yarn run build && jest dist/test/parser.test.js" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /packages/extraterm-char-cell-line/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-char-cell-line/README.md: -------------------------------------------------------------------------------- 1 | Data Structure for holding a terminal grid of characters and styling data 2 | -------------------------------------------------------------------------------- /packages/extraterm-char-cell-line/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "dist", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /packages/extraterm-char-cell-line/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src", 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-char-render-canvas/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-char-render-canvas/src/CursorStyle.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Simon Edwards 3 | */ 4 | 5 | export enum CursorStyle { 6 | BLOCK, 7 | BLOCK_OUTLINE, 8 | UNDERLINE, 9 | UNDERLINE_OUTLINE, 10 | BEAM, 11 | BEAM_OUTLINE, 12 | } 13 | -------------------------------------------------------------------------------- /packages/extraterm-char-render-canvas/src/Disposable.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 Simon Edwards 3 | */ 4 | 5 | export interface Disposable { 6 | dispose(): void; 7 | } 8 | -------------------------------------------------------------------------------- /packages/extraterm-char-render-canvas/src/FontSlice.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Simon Edwards 3 | */ 4 | 5 | export interface FontSlice { 6 | /** 7 | * Font family to render the cells using 8 | * 9 | * The exact name is the same as that required by CSS. 10 | */ 11 | fontFamily: string; 12 | 13 | /** 14 | * Size of the font in pixels 15 | */ 16 | fontSizePx: number; 17 | 18 | /** 19 | * Set to true if the font is a color font 20 | */ 21 | isColor?: boolean; 22 | 23 | /** 24 | * Characters used to determine the effective size of the glyphs 25 | * 26 | * These characters are rendered and examined on the pixel level to 27 | * determine the actual size of the font on the screen. 28 | */ 29 | sampleChars?: string[]; 30 | 31 | /** 32 | * Predicate to signal if a code point is covered by this font. 33 | */ 34 | containsCodePoint: (codePoint: number) => boolean; 35 | } 36 | -------------------------------------------------------------------------------- /packages/extraterm-char-render-canvas/src/RGBAToCss.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Simon Edwards 3 | */ 4 | 5 | export function RGBAToCss(rgba: number): string { 6 | const red = (rgba >>> 24) & 0xff; 7 | const green = (rgba >>> 16) & 0xff; 8 | const blue = (rgba >>> 8) & 0xff; 9 | const alpha = (rgba & 0xff) / 255; 10 | return `rgba(${red}, ${green}, ${blue}, ${alpha})`; 11 | } 12 | -------------------------------------------------------------------------------- /packages/extraterm-char-render-canvas/src/RGBAToQColor.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Simon Edwards 3 | */ 4 | 5 | import { QColor } from "@nodegui/nodegui"; 6 | 7 | export function RGBAToQColor(rgba: number): QColor { 8 | const red = (rgba >>> 24) & 0xff; 9 | const green = (rgba >>> 16) & 0xff; 10 | const blue = (rgba >>> 8) & 0xff; 11 | const alpha = (rgba & 0xff); 12 | return new QColor(red, green, blue, alpha); 13 | } 14 | -------------------------------------------------------------------------------- /packages/extraterm-char-render-canvas/src/font_metrics/MonospaceFontMetrics.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 Simon Edwards 3 | */ 4 | 5 | 6 | export interface MonospaceFontMetrics { 7 | readonly fontSizePx: number, 8 | readonly fontFamily: string, 9 | 10 | readonly fillTextYOffset: number; // Offset to add to y when rendering text. 11 | readonly fillTextXOffset: number; // Offset to add to x when rendering text. 12 | 13 | readonly widthPx: number; 14 | readonly heightPx: number; 15 | readonly boldItalicWidthPx: number; 16 | 17 | readonly strikethroughY: number; 18 | readonly strikethroughHeight: number; 19 | readonly underlineY: number; 20 | readonly underlineHeight: number; 21 | readonly secondUnderlineY: number; 22 | 23 | readonly overlineY: number; 24 | readonly overlineHeight: number; 25 | 26 | readonly curlyHeight: number; 27 | readonly curlyThickness: number; 28 | readonly curlyY: number; 29 | } 30 | -------------------------------------------------------------------------------- /packages/extraterm-char-render-canvas/src/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Simon Edwards 3 | */ 4 | export { CursorStyle } from "./CursorStyle.js"; 5 | export { FontSlice } from "./FontSlice.js"; 6 | export { computeFontMetrics, computeEmojiMetrics, debugFontMetrics } from "./font_metrics/FontMeasurement.js"; 7 | export { MonospaceFontMetrics } from "./font_metrics/MonospaceFontMetrics.js"; 8 | export { Disposable } from "./Disposable.js"; 9 | export { TextureFontAtlas, TextureCachedGlyph } from "./font_atlas/TextureFontAtlas.js"; 10 | export { xtermPalette, } from "./XTermPalette.js"; 11 | export { NormalizedCell, normalizedCellIterator } from "./NormalizedCellIterator.js"; 12 | export { RGBAToQColor } from "./RGBAToQColor.js"; 13 | export { EmbeddedImage, EmbeddedImageMap, CellPainter } from "./CellPainter.js"; 14 | -------------------------------------------------------------------------------- /packages/extraterm-char-render-canvas/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src", 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-color-utilities/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-color-utilities/README.md: -------------------------------------------------------------------------------- 1 | Some utilities for dealing with color and CSS. 2 | -------------------------------------------------------------------------------- /packages/extraterm-color-utilities/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "dist", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /packages/extraterm-color-utilities/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extraterm-color-utilities", 3 | "version": "1.0.0", 4 | "description": "Color utilities", 5 | "author": "Simon Edwards", 6 | "license": "MIT", 7 | "type": "module", 8 | "exports": "./dist/ColorUtilities.js", 9 | "types": "./dist/ColorUtilities.d.ts", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/sedwards2009/extraterm.git" 13 | }, 14 | "devDependencies": { 15 | "@types/jest": "27.0.1", 16 | "eslint": "8.53.0", 17 | "eslint-config-extraterm": "1.0.0", 18 | "eslint-plugin-unicorn": "42.0.0", 19 | "jest": "27.5.1", 20 | "shx": "^0.3.2", 21 | "typescript": "5.2.2" 22 | }, 23 | "scripts": { 24 | "build": "yarn run build-fast && yarn run lint", 25 | "build-fast": "tsc", 26 | "clean": "shx rm -rf dist", 27 | "lint": "eslint \"src/**/*.ts\"", 28 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"", 29 | "test": "yarn run build && yarn node --experimental-vm-modules $(yarn bin jest)", 30 | "run": "false" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /packages/extraterm-color-utilities/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-data-structures/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-data-structures/README.md: -------------------------------------------------------------------------------- 1 | Some data structures 2 | 3 | Array Key Trie 4 | ============== 5 | 6 | A simple trie data structure which takes small arrays as keys mapping to data. Basically a hashmap for variable length arrays as keys. 7 | 8 | 9 | TripleKeyMap 10 | ============ 11 | A map which takes a key with 3 parts. 12 | -------------------------------------------------------------------------------- /packages/extraterm-data-structures/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "dist", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /packages/extraterm-data-structures/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extraterm-data-structures", 3 | "version": "1.0.0", 4 | "description": "Some useful and optimised data structures", 5 | "author": "Simon Edwards", 6 | "license": "MIT", 7 | "type": "module", 8 | "exports": "./dist/index.js", 9 | "types": "./dist/index.d.ts", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/sedwards2009/extraterm.git" 13 | }, 14 | "scripts": { 15 | "build": "yarn run build-fast && yarn run lint", 16 | "build-fast": "tsc", 17 | "clean": "shx rm -rf dist", 18 | "lint": "eslint \"src/**/*.ts\"", 19 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"", 20 | "run": "false", 21 | "test": "yarn run build && yarn node --experimental-vm-modules $(yarn bin jest)" 22 | }, 23 | "devDependencies": { 24 | "@types/jest": "27.0.1", 25 | "eslint": "8.53.0", 26 | "eslint-config-extraterm": "1.0.0", 27 | "eslint-plugin-unicorn": "42.0.0", 28 | "jest": "27.5.1", 29 | "shx": "^0.3.2", 30 | "typescript": "5.2.2" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /packages/extraterm-data-structures/src/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | export { ArrayKeyTrie } from "./ArrayKeyTrie.js"; 7 | export { TripleKeyMap } from "./TripleKeyMap.js"; 8 | export { PairKeyMap } from "./PairKeyMap.js"; 9 | -------------------------------------------------------------------------------- /packages/extraterm-data-structures/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src", 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-event-emitter/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-event-emitter/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extraterm-event-emitter", 3 | "version": "1.0.0", 4 | "description": "TypeScript friendly EventEmitter", 5 | "author": "Simon Edwards", 6 | "license": "MIT", 7 | "type": "module", 8 | "exports": "./dist/main.js", 9 | "types": "./dist/main.d.ts", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/sedwards2009/extraterm.git" 13 | }, 14 | "devDependencies": { 15 | "eslint": "8.53.0", 16 | "eslint-config-extraterm": "1.0.0", 17 | "eslint-plugin-unicorn": "42.0.0", 18 | "shx": "^0.3.2", 19 | "typescript": "5.2.2" 20 | }, 21 | "scripts": { 22 | "build": "yarn run build-fast && yarn run lint", 23 | "build-fast": "tsc", 24 | "clean": "shx rm -rf dist", 25 | "lint": "eslint \"src/**/*.ts\"", 26 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"", 27 | "run": "false" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /packages/extraterm-event-emitter/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-extension-api/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-extension-api/.npmignore: -------------------------------------------------------------------------------- 1 | src/ 2 | -------------------------------------------------------------------------------- /packages/extraterm-extension-api/README.md: -------------------------------------------------------------------------------- 1 | Extraterm Extension API 2 | ======================= 3 | 4 | This module holds the TypeScript definitions of the Extraterm extension API and is published as a packge up on npmjs.com. 5 | 6 | https://github.com/sedwards2009/extraterm 7 | 8 | Publishing API package 9 | ---------------------- 10 | 11 | When this API changes it needs to be published. 12 | 13 | Steps: 14 | * Bump the package version inside `package.json`. 15 | * Commit that change. 16 | * Run `yarn publish` to publish and have the password for npmjs ready. 17 | * Done. 18 | 19 | Publishing API reference docs 20 | ----------------------------- 21 | 22 | Do this on `master` branch. 23 | 24 | * In this folder run `yarn run build-docs` 25 | * Commit the changes in /docs/extension_api/* also keep an eye open for new files. 26 | -------------------------------------------------------------------------------- /packages/extraterm-extension-api/src/ListPickerOptions.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | 7 | export interface ListPickerOptions { 8 | /** 9 | * The title to display in the list picker. 10 | */ 11 | title?: string; 12 | 13 | /** 14 | * The list of text items to display. 15 | */ 16 | items: string[]; 17 | 18 | /** 19 | * The index of the item to select by default. 20 | */ 21 | selectedItemIndex: number; 22 | 23 | /** 24 | * Set the initial text in filter text input. 25 | * 26 | * Defaults to the empty string if nothing is provided. 27 | */ 28 | filter?: string; 29 | 30 | /** 31 | * Width of the items area in abstract pixels. 32 | * 33 | * This width is scaled up and down with the DPI of the window. 1 pixel 34 | * is 1 real pixel at 96 DPI. 35 | */ 36 | widthPx?: number; 37 | } 38 | -------------------------------------------------------------------------------- /packages/extraterm-extension-api/src/Settings.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { QWidget } from "@nodegui/nodegui"; 7 | import { Style } from "./Style.js"; 8 | import { TerminalTheme } from "./TerminalTheme.js"; 9 | 10 | 11 | export interface SettingsTab { 12 | /** 13 | * Assign a QWidget to this property to set the contexts of the tab. 14 | */ 15 | contentWidget: QWidget; 16 | 17 | readonly style: Style; 18 | } 19 | 20 | export type SettingsTabFactory = (extensionTab: SettingsTab) => void; 21 | 22 | export interface Settings { 23 | 24 | readonly terminal: TerminalSettings; 25 | 26 | registerSettingsTab(name: string, factory: SettingsTabFactory): void; 27 | } 28 | 29 | export interface TerminalSettings { 30 | currentTheme: TerminalTheme; 31 | } 32 | -------------------------------------------------------------------------------- /packages/extraterm-extension-api/src/Viewers.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | -------------------------------------------------------------------------------- /packages/extraterm-extension-api/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-extension-api/typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "mode": "file", 3 | "out": "../../docs/extension_api/" 4 | } 5 | -------------------------------------------------------------------------------- /packages/extraterm-font-ligatures/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-font-ligatures/fonts/FiraCode-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/packages/extraterm-font-ligatures/fonts/FiraCode-Regular.otf -------------------------------------------------------------------------------- /packages/extraterm-font-ligatures/fonts/Monoid-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/packages/extraterm-font-ligatures/fonts/Monoid-Regular.ttf -------------------------------------------------------------------------------- /packages/extraterm-font-ligatures/fonts/UbuntuMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/packages/extraterm-font-ligatures/fonts/UbuntuMono-Regular.ttf -------------------------------------------------------------------------------- /packages/extraterm-font-ligatures/fonts/iosevka-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/packages/extraterm-font-ligatures/fonts/iosevka-regular.ttf -------------------------------------------------------------------------------- /packages/extraterm-font-ligatures/src/flatten.ts: -------------------------------------------------------------------------------- 1 | import { LookupTree, FlattenedLookupTree, LookupTreeEntry, FlattenedLookupTreeEntry } from './types.js'; 2 | 3 | export function flatten(tree: LookupTree): FlattenedLookupTree { 4 | const result: FlattenedLookupTree = new Map(); 5 | for (const [glyphId, entry] of tree.individual.entries()) { 6 | result.set(glyphId, flattenEntry(entry)); 7 | } 8 | 9 | for (const { range, entry } of tree.range) { 10 | const flattened = flattenEntry(entry); 11 | for (let glyphId = range[0]; glyphId < range[1]; glyphId++) { 12 | result.set(glyphId, flattened); 13 | } 14 | } 15 | 16 | return result; 17 | } 18 | 19 | function flattenEntry(entry: LookupTreeEntry): FlattenedLookupTreeEntry { 20 | const result: FlattenedLookupTreeEntry = {}; 21 | 22 | if (entry.forward) { 23 | result.forward = flatten(entry.forward); 24 | } 25 | 26 | if (entry.reverse) { 27 | result.reverse = flatten(entry.reverse); 28 | } 29 | 30 | if (entry.lookup) { 31 | result.lookup = entry.lookup; 32 | } 33 | 34 | return result; 35 | } 36 | -------------------------------------------------------------------------------- /packages/extraterm-font-ligatures/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src", 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-font-ligatures/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "tslint-config-standard", 3 | "rules": { 4 | "semicolon": [ 5 | true, 6 | "always" 7 | ], 8 | "ter-indent": [ 9 | true, 10 | 4, 11 | { 12 | "SwitchCase": 1 13 | } 14 | ], 15 | "space-before-function-paren": false 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/extraterm-fuzzy-rank/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-fuzzy-rank/README.md: -------------------------------------------------------------------------------- 1 | Ranking algorithm for string matching 2 | -------------------------------------------------------------------------------- /packages/extraterm-fuzzy-rank/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "dist", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /packages/extraterm-fuzzy-rank/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extraterm-fuzzy-rank", 3 | "version": "1.0.0", 4 | "description": "String matching and ranking", 5 | "author": "Simon Edwards", 6 | "license": "MIT", 7 | "type": "module", 8 | "exports": "./dist/main.js", 9 | "types": "./dist/main.d.ts", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/sedwards2009/extraterm.git" 13 | }, 14 | "scripts": { 15 | "build": "yarn run build-fast && yarn run lint", 16 | "build-fast": "tsc", 17 | "clean": "shx rm -rf dist", 18 | "lint": "eslint \"src/**/*.ts\"", 19 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"", 20 | "run": "false", 21 | "test": "yarn run build && yarn node --experimental-vm-modules $(yarn bin jest)" 22 | }, 23 | "devDependencies": { 24 | "@types/jest": "27.0.1", 25 | "eslint": "8.53.0", 26 | "eslint-config-extraterm": "1.0.0", 27 | "eslint-plugin-unicorn": "42.0.0", 28 | "jest": "27.5.1", 29 | "shx": "^0.3.2", 30 | "typescript": "5.2.2" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /packages/extraterm-fuzzy-rank/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src", 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-later/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-later/README.md: -------------------------------------------------------------------------------- 1 | Some utilities for executing a function later after an optional delay. 2 | -------------------------------------------------------------------------------- /packages/extraterm-later/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extraterm-later", 3 | "version": "1.0.0", 4 | "description": "Utilities for executing a function later.", 5 | "author": "Simon Edwards", 6 | "license": "MIT", 7 | "type": "module", 8 | "exports": "./dist/DoLater.js", 9 | "types": "./dist/DoLater.d.ts", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/sedwards2009/extraterm.git" 13 | }, 14 | "devDependencies": { 15 | "eslint": "8.53.0", 16 | "eslint-config-extraterm": "1.0.0", 17 | "eslint-plugin-unicorn": "42.0.0", 18 | "shx": "^0.3.2", 19 | "typescript": "5.2.2" 20 | }, 21 | "scripts": { 22 | "build": "yarn run build-fast && yarn run lint", 23 | "build-fast": "tsc", 24 | "clean": "shx rm -rf dist", 25 | "lint": "eslint \"src/**/*.ts\"", 26 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"", 27 | "run": "false" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /packages/extraterm-later/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-logging/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-logging/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extraterm-logging", 3 | "version": "1.0.0", 4 | "description": "Logging support for Electron apps.", 5 | "author": "Simon Edwards", 6 | "license": "MIT", 7 | "type": "module", 8 | "exports": "./dist/Main.js", 9 | "types": "./dist/Main.d.ts", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/sedwards2009/extraterm.git" 13 | }, 14 | "devDependencies": { 15 | "@types/node": "^18.15.3", 16 | "eslint": "8.53.0", 17 | "eslint-config-extraterm": "1.0.0", 18 | "eslint-plugin-unicorn": "42.0.0", 19 | "shx": "^0.3.2", 20 | "typescript": "5.2.2" 21 | }, 22 | "scripts": { 23 | "build": "yarn run build-fast && yarn run lint", 24 | "build-fast": "tsc", 25 | "clean": "shx rm -rf dist", 26 | "lint": "eslint \"src/**/*.ts\"", 27 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"", 28 | "run": "false" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /packages/extraterm-logging/src/FileLogWriter.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2016 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | 7 | import * as fs from "node:fs"; 8 | import {LogWriter, Level} from "./Logger.js"; 9 | 10 | export class FileLogWriter implements LogWriter { 11 | 12 | private _fhandle: number = -1; 13 | 14 | constructor(private _filename: string) { 15 | } 16 | 17 | open(): void { 18 | this._fhandle = fs.openSync(this._filename, fs.constants.O_WRONLY | fs.constants.O_CREAT); 19 | } 20 | 21 | write(level: Level, msg: string, ...opts: any[]): void { 22 | fs.writeSync(this._fhandle, Buffer.from(msg)); 23 | fs.writeSync(this._fhandle, Buffer.from(' ')); 24 | 25 | const strOpts = opts.map(opt => typeof opt === 'string' ? opt : JSON.stringify(opt, null, 4)); 26 | 27 | fs.writeSync(this._fhandle, Buffer.from(strOpts.join(', '))); 28 | fs.writeSync(this._fhandle, Buffer.from('\n')); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /packages/extraterm-logging/src/Main.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | export { log } from "./LogDecorator.js"; 7 | export { Level, LogWriter, Logger, getLogger, objectName, addLogWriter } from "./Logger.js"; 8 | export { FileLogWriter } from "./FileLogWriter.js"; 9 | -------------------------------------------------------------------------------- /packages/extraterm-logging/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src", 6 | "paths": { 7 | "*": ["./src/typings/*"] 8 | } 9 | }, 10 | "include": [ 11 | "./src/**/*.ts" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/README.md: -------------------------------------------------------------------------------- 1 | Detect the mimetype based on a filename and/or the first 1KB of a file's contents. 2 | -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "dist", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/src/typings/jschardet/index.d.ts: -------------------------------------------------------------------------------- 1 | // Type definitions for jschardet v1.4.1 2 | // Project: https://github.com/aadsm/jschardet 3 | // Definitions by: Simon Edwards 4 | // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped 5 | declare module "jschardet" { 6 | interface Result { 7 | encoding: string; 8 | confidence: number; 9 | } 10 | 11 | function detect(str: string): Result; 12 | } 13 | -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/testfiles/1x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/packages/extraterm-mimetype-detector/testfiles/1x1.png -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/testfiles/blank.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/packages/extraterm-mimetype-detector/testfiles/blank.bmp -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/testfiles/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/packages/extraterm-mimetype-detector/testfiles/blank.gif -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/testfiles/blank.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/packages/extraterm-mimetype-detector/testfiles/blank.jpg -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/testfiles/blank.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/packages/extraterm-mimetype-detector/testfiles/blank.webp -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/testfiles/foo.fish: -------------------------------------------------------------------------------- 1 | #!/bin/fish 2 | echo "A fish script" 3 | -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/testfiles/foo.ini: -------------------------------------------------------------------------------- 1 | [Section] 2 | key = value 3 | -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/testfiles/foo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "A shell script" 3 | -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/testfiles/libso.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/packages/extraterm-mimetype-detector/testfiles/libso.bin -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/testfiles/random.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sedwards2009/extraterm/9e72027624fb6213650166840960a59d6989be76/packages/extraterm-mimetype-detector/testfiles/random.bin -------------------------------------------------------------------------------- /packages/extraterm-mimetype-detector/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-readonly-toolbox/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-readonly-toolbox/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "dist", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /packages/extraterm-readonly-toolbox/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extraterm-readonly-toolbox", 3 | "version": "0.1.0", 4 | "description": "TypeScript based support for readonly types", 5 | "author": "Simon Edwards", 6 | "license": "MIT", 7 | "type": "module", 8 | "exports": "./dist/main.js", 9 | "types": "./dist/main.d.ts", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/sedwards2009/extraterm.git" 13 | }, 14 | "scripts": { 15 | "build": "yarn run build-fast && yarn run lint", 16 | "build-fast": "tsc", 17 | "clean": "shx rm -rf dist", 18 | "lint": "eslint \"src/**/*.ts\"", 19 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"", 20 | "run": "false", 21 | "test": "yarn run build && yarn node --experimental-vm-modules $(yarn bin jest)" 22 | }, 23 | "devDependencies": { 24 | "eslint": "8.53.0", 25 | "eslint-config-extraterm": "1.0.0", 26 | "eslint-plugin-unicorn": "42.0.0", 27 | "jest": "27.5.1", 28 | "shx": "^0.3.2", 29 | "typescript": "5.2.2" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /packages/extraterm-readonly-toolbox/src/main.jest.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { freezeDeep } from './main'; 7 | 8 | test("", () => { 9 | const testObject = { 10 | foo: "foo", 11 | aNumber: 123, 12 | barArray: ["barArrayItem"], 13 | zyzzObject: { 14 | zyzzObjectItem1: 1, 15 | zyzzObjectItem2: "zyzzObjectItem2", 16 | nested: { 17 | smeg: 21 18 | } 19 | } 20 | }; 21 | 22 | freezeDeep(testObject); 23 | 24 | expect(Object.isFrozen(testObject)).toBe(true); 25 | expect(Object.isFrozen(testObject.barArray)).toBe(true); 26 | expect(Object.isFrozen(testObject.zyzzObject.nested)).toBe(true); 27 | }); 28 | 29 | -------------------------------------------------------------------------------- /packages/extraterm-readonly-toolbox/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-shell-string-parser/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-shell-string-parser/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "dist", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /packages/extraterm-shell-string-parser/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extraterm-shell-string-parser", 3 | "version": "1.0.0", 4 | "description": "Parse Shell String Arguments", 5 | "author": "Nick Shanny", 6 | "license": "MIT", 7 | "type": "module", 8 | "exports": "./dist/main.js", 9 | "types": "./dist/main.d.ts", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/sedwards2009/extraterm.git" 13 | }, 14 | "scripts": { 15 | "build": "yarn run build-fast && yarn run lint", 16 | "build-fast": "tsc", 17 | "clean": "shx rm -rf dist", 18 | "lint": "eslint \"src/**/*.ts\"", 19 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"", 20 | "run": "false", 21 | "test": "yarn run build && yarn node --experimental-vm-modules $(yarn bin jest)" 22 | }, 23 | "devDependencies": { 24 | "eslint": "8.53.0", 25 | "eslint-config-extraterm": "1.0.0", 26 | "eslint-plugin-unicorn": "42.0.0", 27 | "jest": "27.5.1", 28 | "shx": "^0.3.2", 29 | "typescript": "5.2.2" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /packages/extraterm-shell-string-parser/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-timeoutqt/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-timeoutqt/README.md: -------------------------------------------------------------------------------- 1 | Some utility code for doing time-outs on Qt's event loop. 2 | 3 | Currently the motivation for doing this is to avoid bug https://github.com/nodegui/qodejs/issues/4 4 | -------------------------------------------------------------------------------- /packages/extraterm-timeoutqt/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extraterm-timeoutqt", 3 | "version": "1.0.0", 4 | "description": "Timeout oriented utilities based on Qt event loop.", 5 | "author": "Simon Edwards", 6 | "license": "MIT", 7 | "type": "module", 8 | "exports": "./dist/Main.js", 9 | "types": "./dist/Main.d.ts", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/sedwards2009/extraterm.git" 13 | }, 14 | "dependencies": { 15 | "@nodegui/nodegui": "0.72.0" 16 | }, 17 | "devDependencies": { 18 | "eslint": "8.53.0", 19 | "eslint-config-extraterm": "1.0.0", 20 | "eslint-plugin-unicorn": "42.0.0", 21 | "shx": "^0.3.2", 22 | "typescript": "5.2.2" 23 | }, 24 | "scripts": { 25 | "build": "yarn run build-fast && yarn run lint", 26 | "build-fast": "tsc", 27 | "clean": "shx rm -rf dist", 28 | "lint": "eslint \"src/**/*.ts\"", 29 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"", 30 | "run": "false" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /packages/extraterm-timeoutqt/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-trim-between-tags/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-trim-between-tags/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extraterm-trim-between-tags", 3 | "version": "1.0.0", 4 | "description": "Trim whitespace between tags in a template string", 5 | "author": "Simon Edwards", 6 | "license": "MIT", 7 | "type": "module", 8 | "exports": "./dist/main.js", 9 | "types": "./dist/main.d.ts", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/sedwards2009/extraterm.git" 13 | }, 14 | "devDependencies": { 15 | "eslint": "8.53.0", 16 | "eslint-config-extraterm": "1.0.0", 17 | "eslint-plugin-unicorn": "42.0.0", 18 | "shx": "^0.3.2", 19 | "typescript": "5.2.2" 20 | }, 21 | "scripts": { 22 | "build": "yarn run build-fast && yarn run lint", 23 | "build-fast": "tsc", 24 | "clean": "shx rm -rf dist", 25 | "lint": "eslint \"src/**/*.ts\"", 26 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"", 27 | "run": "false" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /packages/extraterm-trim-between-tags/src/main.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | 7 | const TRIM_REGEX = />\s*<"); 16 | } 17 | -------------------------------------------------------------------------------- /packages/extraterm-trim-between-tags/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-unicode-utilities/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-unicode-utilities/README.md: -------------------------------------------------------------------------------- 1 | Basic utilities for handling unicode strings and astral plane characters. 2 | -------------------------------------------------------------------------------- /packages/extraterm-unicode-utilities/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "dist", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /packages/extraterm-unicode-utilities/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/extraterm-uuid/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extraterm-uuid/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extraterm-uuid", 3 | "version": "1.0.0", 4 | "description": "UUID v4", 5 | "author": "Simon Edwards", 6 | "license": "MIT", 7 | "type": "module", 8 | "exports": "./dist/main.js", 9 | "types": "./dist/main.d.ts", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/sedwards2009/extraterm.git" 13 | }, 14 | "devDependencies": { 15 | "eslint": "8.53.0", 16 | "eslint-config-extraterm": "1.0.0", 17 | "eslint-plugin-unicorn": "42.0.0", 18 | "shx": "^0.3.2", 19 | "typescript": "5.2.2" 20 | }, 21 | "scripts": { 22 | "build": "yarn run build-fast && yarn run lint", 23 | "build-fast": "tsc", 24 | "clean": "shx rm -rf dist", 25 | "lint": "eslint \"src/**/*.ts\"", 26 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"", 27 | "run": "false" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /packages/extraterm-uuid/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/qt-construct/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/qt-construct/README.md: -------------------------------------------------------------------------------- 1 | Functions and utilities to make it easier to construct trees of Qt widgets in an ergonomic and TypeScript friendly way. 2 | -------------------------------------------------------------------------------- /packages/qt-construct/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "qt-construct", 3 | "version": "0.1.0", 4 | "description": "Ergonomic construction of Qt widget", 5 | "author": "Simon Edwards", 6 | "license": "MIT", 7 | "type": "module", 8 | "exports": "./dist/index.js", 9 | "types": "./dist/index.d.ts", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/sedwards2009/extraterm.git" 13 | }, 14 | "scripts": { 15 | "build": "yarn run build-code && yarn run lint", 16 | "build-code": "tsc", 17 | "clean": "shx rm -rf dist", 18 | "lint": "eslint \"src/**/*.ts\"", 19 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"" 20 | }, 21 | "peerDependencies": { 22 | "@nodegui/nodegui": "0.72.0" 23 | }, 24 | "devDependencies": { 25 | "@nodegui/nodegui": "0.72.0", 26 | "eslint": "8.53.0", 27 | "eslint-config-extraterm": "1.0.0", 28 | "eslint-plugin-unicorn": "42.0.0", 29 | "shelljs": "0.8.5", 30 | "typescript": "5.2.2" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /packages/qt-construct/src/Frame.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { QFrame } from "@nodegui/nodegui"; 7 | import { ApplyWidgetOptions, WidgetOptions } from "./Widget.js"; 8 | 9 | 10 | export interface FrameOptions extends WidgetOptions { 11 | } 12 | 13 | export function Frame(options: FrameOptions): QFrame { 14 | const frame = new QFrame(); 15 | 16 | ApplyWidgetOptions(frame, options); 17 | 18 | return frame; 19 | } 20 | -------------------------------------------------------------------------------- /packages/qt-construct/src/LineEdit.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { QLineEdit } from "@nodegui/nodegui"; 7 | import { ApplyWidgetOptions, WidgetOptions } from "./Widget.js"; 8 | 9 | export interface LineEditOptions extends WidgetOptions { 10 | text?: string; 11 | onTextEdited?: (newText: string) => void; 12 | placeholderText?: string; 13 | } 14 | 15 | export function LineEdit(options: LineEditOptions): QLineEdit { 16 | const { placeholderText, text, onTextEdited } = options; 17 | const lineEdit = new QLineEdit(); 18 | 19 | ApplyWidgetOptions(lineEdit, options); 20 | 21 | if (text != null) { 22 | lineEdit.setText(text); 23 | } 24 | if (placeholderText != null) { 25 | lineEdit.setPlaceholderText(placeholderText); 26 | } 27 | if (onTextEdited !== undefined) { 28 | lineEdit.addEventListener("textEdited", onTextEdited); 29 | } 30 | return lineEdit; 31 | } 32 | -------------------------------------------------------------------------------- /packages/qt-construct/src/ListWidgetItem.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { QIcon, QListWidgetItem } from "@nodegui/nodegui"; 7 | 8 | 9 | export interface ListWidgetItemOptions { 10 | icon?: QIcon; 11 | text?: string; 12 | selected?: boolean; 13 | } 14 | 15 | export function ListWidgetItem(options: ListWidgetItemOptions): QListWidgetItem { 16 | const listWidgetItem = new QListWidgetItem(); 17 | const { icon, text, selected } = options; 18 | if (icon !== undefined) { 19 | listWidgetItem.setIcon(icon); 20 | } 21 | if (text !== undefined) { 22 | listWidgetItem.setText(text); 23 | } 24 | if (selected !== undefined) { 25 | listWidgetItem.setSelected(selected); 26 | } 27 | return listWidgetItem; 28 | } 29 | -------------------------------------------------------------------------------- /packages/qt-construct/src/ProgressBar.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { QProgressBar } from "@nodegui/nodegui"; 7 | import { ApplyWidgetOptions, WidgetOptions } from "./Widget.js"; 8 | 9 | export interface ProgressBarOptions extends WidgetOptions { 10 | minimum?: number; 11 | maximum?: number; 12 | value?: number; 13 | textVisible?: boolean; 14 | } 15 | 16 | export function ProgressBar(options: ProgressBarOptions): QProgressBar { 17 | const { minimum, maximum, textVisible, value } = options; 18 | const progressBar = new QProgressBar(); 19 | ApplyWidgetOptions(progressBar, options); 20 | 21 | if (minimum !== undefined) { 22 | progressBar.setMinimum(minimum); 23 | } 24 | if (maximum !== undefined) { 25 | progressBar.setMaximum(maximum); 26 | } 27 | if (value !== undefined) { 28 | progressBar.setValue(value); 29 | } 30 | if (textVisible !== undefined) { 31 | progressBar.setTextVisible(textVisible); 32 | } 33 | return progressBar; 34 | } 35 | -------------------------------------------------------------------------------- /packages/qt-construct/src/PushButton.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { QMenu, QPushButton } from "@nodegui/nodegui"; 7 | import { AbstractButtonOptions, ApplyAbstractButtonOptions } from "./AbstractButton.js"; 8 | 9 | export interface PushButtonOptions extends AbstractButtonOptions { 10 | menu?: QMenu; 11 | } 12 | 13 | export function PushButton(options: PushButtonOptions): QPushButton { 14 | const { menu } = options; 15 | const pushButton = new QPushButton(); 16 | ApplyAbstractButtonOptions(pushButton, options); 17 | 18 | if (menu !== undefined) { 19 | pushButton.setMenu(menu); 20 | } 21 | 22 | return pushButton; 23 | } 24 | -------------------------------------------------------------------------------- /packages/qt-construct/src/RadioButton.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { QRadioButton } from "@nodegui/nodegui"; 7 | import { AbstractButtonOptions, ApplyAbstractButtonOptions } from "./AbstractButton.js"; 8 | 9 | export interface RadioButtonOptions extends AbstractButtonOptions { 10 | } 11 | 12 | export function RadioButton(options: RadioButtonOptions): QRadioButton { 13 | const radioButton = new QRadioButton(); 14 | ApplyAbstractButtonOptions(radioButton, options); 15 | return radioButton; 16 | } 17 | -------------------------------------------------------------------------------- /packages/qt-construct/src/TabWidget.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { QIcon, QTabWidget, QWidget } from "@nodegui/nodegui"; 7 | import { ApplyWidgetOptions, WidgetOptions } from "./Widget.js"; 8 | 9 | export interface TabWidgetOptions extends WidgetOptions { 10 | tabs: TabWidgetTabOptions[]; 11 | } 12 | 13 | export interface TabWidgetTabOptions { 14 | icon?: QIcon; 15 | label: string; 16 | page: QWidget; 17 | } 18 | 19 | export function TabWidget(options: TabWidgetOptions): QTabWidget { 20 | const tabWidget = new QTabWidget(); 21 | const { tabs } = options; 22 | 23 | ApplyWidgetOptions(tabWidget, options); 24 | 25 | for (const tabOptions of tabs) { 26 | const { icon, label, page } = tabOptions; 27 | tabWidget.addTab(page, icon == null ? new QIcon() : icon, label); 28 | } 29 | 30 | return tabWidget; 31 | } 32 | -------------------------------------------------------------------------------- /packages/qt-construct/src/TextEdit.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { QTextEdit } from "@nodegui/nodegui"; 7 | import { ApplyWidgetOptions, WidgetOptions } from "./Widget.js"; 8 | 9 | export interface TextEditOptions extends WidgetOptions { 10 | plainText?: string; 11 | placeholderText?: string; 12 | onTextChanged?: () => void; 13 | } 14 | 15 | export function TextEdit(options: TextEditOptions): QTextEdit { 16 | const { onTextChanged, placeholderText, plainText } = options; 17 | const textEdit = new QTextEdit(); 18 | 19 | ApplyWidgetOptions(textEdit, options); 20 | 21 | if (plainText != null) { 22 | textEdit.setText(plainText); 23 | } 24 | if (placeholderText != null) { 25 | textEdit.setPlaceholderText(placeholderText); 26 | } 27 | if (onTextChanged !== undefined) { 28 | textEdit.addEventListener("textChanged", onTextChanged); 29 | } 30 | return textEdit; 31 | } 32 | -------------------------------------------------------------------------------- /packages/qt-construct/src/ToolButton.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 Simon Edwards 3 | * 4 | * This source code is licensed under the MIT license which is detailed in the LICENSE.txt file. 5 | */ 6 | import { QIcon, QMenu, QToolButton, ToolButtonPopupMode } from "@nodegui/nodegui"; 7 | import { AbstractButtonOptions, ApplyAbstractButtonOptions } from "./AbstractButton.js"; 8 | 9 | 10 | export interface ToolButtonOptions extends AbstractButtonOptions { 11 | icon?: QIcon; 12 | popupMode?: ToolButtonPopupMode; 13 | menu?: QMenu; 14 | } 15 | 16 | export function ToolButton(options: ToolButtonOptions): QToolButton { 17 | const toolButton = new QToolButton(); 18 | 19 | ApplyAbstractButtonOptions(toolButton, options); 20 | 21 | const { menu, popupMode } = options; 22 | if (popupMode !== undefined) { 23 | toolButton.setPopupMode(popupMode); 24 | } 25 | if (menu !== undefined) { 26 | toolButton.setMenu(menu); 27 | } 28 | return toolButton; 29 | } 30 | -------------------------------------------------------------------------------- /packages/qt-construct/src/Utilities.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Set the CSS classes on a widget and update 3 | */ 4 | import { QWidget } from "@nodegui/nodegui"; 5 | 6 | export function setCssClasses(widget: QWidget, classes: string[]): void { 7 | widget.setProperty("cssClass", classes); 8 | repolish(widget); 9 | } 10 | 11 | /** 12 | * Force Qt to reapply styles to a widget 13 | */ 14 | export function repolish(widget: QWidget): void { 15 | const style = widget.style(); 16 | style.unpolish(widget); 17 | style.polish(widget); 18 | } 19 | -------------------------------------------------------------------------------- /packages/qt-construct/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/term-api-lineimpl/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/term-api-lineimpl/README.md: -------------------------------------------------------------------------------- 1 | Shareable implementation of TermApi.Line API. This mainly adds link related methods. 2 | -------------------------------------------------------------------------------- /packages/term-api-lineimpl/src/main.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Simon Edwards 3 | */ 4 | export { LineImpl } from "./LineImpl.js"; 5 | -------------------------------------------------------------------------------- /packages/term-api-lineimpl/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/term-api/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/term-api/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "term-api", 3 | "version": "1.0.0", 4 | "description": "API of Extraterm's internal xterm.js fork with iTerm image support", 5 | "author": "Simon Edwards", 6 | "license": "MIT", 7 | "type": "module", 8 | "exports": "./dist/TermApi.js", 9 | "types": "./dist/TermApi.d.ts", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/sedwards2009/extraterm.git" 13 | }, 14 | "dependencies": { 15 | "@nodegui/nodegui": "0.72.0", 16 | "extraterm-char-cell-line": "1.0.0", 17 | "text-term-api": "1.0.0" 18 | }, 19 | "devDependencies": { 20 | "eslint": "8.53.0", 21 | "eslint-config-extraterm": "1.0.0", 22 | "eslint-plugin-unicorn": "42.0.0", 23 | "extraterm-event-emitter": "1.0.0", 24 | "shx": "^0.3.2", 25 | "typescript": "5.2.2" 26 | }, 27 | "scripts": { 28 | "build": "yarn run build-fast && yarn run lint", 29 | "build-fast": "tsc", 30 | "clean": "shx rm -rf dist", 31 | "lint": "eslint \"src/**/*.ts\"", 32 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /packages/term-api/src/TermApi.ts: -------------------------------------------------------------------------------- 1 | import { QImage } from "@nodegui/nodegui"; 2 | import { Event } from "extraterm-event-emitter"; 3 | import { TextEmulatorApi, Line } from "./TextTermApi"; 4 | export { CharAttr, Line, Layer, TerminalCoord, TerminalSize, ScreenChangeEvent, 5 | RenderEvent, BellEvent, DataEvent, TitleChangeEvent, WriteBufferSizeEvent, 6 | MouseEventOptions, WriteBufferStatus, ApplicationModeHandler, ApplicationModeResponseAction, 7 | ApplicationModeResponse, MinimalKeyboardEvent, TextEmulatorApi, 8 | flagsFromCharAttr, foregroundFromCharAttr, backgroundFromCharAttr, packAttr, 9 | BOLD_ATTR_FLAG, UNDERLINE_ATTR_FLAG, BLINK_ATTR_FLAG, INVERSE_ATTR_FLAG, 10 | INVISIBLE_ATTR_FLAG, ITALIC_ATTR_FLAG, STRIKE_THROUGH_ATTR_FLAG, FAINT_ATTR_FLAG, 11 | } from "./TextTermApi"; 12 | 13 | export interface ImageAddedEvent { 14 | id: number; 15 | image: QImage; 16 | line: Line; 17 | } 18 | 19 | export interface EmulatorApi extends TextEmulatorApi { 20 | onImageAdded: Event; 21 | } 22 | -------------------------------------------------------------------------------- /packages/term-api/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/text-term-api-lineimpl/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/text-term-api-lineimpl/README.md: -------------------------------------------------------------------------------- 1 | Shareable implementation of TermApi.Line API. This mainly adds link related methods. 2 | -------------------------------------------------------------------------------- /packages/text-term-api-lineimpl/jest.config.cjs: -------------------------------------------------------------------------------- 1 | // For a detailed explanation regarding each configuration property, visit: 2 | // https://jestjs.io/docs/en/configuration.html 3 | module.exports = { 4 | rootDir: "dist", 5 | moduleFileExtensions: ["js"], 6 | testMatch: ["**/*.jest.js"], 7 | }; 8 | -------------------------------------------------------------------------------- /packages/text-term-api-lineimpl/src/main.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2024 Simon Edwards 3 | */ 4 | export { TextLineImpl, CellWithHyperlink } from "./TextLineImpl.js"; 5 | -------------------------------------------------------------------------------- /packages/text-term-api-lineimpl/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/text-term-api/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "extraterm" 3 | }; 4 | -------------------------------------------------------------------------------- /packages/text-term-api/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "text-term-api", 3 | "version": "1.0.0", 4 | "description": "API of Extraterm's internal xterm.js fork", 5 | "author": "Simon Edwards", 6 | "license": "MIT", 7 | "type": "module", 8 | "exports": "./dist/TextTermApi.js", 9 | "types": "./dist/TextTermApi.d.ts", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/sedwards2009/extraterm.git" 13 | }, 14 | "dependencies": { 15 | "extraterm-char-cell-line": "1.0.0" 16 | }, 17 | "devDependencies": { 18 | "eslint": "8.53.0", 19 | "eslint-config-extraterm": "1.0.0", 20 | "eslint-plugin-unicorn": "42.0.0", 21 | "extraterm-event-emitter": "1.0.0", 22 | "shx": "^0.3.2", 23 | "typescript": "5.2.2" 24 | }, 25 | "scripts": { 26 | "build": "yarn run build-fast && yarn run lint", 27 | "build-fast": "tsc", 28 | "clean": "shx rm -rf dist", 29 | "lint": "eslint \"src/**/*.ts\"", 30 | "lint-strict": "eslint --max-warnings 1 \"src/**/*.ts\"" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /packages/text-term-api/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src" 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/extraterm-char-render-canvas-test/README.md: -------------------------------------------------------------------------------- 1 | Test harness for `extraterm-char-render-canvas` 2 | -------------------------------------------------------------------------------- /test/extraterm-char-render-canvas-test/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extraterm-char-render-canvas-test", 3 | "version": "1.0.0", 4 | "description": "Test harness for extraterm-char-render-canvas", 5 | "license": "MIT", 6 | "devDependencies": { 7 | "parcel-bundler": "^1.12.4", 8 | "serve": "^11.3.2", 9 | "shx": "^0.3.2", 10 | "typescript": "5.2.2" 11 | }, 12 | "dependencies": { 13 | "easta": "5.0.0", 14 | "extraterm-char-render-canvas": "1.0.0" 15 | }, 16 | "scripts": { 17 | "build": "tsc && yarn run copy-terminal-font && yarn run copy-emoji-font && shx cp src/*.html dist && parcel build --no-minify dist/test.html", 18 | "copy-terminal-font": "shx cp ../../extraterm/resources/terminal_fonts/LigaDejaVuSansMono.ttf dist/", 19 | "copy-emoji-font": "shx cp ../../extraterm/resources/themes/default/fonts/Twemoji.ttf dist/", 20 | "clean": "shx rm -r dist", 21 | "server": "serve dist/" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/extraterm-char-render-canvas-test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src", 6 | }, 7 | "include": [ 8 | "./src/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/scripting/list-commands.fish: -------------------------------------------------------------------------------- 1 | #!env fish 2 | 3 | set BASE_URL (cat ~/.config/extraterm/ipc.run) 4 | echo $BASE_URL 5 | curl -d '{"command": "extraterm:window.listAll"}' -H 'Content-Type: application/json' $BASE_URL/command 6 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "target": "es2022", 5 | "module": "ES2020", 6 | "declaration": true, 7 | "moduleResolution": "node", 8 | "noImplicitAny": false, 9 | "noImplicitThis": true, 10 | "noImplicitReturns": true, 11 | "removeComments": false, 12 | "sourceMap": true, 13 | "noLib": false, 14 | "jsx": "react", 15 | "experimentalDecorators": true, 16 | "baseUrl": ".", 17 | "emitDecoratorMetadata": true 18 | } 19 | } 20 | --------------------------------------------------------------------------------