NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
//
// @name Darkmode User
// @version 1.7.5
// @namespace https://github.com/Purfview/Darkmode-User
// @description Darkmode for the websites.
// @icon https://i.imgur.com/ZftAaI6.png
// @license MIT
//
// @updateURL https://greasyfork.org/scripts/421332-darkmode-user/code/Darkmode%20User.meta.js
// @downloadURL https://greasyfork.org/scripts/421332-darkmode-user/code/Darkmode%20User.user.js
// @homepage https://github.com/Purfview/Darkmode-User
// @supportURL https://github.com/Purfview/Darkmode-User/issues
//
// @require https://cdn.jsdelivr.net/npm/darkmode-js@1.5.7/lib/darkmode-js.min.js
// @require https://greasyfork.org/scripts/403996-exev/code/ExEv.js?version=808391
//
// @include https://karagarga.in/*
// @include https://secret-cinema.pw/*
// @include https://forum.doom9.org/*
// @include https://greasyfork.org/*
// @include https://www.cinematik.net/*
//
// @run-at document-start
// @noframes
//
// ==/UserScript==
//
/*========================= Version History ==================================
1.0 - First public release, only one site added.
1.1 - Added SC site.
- Added basic func for the "unknown" sites at @include.
- Sites' specific code was split to separate functions.
- Much faster switching to darkmode (no waiting for external images/resources).
- Return original background in white mode.
1.2 - Fixed few SC icons.
1.3 - Added Doom9 site.
1.4 - Added Greasyfork site. Some tweaks for SC and Doom9.
1.5 - Script wasn't working with Tampermonkey from v1.1. Fixed!
1.6 - Added Tik site.
1.7 - New feature: Seamless transitions to darkmode.
1.7.1 - Less contrast on the toggle button.
1.7.2 - Fixed KG.
1.7.3 - Fixed menus on SC and Greasyfork.
1.7.4 - KG tweaks.
1.7.5 - KG tweaks.
==============================================================================*/
//==============================================================================
// Sites' specific funcs.
//==============================================================================
function siteKG() {
const urlPath = window.location.pathname;
if (urlPath == '/browse.php' ||
urlPath == '/current.php' ||
urlPath == '/history.php' ||
urlPath == '/friends.php' ||
urlPath == '/bookmarks.php' ||
urlPath == '/reqdetails.php' ||
urlPath == '/mytorrents.php' ) {
addGlobalStyles('img {mix-blend-mode: screen}');
addGlobalStyles('a div img {mix-blend-mode: normal}');
addGlobalStyles('table .clear {isolation: isolate}');
addGlobalStyles('table[cellpadding="10"][bgcolor="red"] {mix-blend-mode: difference}');
addGlobalStyles('table[width="660"][cellpadding="10"] tbody tr[style="background-color: #008000; color: #fff;"] {mix-blend-mode: difference}');
addGlobalStyles('body>table>tbody>tr>td.outer>span {mix-blend-mode: difference}');
addGlobalStyles('body>table>tbody>tr>td.embedded {mix-blend-mode: screen}');
} else if (urlPath == '/userdetails.php') {
addGlobalStyles('table[width="660"][cellpadding="10"] tbody tr[style="background-color: #008000; color: #fff;"] {mix-blend-mode: difference}');
addGlobalStyles('body>table>tbody>tr>td.outer>span {mix-blend-mode: difference}');
addGlobalStyles('body>table>tbody>tr>td.embedded {mix-blend-mode: screen}');
} else {
addGlobalStyles('table[cellpadding="10"][bgcolor="red"] {mix-blend-mode: difference}');
addGlobalStyles('table[width="660"][cellpadding="10"] tbody tr[style="background-color: #008000; color: #fff;"] {mix-blend-mode: difference}');
addGlobalStyles('body>table>tbody>tr>td.outer>span {mix-blend-mode: difference}');
addGlobalStyles('body>table>tbody>tr>td.embedded {mix-blend-mode: screen}');
addGlobalStyles('div[style="width: 75%; background-color: #f9f; padding: 5px; margin: 5px; color: #000;"] {mix-blend-mode: difference}');
}
}
function siteSC() {
addGlobalStyles('img {mix-blend-mode: screen}');
addGlobalStyles('#header {background: white}');
addGlobalStyles('.colhead_dark {mix-blend-mode: difference}');
addGlobalStyles('.fronttab {mix-blend-mode: exclusion}');
addGlobalStyles('.colhead {mix-blend-mode: difference}');
addGlobalStyles('.settings_sidebar {isolation: isolate}');
addGlobalStyles('#textarea_wrap_0 {isolation: isolate}');
addGlobalStyles('.widethin .header .topbar {mix-blend-mode: difference}');
addGlobalStyles('.torrent_description table tbody tr {mix-blend-mode: difference}');
addGlobalStyles('#covers #cover_div_0 .brackets {mix-blend-mode: normal}');
addGlobalStyles('.wrapicon {mix-blend-mode: normal}');
addGlobalStyles('.potwicon {mix-blend-mode: normal}');
addGlobalStyles('iframe {mix-blend-mode: screen}');
addGlobalStyles('.noty_buttons {mix-blend-mode: difference}');
addGlobalStyles('.torrentdetails blockquote {background-color: white}');
}
function siteDoom9() {
addGlobalStyles('img {mix-blend-mode: screen}');
addGlobalStyles('#vB_Editor_QR_cmd_removeformat img, \
#vB_Editor_QR_cmd_bold img, \
#vB_Editor_QR_cmd_italic img, \
#vB_Editor_QR_cmd_underline img, \
#vB_Editor_QR_color_out img \
{mix-blend-mode: normal}');
addGlobalStyles('#vB_Editor_001_controls img {mix-blend-mode: normal}');
addGlobalStyles('#vB_Editor_001_popup_smilie img, \
#vB_Editor_001_cmd_createlink img, \
#vB_Editor_001_cmd_unlink img, \
#vB_Editor_001_cmd_email img, \
#vB_Editor_001_cmd_insertimage img, \
#vB_Editor_001_cmd_wrap0_quote img, \
#vB_Editor_001_cmd_wrap0_php img \
{mix-blend-mode: screen}');
}
function siteGreasyfork() {
addGlobalStyles('img {mix-blend-mode: screen}');
addGlobalStyles('#main-header {background: #66ffff}');
addGlobalStyles('#site-name a img {mix-blend-mode: normal}');
addGlobalStyles('#site-name img {mix-blend-mode: normal}');
addGlobalStyles('#install-area {mix-blend-mode: difference}');
addGlobalStyles('.script-list-ratings span span {mix-blend-mode: difference}');
addGlobalStyles('.current {color: #bfbfbf}');
addGlobalStyles('#about-user {background-color: transparent}');
addGlobalStyles('#about-user h2 {color: #bfbfbf}');
addGlobalStyles('#about-user h3 {color: #bfbfbf}');
}
function siteTik() {
addGlobalStyles('img {mix-blend-mode: screen}');
addGlobalStyles('#menu img {mix-blend-mode: normal}');
addGlobalStyles('#menu ul li {background-color: black}');
addGlobalStyles('#menu ul li a {color: grey}');
addGlobalStyles('.bottom_nav ul {background-color: black}');
addGlobalStyles('.msn_img_div1 {mix-blend-mode: screen}');
addGlobalStyles('.bottom_nav ul a {color: red}');
addGlobalStyles('.pbox_table td img[width="20"] {mix-blend-mode: overlay}');
addGlobalStyles('.ri_foto_extra {mix-blend-mode: screen}');
addGlobalStyles('.thumbos {mix-blend-mode: screen}');
addGlobalStyles('embed {mix-blend-mode: screen}');
}
function siteUnknown() {
addGlobalStyles('img {mix-blend-mode: screen}');
}
//==============================================================================
// Toggle/Add/Remove funcs.
//==============================================================================
function addGlobalStyles(css) {
var head, style;
head = document.getElementsByTagName('head')[0];
if (!head) { return; }
style = document.createElement('style');
style.className = 'DarkmodeUser';
style.innerHTML = css;
head.appendChild(style);
}
function removeGlobalStyles() {
var removeEl = [].slice.apply(document.getElementsByClassName("DarkmodeUser"));
for (var i = 0; i < removeEl.length; i++) {
removeEl[i].remove();
}
}
function toggleGlobalStyles() {
var modestate = window.localStorage['darkmode'];
if (modestate == "true") {
addBackground();
const urlHost = window.location.hostname;
if (urlHost == 'karagarga.in') {
siteKG();
} else if (urlHost == 'secret-cinema.pw') {
siteSC();
} else if (urlHost == 'www.cinematik.net') {
siteTik();
} else if (urlHost == 'forum.doom9.org') {
siteDoom9();
} else if (urlHost == 'greasyfork.org') {
siteGreasyfork();
} else {
siteUnknown();
}
} else {
removeGlobalStyles();
removeBackground();
}
}
function removeBackground() {
document.getElementsByClassName('darkmode-background')[0].remove();
}
function addBackground() {
if (document.querySelector('.darkmode-background') !== null) { return; }
var backgroundDiv = document.createElement('div');
backgroundDiv.setAttribute('class', 'darkmode-background');
document.body.insertBefore(backgroundDiv, document.body.firstChild);
}
//==============================================================================
// Darkmode.js
//==============================================================================
function addDarkmodeWidget() {
const options = {
bottom: '32px',
right: '32px',
left: 'unset',
time: '0.0s',
mixColor: '#fff',
backgroundColor: '#fff',
buttonColorDark: '#333333',
buttonColorLight: '#b3b3b3',
saveInCookies: true,
label: '',
autoMatchOsTheme: false
};
new Darkmode(options).showWidget();
// Add func to the widged button to toggle styles on click.
document.getElementsByClassName('darkmode-toggle')[0].onclick = function () {toggleGlobalStyles()};
// Add styles on the page load.
const darkmode = window.localStorage['darkmode'];
if (darkmode == "true") {
toggleGlobalStyles();
} else {
// Remove custom white background.
removeBackground();
}
}
if (Boolean(location.href.match('karagarga.in/details.php' )) ||
Boolean(location.href.match('karagarga.in/reqdetails.php')) ) {
document.events.on('bodyloaded', () => {
addDarkmodeWidget();
});
} else if (Boolean(location.href.match('karagarga.in/userdetails.php')) ||
Boolean(location.href.match('karagarga.in/comment.php')) ||
Boolean(location.href.match('karagarga.in/adsearch.php')) ||
Boolean(location.href.match('karagarga.in/my.php')) ) {
window.addEventListener('DOMContentLoaded', addDarkmodeWidget);
} else {
document.events.on('headloaded', () => {
addDarkmodeWidget();
});
}