🏠 Home 

Greasy Fork Install Button at search

adds install button at search and at user pages.

// ==UserScript==
// @name Greasy Fork Install Button at search
// @namespace -
// @version 1.0.0
// @description adds install button at search and at user pages.
// @author NotYou
// @match *://*sleazyfork.org/*
// @match *://*greasyfork.org/*
// @grant none
// @run-at document-idle
// @license GPL-3.0-or-later
// ==/UserScript==
(function() {
var $ = (s) => document.querySelector(s)
var $$ = (s) => document.querySelectorAll(s)
var appendHTML = function(el, html) {
el.insertAdjacentHTML('beforeend', html)
}
var domain = location.host
// STYLES
appendHTML($('head'), ['<style>',
'.custom-install-link-parent {',
'text-decoration: none !important;',
'}',
'.custom-install-link-parent > * {',
'transform: scale(0.7);',
'}',
'.custom-install-link {',
'margin-right: -15px !important;',
'margin-left: -6px !important;',
'}',
'.custom-install-style-link {',
'margin-left: -14px !important;',
'margin-right: -26px !important;',
'}',
'</style>'].join(''))
// USER SCRIPT
$$('#user-script-list > li[data-script-type="public"] > article > h2 > a, #browse-script-list > li[data-script-type="public"] > article > h2 > a').forEach(function(e) {
var data = e.parentNode.parentNode.parentNode.dataset
var scriptId = data.scriptId
var scriptName = data.scriptName
appendHTML(e, '<span data-install-format="js" data-script-id="'+ scriptId +'" data-script-name="' + scriptName + '"><a href="https://' + domain + '/scripts/' + scriptId + '/code/' + scriptName + '.user.js" class="custom-install-link-parent"><span class="install-link custom-install-link">Install</span></a><span>')
})
// USER STYLE
$$('#user-script-list > li[data-script-language="css"] > article > h2 > a, #browse-script-list > li[data-script-language="css"] > article > h2 > a').forEach(function(e) {
var data = e.parentNode.parentNode.parentNode.dataset
var scriptId = data.scriptId
var scriptName = data.scriptName
appendHTML(e, '<span data-install-format="css" data-script-id="'+ scriptId +'" data-script-name="' + scriptName + '"><a target="_blank" href="https://' + domain + '/scripts/' + scriptId + '/code/' + scriptName + '.user.css" class="custom-install-link-parent"><span class="install-link custom-install-link custom-install-style-link">Install as style</span></a><span>')
})
// LIBRARIES
$$('#user-library-script-list > li > article > h2 > a, #browse-script-list > li[data-script-type="library"] > article > h2 > a').forEach(function(e) {
var data = e.parentNode.parentNode.parentNode.dataset
var scriptId = data.scriptId
var scriptName = data.scriptName
var _scriptName = scriptName.replace(/\s/g, "-")
appendHTML(e, '<span data-install-format="js" data-script-id="'+ scriptId +'" data-script-name="' + scriptName + '"><a href=javascript:void(0) onclick=navigator.clipboard.writeText("https://' + domain + '/scripts/' + scriptId + '/code/' + _scriptName + '.js") class="custom-install-link-parent"><span class="install-link custom-install-link">Copy URL</span></a><span>')
})
})()