Dark Mode Theme Switch (for Safari on macOS and iOS 13)

This is an experimental component. Use at your own risk!

Repository:

https://github.com/pmusaraj/discourse-dark-mode

Installation instructions: How do I install a Theme or Theme Component?

What this does?

This component allows automatic switching to a dark theme when the browser is set to be in dark mode. At the time of writing this only works for authenticated users in Safari on macOS (Firefox is also expected to support this soon).

Individual users can opt-out of this behaviour through a checkbox in Preferences > Interface.

How it works?

If Safari is in dark mode, this component will reload Discourse with the dark theme enabled. If Safari is back to light mode, this component will reload with the default theme enabled.

It will also reload if Safari’s dark mode is toggled while user is on the site (as shown in video above).

(If you have more than two themes enabled, and the user has selected a theme other than default or dark, this component will do nothing, i.e. it will respect the user’s choice.)

Configuration

  • Make sure you have a dark theme installed, and that it is selectable by users
  • Add this component to both the default theme and the dark theme (very important, if you don’t add it to both themes, users won’t be able to switch back to the default theme)
  • In the component settings, enter the id of your dark theme in dark theme id

This component follows your Mac’s dark mode theme, users who would like this to automatically switch to dark mode at night might want to try f.lux.

20 Likes

Awesome, although flux is overkill just to toggle dark mode on the mac. Night Owl will do the same thing without interfering with anything else.

3 Likes

I just pushed a small update to this theme component to make it compatible with iOS 13 (which will ship with Dark Mode as well as an option to automatically enable it in the evenings).

8 Likes