diff --git a/README.md b/README.md index 3dd60a8..eb71338 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,7 @@ json = false # copy JSON format instead of plain text name = false # fetch color name (requires network) copy = true # copy result to clipboard notify = true # show desktop notification with the copied value +swatch = true # show color swatch in notification ``` You can also use the CLI to manage your configuration: diff --git a/color-tool b/color-tool index 9408ef2..a74cbd4 100755 --- a/color-tool +++ b/color-tool @@ -45,7 +45,7 @@ desktop_name=0 desktop_notify=1 desktop_copy=1 desktop_output="hex" -desktop_swatch=0 +desktop_swatch=1 # Track which settings were explicitly set via CLI flags to ensure they override config cli_json="" @@ -194,7 +194,33 @@ set_config() { if [[ -n "$new_val" ]]; then if [[ "$original_line" =~ ^([[:space:]]*[A-Za-z_]+[[:space:]]*=[[:space:]]*)([^[:space:]#]+)(.*)$ ]]; then - echo "${BASH_REMATCH[1]}$new_val${BASH_REMATCH[3]}" >> "$temp_file" + local prefix="${BASH_REMATCH[1]}" + local old_val="${BASH_REMATCH[2]}" + local suffix="${BASH_REMATCH[3]}" + + # Adjust whitespace to keep comments aligned if the value length changed + if [[ "$key" != "output" ]]; then + local old_len=${#old_val} + local new_len=${#new_val} + local diff=$((old_len - new_len)) + + if [[ $diff -gt 0 ]]; then + # new value is shorter, add spaces to suffix + local spaces="" + for ((i=0; i> "$temp_file" continue elif [[ "$original_line" =~ ^([[:space:]]*[A-Za-z_]+[[:space:]]*=[[:space:]]*)(.*)$ ]]; then echo "${BASH_REMATCH[1]}$new_val" >> "$temp_file" @@ -274,7 +300,7 @@ json = false # copy JSON format instead of plain text name = false # fetch color name (requires network) copy = true # copy result to clipboard notify = true # show desktop notification with the copied value -swatch = false # show color swatch in notification +swatch = true # show color swatch in notification EOF }