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] = valueView on GitHub (pinned to d624239058)
Solutions
- Use emojize=true or emojize=false (1/0, t/f also accepted).
- Remove stray whitespace or punctuation from the value.
- Ensure the generating script emits literal true/false (e.g. ${{VAR:+true}} style guards rather than raw variable text).
- 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
- Use emojize=true/false; emojize defaults to true so omit it to keep emoji conversion on.
- Never write enable/disable/no as the value.
- Validate generated metadata lines before they reach the menu bar.
- Avoid key= with an empty value when disabling a feature.
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.