mykeels.com

Automating Slack’s Day/Night modes with Command-Line Scripts

A few days ago, I discovered this dev.to article, shared on Andela’s Slack’s #random channel, which gives you a dark mode on your Slack…

Automating Slack’s Day/Night modes with Command-Line Scripts

Once you slack, you never go back

A few days ago, I discovered this dev.to article, shared on Andela’s Slack’s #random channel, which gives you a dark mode on your Slack app for Mac.

This means that my slack, which used to look like this (day):

Whoopsie!

Now looks like this (dark):

Yaaay!

and sometimes like this (aubergine):

If you like these, there are a couple more variant looks you might be interested in, however in this article, we’ll be looking at automatically switching slack to night-mode in the evenings 🌘 and back to day-mode when the Sun is up in the mornings. ☀️

This is useful if you prefer not to strain your eyes when working on slack.

Switching to night mode is easy (kinda).

There’s a CSS file existing here, which you can make sure Slack adds to its document’s<head> when it's done loading, by appending:

to

/Applications/Slack.app/Contents/Resources/app.asar.unpacked/src/static/ssb-interop.js

on your Mac.

To return to day mode, you have to replace the original ssb-interop.js file, that does not load the night-mode stylesheet.

We’ll write shell commands to trigger these actions at the right time 😄. Excited?

Shell-Scripts to switch themes

https://github.com/mykeels/slack-theme-cli

To make things easy, I’ve written these shell-scripts to make switching themes easy. To quickly set up on your Mac, you can run the following in the terminal:

curl https://raw.githubusercontent.com/mykeels/slack-theme-cli/master/slack-theme -O && sh slack-theme install && . ~/.bash_profile

This will give you the slack-theme command you can run like:

slack-theme

to see the help info, and slack-theme night to switch to night-mode. Other commands are:

slack-theme day
slack-theme night
slack-theme night-mono
slack-theme aubergine
slack-theme aubergine-mono
slack-theme arc-dark
slack-theme midnight-blue
slack-theme midnight-blue-mono

Scheduling Tasks

For scheduling tasks in unix systems, we have the cron tool … We can schedule a task by running

crontab -e

and adding text in the format:

1 2 3 4 5 /full/path/to/script

Where

  1. represents Minutes (0 - 59)

  2. Hours (0 - 23)

  3. Days (1 - 31)

  4. Month (1 - 12)

  5. Day-of-the-week (1 - 7)

Schedule Night-Mode for 6pm (18:00) 🌘

With this, we can run crontab -e, and enter:

0 18 * * * /full/path/to/slack-night

If your default editor is vim, you might want to press i to begin INSERT mode, and ESC before:x followed by ENTER to save and exit. 😅

Be sure to replace /full/path/to/ with the actual full path to the folder where the slack-theme, slack-day and slack-night scripts are located. You can find the full path to slack-night by running which slack-night in your terminal.

Schedule Day-Mode for 8am (08:00) ☀️

You might want to revert to the day theme when it’s daytime, and you can do that with the crontab -e, followed by appending:

0 9 * * * /full/path/to/slack-day

to the previous entry.

What we’ve learned

  • That it’s possible to modify slack’s general look and feel

  • How to install and use the slack-theme tool

  • How to schedule shell tasks for a particular time with cron.

Happy Coding! 💃

Midnight-Blue Theme 😍

Related Articles

Tags