Skip to content

Instantly share code, notes, and snippets.

@mswieboda
Created March 22, 2019 17:45
Show Gist options
  • Save mswieboda/d5898448301a74626b958598126529d5 to your computer and use it in GitHub Desktop.
Save mswieboda/d5898448301a74626b958598126529d5 to your computer and use it in GitHub Desktop.
Theming Slack (ver 3.3.8)
document.addEventListener("DOMContentLoaded", function() {
let webviews = document.querySelectorAll(".TeamView webview");
const cssPath = 'https://raw.githubusercontent.com/Nockiro/slack-black-theme/master/custom.css';
let cssPromise = fetch(cssPath).then(response => response.text());
let customCustomCSS = `
:root {
--primary: #ccc;
--text: #0f0;
--background: #000;
--background-elevated: #111;
}
`;
cssPromise.then(css => {
let s = document.createElement('style');
s.type = 'text/css';
s.innerHTML = css + customCustomCSS;
document.head.appendChild(s);
});
webviews.forEach(webview => {
webview.addEventListener('ipc-message', message => {
if (message.channel == 'didFinishLoading') {
cssPromise.then(css => {
let script = `
let s = document.createElement('style');
s.type = 'text/css';
s.id = 'slack-custom-css';
s.innerHTML = \`${css + customCustomCSS}\`;
document.head.appendChild(s);
`;
webview.executeJavaScript(script);
});
}
});
});
});
#!/usr/bin/env ruby
require 'active_support'
require 'active_support/core_ext'
require 'thor'
# Usage:
# ./slack-dark.rb
# ./slack-dark.rb [NEW_INDEX_FILE]
# ./slack-dark.rb revert_backup
#
# ruby slack-dark.rb # may work as an alternative, depending on permissions
class SlackDark < Thor
SLACK_ORIG_INDEX_DIR = '/Applications/Slack.app/Contents/Resources/app.asar.unpacked/src/static/'.freeze
SLACK_ORIG_INDEX = File.join(SLACK_ORIG_INDEX_DIR, 'index.js').freeze
SLACK_ORIG_INTEROP = File.join(SLACK_ORIG_INDEX_DIR, 'ssb-interop.js').freeze
SLACK_DEFAULT_OVERRIDE_INDEX = File.join('.', 'slack-append-custom-css.js').freeze
desc 'append [INDEX.js OVERRIDE LOCATION]', "appends custom css script to Slack's index.js and ssb-interop.js"
def append(file_to_append = SLACK_DEFAULT_OVERRIDE_INDEX)
system("cp #{SLACK_ORIG_INDEX} #{SLACK_ORIG_INDEX}.bak")
system("cp #{SLACK_ORIG_INTEROP} #{SLACK_ORIG_INTEROP}.bak")
puts "Backed up to index.js.bak and ssb-interop.js.bak"
system("echo `cat #{file_to_append}` >> #{SLACK_ORIG_INDEX}")
puts "Appended to index.js"
system("echo `cat #{file_to_append}` >> #{SLACK_ORIG_INTEROP}")
puts "Appended to ssb-interop.js"
puts "Done, relaunch Slack!"
end
default_task :append
desc 'revert_backup', "reverts any backed up index.js and ssb-interop.js"
def revert_backup
system("cp #{SLACK_ORIG_INDEX}.bak #{SLACK_ORIG_INDEX}")
system("cp #{SLACK_ORIG_INTEROP}.bak #{SLACK_ORIG_INTEROP}")
puts "Reverted backedup up index.js and ssb-interop.js"
end
end
SlackDark.start(ARGV)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment