Compare commits

...

3 Commits

Author SHA1 Message Date
35C4n0r
92263a09f9 wip 2026-01-03 02:16:55 +00:00
35C4n0r
fced1bd91e wip 2026-01-03 02:11:29 +00:00
Sebastian Mengwall
2afe7d8306
fix(tmux): use heredoc for config to handle special characters
The previous implementation using inline variable assignment and printf
caused issues with custom tmux configs containing special characters:

1. `TMUX_CONFIG="${TMUX_CONFIG}"` - Terraform's templatefile substitutes
   the multi-line config inline, causing bash to interpret tmux commands
   (like `set -g`, `bind C-s`) as shell commands.

2. `printf "$TMUX_CONFIG"` - The `%` character in tmux's default
   horizontal split keybind (`bind %`) is interpreted as a printf format
   specifier, corrupting the output.

Changes:
- Use heredoc with `read -r -d ''` for safe variable assignment
- Use `cat <<<` instead of `printf` for output
- Add `|| true` to handle read's non-zero exit on EOF
2026-01-01 18:45:30 +00:00
2 changed files with 3 additions and 3 deletions

View File

@ -55,7 +55,7 @@ resource "coder_script" "tmux" {
display_name = "tmux"
icon = "/icon/terminal.svg"
script = templatefile("${path.module}/scripts/run.sh", {
TMUX_CONFIG = var.tmux_config
TMUX_CONFIG = base64encode(var.tmux_config)
SAVE_INTERVAL = var.save_interval
})
run_on_start = true

View File

@ -4,7 +4,7 @@ BOLD='\033[0;1m'
# Convert templated variables to shell variables
SAVE_INTERVAL="${SAVE_INTERVAL}"
TMUX_CONFIG="${TMUX_CONFIG}"
TMUX_CONFIG=$(echo -n "${TMUX_CONFIG}" | base64 -d)
# Function to install tmux
install_tmux() {
@ -73,7 +73,7 @@ setup_tmux_config() {
mkdir -p "$config_dir"
if [ -n "$TMUX_CONFIG" ]; then
printf "$TMUX_CONFIG" > "$config_file"
cat <<< "$TMUX_CONFIG" > "$config_file"
printf "$${BOLD}Custom tmux configuration applied at {$config_file} \n\n"
else
cat > "$config_file" << EOF