erikw/tmux-dark-notify

Environment variables in tmux options not honoured

Opened this issue · 2 comments

Environment

  • OS: macOS 14.4.1
  • Terminal: iTerm Build 3.5.0beta22
  • Shell: zsh 5.9 (x86_64-apple-darwin23.0) bash 3.2.57(1)-release
  • tmux: 3.4

Problem

If I follow the instructions and set the @dark-notify-theme-path-light or dark equivalent as follows:

set -g @dark-notify-theme-path-light '$HOME/.config/tmux/plugins/tmux-colors-solarized/tmuxcolors-light.conf'
                                      ^^^^^

It won't work and won't be able to resolve the file because the $HOME variable won't be expanded:

The theme_path=$(eval echo "$theme_path") resolves to /$HOME/.config/... instead of /Users/ramon/.config/...:

theme_path=$(eval echo "$theme_path")

If I add some prints to your script and change the macOS's Dark/Light system preference:

Screenshot 2024-05-05 at 10 57 39

Suggested Solution

If instead of using single quotes...

set -g @dark-notify-theme-path-light '$HOME/.config/tmux/plugins/tmux-colors-solarized/tmuxcolors-light.conf'

... I use double quotes...

set -g @dark-notify-theme-path-light "$HOME/.config/tmux/plugins/tmux-colors-solarized/tmuxcolors-light.conf"

... Then this issue does not happen anymore.

I suggest making explicit in the README about this issue (at least happening on macOS) or handling the case in the tmux-theme-mode.sh script of this project.

Strange, for me it does work to expand $HOME with single quote config. This is my working configuration on macOS:

https://github.com/erikw/dotfiles/blob/d68d6274d67ac47afa20b9a0b9f3b0fa54bcdaf3/.config/tmux/tmux.conf#L212

Interesting... Well for now I will leave it with double quotes and leave it as a mystery. If any user experiences this and might help us see what causes this wrong variable expansion it would be great.

It would be nice to reproduce it in a clean macOS environment, but I don't have the time to spend and try it, so from my side if you want to close the issue I would be fine, with the double quotes it works.