How to have dark/light profile selected when opening a new iTerm.
The script
For the script to work you need to have two iTerm profiles, one named
Dark
and the other one Light
. Just go to Preferences
then Profiles
then Duplicate profile
.
I use fish
but you can easily adapt
that in your .bashrc
, .bash_profile
etc…
Here is what I have in my ~/.config/fish/config.fish
:
function setItermProfile
echo -ne "\033]50;SetProfile=$argv\a"
end
function sync_appearance
set -x MacOSThemeAutoSwitch \
(defaults read -g AppleInterfaceStyleSwitchesAutomatically 2>/dev/null)
test -z $MacOSThemeAutoSwitch; and set -x MacOSThemeAutoSwitch 0
set -x MacOSTheme (defaults read -g AppleInterfaceStyle 2>/dev/null)
test -z $MacOSTheme; and set -x MacOSTheme 'nil'
if test -n $ITERM_PROFILE # check if we are using iTerm2
switch $MacOSThemeAutoSwitch
case 1 # autoswitch on
switch $MacOSTheme
case 'nil'
setItermProfile Light
case '*'
setItermProfile Dark
end
case 0 # autoswitch off
switch $MacOSTheme
case 'Dark'
setItermProfile Dark
case 'Light'
setItermProfile Light
case 'nil'
setItermProfile Light
end
end
end
end
if status --is-login
if status --is-interactive
sync_appearance
end
end
If the appearance change, you can call sync_appearance
function in your shell to sync
with the OS dark/light appearance.