Anonymous editing has been enabled. Learn more.

Customization

From Soyjak Wiki, The Free Soycyclopedia
(Redirected from User JS)
Jump to navigationJump to search
🍌This page is Muddy
Contents of this page will be muddied up.
Consider wearing some boots!

This page catalogs JS Scripts and CSS Themes/Fixes created by Chuds like you for the 'party.

JS Scripts

It is RECOMMENDED to use a userscript manager like Violentmonkey when installing scripts from Greasyfork or manually adding them

you can also use the builtin manager at Options->User JS on the 'party for any of the smaller scripts.

You can also check out other scripts not listed here at this link: https://greasyfork.org/en/scripts/by-site/soyjak.party

Sharty Fixes

https://greasyfork.org/en/scripts/461271-sharty-fixes

A Userscript that adds features that aren't already implemented on the 'party as listed below:

  • Time inaccuracy - Resolved
  • Google captcha not resetting - Resolved
  • Quick reply Google captcha endless loading - Resolved
  • Clicking post number sometimes refreshing the page - Not Working
  • Multi-line automatic greentext
  • Reporting posts from the overboard - Resolved
  • Automatically load and complete vichan text captcha (NOT KAPTCHA) - Not needed anymore
  • Reset text captcha when post fails - Not Needed
  • Submit post with Ctrl+Enter
  • Bypass wordfilter - Not Working
  • Hide password
  • Hide threads from catalog (Shift+Click, triple tap on mobile) - Already added on Desktop except Mobile.
  • Hide blotter
  • Search catalog
  • Image from URL (userscript manager only, User JS option breaks from CORS)
  • Remove kolyma jump datamining - Not needed anymore
  • (Optional) - Quick quote, mass reply/quote - Quick Quote button was added
  • (Optional) - Anonymise name/trips
  • (Optional) - Truncate long posts
  • (Optional) - Hide images from saged posts

Sharty Themes

https://greasyfork.org/en/scripts/458480-sharty-themes

Adds the following themes to the Options menu :

  • Underwater Theme
  • Soot Theme
  • CIA Theme
  • Colorjak Theme - (Currently Broken)
  • Beta Theme
  • Leftycoal Theme
  • Crystal Theme
  • Gurochan Theme

SoyParty-X

https://greasyfork.org/en/scripts/458436-soyparty-x

Features:

  • Detects flood posts and hides them (you can set amount of lines and words to hide)
  • Forced anonymity (hides namefags, can be disabled)
  • Hides emailfags or sagefags (can be disabled for sagefags)
  • Highlights triple parentheses
  • Highlights datamining (makes posts glow)
  • Inline Youtube Previews (+invidious support)
  • Replaces "Gem" and "Coal" with minecraft icons
  • Replaces "Bump" and "Sage" with upvote and downvote icons

Expand to view the script

// ==UserScript==
// @name         SoyParty-X
// @namespace    datamining
// @version      0.2
// @description  Cure the cancer that is killing soyjak.party
// @author       Chud (You)
// @match        https://soyjak.party/*
// @icon         https://soyjak.party/static/favicon.png
// @grant        none
// ==/UserScript==

/* eslint-env jquery */

/*

Changelog:

0.2:

- hidePosts() now detects flood posts.

0.1:

- hidePosts()
- forcedAnonymity()
- highlightTripleParentheses()
- highlightDatamining()
- inlineYoutubePreviews()
- replaceCoalAndGemsWithIcon()
- replaceBumpAndSageWithIcons()

*/

(function SoyPartyX() {
  // true = hide posts where the e-mail is "sage".
  const _hideMailtoSage = true;

  // true = scrub email, trip, and force all names to be "Chud".
  // - Emailfags and tripfags are already hidden.
  // - Namefags aren't hidden, but turning this on will anonymize them.
  // false = don't change posts (default).
  const _enableForcedAnonymity = false;

  // Sets the limit for a post to be considered a flood post.
  // If one of the criteria is met, the post is hidden.
  const floodThresholdLines = 30;
  const floodThresholdCharacters = 3000;

  hidePosts();
  forcedAnonymity(); // Must come AFTER hidePosts()
  highlightTripleParentheses();
  highlightDatamining();
  inlineYoutubePreviews();
  replaceCoalAndGemsWithIcon();
  replaceBumpAndSageWithIcons();

  function hidePosts() {
    $(".post").each((i, el) => {
      const $el = $(el);
      const reasons = [];

      const isOp = $el.hasClass("op");

      if ($el.has(".trip").length) {
        reasons.push("tripfag");
      }
      if (_hideMailtoSage && $el.has('a.email[href^="mailto:sage"]').length) {
        reasons.push("sagefag");
      }
      if ($el.has('a.email:not([href^="mailto:sage"])').length) {
        reasons.push("emailfag");
      }

      const body = $el.has(".body");
      const bodyLines = body.html().split("<br>").length;
      const bodyLength = body.text().length;

      if (
        bodyLines > floodThresholdLines ||
        bodyLength > floodThresholdCharacters
      ) {
        reasons.push(
          `possible flooding: ${bodyLength} characters in ${bodyLines} lines`
        );
      }

      if (reasons.length) {
        const $notice = $("<div>")
          .addClass(`post ${isOp ? "op" : "reply"}`)
          .html(
            `<div class='body'><em>Post hidden (${reasons.join(
              ", "
            )}). Click to show.</em></div>`
          )
          .after($("<br>"));
        $notice.click(() => {
          $el.show();
          if (isOp) $el.prev(".files").show();
          $notice.hide();
        });
        $el.after($notice);
        $el.hide();
        if (isOp) $el.prev(".files").hide();
      }
    });
  }

  function forcedAnonymity() {
    if (!_enableForcedAnonymity) return;
    // Remove all emails.
    $("a.email").prop("outerHTML", "<span class='name'>Chud</span>");
    // Remove all tripcodes.
    $(".trip").prop("outerHTML", "");
    // Set all names to Chud.
    // Make sure not to overwrite (You)'s.
    $(".name")
      .filter((i, el) => !$(el).has(".own_post").length)
      .text("Chud");
  }

  function replaceWordWithIcon(re, icon) {
    const matchesRe = (index, post) => $(post).html().match(re);

    const template = (match) =>
      `<img src="${icon}" style="max-height:2em; vertical-align:middle">`;

    const applyTemplate = (index, post) => {
      const $post = $(post);
      const html = $post.html();
      $post.html(html.replace(re, template));
    };

    $("div.body").filter(matchesRe).each(applyTemplate);
  }

  function replaceCoalAndGemsWithIcon() {
    replaceWordWithIcon(/coal/gi, "https://i.imgur.com/O9iRcRv.png");
    replaceWordWithIcon(/gems?/gi, "https://i.imgur.com/BvjFdau.png");
  }

  function replaceBumpAndSageWithIcons() {
    // replaceWordWithIcon(/bump/gi, "https://i.imgur.com/zM2xOGh.png");
    // replaceWordWithIcon(/sage/gi, "https://i.imgur.com/2bsauzj.png");
    replaceWordWithIcon(/bump/gi, "https://i.imgur.com/Y7cpsW0.png");
    replaceWordWithIcon(/\bsage\b/gi, "https://i.imgur.com/ZarQtY3.png");
  }

  function highlightTripleParentheses() {
    const re = /\(\(\(.+?\)\)\)/g;
    const hasRe = (i, post) => post.innerHTML.match(re);

    const template = (match) =>
      `<span style='background-color:white;color:#0038B8;font-family:monospace;'>${match}</span>`;
    const applyTemplate = (i, post) => {
      post.innerHTML = post.innerHTML.replace(re, template);
    };

    $("div.body").filter(hasRe).each(applyTemplate);
  }

  function highlightDatamining() {
    const reGlowie =
      /data(\s*|-)min(ing|er|ed)|(sell|selling|sold)\s+(my|our)?\s+data|cuckflare|cloudflare|cloud fleur/i;
    const hasReGlowie = (i, post) => post.innerHTML.match(reGlowie);
    const applyTemplate = (i, post) =>
      $(post).css({
        backgroundColor: "#D7EFD7",
        boxShadow: "#66FF66 0 0 2rem 0",
      });
    $(".reply").filter(hasReGlowie).each(applyTemplate);
  }

  function inlineYoutubePreviews() {
    const re = /(?:youtu\.be\/|\/watch\?v=)(.{11})/;
    const previewTemplate = (videoId) =>
      `<a href="https://youtube.com/watch?v=${videoId}">https://youtube.com/watch?v=${videoId}</a><br><img style="max-width:255px;max-height:255px" src="https://i.ytimg.com/vi/${videoId}/hqdefault.jpg" /><br><em>Watch on <a href="https://yewtu.be/${videoId}">Invidious</a> (less datamining)</em><br>`;
    $(".body a")
      .filter(function (i) {
        return $(this).prop("href").match(re);
      })
      .each(function (i) {
        $(this).prop("outerHTML", previewTemplate(this.href.match(re)[1]));
      });
  }
})();

Gemmy Button Bar

https://greasyfork.org/en/scripts/458433-gemmy-button-bar

Adds post buttons that paste phrases into the comment box.

Mass reply

(Note: This is now included in Sharty Fixes)

Reply to everyone in a thread.

If you want your mass reply to be more autistic switch out "№" for "No"

Expand to view the script

// ==UserScript==
// @name         Mass Reply for soyjak.party
// @namespace    datamining
// @version      0.1
// @description  Mass reply
// @author       Chud (You)
// @match        https://soyjak.party/*
// @icon         https://soyjak.party/static/favicon.png
// @grant        none
// ==/UserScript==

(function () {
  function insert_after(new_node, ref_node) {
    ref_node.parentNode.insertBefore(new_node, ref_node.nextSibling);
  }
  function mass_reply() {
    let form_textarea = document.getElementById('body');
 
    let post_no_nodes = document.getElementsByClassName("post_no");
    for(const node of post_no_nodes) {
      let post_no_text = node.textContent;
      if(!post_no_text.includes("№")) {
        form_textarea.value += `>>${post_no_text}\n`;
      }
    }
    form_textarea.focus();
  }
  
  function add_button() {
    let ref_node = document.querySelectorAll(".op .intro .post_no")[1];
    let button = document.createElement("input");
    button.type = "button";
    button.value = "Mass Reply";
    button.style.marginLeft = "5px";
    button.addEventListener("click", function() {
      mass_reply();
    }, false);
    
    insert_after(button, ref_node);
  }
  
  add_button();
})();

Bypass Media Pending Approval (Client Side)

Lets you see media before its approved by Jannies.

https://pastebin.com/raw/3DWHFnpS

Youtube Link Converter

(Note: Currently breaks Youtube Embeds)

https://files.catbox.moe/5pwcth.txt

Converts Youtube links to show the video title instead, similar to what 4Chan X does.

Wojakificator

Wojakificator is a JS script made by a bunkerchan user that automatically quotes any post you want an attaches a soyjak image

The script might work using User JS option,

Source code

Warning: includes some lefty and NAS images

Expand to view the script

Download link

Anti 4Channeler Posts

Hides posts made by 4channelers.

Warning: Updates the page every 4 seconds to check for new posts, can be adjusted.

Expand to view the script

// ==UserScript==
// @name         Anti 4channeler posts on soyjak.party
// @namespace    datamining
// @version      0.1
// @description  Hides 4channeler posts
// @author       Chud (You)
// @match        https://soyjak.party/*
// @icon         https://soyjak.party/static/favicon.png
// @grant        none
// ==/UserScript==
let posts = document.querySelectorAll('.body');
let replies = document.querySelectorAll(".replies");
keys= [
   "newfag",
   "fag",
   "gem",
   "faggot",
   "new fag",
   "newfren",
   "newfrien",
   "chud",
   "frogposter",
   "nas",
   "kys",
   "killyourself",
   "go back",
   "goback",
   "reddit",
   "kill yourself",
   "hang",
   "coal",
   "reddit frog",
    "frog",
    "what does the reddit",
    "frog has to do with",
     "redditfrog",
     "frogtranny",
"nigger",
    "tranny"
]
function containsNonLatinCodepoints(s) {
    return /[^\u0000-\u00ff]/.test(s);
}
function start_filtering()
{
posts = document.querySelectorAll('.body');
replies = document.querySelectorAll(".replies");
for(let i =0 ; i<posts.length;i++)
{
for(let j=0;j<keys.length;j++)
{
  if(posts[i].innerHTML.toLowerCase().includes(keys[j].toLowerCase()) || containsNonLatinCodepoints(posts[i].innerHTML.toLowerCase()) == true )
{
posts[i].innerHTML= "<span style='color:green;font-weight:bold;font-size:14px;'>[HIDDEN 4channeler post]</span>";
}
}
 
}

for(let i =0 ; i<replies.length;i++)
{
for(let j=0;j<keys.length;j++)
{
  if(replies[i].innerHTML.toLowerCase().includes(keys[j].toLowerCase()))
{
replies[i].innerHTML= "<span style='color:green;font-weight:bold;font-size:14px;'>[HIDDEN 4channeler post]</span>";
}
}
 
}

}

start_filtering();
setInterval(start_filtering,2000);
//Interval


//Gifs hider
document.querySelectorAll("img").forEach(i=>{if(i.src.includes(".gif")){i.src="";}});

Preview for Youtube Videos

Show preview for youtube video links.

Expand to view the script

// ==UserScript==
// @name         YouTube preview for soyjak.party
// @namespace    datamining
// @version      0.1
// @description  Previews YouTube videos
// @author       Chud (You)
// @match        https://soyjak.party/*
// @icon         https://soyjak.party/static/favicon.png
// @grant        none
// ==/UserScript==
(function youtubeInlinePreviews() {

const re = /(?:youtube\.com\/watch\?v=|youtu\.be\/)(.{11})/;

const previewTemplate = (videoId) => `<img

style="max-width:255px;max-height:255px"

src="https://i.ytimg.com/vi/${videoId}/hqdefault.jpg"

/>`;

Array.from(document.querySelectorAll(".body a"))

.filter((link) => link.href.match(re))

.forEach((link) => {

const videoId = link.href.match(re)[1];

const inlinePreview = previewTemplate(videoId);

link.innerHTML = inlinePreview;

});

})();

Filter Tripchuds

To use it, change "!!TRIP GOES HERE" to any trip you want to filter (ex: !incelchud1 or !!incelchud1), can also be used to filter names if you change

(/class="trip">!!TRIP GOES HERE</)

to

(/class="name">name of the chudcel you want to filter</)

if you want to filter multiple tripchuds, you have to do this

(/class="trip">!!FIRST TRIP CHUD|!SECOND TRIPCHUD|!THIRD TRIPCHUD</)

Expand to view the script

// ==UserScript==
// @name         Tripfag filter for soyjak.party
// @namespace    datamining
// @version      0.1
// @description  Filters tripfags
// @author       Chud (You)
// @match        https://soyjak.party/*
// @icon         https://soyjak.party/static/favicon.png
// @grant        none
// ==/UserScript==
$(".post")
  .filter(function (index) {
    return this.innerHTML.match(/class="trip">!!TRIP GOES HERE</);
  })
  .each(function (index) {
    let whatToHide = "#" + this.id;
    if (this.id.startsWith("op_")) {
      whatToHide = "#" + this.id.replace("op_", "thread_");
    }
    $(whatToHide).hide();
  });

if (!localStorage.favorites) {
	localStorage.favorites = '[]';
}

Tripfag Catalog Filter

Hides all tripchud posts from catalog, no exceptions.

Expand to view the script

// ==UserScript==
// @name         Tripfag catalog filter for soyjak.party
// @namespace    datamining
// @version      0.1
// @description  Filters tripfags
// @author       Chud (You)
// @match        https://soyjak.party/*
// @icon         https://soyjak.party/static/favicon.png
// @grant        none
// ==/UserScript==
// --- start: purgeTripsFromCatalog ---

(function purgeTripsFromCatalog() {
  // If on a catalog page
  if (document.location.href.match(/catalog\.html$/)) {
    // Call the API for that page
    fetch(document.location.href.replace(".html", ".json"))
      .then((res) => res.json())
      .then((json) =>
        json
          // Find the threads where OP is using a tripcode
          .reduce((acc, cur) => [...acc, ...cur.threads], [])
          .filter((op) => op.trip)
          // Hide them
          .forEach((filtered) => $(`div[data-id='${filtered.no}']`).hide())
      );
  }
})();

// --- end: purgeTripsFromCatalog ---

Disable GIF Autoplay

Expand to view the script

// ==UserScript==
// @name     disable gif autoplay
// @version  1
// @grant    none
// @match https://soyjak.party/*
// ==/UserScript==

window.addEventListener('load', function () {
[].slice.apply(document.images).filter(is_gif_image).map(freeze_gif);

function is_gif_image(i) {
    return /^(?!data:).*\.gif/i.test(i.src);
}

function freeze_gif(i) {
    var c = document.createElement('canvas');
    var w = c.width = i.width;
    var h = c.height = i.height;
    c.getContext('2d').drawImage(i, 0, 0, w, h);
    try {
        i.src = c.toDataURL("image/gif");
    } catch(e) {
        for (var j = 0, a; a = i.attributes[j]; j++)
            c.setAttribute(a.name, a.value);
        i.parentNode.replaceChild(c, i);
    }
}
})

Ratio Script

adds a [ratio] button that starts posting automated replies from a selection of 4 types: "generic","cob","trans" and "chud". perfect for shitposting

(feel free to add more quotes to the code, the "chud" one is very incomplete)

// ==UserScript==
// @name        Sharty Ratio
// @namespace   soyjak.party
// @match       http*://soyjak.party/*
// @version     1.0
// @author      God Tier Wojack
// @description Ratio that nigga
// ==/UserScript==
const modifiers = ["==", "%%", "--", "'", ""];
let done = new Array(20);
let stringSets = {
  "Generic": ["holy shit", "holy shiiiit", "holy fuck", "holy fuck.", "fuckin hell", "holy fuckk", "holy fuckkk", "holy fuckkkk", "lfg", "lfggg", "lfgggg", "lfg!", "lfg!!", "lfgg!!!", "w", "dub", "massive w", "huge w", "gigantic w", "massive dub", "huge dub", "another dub", "another w", "gigantic w", "get his ass", "get that nigga", "lets fucking go", "lets fucking gooo", "lets fucking goooo", "lets fucking goooo", "lets fucking go!", "lets fucking go!!", "lets fucking go!!!", "lets fucking go!!!!!", "yo get his ass", "yo get em", "yooo", "yoooo", "yooooooo", "yoooooooooooo", "god damn", "got damn", "god damnnn", "damnnnnn", "own that fraud", "expose that fraud", "lets gooo", "lets gooooo", "let's goooooo", "keyed", "keyed af", "holy keyed", "gem", "massive gem", "gemerald", "wem", "huge gem", "gigantic gem", "sharty saving gem", "diamond", "sharty saving diamond", "up", "go up", "go the fuck up", "up up up", "go tf up", "'chup", "own that fraud", "get they ass", "beat his ass", "kill that nigga", "can't stop winning", "we cant stop winning bros", "diamonderald", "btfo", "zamn", "zamnnn", "holy based", "based af", "GYATT", "GYAT DAYUM", "DAMN ZIGGA", "GET THAT NIGGA", "NIGGA", "COOK THAT NIGGA", "let him cook", "HUUUUUUUUUGE FUCKING COCK", "GET OUT DA HOOD", "DAYUM NIGGA", "WHAT DA HEEEEEEEEEEEEEEEEEEELL", "COOK HIS ASS", "EAT THAT NIGGA", "HUGE GYATT", "RIZZ", "ENORMOUS W", "W CHAT", "EAT HIS ASS", "How will he ever recover?", "#PACKWATCH", "AYO", "MOG HIS ASS", "LOCK IN", "VICTORY", "GOTTEM", "How will bro ever recover?", "How will blud ever recover?", "BRO WILL NEVER RECOVER", "BLUD WILL NEVER RECOVER", "check'd and kek'd", "BUMP"],
  "Cob": ["another cob w", "#cobgang", "another gemson victory", "gemson win", "gemson victory", "gemson up", "god tier wojack", "gem tier godjack", "cobby up", "cobby go up", "godson up", "upson", "keyedson", "winson", "cob w", "cob dub", "cobby win", "#cobgang win", "#cobgang victory", "hwabag", "god tier winjack", "diamondson go up", "winson up", "gemson go up", "godson go up", "gemson dub", "gemson w", "godson dub", "godson w", "#cobgang dub", "#cobgang w", "cobwin", "he won", "he fucking won", "he cant stop winning"],
  "Trans": ["trans rights", "trans fucking rights", "trans rights won", "sisters...", "trans rights w", "trans rights dub", "trans folx won", "w trans rights", "trans rights go up", "transphobes btfo", "transphobes destroyed", "trans rights victory", "w for trans rights", "trans victory", "transerald", "trans diamond", "bump up the trans", "uptrans", "sisters go up", "upsis", "trans top", "estrogem", "estrogemerald", "bumpstrogen", "topstrogen", "winstrogen"],
   "chud":["1488","fuck niggers","kill all blacks","kanye 2024","dial eight","-ACK!","sieg heil!","jews","media is kiked","goyslop","hang yourself troon","the west has fallen","back to /leftypol/","amerimutt","women are made for rape"]
}
let targetPosts = [];
let sets = [stringSets["Generic"]];
setInterval(() => {
  document.querySelectorAll(".button.alert_button").forEach(e => e.click());
  if (targetPosts.length == 0 || sets.length == 0) {
    return;
  }
  let post = "";
  targetPosts.forEach(p => post += `>>${p}\n`);
  let effect = "";
  if (Math.random() > 0.5) {
    effect = modifiers[Math.floor(Math.random() * modifiers.length)];
  }
  post += effect;
  let strings = sets.flat();
  stringsLength = strings.length;
  let found = false;
  while (!found) {
    text = strings[(Math.floor(Math.random() * stringsLength))];
    if (!done.includes(text)) {
      if (Math.random() > 0.5) {
        text = text.toUpperCase();
      }
      post += text;
      found = true;
      done.unshift(text);
      done.pop();
    }
  }
  post += effect;
  document.querySelector("form[name=post] textarea#body").value = post;
  document.querySelector("form[name=post] input[value*='Reply']").click();
}, 12000);
function addRatioButton(post) {
  post.querySelector(".intro").insertAdjacentHTML("beforeend", `<a href="javascript:void(0);" class="ratio" postNumber="${post.getElementsByClassName("post_no")[1].textContent}">[Ratio]</a>`);
}
let options = Options.add_tab("ratio", "gear", "Ratio").content[0];
let optionsHTML = "";
for ([key, value] of Object.entries(stringSets)) {
  optionsHTML += `<input type="checkbox" id="ratio-${key}" name="${key}"><label for="ratio-${key}">${key}</label><br>`;
}
options.insertAdjacentHTML("beforeend", optionsHTML);
options.querySelectorAll("input[type=checkbox]").forEach(e => {
  e.addEventListener("change", e => {
    sets = [];
    options.querySelectorAll("input[type=checkbox]:checked").forEach(c => sets.push(stringSets[c.getAttribute("name")]));
  });
  e.checked = e.getAttribute("name") == "Generic";
});
const updateObserver = new MutationObserver(list => {
  list.forEach(node => {
    if (node.addedNodes[0].nodeName == "DIV") {
      addRatioButton(node.addedNodes[0]);
    }
  });
});
updateObserver.observe(document.querySelector(".thread"), {
  childList: true
});
[...document.getElementsByClassName("post")].forEach(e => {
  addRatioButton(e);
});
document.addEventListener("click", e => {
  let t = e.target;
  if (t.classList.contains("ratio")) {
    if (t.textContent == "[Ratio]") {
      t.textContent = "[Unratio]";
      targetPosts.push(t.getAttribute("postNumber"));
    } else {
      targetPosts = targetPosts.filter(p => p != t.getAttribute("postNumber"));
      t.textContent = "[Ratio]";
    }
  }
});

Thremboify

Converts post numbers to Base 11 with Thrembo (ÏȘ)

Expand to view the script

// ==UserScript==
// @name         Soyjak.party Thremboify
// @namespace    http://soyjak.party/
// @version      0.1
// @description  Thremboifies post numbers on Soyjak.party
// @author       Chud
// @match        https://soyjak.party/*
// @grant        none
// ==/UserScript==
const thr_lut = ['0', '1', '2', '3', '4', '5', '6', 'ÏȘ', '7', '8', '9'];
function thr_cnv(num) {
  if (num === 0) {
    return '0';
  }
  let result = '';
  while (num !== 0) {
    const remainder = num % 11;
    result = thr_lut[remainder] + result;
    num = Math.floor(num / 11);
  }
  return result;
}
function thr_up() {
    console.log('updating');
    document.querySelectorAll('.post_no').forEach((el) => {
        if (el.classList.contains('thr_ok')) { return; }
        el.classList.add('thr_ok');
        if (el.innerText == '№') { return; }
        const res = thr_cnv(parseInt(el.innerText));
        el.innerText = res;
    });
    document.querySelectorAll('a[class^="mentioned-"]').forEach((el) => {
        if (el.classList.contains('thr_ok')) { return; }
        el.classList.add('thr_ok');
        const res = thr_cnv(parseInt(el.innerText.substring(2)));
        el.innerText = `>>${res}`;
    });
    document.querySelectorAll('a[onclick^="highlightReply"][href*="/thread"]').forEach((el) => {
        if (el.classList.contains('thr_ok')) { return; }
        el.classList.add('thr_ok');
        if (el.innerText == '№') { return; }
        const res = thr_cnv(parseInt(el.innerText.substring(2)));
        el.innerText = `>>${res}`;
    });
}
const observer = new MutationObserver((mutationsList, observer) => {
    for (let mutation of mutationsList) {
        if (mutation.type === 'childList') {
            thr_up();
            return;
        }
    }
});
const config = { childList: true, subtree: true };
observer.observe(document.body, config);
thr_up();

Hide Website Origin

Useful for hiding the fact that you came from the ‘arty if you’ve clicked a link on the ‘ty for a site that you wish to raid (e.g. an altchan).

Expand to view the script

const referrerPolicy = document.createElement("meta")
referrerPolicy.setAttribute("name", "referrer")
referrerPolicy.setAttribute("content", "same-origin")
document.querySelector("head").appendChild(referrerPolicy)

Sharty GET Stealer

https://greasyfork.org/en/scripts/470562-get-stealer

Self-explanatory.

4Cuck GET Stealer

It’s on the GET page, chud

Redirect Broken /res/ URLs to /thread/ URLs

Redirects thread URLs in the old soyjak.party/*/res/*.html format to the current soyjak.party/*/thread/*.html format.

Very niche these days since the formatting change was made mid Kuz-era but it's useful when using 4chan-x on the sharty as it's thread watcher serves /res/ URLs.

Expand to view the script

// ==UserScript==
// @name        soyjak.party - Fix /res/ links
// @namespace   caca
// @match       https://soyjak.party/*/res/*.html
// @grant       none
// @version     0.1
// @author      newGOD
// @description Redirect old /res/ links to the new /thread/ link format
// ==/UserScript==
location = location.href.replace("res", "thread")

Link Lock Shortener

Makes Link locks shorter

const links = Array.from(document.getElementsByTagName('a'));

links.forEach(elem => {

  if (elem.href && elem.href.startsWith('https://soyjak.party/link-lock/#')) {

   elem.href = elem.href.replace('https://soyjak.party/link-lock/#', 'https://soyjak.party/link-lock/decrypt/#');

   elem.innerHTML = '<span style="color: limegreen;">Locked Link (click to decrypt)</span>';

  }

})

Party Pal

https://github.com/ShartyThemes/party-pal

"Party Pal was an assistant that helped and datamined you (literally) on the sharty that appeared for 2024 April Fools."

Post Filters

(NOTE: THIS FEATURE HAS BEEN ADDED ONTO THE SITE)

Allows you to filter posts based on comments, subject, name, and tripcode To access filters click on options button.

https://files.catbox.moe/t18nln.txt

Change Banner on Click

(NOTE: THIS FEATURE HAS BEEN ADDED ONTO THE SITE)

Makes the banner image change when clicked, useful for quickly cycling through them to find a certain one.

document.querySelector('.board_image').addEventListener('click', (e) => { e.target.src=''; e.target.src = '/b.php?' + Math.random()});

Disable Infinite Scroll

(NOTE: THIS FEATURE HAS BEEN ADDED ONTO THE SITE)

Make ARYANDev mad with this!

Expand to view the script

$(window).off('scroll');$(window).off('hashchange');

User JS (on the 'iki)

To install these scripts, go here and just add the code on an empty line.


Twinkle

mw.loader.load("https://dev.miraheze.org/wiki/MediaWiki:Twinkle.js?action=raw&ctype=text/javascript");

Twinkle is a tool that helps fight vandalism. For more info, view the wikipedia page documenting it here.

MarkBlocked

mw.loader.load("https://dev.fandom.com/wiki/MediaWiki:MarkBlocked.js?action=raw&ctype=text/javascript");

MarkBlocked is a simple script that adds a strikethrough on links to banned users' names.

CSS Scripts

Built into soyjak.party, a theme featuring a gay furry fox, Polish internet's enclave on all imageboards using vichan.[1]

In addition to JS Scripts, Soyjak.party also offers the option to customize the look of the site through the use of CSS.

To add a CSS Script you can head to Options->User CSS and paste it in the text box.

Themes

The site inherits many built-in themes from Vichan. They can be found at

Some themes are unlisted but can be added by name like this: @import "https://soyjak.party/stylesheets/rugby.css";

Underwater theme

Adds marine life to your browsing experience

The underwater theme in use

firstly, add this to your User CSS

Expand to view the script

/**
 * miku.css
 * For AwsumChan by Circlepuller
 */
body {
background: #D2FFEE url('img/fade-miku.png') top repeat-x;
}

a:link, a:visited {
text-decoration: none;
color: #00637B;
}

a:link:hover, a:visited:hover {
color: #DD0000;
}

a.post_no {
color: #000033;
}

.intro a.email span.name {
color: #0093AB;
}

.intro a.email:hover span.name {
color: #DD0000;
}

h2, div.title, h1 {
color: #800000;
}

form table tr th {
background: #95D2D3;
}

div.banner {
background-color: #E04000;
}

div.post.op hr {
border-color: #B7C9D5;
}

.intro span.subject {
color: #117743;
font-weight: 800;
}

.intro span.name {
color: #117743;
font-weight: 800;
}

div.post.reply.highlighted {
background: #a9d8ff;
}

div.post.reply {
background: #B6DDDE;
border-color: #8FCCCD;
}

div.ban {
border: 1px solid #0093AB;
}

div.ban h2 {
background: #B6DDDE;
color: #0093AB;
}

div.pages {
color: #8899AA;
background: #B6DDDE;
border-right: 1px solid #8FCCCD;
border-bottom: 1px solid #8FCCCD;
}

hr {
border-color: #B7D9C5;
}

div.boardlist {
color: #0093AB;
    background-color: rgba(65%, 85%, 95%, 0.2);
}

.desktop-style div.boardlist:nth-child(1) {
  text-shadow: #D2FFEE 1px 1px 1px, #D2FFEE -1px -1px 1px;
}
* {
   background-image: url('https://files.catbox.moe/hp03xs.png');
}

.soifish {
   background-image: url('https://files.catbox.moe/rxmvyr.png');
   position: fixed;
    pointer-events: none;
  -webkit-animation: moveX 30s linear 0s infinite alternate, moveY 30s linear 0s infinite alternate;
  -moz-animation: moveX 30s linear 0s infinite alternate, moveY 30s linear 0s infinite alternate;
  -o-animation: moveX 30s linear 0s infinite alternate, moveY 30s linear 0s infinite alternate;
  animation: moveX 30s linear 0s infinite alternate, moveY 30s linear 0s infinite alternate;
}

@-webkit-keyframes moveX {
  from { left: 0; } to { left: 100%; }
}
@-moz-keyframes moveX {
  from { left: 0; } to { left: 100%; }
}
@-o-keyframes moveX {
  from { left: 0; } to { left: 100%; }
}
@keyframes moveX {
  from { left: 0; } to { left: 100%; }
}

@-webkit-keyframes moveY {
  from { top: 0; } to { top: 100%; }
}
@-moz-keyframes moveY {
  from { top: 0; } to { top: 100%; }
}
@-o-keyframes moveY {
  from { top: 0; } to { top: 100%; }
}
@keyframes moveY {
  from { top: 0; } to { top: 100%; }
}



.post.reply .body a:hover:after {
    content: url(https://soyjak.download/f.php?h=0lnyi5TW&p=1);
    display: block;
    position: absolute;
    left: 20px;
    top: -255px;
    pointer-events: none;
    z-index: 999;
}

.post.reply .body a:hover {
    position: relative;
}

body:after {
    content: url(https://soyjak.download/f.php?h=3EFSgyRY&p=1);
    display: block;
    position: fixed;
    bottom: 0px;
    right: 0px;
    pointer-events: none;

.desktop-style div.boardlist:nth-child(1):hover, .desktop-style div.boardlist:nth-child(1).cb-menu {
  background-color: rgba(70%, 95%, 100%, 0.45);
}

Then add this to your User JS or Tampermonkey

// ==UserScript==
// @name         JS for Ocean Theme
// @namespace    datamining
// @version      0.1
// @description  Glub Glub Glub Glub
// @author       Glub
// @match        https://soyjak.party/*
// @icon         https://soyjak.party/static/favicon.png
// @grant        none
// ==/UserScript==
var soislug = document.createElement("img");
soislug.setAttribute('src', 'https://files.catbox.moe/vpoeyt.png');
soislug.setAttribute('class', 'soislug');
document.getElementsByClassName("8chan")[0].appendChild(soislug);
var soifish = document.createElement("img");
soifish.setAttribute('src', 'https://files.catbox.moe/rxmvyr.png');
soifish.setAttribute('class', 'soifish');
document.getElementsByClassName("8chan")[0].appendChild(soifish);

Soot theme

Soot color scheme (grey and yellow) theme, this css should be used with dark style.

Expand to view the script

/*soot theme*/

.name {
    color: #FDD73A !important;
}

body {
    background: black url(https://i.imgur.com/FeQmhfL.png) right bottom no-repeat fixed;
}

div.post.reply {
    background-color: #646464 !important;
    color: black;
    border-radius:0;
}

div#post-moderation-fields , div#style-select {
    padding:4px;
    background-color:rgba(0,0,0,28);
}

span.heading {
    color: #FF565C !important;
}

.remove-btn {
    color: rgba(255,255,255,128) !important;
}

hr {
    border-color:transparent;
}

Feral Theme

Expand to view the script

body { 
   background: #ffdbd2;
   background-image: url(https://file.garden/ZCftkBQZY2RSmYgu/feral.png);
    background-position: bottom right;
    background-repeat: no-repeat;
    background-attachment: fixed;}


div.post.reply {
  color: #000;
  background: #eaa7a7;
  border-right: 2px solid #d9bfb7;
  border-bottom: 2px solid #d9bfb7;
}

div.post.reply.highlighted {
     background: #ec6464;
}

.desktop-style div.boardlist:nth-child(1) {
      background: #d85656 
}

div.boardlist a {
    color: #fff;
}

div.pages {
   background: #d85656 
}

Calm Theme

Expand to view the script

body {
    background: #fafcff;
    background-image: url(https://file.garden/ZCftkBQZY2RSmYgu/sdjasd); 
    background-position: bottom right;
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-size: 200px;
    
}

div.post.reply {
    background:  #fafcff url('/stylesheets/img/fade-blue.png')     margin: 0.3em 6px;
    padding: 0.2em 0.3em 0.5em 0.6em;
    border-width: 1px;
    border-style: none solid solid none;
    border-radius: 0.7em;
    box-shadow: 0.1rem 0.2rem 0.1rem 0.02rem rgba(1,2,3,.5)
 margin-top 20px;
}

div.post.reply div.body {
  overflow-y: auto;
  max-height: 70vh;


}

.intro span.name {
  font-style: italic;
  color: rgb(129, 123, 204);
}

.post-image { 
    box-shadow: 0.1rem 0.2rem 0.1rem 0.03rem rgba(0,0,0,.2);
}

h1 {
    font-family: tahoma;
    letter-spacing: -2px;
    font-size: 20pt;
    margin: 0;
    text-shadow: 20px;

}

header div.subtitle, h1 {
    color: #9cc3ff;
    text-align: center;
    text-shadow: 20px;
    font-family: Arial, Helvetica, sans-serif;


}

span.heading {
    color: #9a2ea1;
    font-size: 11pt;
    font-weight: bold;
}

div.blotter {
    color: #9cc3ff;
    text-align: center;
}

Doll Theme

Expand to view the script

.name {
    color:#FB4598 !important;
    
} 


div.post.reply.highlighted {a
     background: #d17dcd;;
}


.desktop-style div.boardlist:nth-child(1) {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    margin-top: 0;
    z-index: 30;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .15);
    border-bottom: 1px solid;
    background-color: #c774ff;
    color: red
}




div.post.reply {
  color: #000;
   background: #e5a9db;
    border-right: 2px solid #d1a5d9;
    border-bottom: 2px solid #d1a5d9;
}
 

body {
    background: #fad7eb;
    background-image: url(https://file.garden/ZCftkBQZY2RSmYgu/doll.png);
    background-position: bottom right;
    background-repeat: no-repeat;
    background-attachment: fixed;
}
div.banner {
    background-color: #ff0034;

}
.name:before {
  content: 'Little '; }  
} 

Glow Theme

Expand to view the script

.post,
input,
textarea {
  border: 1px solid #040!important;
}

body {
  background-color: #000;
  color: #7f7!important;
  background-image: url("https://booru.soy/_images/125c6ba37329910a8f662c25f13b80e7/39652%20-%20SoyBooru.png");
  background-size: 200px;
  background-position: 100% 0;
  animation: 10s infinite anim;
}

.post {
  background: #020!important;
  color: #fff!important;
  box-shadow: 0 0 50px green;
}

.name,
a {
  color: #32cd32!important;
}

.post.highlighted {
  background: #030!important;
}

.name {
  position: relative;
}

.name:after {
  content: '## Fed';
  font-size: 14px;
  display: inline-block;
  color: #0f0;
  text-shadow: 0 0 8px #0f0;
  margin-left: .25em;
}

.boardlist {
  background: #040!important;
}

.quote,
h1,
h2,
h3,
h4,
h5 {
  color: #0f0!important;
}

@keyframes anim {
  0%, 100% {
    background-position: 100% 0;
  }
  50% {
    background-position: 100% -5%;
  }
}

body:after {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
  background-image: url("https://booru.soy/_images/bfa5349f1fe25f685db1ed8973a3d864/2158%20-%20SoyBooru.png");
  background-repeat: no-repeat;
  background-position: 100% 100%;
  background-size: 150px;
}

input,
textarea {
  background: #030;
  color: #0f0;
}

textarea {
  background: #020;
  color: #fff;
}

.banner {
  background-color: transparent!important;
  color: #7f7!important;
}

#options_div {
  background-color: #020;
}

.options_tab_icon.active {
  color: #7f7;
}

.file-hint {
  color: #fff!important;
}

form table tr th {
  background: #020;
}

.dropzone {
  color: #7f7;
}

.dragover {
  background: #040!important;
}

Lime Theme

Expand to view the script

/* my theme */

label:not(:has(span.capcode)) span.name {
  color: #20c414 !important;
}

form table tr th {
  background: linear-gradient(to bottom, #20c414 0%, #20c414 50%, #20c414 100%);
}

div.post {
  color: #/* my theme */

label:not(:has(span.capcode)) span.name {
  color: #20c414 !important;
}

form table tr th {
  background: linear-gradient(to bottom, #20c414 0%, #20c414 50%, #20c414 100%);
}

div.post {
  color: #5bb450;
  background: linear-gradient(to bottom, #20c414 0%, #20c414 10%, #20c414 25%, #20c414 37%, #20c414 50%, #20c414 51%, #20c414 83%, #20c414 100%);
  border-radius: 15px;
  border: 2px solid #000000;
  padding: 10px;
  color: #FFFFFF;
  box-shadow: 0 0 20px green;
  font-family: "Tahoma", "Tahoma", sans-serif;
  font-size: 15px;
}

div.banner {
  background-color: #20c414;
  font-size: 12pt;
  font-weight: bold;
  text-align: center;
  margin: 1em 0;
}

.intro span.subject {
  color: #20c414;
}

div.post.reply {
  color: #90ee8e;
  background: linear-gradient(to bottom, #90ee8e 50%, #90ee8e 100%);
  border-radius: 15px;
  border: 2.5px solid #000000;
  padding: 7px;
  color: #9EF;
  font-family: "Tahoma", "Tahoma", sans-serif;
  font-size: 12.5px;
}

header div.subtitle,
h1 {
  color: #000000;
  text-align: center;
}

body {
  background: url(https://files.catbox.moe/1yk9qb.gif) no-repeat center fixed;
  background-size: cover;
  background-attachment: fixed;
  background-repeat: no-repeat;
  font-family: Sans-serif;
  font-size: 14px;
  color: #ADD;
  margin: 4px;
  padding-left: 0px;
  padding-right: 4px;
}

.bl {
  text-decoration: none;
  color: #5bb450;
}

.box.middle {
  background: #20c414;
  color: #FFFFFF;
  border: 1px solid #000000;
  width: inherit;
}

.box.middle h2 {
  background: #20c414;
  color: #FFFFFF;
}

.pages.top {
  background-color: #37BEF4;
  color: #20c414 !important;
}

.name,
a {
  color: #FFF !important;
}

div.post.reply.highlighted {
  background: linear-gradient(to bottom, #20c414 0%, #20c414 50%, #20c414 51%, #20c414 100%);
}

.boardlist {
  background-color: #20c414 !important;
}

div.pages.top {
  background: #20c414;
}

div.pages {
  background: #20c414;
}

h1 {
  color: #20c414;
  -webkit-text-stroke-width: 0.5px;
  -webkit-text-stroke-color: black;
  width: fit-content;
  margin: auto;
}

div.dropzone-wrap {
  background: linear-gradient(to bottom, #20c414 0%, #20c414 50%, #20c414 51%, #20c414 100%);
}

div#news {
  background: linear-gradient(to bottom, #20c414 0%, #20c414 50%, #20c414 51%, #20c414 100%);
  border-radius: 25px;
}

div.blotter {
  width: fit-content;
  margin: auto;
}

div.mix {
  background: linear-gradient(to bottom, rgba(189, 243, 253, 0.75) 100%);
}

td#upload_selection {
  background: linear-gradient(to bottom, #90ee8e 50%, #90ee8e 100%);
}

div.boardlist {
  color: green;
  background-color: rgba(12%, 12%, 12%, 0.10);
}

/* options.js */
#options_div,
#alert_div {
  background: #20c414;
}

.options_tab_icon {
  color: #FFFFFF;
}

.options_tab_icon.active {
  color: #FFFFFF;
}

textarea {
  border: 2px solid #066BC1 !important;
}

textarea,
input {
  background-color: #aaf0c9;
  color: #FFFFFF;
}

.quote {
  color: #FFFFFF !important;
}

h1,
h2,
h3,
h4,
h5 {
  color: #FFFFFF !important;
}

span.omitted {
  display: block;
  margin-top: 1em;
  color: #20c414;
}
;
  background: linear-gradient(to bottom, #20c414 0%, #20c414 10%, #20c414 25%, #20c414 37%, #20c414 50%, #20c414 51%, #20c414 83%, #20c414 100%);
  border-radius: 15px;
  border: 2px solid #000000;
  padding: 10px;
  color: #FFFFFF;
  box-shadow: 0 0 20px green;
  font-family: "Tahoma", "Tahoma", sans-serif;
  font-size: 15px;
}

div.banner {
  background-color: #20c414;
  font-size: 12pt;
  font-weight: bold;
  text-align: center;
  margin: 1em 0;
}

.intro span.subject {
  color: #20c414;
}

div.post.reply {
  color: #000000;
  background: linear-gradient(to bottom, #90ee8e 50%, #90ee8e 100%);
  border-radius: 15px;
  border: 2.5px solid #000000;
  padding: 7px;
  color: #FFFFFF;
  font-family: "Tahoma", "Tahoma", sans-serif;
  font-size: 12.5px;
}

header div.subtitle,
h1 {
  color: #000000;
  text-align: center;
}

body {
  background: url(https://files.catbox.moe/1yk9qb.gif) no-repeat center fixed;
  background-size: cover;
  background-attachment: fixed;
  background-repeat: no-repeat;
  font-family: Sans-serif;
  font-size: 14px;
  color: #ADD;
  margin: 4px;
  padding-left: 0px;
  padding-right: 4px;
}

.bl {
  text-decoration: none;
  color: #5bb450;
}

.box.middle {
  background: #20c414;
  color: #FFFFFF;
  border: 1px solid #000000;
  width: inherit;
}

.box.middle h2 {
  background: #20c414;
  color: #FFFFFF;
}

.pages.top {
  background-color: #37BEF4;
  color: #20c414 !important;
}

.name,
a {
  color: #FFF !important;
}

div.post.reply.highlighted {
  background: linear-gradient(to bottom, #20c414 0%, #20c414 50%, #20c414 51%, #20c414 100%);
}

.boardlist {
  background-color: #20c414 !important;
}

div.pages.top {
  background: #20c414;
}

div.pages {
  background: #20c414;
}

h1 {
  color: #20c414;
  -webkit-text-stroke-width: 0.5px;
  -webkit-text-stroke-color: black;
  width: fit-content;
  margin: auto;
}

div.dropzone-wrap {
  background: linear-gradient(to bottom, #20c414 0%, #20c414 50%, #20c414 51%, #20c414 100%);
}

div#news {
  background: linear-gradient(to bottom, #20c414 0%, #20c414 50%, #20c414 51%, #20c414 100%);
  border-radius: 25px;
}

div.blotter {
  width: fit-content;
  margin: auto;
}

div.mix {
  background: linear-gradient(to bottom, rgba(189, 243, 253, 0.75) 100%);
}

td#upload_selection {
  background: linear-gradient(to bottom, #90ee8e 50%, #90ee8e 100%);
}

div.boardlist {
  color: green;
  background-color: rgba(12%, 12%, 12%, 0.10);
}

/* options.js */
#options_div,
#alert_div {
  background: #20c414;
}

.options_tab_icon {
  color: #FFFFFF;
}

.options_tab_icon.active {
  color: #FFFFFF;
}

textarea {
  border: 2px solid #066BC1 !important;
}

textarea,
input {
  background-color: #aaf0c9;
  color: #FFFFFF;
}

.quote {
  color: #FFFFFF !important;
}

h1,
h2,
h3,
h4,
h5 {
  color: #FFFFFF !important;
}

span.omitted {
  display: block;
  margin-top: 1em;
  color: #20c414;
}

Pear Theme

Expand to view the script

/*Pear theme*/

body {
background: #f4f1d0 url(https://file.garden/ZCftkBQZY2RSmYgu/transpear) right bottom no-repeat fixed;
}

div.post.reply {
background-color: #dee88f !important;
padding: 0.2em 0.3em 0.5em 0.6em;
border-width: 2px;
border-style: none solid solid none;
border-radius: 0.7em;
}

div#post-moderation-fields , div#style-select {
padding:4px;

}

span.heading {
color: #52a521 !important;
}

.desktop-style div.boardlist:nth-child(1) {
background: #f2eda6;
}

div.post.reply div.body a {
color: #62b532;
}

h1 {
color: #4a9d1b;
}

div.blotter {
color: green }

div.pages.top {
display: none;
}

div.pages {
background: #c2efb9;
}

Soyjak Theme

Expand to view the script

.intro span.name {
  color: #000000;
  font-weight: bold;
}

.desktop-style div.boardlist:nth-child(1) {
  box-shadow: 0 0px 0px;
  border-bottom: 0px solid;
  background: 0;
}

h1 {
color: #000000;
text-align: center;
}

div.blotter {
  color: #000000;
  font-weight: bold;
  text-align: center;
}

form table tr th {
  background: #fafafa;
}

div.post.reply.highlighted {a
     background: #fffff;
}

div.post.reply div.body {
  overflow-y: auto;
  max-height: 50vh;
}

div.post.reply {
  color: #000000;
   background: #fafafa;
    border-right: 2px solid #c9c9c9;
    border-bottom: 2px solid #c9c9c9;
}
 

body {
background-image: none;
background: #ffffff url('https://i.ibb.co/Xtb2fXF/fade.png') repeat-x 50% 0%;
}

div.banner {
  background: 0;
  color: #000000;
  font-size: 12pt;
  font-weight: bold;
  text-align: center;
  margin: 1em 0;
}

div.banner  a {
  color: #000000;
}

div.post.reply.highlighted {
  background: #efefef;
}

hr {
    border: none;
        border-top-color: currentcolor;
        border-top-style: none;
        border-top-width: medium;
    border-top: 1px solid #000000;
    height: 0;
    clear: left;
}

div.pages {
  background: 0;
  border: 0px solid;
}

#options_div, #alert_div {
  background-color: #ffffff;

}

}

Bernd Theme

Light Version

Expand to view the script

/*BACKGROUND BACKGROUND BACKGROUND*/
body {
    background-position: bottom right;
    background-position-x: right;
    background-position-y: bottom;
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-color: rgba(0, 0, 0, 0);
    background-image: url('https://files.catbox.moe/uyguf8.png');
    background-size: cover;
    color: #000000;
    font-family: arial, helvetica, sans-serif;
    font-size: 10pt;
    margin: 0 4px;
    padding-left: 4px;
    padding-right: 4px;
}

/*BANNER BANNER BANNER BANNER BANNER*/
img.banner, img.board_image {
    display: block;
    border: 1px solid #efefef;
    box-shadow: 2px 2px 5px rgba(0,0,0,1);
    margin: 12px auto 0 auto;
}

div.banner {
    background-color: rgba(0,0,0,0);
    color: #fff;
    font-size: 12pt;
    font-weight: bold;
    text-align: center;
    margin: 1em 0;
}

/*NNNNEEEEWWWWSSSS*/
element.style {
    margin: auto;
    background-size: cover;
    border: 1px solid #000000;
    width: 75%;
    padding: 5px;
    box-shadow: 0 0 5px #ffffff;
}

/*POST POST POST POST POST*/
textarea, input {
    background-color: #eeeeee;
    box-shadow: inset 5px 5px 10px rgba(0,0,0,0.3);
    border-color: #000000;
    color: #000;
    border-radius: 3px;
}

form table tr th {
    background: linear-gradient(90deg, rgba(0,0,0,0) 99.5%, rgba(0,0,0,0.2) 100%), linear-gradient(0deg, rgba(223,223,223,1) 80%, rgba(239,239,239,1) 100%);
    box-shadow: 2px 2px 10px rgba(0,0,0,0.5), inset 1px 1px rgba(56,68,77,1), inset -1px -1px black;
}

/*POST REPLIES POST REPLIES POST REPLIES*/
div.post.reply {
    background: linear-gradient(90deg, rgba(0,0,0,0) 99.5%, rgba(0,0,0,0.2) 100%), linear-gradient(0deg, rgba(239,239,239,0.5) 80%, rgba(242,243,247,1) 100%);
    backdrop-filter: blur(5px);
    box-shadow: 2px 2px 10px rgba(0,0,0,0.5), inset 1px 1px #efefef, inset -1px -1px #dddddd;
    margin: 0.2em 4px;
    padding: 0.2em 0.3em 0.5em 0.6em;
    border-width: 0px;
    border: 0px solid #efefef;
    border-radius: 3px;
    display: inline-block;
    max-width: 94% !important;
}

div.post.reply.hidden.post-hover {
    background: linear-gradient(90deg, rgba(0,0,0,0) 99.5%, rgba(0,0,0,0.2) 100%), linear-gradient(0deg, rgba(239,239,239,0.5) 80%, rgba(242,243,247,1) 100%);
    backdrop-filter: blur(5px);
    box-shadow: 2px 2px 10px rgba(0,0,0,0.5), inset 1px 1px #efefef, inset -1px -1px #dddddd;
    margin: 0.2em 4px;
    padding: 0.2em 0.3em 0.5em 0.6em;
    border-width: 0px;
    border: 0px solid #efefef;
    border-radius: 3px;
    display: inline-block;
    max-width: 94% !important;
}

div.post.reply.highlighted {
    background: linear-gradient(90deg, rgba(0,0,0,0) 99.5%, rgba(0,0,0,0.2) 100%), linear-gradient(0deg, rgba(238,218,203,1) 80%, rgba(239,239,239,1) 100%);
}

/*POST IMAGES POST IMAGES POST IMAGES*/
.post-image {
    display: block;
    float: left;
    margin: 5px 20px 10px 20px;
    border: none;
    background: linear-gradient(45deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 25% , rgba(255,255,255,0.0) 52%, rgba(255,255,255,0.1) 80%, rgba(255,255,255,0.2));
    box-shadow: 2px 2px 10px rgba(0,0,0,0.5), -1px -1px rgba(223,223,223,1), 1px 1px white;
    transition: transform .2s;
}

.post-image:hover{
    transform: scale(1.05);
}

element.style {
    padding-left: 15px;
    display: block;
    position: static;
    box-shadow: 2px 2px 10px rgba(0,0,0,0.5), -1px -1px rgba(56,68,77,1), 1px 1px black;
}

/*HIGHLIGHTS HIGHLIGHTS HIGHLIGHTS*/
a, a:visited {
    text-decoration: none;
    color: #FF6527;
}

/*GREENTEXT GREENTEXT GREENTEXT*/
span.quote {
    color: #00FF00;
}

/*NAME NAME NAME NAME W/ SAGE SAGE SAGE SAGE*/
.intro span.name {
    color: #000000;
    font-weight: bold;
    --blur: 5;
    transform: scale(calc(1 / var(--blur)), 10);
}

.intro a.email span.name {
    color: #007bff;
    text-shadow: 0 0 2px #007bff;
}

/*CAPCODE CAPCODE CAPCODE CAPCODE*/
.intro span.capcode, p.intro a.capcode, p.intro a.nametag {
    margin-left: 0;
    font-weight: bold;
}

/*SUBJECT SUBJECT SUBJECT*/
.intro span.subject {
    color: #0000FF;
    font-weight: bold;
    font-size: 12pt;
}

/*SELECTED PAGE SELECTED PAGE SELECTED PAGE*/
div.pages a.selected {
    color: black;
    font-weight: bolder;
}

/*ANNOYING LINE THAT MAKES THE THEME LOOK CHEAP*/
hr {
    border: none;
    border-top: 0px solid #15202b;
    height: 0;
    clear: left;
}

/*SCROLLBAR SCROLLBAR SCROLLBAR SCROLLBAR*/
/* width */
::-webkit-scrollbar {
  width: 20px;
}

/* Track */
::-webkit-scrollbar-track {
  background: rgba(223,223,223,1);
  box-shadow: inset 0 0 10px rgba(0,0,0,0.5); 
  border-radius: 1px;
}
 
/* Handle */
::-webkit-scrollbar-thumb {
  background: linear-gradient(90deg, rgba(239,239,239,1) 0%, rgba(242,243,247,1) 100%);
  box-shadow: inset 1px 1px #dddddd, inset -1px -1px #bbbbbb;
  border-radius: 1px;
}

/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(90deg, rgba(200,200,200,1) 0%, rgba(210,210,210,1) 100%);
}

/* Buttons */
::-webkit-scrollbar-button:single-button {
  background-color: linear-gradient(90deg, rgba(37,50,62,1) 0%, rgba(21,32,43,1) 100%);
  display: block;
  border-style: solid;
  height: 15px;
  width: 16px;
}
/* Up */
::-webkit-scrollbar-button:single-button:vertical:decrement {
  border-width: 0 0 0 0;
  border-color: transparent transparent #555555 transparent;
}

::-webkit-scrollbar-button:single-button:vertical:decrement:hover {
  border-color: transparent transparent #777777 transparent;
}
/* Down */
::-webkit-scrollbar-button:single-button:vertical:increment {
  border-width: 0 0 0 0;
  border-color: #555555 transparent transparent transparent;
}

::-webkit-scrollbar-button:vertical:single-button:increment:hover {
  border-color: #777777 transparent transparent transparent;
}

Dark Version

Expand to view the script

/*BACKGROUND BACKGROUND BACKGROUND*/
body {
    background-position: bottom right;
    background-position-x: right;
    background-position-y: bottom;
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-image: url('https://files.catbox.moe/ppts0k.png');
    background-size: cover;
    color: #cccccb;
    font-family: arial, helvetica, sans-serif;
    font-size: 10pt;
    margin: 0 4px;
    padding-left: 4px;
    padding-right: 4px;
}

/*BANNER BANNER BANNER BANNER BANNER*/
img.banner, img.board_image {
    display: block;
    border: 1px solid #a9a9a9;
    box-shadow: 2px 2px 5px rgba(0,0,0,1);
    margin: 12px auto 0 auto;
}

div.banner {
    background-color: rgba(0,0,0,0);
    color: #fff;
    font-size: 12pt;
    font-weight: bold;
    text-align: center;
    margin: 1em 0;
}

/*NNNNEEEEWWWWSSSS*/
element.style {
    margin: auto;
    background-size: cover;
    border: 1px solid #B7C5D9;
    width: 75%;
    padding: 5px;
    box-shadow: 0 0 5px #ffffff;
}

/*POST POST POST POST POST*/
textarea, input {
    background-color: #192734;
    box-shadow: inset 5px 5px 20px rgba(0,0,0,0.5);
    border-color: #38444d;
    color: #fff;
    border-radius: 3px;
}

form table tr th {
    background: linear-gradient(90deg, rgba(0,0,0,0) 99.5%, rgba(0,0,0,0.2) 100%), linear-gradient(0deg, rgba(25,39,52,1) 80%, rgba(37,50,62,1) 100%);
    box-shadow: 2px 2px 10px rgba(0,0,0,0.5), inset 1px 1px rgba(56,68,77,1), inset -1px -1px black;
}

/*POST REPLIES POST REPLIES POST REPLIES*/
div.post.reply {
    background: linear-gradient(90deg, rgba(0,0,0,0) 99.5%, rgba(0,0,0,0.2) 100%), linear-gradient(0deg, rgba(25,39,52,0.5) 80%, rgba(37,50,62,1) 100%);
    backdrop-filter: blur(5px);
    box-shadow: 2px 2px 10px rgba(0,0,0,0.5), inset 1px 1px rgba(56,68,77,1), inset -1px -1px black;
    margin: 0.2em 4px;
    padding: 0.2em 0.3em 0.5em 0.6em;
    border-width: 0px;
    border: 0px solid #25323e;
    border-radius: 1px;
    display: inline-block;
    max-width: 94% !important;
}

div.post.reply.hidden.post-hover {
    background: linear-gradient(90deg, rgba(0,0,0,0) 99.5%, rgba(0,0,0,0.2) 100%), linear-gradient(0deg, rgba(25,39,52,0.5) 80%, rgba(37,50,62,1) 100%);
    backdrop-filter: blur(5px);
    box-shadow: 2px 2px 10px rgba(0,0,0,0.5), inset 1px 1px rgba(56,68,77,1), inset -1px -1px black;
    margin: 0.2em 4px;
    padding: 0.2em 0.3em 0.5em 0.6em;
    border-width: 0px;
    border: 0px solid #25323e;
    border-radius: 3px;
    display: inline-block;
    max-width: 94% !important;
}

div.post.reply.highlighted {
    background: linear-gradient(90deg, rgba(0,0,0,0) 99.5%, rgba(0,0,0,0.2) 100%), linear-gradient(0deg, rgba(19,29,40,1) 80%, rgba(37,50,62,1) 100%);
}

/*POST IMAGES POST IMAGES POST IMAGES*/
.post-image {
    display: block;
    float: left;
}

element.style {
    padding-left: 15px;
    display: block;
    position: static;
    box-shadow: 2px 2px 10px rgba(0,0,0,0.5), -1px -1px rgba(56,68,77,1), 1px 1px black;
}

/*HIGHLIGHTS HIGHLIGHTS HIGHLIGHTS*/
a, a:visited {
    text-decoration: none;
    color: #FF6527;
}

/*GREENTEXT GREENTEXT GREENTEXT*/
span.quote {
    color: #00FF00;
}

/*NAME NAME NAME NAME W/ SAGE SAGE SAGE SAGE*/
.intro span.name {
    color: #ffffff;
    font-weight: bold;
    --blur: 5;
    transform: scale(calc(1 / var(--blur)), 10);
}

.intro a.email span.name {
    color: #007bff;
    text-shadow: 0 0 2px #007bff;
}

/*CAPCODE CAPCODE CAPCODE CAPCODE*/
.intro span.capcode, p.intro a.capcode, p.intro a.nametag {
    margin-left: 0;
    font-weight: bold;
}

/*SUBJECT SUBJECT SUBJECT*/
.intro span.subject {
    color: #0000FF;
    font-weight: bold;
    font-size: 12pt;
}

/*SELECTED PAGE SELECTED PAGE SELECTED PAGE*/
div.pages a.selected {
    color: white;
    font-weight: bolder;
}

/*ANNOYING LINE THAT MAKES THE THEME LOOK CHEAP*/
hr {
    border: none;
    border-top: 0px solid #15202b;
    height: 0;
    clear: left;
}

/*BOARD LIST BOARD LIST BOARD LIST*/

div.boardlist{
  color: #000;
}

.desktop-style div.boardlist:nth-child(1) {
  background: linear-gradient(90deg, rgba(0,0,0,0) 99.5%, rgba(0,0,0,0.2) 100%), linear-gradient(0deg, rgba(25,39,52,0.5) 80%, rgba(37,50,62,1) 100%);
  backdrop-filter: blur(5px);
}

/*PAGES PAGES PAGES PAGES PAGES*/
div.pages {
  color: #ff6600;
  background: linear-gradient(90deg, rgba(0,0,0,0) 99.5%, rgba(0,0,0,0.2) 100%), linear-gradient(0deg, rgba(25,39,52,0.5) 80%, rgba(37,50,62,1) 100%);
  backdrop-filter: blur(5px);
  box-shadow: 2px 2px 10px rgba(0,0,0,0.5), inset 1px 1px rgba(56,68,77,1), inset -1px -1px black;
  display: inline-block;
  padding: 8px;
  margin: 8px 0 4px 0;
  border-right: 1px solid #15202b;
  border-bottom: 1px solid #15202b;
}

/*SCROLLBAR SCROLLBAR SCROLLBAR SCROLLBAR*/
/* width */
::-webkit-scrollbar {
  width: 20px;
}

/* Track */
::-webkit-scrollbar-track {
  background: rgba(21,32,43,1);
  box-shadow: inset 0 0 10px rgba(0,0,0,0.5); 
  border-radius: 1px;
}
 
/* Handle */
::-webkit-scrollbar-thumb {
  background: linear-gradient(90deg, rgba(37,50,62,1) 0%, rgba(21,32,43,1) 100%);
  box-shadow: inset 1px 1px rgba(56,68,77,1), inset -1px -1px black;
  border-radius: 1px;
}

/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(90deg, rgba(47,60,72,1) 0%, rgba(31,42,53,1) 100%);
}

/* Buttons */
::-webkit-scrollbar-button:single-button {
  background-color: linear-gradient(90deg, rgba(37,50,62,1) 0%, rgba(21,32,43,1) 100%);
  display: block;
  border-style: solid;
  height: 15px;
  width: 16px;
}
/* Up */
::-webkit-scrollbar-button:single-button:vertical:decrement {
  border-width: 0 0 0 0;
  border-color: transparent transparent #555555 transparent;
}

::-webkit-scrollbar-button:single-button:vertical:decrement:hover {
  border-color: transparent transparent #777777 transparent;
}
/* Down */
::-webkit-scrollbar-button:single-button:vertical:increment {
  border-width: 0 0 0 0;
  border-color: #555555 transparent transparent transparent;
}

::-webkit-scrollbar-button:vertical:single-button:increment:hover {
  border-color: #777777 transparent transparent transparent;
}

Quicksilver Theme

A popular user theme that's based off of Template:FailRaid and has a vintage design motif.

Expand to view the script

/* quicksilver theme
aka
newspaper theme  1.3


be the oldest fag
*/

body {
background: #fef9e0;
color: #114;
font-family: serif !important;
}
div.post.reply {
background: linear-gradient(#FFE,#EED);
color: #114;
border: 2px solid black; box-shadow: 1px 1px 5px;
}
div.thread {
background: linear-gradient(##fef9e0,#ddb,#fef9e0);
color: #050519
}
p.intro {
color: #114
}
div.pages, div.boardlist {
background:linear-gradient(#ccd,#eef,#ccd);
color:#733;
border-radius:5px;
box-shadow: 1px 3px 5px;
}

form table {
background:linear-gradient(#d0d0d7,#eef,#d0d0d7,#c0c0c7);
border-radius: 7px;
box-shadow: 2px 2px 7px;
}
form table tr th {
background:linear-gradient(#cce,#eef,#cce);
color:#733;
border-radius: 5px;
box-shadow: 1px 1px;
}
span.quote {
color: #678811;
}
div.banner {
background:#ccd;
color:#210;
border: 1px solid black;
}
div.post.reply.highlighted {
	background: #DDD;
}

Cobalt Theme

Dark version of the Quicksilver theme. It was made by request.

Expand to view the script

/* cobalt theme 1.0

be the oldest fag, in the dark

FOR USE WITH THE BUILT-IN DARK STYLE
*/

body {
background: linear-gradient(#122022,#111);
color: #e0d5db;
font-family: serif !important;
}
div.post.reply {
background: linear-gradient(#223,#232);
color: #9f9;
border: 2px solid black; box-shadow: 1px 1px 5px;
}
div.thread {
background: linear-gradient(##fef9e0,#ddb,#fef9e0);
color: #5f5
}
p.intro {
color: #5f5
}
div.pages, div.boardlist {
background:linear-gradient(#335,#565,#335);
color:#5f5;
border-radius:5px;
box-shadow: 1px 3px 5px;
}

form table {
background:linear-gradient(#404047,#565,#404047,#303b30);
color:#5f5;
border-radius: 7px;
box-shadow: 2px 2px 7px;
}
form table tr th {
background:linear-gradient(#335,#454,#335);
color:#5f5;
border-radius: 5px;
}
span.quote {
color: #678811;
}
div.banner {
background:#9a9;
color:#0;
border: 1px solid green;
}
div.post.reply.highlighted {
background: #565;
}

Silver Theme

A color-shifted variant of Quicksilver. It's like a Quicksilver B.

Expand to view the script

/* silver theme  1.0


formerly the newspaper theme
*/

body {
*/background: #fef0d0;*/
background:#ddd;
color: #114;
font-family: serif !important;
}
div.post.reply {
background: linear-gradient(#EEF,#DDE);
color: #114;
border: 2px solid black; box-shadow: 1px 1px 5px;
}
div.thread {
color: #050519
}
p.intro {
color: #114
}
div.pages, div.boardlist {
background:linear-gradient(#ccd,#eef,#ccd);
color:#733;
border-radius:5px;
box-shadow: 1px 3px 5px;
}

form table {
background:linear-gradient(#d0d0d7,#eef,#d0d0d7,#c0c0c7);
border-radius: 7px;
box-shadow: 2px 2px 7px;
}
form table tr th {
background:linear-gradient(#cce,#eef,#cce);
color:#733;
border-radius: 5px;
box-shadow: 1px 1px;
}
span.quote {
color: #678811;
}
div.banner {
background:#ccd;
color:#210;
border: 1px solid black;
}
div.post.reply.highlighted {
	background: #D0C0C9;
}

Fpe Theme

Expand to view the script


/*
/FPE/ Theme
*/

@font-face {
    font-family: 'DKRumDoodle';
    src: url(https://files.catbox.moe/cdedt7.ttf) ;
}

* {font-family: "Verdana", sans-serif;}
label:not(:has(span.capcode)) span.name {
color:#096629;
}

form table tr th {
  background: #E4E4E4; 
  border-radius: 1px;
  border: 1px solid #111111;
}
.pages.top {
  color: #111111!important;
}
a {
  color: #111111!important;
}
div.post.reply.highlighted {
background:rgba(188, 188, 188); 
}

hr {
border-top:1px solid #111
}

div.dropzone-wrap {
background:#E9E9E9; 
border: 1px solid #111;
}

.post-menu li{
background-color:#E9E9E9;
}
body.post {
background-color:#111;
}

div#news {
background:#E1E1E1;
border: 1px solid #111!important;
border-radius: 1px;
}

.intro span.subject {
color: #393142; 
}

td#upload_selection {
background:#E9E9E9; 
border: 1px solid #111;
padding-left:5px;
}

div.blotter {
width: fit-content;
margin: auto;
}

.desktop-style div.boardlist:nth-child(1) {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    margin-top: 0;
    z-index: 30;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
    border-bottom: 1px solid;
    background-color: #E4E4E4;
    color: #111111;
}


div.post {
  background:rgba(240,240,240);  
  border-radius: 2px;
  border: 2px solid #111111;
  padding: 5px;
  color: #111;
  box-shadow: 0 0 5px Black;
  font-family: "Verdana", sans-serif;
  font-size: 14px
}


div.post.reply {
  background: rgba(235,235,235,1); 
  border-radius: 2px;
  border: 2px solid #111111;
  padding: 10px;
  color: #111;
  box-shadow: 0 0 3px Black;
  font-family: "Verdana", sans-serif;
  font-size: 14px
}

div.boardlist {
background-color: #E4E4E4; 
color:#111;
border: 1px solid #111;
}

div.banner {
background-color: #E4E4E4;
border: 1px solid #111;
color: #111111;
font-size: 12pt;
font-weight: bold;
text-align: center;
margin: 1em 0;
}

div.pages {
background-color: #E4E4E4;
color: #111111;
font-size: 9pt;
border: 1px solid #111;
}
div.pages.top {
opacity:1;
}

.intro a.email span.name {
color:#757178;
text-decoration:underline;
}

header div.subtitle,
h1 {
	color:#AF0A0F;
	text-align: center;
        font-family: 'DKRumDoodle',sans-serif;
        font-weight: normal;
        letter-spacing: 0px!important;
}


div.post.op {
padding: 10px;
overflow: hidden;
}

div#Grid > *{
border:2px solid #393142;
background:#F0F0F0;
margin:1px;

}

body {
    background: url(https://files.catbox.moe/dtryhy.gif) bottom right fixed no-repeat, url(https://files.catbox.moe/dzv6qo.png);
}

/*
alternative wall texture
https://files.catbox.moe/vhhwso.png
*/

Ruby Theme

Expand to view the script

/*
Ruby Theme
*/

* {font-family: "Tahoma", sans-serif;}
label:not(:has(span.capcode)) span.name {
}

body {
  background:url("https://pomf2.lain.la/f/nya8v5e.png") 100% 100%  fixed no-repeat,
linear-gradient(#FFCDC9,#FFF8C9 ,#CCE7FF) fixed; 
}
.post-menu li {
background:rgba(225,225,221,0.5);
}
div.post.reply {
background:rgba(225,225,221,0.9);
border-color:rgba(139,156,159,0.5);
}

hr {
border-top:1px solid rgba(107,103,113,0.5);
}

div#news {
border:1px solid rgba(107,103,113,0.5)!important;
}

div.post.reply.highlighted {
background:rgba(218, 187, 191); 
}

div.banner {
background-color:rgba(209,64,69);
}

form table tr th {
background:rgba(141,141,162,0.5);
}

div.boardlist {
background:rgba(185,190,189,0.75)!important;
}

.desktop-style .sub {
color:rgba(117,113,120);
background:rgba(225,225,223,0.2);
}

div.pages.top {
background:rgba(185,190,189,0.5);
color:rgba(117,113,120);
padding-top:2px;
margin-top:15px;
padding-right:0px;
border:0px;
}

a[href^='mailto:sage']::after {
  content: ' CRUMPLED!';
}


*{
cursor: url('https://pomf2.lain.la/f/r66t1vgn.png'), auto;
}
a{
cursor: url('https://pomf2.lain.la/f/lvd510y5.png'), pointer;
}


/*https://files.catbox.moe/idwggg.png*/

Newspaper Theme

Modified variant of Quicksilver, which is probably the most popular.

Expand to view the script

* newspaper theme 1.3


be the oldest fag
*/

body {
background: #fef9e0;
color: #114;
font-family: serif !important;
}
div.post.reply {
background: linear-gradient(#FFE,#EED);
color: #114;
border: 2px solid black; box-shadow: 1px 1px 5px;
}
div.thread {
background: linear-gradient(##fef9e0,#ddb,#fef9e0);
color: #050519
}
p.intro {
color: #114
}
div.pages, div.boardlist {
background:linear-gradient(#ccd,#eef,#ccd);
color:#733;
border-radius:5px;
box-shadow: 1px 3px 5px;
}

form table {
background:linear-gradient(#d0d0d7,#eef,#d0d0d7,#c0c0c7);
border-radius: 7px;
box-shadow: 2px 2px 7px;
}
form table tr th {
background:linear-gradient(#cce,#eef,#cce);
color:#733;
border-radius: 5px;
box-shadow: 1px 1px;
}
span.quote {
color: #678811;
}
div.banner {
background:#ccd;
color:#210;
border: 1px solid black;
}
div.post.reply.highlighted {
background: #DDD;
}

April Fool's 2023 Theme

April Fool's 2023 theme. Makes the sharty look like Discord.

Expand to view the script

/* Fonts */
@font-face{font-family:'Discord';src:url('https://web.archive.org/web/20230401012547/https://s.kncdn.org/fonts/discord.otf') format('opentype');font-weight:normal;font-style:normal}

/* Body */
body{
	background-color:#313338;
	color:#fbfbfe;
	font-family:'Discord', Arial, sans-serif !important;
	font-size:11pt
}

/* Boardlist */
.boardlist{background-color:#313338 !important}

/* Posts */
div.post.reply{
	background-color:#313338;
	border:none
}

/* Post Numbers */
.name:before{content:"@"}
.name{
	background-color:#3d4270;
	color:#c8ccfa !important
}

/* File Info */
input[type=checkbox],p.fileinfo{display:none}

/* Text */
a,a:visited{color:#7289da}
time:after{content:", in #soy "}
div.post_no{
	background-color:#3d4270;
	font-family:Arial;
	font-size:10pt;
	color:#b9bdeb !important;
	font-weight:bold
}
div.banner{display:none}
input,textarea{
	background-color:#383a40;
	color:#ffffff;
	border:none !important;
	border-radius:5px
}

/* Top Bar */
div.pages.top{background:#313338 !important}

/* Headings */
.subject,h1,h2{color:#5563e9 !important}

/* Highlighted Post */
div.post.reply.highlighted{background:#2e3035}
div.post.reply div.body a{color:#7289da}

/* Seperator */
hr{border-top:1px solid #3f4147 !important}

/* Pages */
div.pages,span.heading,span.heading2{color:#5563e9}

/* Post Form */
form table tr th{background:#5563e9}

/* FileHint */
.dropzone .file-hint{
	color:rgb(114, 137, 218);
	cursor:pointer;
	position:relative;
	margin-bottom:5px;
	padding:10px 0;
	top:5px;
	transition:0.2s;
	border:2px dashed rgba(125, 125, 125, 0.4)
}

/* Post Images */
.post-image{border-radius:15px}

/* Post Numbers */
.post_no{font-family:Arial, Helvetica}

/* Blotter */
div.blotter{
	background-color: #2b2d31;
	border-radius: 25px;
	color: #b5bac1
}

Crazy Theme

(WARNING: THIS THEME VIOLENTLY SHAKES AROUND AND WILL POTENTIALLY CAUSE YOUR BROWSER TO CRASH)

Expand to view the script

html,p{color:#fa412a}*{transition:7.13s;font-family:'Comic Sans MS','Times New Roman',Times,serif;border:1px solid #000;background-color:#f0f;animation:.5s infinite shake,10s infinite colorchange}html{background:linear-gradient(to right,#4a412a,#fa412a,#f0f);text-shadow:2px 2px 2px #000}a{color:#1a412a;font-size:30px;text-decoration:underline;animation:.5s infinite shake,10s infinite colorchange,2s infinite alternate grow}@keyframes shake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes colorchange{0%,100%{color:#fa412a}25%,75%{color:#f0f}50%{color:#1a412a}}@keyframes grow{0%{transform:scale(1)}100%{transform:scale(1.2)}}a:hover{color:#f0f;font-size:48px;filter:blur(3px)}p{text-transform:uppercase}p:hover{color:#f0f;font-size:72px;transform:scale(1.2)}

Mobile Friendly Fix

This is a basic fix for mobile devices, that makes everything slightly smaller, especially images. It received some criticism by Mud for making the text smaller, but he otherwise considered it to be an improvement.[2]

It can also be combined with other themes, by pasting below them.


Expand to view the script

/*

Mobile Friendly Theme v1.1

_-More text, less clutter-_

(|;8^ )}}

*/
.post-image {
max-width: 150px !important;
height: auto !important;
overflow: hidden;
}

div.body {font-size: 10.5px;}

p.intro {font-size: 12px;}

span.omitted {font-size: 12px;}

span.heading {font-size: 11px;}

span.heading2 {font-size: 10.5px;}

div.file {font-size: 12px;}


/*Enjoy!*/

Anti - Mass Reply

Expand to view the script

.post.reply > .body {
    max-height: 20em;
    overflow-y: auto;
}

Cobson in the Corner

This code was briefly added to soyjak.party and is being left here for posterity.

Expand to view the script

body { background-image: url(https://soyjak.party/cob3.png); background-position: bottom right; background-repeat: no-repeat; background-attachment: fixed;   background-size: 100px; }

Classic UI

Returns Catalog back to previous look before 4cuck update

Expand to view the script

/* FIXES CATALOG */
.theme-catalog div.grid-size-large {
  min-width: 256px; max-width: 256px;
  max-height: 384px;
}

Remove the Subscribe and Voice Chat Buttons

Expand to view the script

#subscribe-button {
    display: none !important;
}

Remove the visible "SAGE!" message

Expand to view the script

a[href^='mailto:sage']::after {
  content: 'SAGE!';
  text-decoration: none;
  display: none;
}

Remove the visible "BUMP!" message

Expand to view the script

a[href^='mailto:bump']::after {
  content: 'BUMP!';
  text-decoration: none;
  display: none;
}

Remove the visible "SUPER SAGE!" message

Expand to view the script

a[href^='mailto:supersage']::after {
   content: ' SUPER SAGE!';
   color: red;
   text-decoration: none;
   display: none;
}

Adds Grid Style to the Catalog

Expand to view the script


.theme-catalog div.thread img {
  float: none!important;
  margin: auto;
  max-height: 150px;
  max-width: 200px;
  box-shadow: 0 0 4px rgba(0,0,0,0.55);
  border: 2px solid rgba(153,153,153,0);
}

.theme-catalog div.thread {
  display: inline-block;
  vertical-align: top;
  text-align: center;
  font-weight: normal;
  margin-top: 2px;
  margin-bottom: 2px;
  padding: 2px;
  height: 300px;
  width: 205px;
  overflow: hidden;
  position: relative;
  font-size: 11px;
  max-height: 300px;
  background: rgba(182,182,182,0.12);
  border: 2px solid rgba(111,111,111,0.34);
}

.theme-catalog div.thread strong {
  display: block;
}

.theme-catalog div.threads {
  text-align: center;
  margin-left: -20px;
}

.theme-catalog div.thread:hover {
  background: #D6DAF0;
  border-color: #B7C5D9;
}

.theme-catalog div.grid-size-vsmall img {
  max-height: 33%;
  max-width: 95%
}

.theme-catalog div.grid-size-vsmall {
  min-width:90px; max-width: 90px;
  max-height: 148px;
}

.theme-catalog div.grid-size-small img {
  max-height: 33%;
  max-width: 95%
}

.theme-catalog div.grid-size-small {
  min-width:140px; max-width: 140px;
  max-height: 192px;
}

.theme-catalog div.grid-size-large img {
  max-height: 40%;
  max-width: 95%
}

.theme-catalog div.grid-size-large {
  min-width: 256px; max-width: 256px;
  max-height: 384px;
}

.theme-catalog img.thread-image {
  height: auto;
  max-width: 100%;
}

@media (max-width: 420px) {
  .theme-catalog ul#Grid {
    padding-left: 18px;
  }

  .theme-catalog div.thread {
    width: auto;
    margin-left: 0;
    margin-right: 0;
  }

  .theme-catalog div.threads {
    overflow: hidden;
  }
}

Centered Board List

Centers the Board list

Expand to view the script

.desktop-style div.boardlist{
text-align: center;
}

No CSS

Disables CSS

PASTE SCRIPT IN USER JS

Expand to view the script

// REMOVE ALL <style> AND <link rel="stylesheet"> ELEMENTS //

document.querySelectorAll("style, link[rel='stylesheet']").forEach(el => el.remove());

// REMOVE INLINE STYLES FROM ELEMENTS //

document.querySelectorAll("[style]").forEach(el => el.removeAttribute("style"));

Christmas Hats

Expand to view the script

[data-board] > .files > :nth-child(1):not(.multifile) > a:before {
	content: url('https://files.catbox.moe/4ce2fx.gif');
	float: left;
	display: block;
	margin-right: -160px;
	position: relative;
	top: -120px;
	left: -30px;
	
}
[data-board] > .files > :nth-child(1).multifile > a:before {
	content: url('https://files.catbox.moe/4ce2fx.gif');
	float: left;
	display: block;
	margin-right: -160px;
	position: relative;
	top: -120px;
	left: -50px;
	
}

Windows 7 Theme

(NOTE: THIS THEME HAS BEEN ADDED ONTO THE SITE)

Expand to view the script

body {
    background: url(https://archive.org/download/Windows-wallcollection/1920x1200_%28Windows_7%29.jpg);
    background-attachment: fixed;
    text-shadow: 0px -2px 1px rgba(0, 0, 0, 0.25);
    color: #E6E6E6;
    font-family: monospace;
    font-size: 14px;
    margin: 0;
    margin: 0 4px;
    padding-left: 4px;
    padding-right: 4px;
}

div.post.reply {
    background: no-repeat center 10px, linear-gradient(hsla(0, 0%, 100%, .5), hsla(0, 0%, 100%, .3) 45%, rgba(0, 0, 0, .1) 50%, rgba(0, 0, 0, .1) 75%, hsla(0, 0%, 100%, .5));
    background-color: #4580c4;
    margin: 0.2em 4px;
    padding: 0.2em 0.3em 0.5em 0.6em;
    border-width: 1px;
    border-radius: 5px;
    border-style: solid;
    border-color: rgba(0, 0, 0, .7);
    box-shadow: inset 0 0 0 1px #fffa;
    display: inline-block;
    max-width: 94% !important;
}

a, a:visited {
    text-decoration: underline;
    color: white;
}

input[type="text"], input[type="password"], textarea {
    border: 1px solid #a9a9a9;
    box-shadow: inset 0px 2px 1px rgba(255, 255, 255, 0.3), inset 0px -2px 1px rgba(0, 0, 0, 0.4);
    filter: drop-shadow(0px 10px 15px rgba(0, 0, 0, 0.3));
    border-radius: 5px;
    text-indent: 0;
    text-shadow: none;
    text-transform: none;
    word-spacing: normal;
    max-width: 100%;
}

img.banner, img.board_image {
    display: block;
    border: 1px solid #a9a9a9;
    margin: 12px auto 0 auto;
    box-shadow: inset 0px 2px 1px rgba(255, 255, 255, 0.3), inset 0px -2px 1px rgba(0, 0, 0, 0.4);
    filter: drop-shadow(0px 10px 15px rgba(0, 0, 0, 0.3));
    border-radius: 15px;
}

.desktop-style div.boardlist:nth-child(1) {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    margin-top: 0;
    z-index: 30;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .15);
    border-bottom: 1px solid;
    background-color: #D6DAF0;
}

div.pages {
    display: inline-block;
    padding: 8px;
    margin: 8px 0 4px 0;
    border-color: rgba(0, 0, 0, .7);
    box-shadow: inset 0 0 0 1px #fffa;
    background-color: #7b9eab;
    border-bottom-left-radius: 5px;
    border-bottom-right-radius: 5px;
}

form table tr th {
    background: linear-gradient(180deg, rgba(94, 168, 191, 0.9) 0%, rgba(60, 112, 128, 0.9) 100%);
    box-shadow: 0px 10px 15px rgba(0, 0, 0, 0.3), inset 0px 2px 1px rgba(255, 255, 255, 0.3), inset 0px -2px 1px rgba(0, 0, 0, 0.4);
    border-radius: 5px;
}

.file:not(.multifile) .post-image {
    float: left;
    box-shadow: inset 0px 2px 1px rgba(255, 255, 255, 0.3), inset 0px -2px 1px rgba(0, 0, 0, 0.4);
    filter: drop-shadow(0px 10px 15px rgba(0, 0, 0, 0.3));
    border-radius: 10px;
}


.desktop-style div.boardlist:nth-child(1) {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    margin-top: 0;
    z-index: 30;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .15);
    border-bottom: 1px solid;
    background-color: #D6DAF0;
    border-color: rgba(0, 0, 0, .7);
    box-shadow: inset 0 0 0 1px #fffa;
    background-color: #7b9eab;
    border-bottom-left-radius: 5px;
    border-bottom-right-radius: 5px;
}


Citations