diff options
author | Linnnus <[email protected]> | 2024-07-06 22:34:40 +0200 |
---|---|---|
committer | Linnnus <[email protected]> | 2024-07-06 22:34:40 +0200 |
commit | dd989dbb656c8659a7fce54ca1714d3608e41557 (patch) | |
tree | 2cb7577b2d8a9054fb7cd796180fbcfe4487f6e4 /hosts/muhammed/home/iterm2 | |
parent | 62287fec47474be11fbc8638444639c0b56fc47e (diff) |
muhammed: Update iTerm2 theme switching script
The script didn't check the theme upon startup, which caused some issues
if the system-wide theme change happened while iTerm2 was closed.
This new version always updates the iTerm2 theme based on the system
theme upon startup.
Diffstat (limited to 'hosts/muhammed/home/iterm2')
-rw-r--r-- | hosts/muhammed/home/iterm2/auto_theme.py | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/hosts/muhammed/home/iterm2/auto_theme.py b/hosts/muhammed/home/iterm2/auto_theme.py index 17a254d..0970304 100644 --- a/hosts/muhammed/home/iterm2/auto_theme.py +++ b/hosts/muhammed/home/iterm2/auto_theme.py @@ -3,24 +3,29 @@ import asyncio import iterm2 +async def update(connection, theme): + # Themes have space-delimited attributes, one of which will be light or dark. + parts = theme.split(" ") + if "dark" in parts: + preset = await iterm2.ColorPreset.async_get(connection, "Dark Background") + else: + preset = await iterm2.ColorPreset.async_get(connection, "Light Background") + + # Update the list of all profiles and iterate over them. + profiles=await iterm2.PartialProfile.async_query(connection) + for partial in profiles: + # Fetch the full profile and then set the color preset in it. + profile = await partial.async_get_full_profile() + await profile.async_set_color_preset(preset) + async def main(connection): + app = await iterm2.async_get_app(connection) + await update(connection, await app.async_get_variable("effectiveTheme")) async with iterm2.VariableMonitor(connection, iterm2.VariableScopes.APP, "effectiveTheme", None) as mon: while True: # Block until theme changes theme = await mon.async_get() + await update(connection, theme) - # Themes have space-delimited attributes, one of which will be light or dark. - parts = theme.split(" ") - if "dark" in parts: - preset = await iterm2.ColorPreset.async_get(connection, "Dark Background") - else: - preset = await iterm2.ColorPreset.async_get(connection, "Light Background") - - # Update the list of all profiles and iterate over them. - profiles=await iterm2.PartialProfile.async_query(connection) - for partial in profiles: - # Fetch the full profile and then set the color preset in it. - profile = await partial.async_get_full_profile() - await profile.async_set_color_preset(preset) iterm2.run_forever(main) |