Можно ли установить отдельные конфигурации цвета рыбы для светлой и темной системной темы?
Я использую терминал (Iterm2 Beta), который позволяет установить отдельную тему для светлого и темного режима. Это полезно для изменения цвета фона терминала и контраста с ним различных предустановленных цветов.
Мне было интересно, можно ли также установить отдельную конфигурацию цвета ракушки рыбы для светлого и темного режима. Например, в светлом режиме я бы хотел, чтобы цвета рыб были черными в качестве цвета команды по умолчанию, тогда как в темном режиме я бы хотел, чтобы они были белыми.
Я программно устанавливал цвет с помощью сценария, вдохновленного этой веткой Reddit , но не смог найти простой способ изменить эти цвета с помощью системной темы macOS. Вот моя рыбная функция для изменения темы на темную или светлую.
1 ответ
Я не разбираюсь в Mac, поэтому не могу дать вам здесь пошаговые инструкции, но, надеюсь, смогу изложить части Fish и дать вам несколько советов, которые могут помочь в работе с MacOS.
Я бы разбил это на:
Что-то, что уведомляет все открытые экземпляры оболочки Fish, когда необходимо изменить тему.
Это будет обрабатываться функцией, которая следит за изменением переменной. Он должен всегда находиться в памяти (в отличие от ленивой загрузки). Хотя вы могли бы создать его в
fish.config
, я предпочитаю поместить его в~/.config/fish/conf.d/update_theme.fish
:function update_theme --on-variable macOS_Theme if [ "$macOS_Theme" = "dark" ] set_theme_dark else if [ "$macOS_Theme" = "light" ] set_theme_light end end
Затем мы можем вызвать изменение темы во всех открытых экземплярах Fish с помощью:
set --universal macOS_Theme "dark"
Обнаружение изменения системной темы macOS. Этот пост «Спроси другой стек» привел меня к этому коду Swift , который, похоже, вам понадобится для этого. Что-то вроде:
DistributedNotificationCenter.default.addObserver( forName: Notification.Name("AppleInterfaceThemeChangedNotification"), object: nil, queue: nil) { (notification) in updateFishTheme() }
The
updateFishTheme()
необходимо иметь возможность вызывать Fish и устанавливать глобальную переменную. Пример кода там предоставляетshell
функция, которая, вероятно, будет работать для этого с модификацией. Этот ответ SO также предоставляет пример кода «оболочки».Оказывается, есть также возможность использовать
run()
за этот ТАК ответ .Опять же, здесь нет Mac, поэтому я просто не могу это проверить и предоставить необходимый код.
Как только вы сможете вызвать оболочку из этой функции Swift, используйте ее для вызова:
fish -c "set --universal macOS_Theme 'dark'" # or 'light'
И все ваши экземпляры должны обновиться.