matryer/xbar · error

emojize

Error message

emojize

What it means

This error occurs when the "emojize" key in a plugin item's parameter string cannot be parsed as a boolean. setValueByKey calls parseBool for the emojize value and wraps the failure with the key "emojize". It means the emojize= value (controlling :emoji: code conversion) is not a valid boolean literal.

Source

Thrown at pkg/plugins/item_params.go:249

		}
		p.Length = val
	case "trim":
		var err error
		p.Trim, err = parseBool(value)
		if err != nil {
			return errors.Wrap(err, key)
		}
	case "alternate":
		var err error
		p.Alternate, err = parseBool(value)
		if err != nil {
			return errors.Wrap(err, key)
		}
	case "emojize":
		var err error
		p.Emojize, err = parseBool(value)
		if err != nil {
			return errors.Wrap(err, key)
		}
	case "ansi":
		var err error
		p.ANSI, err = parseBool(value)
		if err != nil {
			return errors.Wrap(err, key)
		}
	default:
		if strings.HasPrefix(key, "param") {
			paramIndex, err := strconv.Atoi(key[5:])
			if err != nil {
				return errors.Errorf("bad parameter: %s (should be paramN)", key)
			}
			for len(p.ShellParams) < paramIndex {
				// ensure the slice is big enough
				p.ShellParams = append(p.ShellParams, "")
			}
			p.ShellParams[paramIndex-1] = value

View on GitHub (pinned to d624239058)

Solutions

  1. Use emojize=true or emojize=false (1/0, t/f also accepted).
  2. Remove stray whitespace or punctuation from the value.
  3. Ensure the generating script emits literal true/false (e.g. ${{VAR:+true}} style guards rather than raw variable text).
  4. Remove the key entirely to accept the default (emojize is true by default).

Example fix

// before
params := "emojize=disable"
// after
params := "emojize=false"
Defensive patterns

Strategy: validation

Validate before calling

func validBoolParam(params string, key string) bool {
    for _, kv := range strings.Split(params, ",") {
        parts := strings.SplitN(kv, "=", 2)
        if len(parts) == 2 && parts[0] == key {
            _, err := strconv.ParseBool(parts[1])
            return err == nil
        }
    }
    return true
}
// validBoolParam("emojize=enable", "emojize") == false

Type guard

func isGoBool(s string) bool {
    _, err := strconv.ParseBool(s)
    return err == nil
}

Try / catch

if err := item.ParseParams(raw); err != nil {
    if strings.Contains(err.Error(), "emojize") {
        log.Printf("invalid emojize value in %q: %v", raw, err)
        return // skip or fall back to defaults
    }
}

Prevention

When it happens

Trigger: Parsing a param string containing 'emojize=enable', 'emojize=1 ', 'emojize=' (empty), or any value strconv.ParseBool rejects.

Common situations: Developers disabling emoji conversion write verbs like enable/disable or no; hand-edited metadata with whitespace, or scripts interpolating unset variables into the value.

Related errors


AI-assisted analysis of matryer/xbar@d624239058 (2026-09-02). Data as JSON: /api/errors/1d3fa053aa79b27c. Report an issue: GitHub.