matryer/xbar · error
length
Error message
length
What it means
This error occurs when the "length" key in a plugin item's parameter string cannot be parsed as an integer. setValueByKey calls parseInt for the length value and wraps any failure with the key "length". It means the length= value used to truncate item text is not a valid integer.
Source
Thrown at pkg/plugins/item_params.go:230
if err != nil {
return errors.Wrap(err, key)
}
case "refresh":
var err error
p.Refresh, err = parseBool(value)
if err != nil {
return errors.Wrap(err, key)
}
case "dropdown":
var err error
p.Dropdown, err = parseBool(value)
if err != nil {
return errors.Wrap(err, key)
}
case "length":
val, err := parseInt(value)
if err != nil {
return errors.Wrap(err, key)
}
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 {View on GitHub (pinned to d624239058)
Solutions
- Change the value to a plain integer, e.g. length=30.
- Remove units or decimal points (length=10px -> length=10).
- Ensure a non-empty numeric value follows '='; if truncation is not wanted, remove the length key entirely rather than leaving it blank.
- If the value is computed at runtime, format it with a plain integer (e.g. printf 'length=%d' "$n") instead of string interpolation that may inject units.
Example fix
// before params := "length=20px" // after params := "length=20"
Defensive patterns
Strategy: validation
Validate before calling
if v := getParam(params, "length"); v != "" {
if _, err := strconv.Atoi(strings.TrimSpace(v)); err != nil {
return fmt.Errorf("length must be a plain integer, got %q", v)
}
} Type guard
func isInt(s string) bool {
_, err := strconv.Atoi(strings.TrimSpace(s))
return err == nil
} Try / catch
if err := item.ParseParams(raw); err != nil {
if strings.Contains(err.Error(), "length") {
log.Printf("bad length in %q: %v; dropping key", raw, err)
raw = removeParam(raw, "length")
}
} Prevention
- Emit length as a bare integer with no units or decimals.
- Format computed values with %d in printf instead of string interpolation.
- Delete the length key entirely rather than leaving length= empty.
- Add a lint check that all numeric params match ^-?[0-9]+$.
When it happens
Trigger: Parsing a param string containing 'length=abc', 'length=10px', 'length=' (empty), or 'length=3.5' via parseParamStr — anything strconv.Atoi rejects.
Common situations: Developers set a max character length for menu bar text and accidentally include units (px, chars), decimals, or leave the value empty after deleting a number during editing.
Related errors
AI-assisted analysis of matryer/xbar@d624239058 (2026-09-02).
Data as JSON: /api/errors/285f6b4efd3f9062.
Report an issue: GitHub.