Awesome
tmux-dark-notify - Make tmux's theme follow macOS dark/light mode
This tmux tpm plugin will change the tmux theme automatically when the system changes the light/dark mode. Configure a light and a dark theme and the plugin will take care of the rest!
For example I use a Solarized in all my programs that support it. For tmux I use seebi/tmux-colors-solarized which is locally cloned (in my dotfiles as a submodule). This tmux theme repo provides a light theme tmuxcolors-light.conf
and a dark theme tmuxcolors-dark.conf
. With this tmux plugin, I have configured so that when the system appearance mode changes, the corresponding tmux theme will be used.
Hats off to dark-notify which this plugin is built up on!
Setup
Requirements
- macOS - dark-notify is only for mac
- Bash
- Homebrew
- dark-notify -
$ brew install dark-notify
- tmux
- tpm - Tmux Plugin Manager
Setup steps
- Make sure all requirements above are installed and working already.
- Configure tmux-dark-notify in
tmux.conf
- To install the plugin, add a line
set -g @plugin 'erikw/tmux-dark-notify'
- Now you must configure the paths for the light/dark themes you want to use. I personally have seebi/tmux-colors-solarized installed as a TPM plugin. NOTE that in the tmux.conf any themes must be set up before tmux-dark-notify, otherwise they might override the theme set by this plugin. . Change the paths below to your themes.
set -g @dark-notify-theme-path-light '$HOME/.config/tmux/plugins/tmux-colors-solarized/tmuxcolors-light.conf' set -g @dark-notify-theme-path-dark '$HOME/.config/tmux/plugins/tmux-colors-solarized/tmuxcolors-dark.conf'
- To cover some corner cases e.g. if you use the plugin tmux-reset or another TPM plugin sets the theme itself, I recommend adding this explicit source of the theme as well as a fallback in case this plugin is not run in all scenarios. The
if-shell
condition is there because the symlink won't be there the very first time until tmux-dark-notify has run. It should be placed after TPM is initialized, because the ordering of plugin initialization is not guaranteed. Remove any othersource-file
for theme you have of course!run-shell '~/.config/tmux/plugins/tpm/tpm' # Or however you source tpm. if-shell "test -e ~/.local/state/tmux/tmux-dark-notify-theme.conf" \ "source-file ~/.local/state/tmux/tmux-dark-notify-theme.conf"
- Thus in summary, the relevant section of you
tmux.conf
could look like this (including the theme I use)[...] set -g @plugin 'seebi/tmux-colors-solarized' set -g @plugin 'erikw/tmux-dark-notify' set -g @dark-notify-theme-path-light '$HOME/.config/tmux/plugins/tmux-colors-solarized/tmuxcolors-light.conf' set -g @dark-notify-theme-path-dark '$HOME/.config/tmux/plugins/tmux-colors-solarized/tmuxcolors-dark.conf' [...] run-shell '~/.config/tmux/plugins/tpm/tpm' # Or however you source tpm. if-shell "test -e ~/.local/state/tmux/tmux-dark-notify-theme.conf" \ "source-file ~/.local/state/tmux/tmux-dark-notify-theme.conf"
- To install the plugin, add a line
- Install the plugin with
<prefix>I
, unless you changed tpm's keybindings. - Try toggle the system's appearance mode from System Settings and see that the tmux theme is changing
- To verify, you can
ls -l ~/.local/state/tmux/tmux-dark-notify-theme.conf
to see that it is linked to the light or dark theme you configured.
- To verify, you can
Tips on more light/dark mode configuration
- NeoVim: set up dark-notify to change our nvim theme as well!
- iTerm2: Use version >=3.5 (currently in beta) as it has support for automatically changing the whole terminal theme between light/dark when the system appearance mode changes. This is what I have in the demo GIF at the top of this file.
- Go to iTerm2 Preferences > Profiles > your profile > Colors (tab):
- Check the "Use different colors for light and dark mode"
- Under "Editing:", chose your light and dark colors (tip: usee the color presets button).
- Go to iTerm2 Preferences > Profiles > your profile > Colors (tab):
- Global keyboard shortcut: Create a global keyboard shortcut to toggle mode in macOS.
- Open Automator.app
- Create a new
Quick Action
. - Drag from the list to the left the "Change System Appearace" to the areaon the rnage, and set "Change Appearance" to "Toggle Light/Dark".
- Save it e.g. as
apperance_toggle
.
- Create a new
- Open System Settings > Keyboard > Keyboard shortcuts (button) > Services
- Find the
apperance_toggle
service we just created under the General category - Bind it to a shortcut e.g. CTRL+OPT+CMD+t (this shortcut was used when feature first appeared in a beta version of macOS).
- Find the
- Open Automator.app
More tmux plugins
I have another tmux plugin that might interest you:
- tmux-powerline - A tmux plugin giving you a hackable status bar consisting of dynamic & beautiful looking powerline segments, written purely in bash.