diff options
author | Linnnus <[email protected]> | 2024-04-29 08:54:22 +0200 |
---|---|---|
committer | Linnnus <[email protected]> | 2024-04-29 08:54:22 +0200 |
commit | 16bbc166528b674751c638a6e2210b8d1d2bfa26 (patch) | |
tree | cf898bedfbf69237a890f58dc8d60feaaf1de2d3 | |
parent | 4d1dded46c30434de31203c124327987dc45a7ad (diff) |
muhammed: Make iterm2/neovim respect system dark mode
-rw-r--r-- | home/neovim/init.vim | 2 | ||||
-rw-r--r-- | hosts/muhammed/home/iterm2/auto_theme.py | 26 | ||||
-rw-r--r-- | hosts/muhammed/home/iterm2/default.nix | 14 | ||||
-rw-r--r-- | modules/home-manager/iterm2/default.nix | 1 |
4 files changed, 32 insertions, 11 deletions
diff --git a/home/neovim/init.vim b/home/neovim/init.vim index c73fb73..f55412b 100644 --- a/home/neovim/init.vim +++ b/home/neovim/init.vim @@ -1,8 +1,6 @@ " Settings """"""""""""""""""""""""""" -colorscheme darkblue - " Leave boomer mode set nocompatible diff --git a/hosts/muhammed/home/iterm2/auto_theme.py b/hosts/muhammed/home/iterm2/auto_theme.py new file mode 100644 index 0000000..17a254d --- /dev/null +++ b/hosts/muhammed/home/iterm2/auto_theme.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 + +import asyncio +import iterm2 + +async def main(connection): + async with iterm2.VariableMonitor(connection, iterm2.VariableScopes.APP, "effectiveTheme", None) as mon: + while True: + # Block until theme changes + theme = await mon.async_get() + + # 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) diff --git a/hosts/muhammed/home/iterm2/default.nix b/hosts/muhammed/home/iterm2/default.nix index d868e57..b6a9ecc 100644 --- a/hosts/muhammed/home/iterm2/default.nix +++ b/hosts/muhammed/home/iterm2/default.nix @@ -1,17 +1,13 @@ # This file configures iterm2. Note that the actual definition of iTerm2 for # home-manager is in `modules/home-manager/iterm2`. *That* file declares # `options.programs.iterm2.enable`. -{ - pkgs, - lib, - ... -}: let - inherit (lib) mkIf; - inherit (pkgs.stdenv) isDarwin; -in { - config = mkIf isDarwin { +{pkgs, ...}: { + config = { home.packages = with pkgs; [imgcat]; + # Install a script which automatically makes iTerm2 match the system-wide light/dark mode. + home.file."/Library/Application Support/iTerm2/Scripts/AutoLaunch/auto_theme.py".text = builtins.readFile ./auto_theme.py; + programs.iterm2 = { enable = true; # config = { diff --git a/modules/home-manager/iterm2/default.nix b/modules/home-manager/iterm2/default.nix index 2293c80..4788e1d 100644 --- a/modules/home-manager/iterm2/default.nix +++ b/modules/home-manager/iterm2/default.nix @@ -48,6 +48,7 @@ in { config = mkIf cfg.enable { home.packages = [cfg.package]; + # TODO: Use the same overwriting approach as for qBittorrent. home.file = mkIf (cfg.config != null) { "/Library/Preferences/com.googlecode.iterm2.plist".text = toPlist {} cfg.config; }; |