Add a persistent button to install extensions directly into VSCode Insiders from the marketplace.
- // ==UserScript==
- // @name VSCode Marketplace - VSCode Insiders Install
- // @namespace http://tampermonkey.net/
- // @version 1.1
- // @description Add a persistent button to install extensions directly into VSCode Insiders from the marketplace.
- // @author @tonycody
- // @match https://marketplace.visualstudio.com/items*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function () {
- 'use strict';
- // The selector for the install button
- const installButtonSelector = 'a.install';
- // A class to identify the Insiders button
- const insidersButtonClass = 'install-insiders';
- const labelClass = '.ms-Button-label'
- // Function to add the Insiders install button if it doesn't exist
- function addInsidersInstallButton() {
- const installButton = document.querySelector(installButtonSelector);
- const alreadyAdded = document.querySelector('.' + insidersButtonClass);
- // Only add the button if it doesn't already exist
- if (installButton && !alreadyAdded) {
- const insidersButton = installButton.cloneNode(true);
- // Add a class to identify the button
- insidersButton.classList.add(insidersButtonClass);
- insidersButton.setAttribute('href', insidersButton.getAttribute('href').replace('vscode:', 'vscode-insiders:'));
- insidersButton.style.marginLeft = '3px';
- const lbl = insidersButton.querySelector(labelClass)
- lbl.innerText = 'Install(Insiders)'
- installButton.parentNode.insertBefore(insidersButton, installButton.nextSibling);
- }
- }
- // Create an observer instance linked to the callback function
- const observer = new MutationObserver(function (mutations, me) {
- // Retry adding the Insiders install button
- addInsidersInstallButton();
- });
- // Start observing the document body and check for DOM changes
- observer.observe(document.body, {
- childList: true,
- subtree: true
- });
- // Initial try to add the button
- addInsidersInstallButton();
- })();