{"record":{"id":"08254c3036df83d6","repo":"kovidgoyal/kitty","slug":"invalid-size-specification-s","errorCode":null,"errorMessage":"Invalid size specification: %s","messagePattern":"Invalid size specification: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"kittens/icat/main.go","lineNumber":195,"sourceCode":"\t\treturn 1, err\n\t}\n\tif opts.UseWindowSize == \"\" {\n\t\tif tty.IsTerminal(os.Stdout.Fd()) {\n\t\t\tscreen_size, err = tty.GetSize(int(os.Stdout.Fd()))\n\t\t} else {\n\t\t\tt, oerr := tty.OpenControllingTerm()\n\t\t\tif oerr != nil {\n\t\t\t\treturn 1, fmt.Errorf(\"Failed to open controlling terminal with error: %w\", oerr)\n\t\t\t}\n\t\t\tscreen_size, err = t.GetSize()\n\t\t}\n\t\tif err != nil {\n\t\t\treturn 1, fmt.Errorf(\"Failed to query terminal using TIOCGWINSZ with error: %w\", err)\n\t\t}\n\t} else {\n\t\tparts := strings.SplitN(opts.UseWindowSize, \",\", 4)\n\t\tif len(parts) != 4 {\n\t\t\treturn 1, fmt.Errorf(\"Invalid size specification: %s\", opts.UseWindowSize)\n\t\t}\n\t\tscreen_size = &unix.Winsize{}\n\t\tvar t uint64\n\t\tif t, err = strconv.ParseUint(parts[0], 10, 16); err != nil || t < 1 {\n\t\t\treturn 1, fmt.Errorf(\"Invalid size specification: %s with error: %w\", opts.UseWindowSize, err)\n\t\t}\n\t\tscreen_size.Col = uint16(t)\n\t\tif t, err = strconv.ParseUint(parts[1], 10, 16); err != nil || t < 1 {\n\t\t\treturn 1, fmt.Errorf(\"Invalid size specification: %s with error: %w\", opts.UseWindowSize, err)\n\t\t}\n\t\tscreen_size.Row = uint16(t)\n\t\tif t, err = strconv.ParseUint(parts[2], 10, 16); err != nil || t < 1 {\n\t\t\treturn 1, fmt.Errorf(\"Invalid size specification: %s with error: %w\", opts.UseWindowSize, err)\n\t\t}\n\t\tscreen_size.Xpixel = uint16(t)\n\t\tif t, err = strconv.ParseUint(parts[3], 10, 16); err != nil || t < 1 {\n\t\t\treturn 1, fmt.Errorf(\"Invalid size specification: %s with error: %w\", opts.UseWindowSize, err)\n\t\t}","sourceCodeStart":177,"sourceCodeEnd":213,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kittens/icat/main.go#L177-L213","documentation":"The icat kitten was invoked with --use-window-size whose value must be a comma-separated list of exactly 4 numbers (columns,rows,xpixel,ypixel). The string split on ',' did not yield 4 parts, so the size spec is rejected.","triggerScenarios":"Passing --use-window-size with fewer or more than 4 comma-separated values, e.g. --use-window-size=80,24 or --use-window-size=80,24,1920,1080,extra.","commonSituations":"Scripts assuming only columns/rows are needed; copying a TIOCGWINSZ-style value of 2 fields; trailing comma producing empty parts.","solutions":["Supply all four fields: --use-window-size=COLS,ROWS,XPIXEL,YPIXEL e.g. 80,24,1920,1080","Drop --use-window-size entirely and let icat query the terminal automatically","Check script/alias definitions for a truncated value"],"exampleFix":"// before\nkitten icat --use-window-size=1920,1080 img.png\n// after\nkitten icat --use-window-size=80,24,1920,1080 img.png","handlingStrategy":"validation","validationCode":"re := regexp.MustCompile(`^[1-9][0-9]{0,4},[1-9][0-9]{0,4},[1-9][0-9]{0,4},[1-9][0-9]{0,4}$`)\nif !re.MatchString(useWindowSize) { log.Fatal(\"need COLS,ROWS,XPIXEL,YPIXEL\") }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always pass four comma-separated positive integers","Prefer omitting --use-window-size and let icat query the terminal"],"tags":["kitty","icat","cli-args","window-size"],"backgroundTag":"invalid-cli-argument","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}