Skip to content

Instantly share code, notes, and snippets.

@smitt04
Created January 17, 2019 16:41
Show Gist options
  • Save smitt04/70b003c7f6b05461bc6f35a6e47f8860 to your computer and use it in GitHub Desktop.
Save smitt04/70b003c7f6b05461bc6f35a6e47f8860 to your computer and use it in GitHub Desktop.
Applies dark theme to slack (OneDark)
JS="
// First make sure the wrapper app is loaded
document.addEventListener('DOMContentLoaded', function() {
// Then get its webviews
let webviews = document.querySelectorAll('.TeamView webview');
// Fetch our CSS in parallel ahead of time
const cssPath =
'https://raw.githubusercontent.com/Nockiro/slack-black-theme/master/custom.css';
let cssPromise = fetch(cssPath).then((response) => response.text());
let customCustomCSS = \`
:root {
/* Modify these to change your theme colors: */
--primary: #61AFEF;
--text: #ABB2BF;
--background: #282C34;
--background-elevated: #3B4048;
}
\`;
// Insert a style tag into the wrapper view
cssPromise.then((css) => {
let s = document.createElement('style');
s.type = 'text/css';
s.innerHTML = css + customCustomCSS;
document.head.appendChild(s);
});
// Wait for each webview to load
webviews.forEach((webview) => {
webview.addEventListener('ipc-message', (message) => {
if (message.channel == 'didFinishLoading')
// Finally add the CSS into the webview
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);
});
});
});
});"
SLACK_PATH='/Applications/Slack.app/Contents/Resources/app.asar.unpacked/src/static/'
echo "$JS" >> ${SLACK_PATH}ssb-interop.js
@smitt04
Copy link
Author

smitt04 commented Jan 17, 2019

Need to run script as sudo to apply theme. Once run just restart slack.

Javascript comes from here with some fixes from #62

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment