Last active
June 13, 2018 23:42
-
-
Save thepante/043548c13119b2f235811f168f59af1a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name FloatingScrollbar.uc.js | |
// @namespace nightson1988@gmail.com | |
// @include main | |
// @version 0.0.3 | |
// @note Thanks to Griever(https://github.com/Griever/userChromeJS/blob/master/SmartScrollbar.uc.js) and Paul Rouget(https://gist.github.com/4003205) | |
// @note...........0.0.3 Fixed a problem of breaking hbox layout | |
// @note 0.0.2 Remove usage of E4X (https://bugzilla.mozilla.org/show_bug.cgi?id=788293) | |
// ==/UserScript== | |
(function () { | |
var prefs = Services.prefs, | |
enabled; | |
if (prefs.prefHasUserValue('userChromeJS.floating_scrollbar.enabled')) { | |
enabled = prefs.getBoolPref('userChromeJS.floating_scrollbar.enabled') | |
} else { | |
prefs.setBoolPref('userChromeJS.floating_scrollbar.enabled', true); | |
enabled = true; | |
} | |
var css = '\ | |
@namespace url(http: //www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);\ | |
:not(select):not(hbox) > scrollbar {\ | |
-moz-appearance: none!important;\ | |
position: relative;\ | |
background-color: transparent;\ | |
background-image: none;\ | |
z-index: 2147483647;\ | |
padding: 2px;\ | |
}\ | |
:not(select):not(hbox) > scrollbar[orient = "vertical"] {\ | |
-moz-margin-start: -10px;\ | |
min-width: 10px;\ | |
}\ | |
:not(select):not(hbox) > scrollbar[orient = "vertical"] thumb {\ | |
min-height: 20px;\ | |
}\ | |
:not(select):not(hbox) > scrollbar[orient = "horizontal"] {\ | |
margin-top: -10px;\ | |
min-height: 10px;\ | |
}\ | |
:not(select):not(hbox) > scrollbar[orient = "horizontal"] thumb {\ | |
min-width: 20px;\ | |
}\ | |
:not(select):not(hbox) > scrollbar thumb {\ | |
-moz-appearance: none!important;\ | |
border-width: 0px!important;\ | |
border-radius: 3px!important;\ | |
background-color: rgba(0, 0, 0, 0.1)!important;\ | |
transition: background-color .3s ease-in-out;\ | |
}\ | |
:not(select):not(hbox) > scrollbar thumb:active,\ | |
:not(select):not(hbox) > scrollbar thumb:hover {\ | |
background-color: #9B9B9B!important;\ | |
}\ | |
:not(select):not(hbox) > scrollbar scrollbarbutton, :not(select):not(hbox) > scrollbar gripper {\ | |
display: none;\ | |
}'; | |
var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); | |
var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css)); | |
var p = document.getElementById('devToolsSeparator'); | |
var m = document.createElement('menuitem'); | |
m.setAttribute('label', "Schwebende Scrollbar"); | |
m.setAttribute('type', 'checkbox'); | |
m.setAttribute('autocheck', 'false'); | |
m.setAttribute('checked', enabled); | |
p.parentNode.insertBefore(m, p); | |
m.addEventListener('command', command, false); | |
if (enabled) { | |
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); | |
} | |
function command() { | |
if (sss.sheetRegistered(uri, sss.AGENT_SHEET)) { | |
prefs.setBoolPref('userChromeJS.floating_scrollbar.enabled', false); | |
sss.unregisterSheet(uri, sss.AGENT_SHEET); | |
m.setAttribute('checked', false); | |
} else { | |
prefs.setBoolPref('userChromeJS.floating_scrollbar.enabled', true); | |
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); | |
m.setAttribute('checked', true); | |
} | |
let root = document.documentElement; | |
let display = root.style.display; | |
root.style.display = 'none'; | |
window.getComputedStyle(root).display; // Flush | |
root.style.display = display; | |
} | |
})(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@namespace html url("http://www.w3.org/1999/xhtml"); | |
@namespace svg url("http://www.w3.org/2000/svg"); | |
@-moz-document url(chrome://browser/content/browser.xul) { | |
#alltabs-button { | |
-moz-binding: url(data:text/xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8IS0tIENvcHlyaWdodCAoYykgMjAxNyBIYWdnYWkgTnVjaGkNCkF2YWlsYWJsZSBmb3IgdXNlIHVuZGVyIHRoZSBNSVQgTGljZW5zZToNCmh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUDQogLS0+DQoNCjwhLS0gUnVuIHVzZXJDaHJvbWUuanMvdXNlckNocm9tZS54dWwgYW5kIC51Yy5qcy8udWMueHVsLy5jc3MgZmlsZXMgIC0tPg0KPGJpbmRpbmdzIHhtbG5zPSJodHRwOi8vd3d3Lm1vemlsbGEub3JnL3hibCI+DQogICAgPGJpbmRpbmcgaWQ9ImpzIiBleHRlbmRzPSJjaHJvbWU6Ly9nbG9iYWwvY29udGVudC9iaW5kaW5ncy90b29sYmFyYnV0dG9uLnhtbCNtZW51Ij4NCiAgICAgICAgPGltcGxlbWVudGF0aW9uPg0KICAgICAgICAgICAgPGNvbnN0cnVjdG9yPjwhW0NEQVRBWw0KICAgICAgICAgICAgICAgIGlmKHdpbmRvdy51c2VyQ2hyb21lSnNNb2QpIHJldHVybjsNCiAgICAgICAgICAgICAgICB3aW5kb3cudXNlckNocm9tZUpzTW9kID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICB2YXIgY2hyb21lRmlsZXMgPSBGaWxlVXRpbHMuZ2V0RGlyKCJVQ2hybSIsIFtdKS5kaXJlY3RvcnlFbnRyaWVzOw0KICAgICAgICAgICAgICAgIHZhciB4dWxGaWxlcyA9IFtdOw0KICAgICAgICAgICAgICAgIHZhciBzc3MgPSBDY1snQG1vemlsbGEub3JnL2NvbnRlbnQvc3R5bGUtc2hlZXQtc2VydmljZTsxJ10uZ2V0U2VydmljZShDaS5uc0lTdHlsZVNoZWV0U2VydmljZSk7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgd2hpbGUoY2hyb21lRmlsZXMuaGFzTW9yZUVsZW1lbnRzKCkpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGUgPSBjaHJvbWVGaWxlcy5nZXROZXh0KCkuUXVlcnlJbnRlcmZhY2UoQ2kubnNJRmlsZSk7DQogICAgICAgICAgICAgICAgICAgIHZhciBmaWxlVVJJID0gU2VydmljZXMuaW8ubmV3RmlsZVVSSShmaWxlKTsNCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIGlmKGZpbGUuaXNGaWxlKCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKC8oXnVzZXJDaHJvbWV8XC51YylcLmpzJC9pLnRlc3QoZmlsZS5sZWFmTmFtZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlcy5zY3JpcHRsb2FkZXIubG9hZFN1YlNjcmlwdFdpdGhPcHRpb25zKGZpbGVVUkkuc3BlYywge3RhcmdldDogd2luZG93LCBpZ25vcmVDYWNoZTogdHJ1ZX0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZigvKF51c2VyQ2hyb21lfFwudWMpXC54dWwkL2kudGVzdChmaWxlLmxlYWZOYW1lKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh1bEZpbGVzLnB1c2goZmlsZVVSSS5zcGVjKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoL1wuYXNcLmNzcyQvaS50ZXN0KGZpbGUubGVhZk5hbWUpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIXNzcy5zaGVldFJlZ2lzdGVyZWQoZmlsZVVSSSwgc3NzLkFHRU5UX1NIRUVUKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NzLmxvYWRBbmRSZWdpc3RlclNoZWV0KGZpbGVVUkksIHNzcy5BR0VOVF9TSEVFVCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKC9eKD8hKHVzZXJDaHJvbWV8dXNlckNvbnRlbnQpXC5jc3MkKS4rXC5jc3MkL2kudGVzdChmaWxlLmxlYWZOYW1lKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFzc3Muc2hlZXRSZWdpc3RlcmVkKGZpbGVVUkksIHNzcy5VU0VSX1NIRUVUKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NzLmxvYWRBbmRSZWdpc3RlclNoZWV0KGZpbGVVUkksIHNzcy5VU0VSX1NIRUVUKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uIGxvYWRYVUwoKSB7DQogICAgICAgICAgICAgICAgICAgIGlmKHh1bEZpbGVzLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvYWRPdmVybGF5KHh1bEZpbGVzLnNoaWZ0KCksIG51bGwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChsb2FkWFVMLCA1KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0sIDApOw0KICAgICAgICAgICAgXV0+PC9jb25zdHJ1Y3Rvcj4NCiAgICAgICAgPC9pbXBsZW1lbnRhdGlvbj4NCiAgICA8L2JpbmRpbmc+DQo8L2JpbmRpbmdzPg==); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment