id = "t" name = "t" homepage = "https://github.com/sferik/x-cli" description = "A command-line interface for the X API." # The tool's own icon, from the icon directory in the project's repository. icon = "https://raw.githubusercontent.com/sferik/x-cli/master/legacy/icon/t.png" # `t` is the name the tool shipped under for years; upstream has since rewritten # it in Rust and renamed the crate and the binary to `x` # (Cargo.toml: name = "x", [[bin]] name = "x"). The repository moved with it — # github.com/sferik/t redirects to github.com/sferik/x-cli — so the two names # are the same tool and both are listed for a consumer to recognise. executables = ["t", "x"] [dotfiles] # The tool has no user-level configuration to sync: everything about a request # comes from the command line. The one file it keeps in the home directory is # the profile store below. paths = [] exclude = [] # README, "Status": "Default profile config is `~/.xrc`. If `~/.xrc` is # missing, `~/.trc` is used as a read fallback and migrated on write." That # file is the account store the `accounts`, `set active` and `delete account` # commands manage — the README's feature list is "OAuth 1.0a and OAuth 2.0 # authentication", and `--profile /path/to/.xrc` is the flag that points at # another copy of it. It holds the consumer key and secret and the access token # and secret for each authorised account, so the file is a credential end to # end; the only non-credential thing in it is which profile is active. # # Both names are listed because the rename happened inside the same tool: a # machine that has not run the new binary still has ~/.trc, and one that has # carries ~/.xrc. A consumer skips whichever is absent. secret = ["~/.trc", "~/.xrc"] [commands] format = 1 label = "X CLI" description = "Show a user's recent posts. Source: the project's shell completion file (legacy t command names). Posting, searching, streaming and account commands are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.subcommand]] path = ["timeline"] label = "Show a timeline" description = "Returns the 20 most recent posts by a user." [[commands.subcommand.source]] id = "comp" kind = "completion" url = "https://raw.githubusercontent.com/sferik/x-cli/HEAD/etc/t-completion.fish" revision = "2026-10-27" evidence = """ complete -f -c t -n '__fish_t_needs_command' -a timeline -d "Returns the 20 most recent Tweets posted by a user." -c, --csv Output in CSV format. -i, --id Specify user via ID instead of screen name. -l, --long Output in long format. -n, --number Limit the number of results. -r, --reverse Reverse the order of the sort. """ [[commands.subcommand.field]] id = "user" label = "User" description = "Screen name, or ID with the ID option. Leave empty for your own timeline." type = "string" position = 0 sources = ["comp"] [[commands.subcommand.field]] id = "number" label = "Number of results" type = "integer" option = ["--number", "-n"] sources = ["comp"] [[commands.subcommand.field]] id = "long" label = "Long format" type = "boolean" option = ["--long", "-l"] sources = ["comp"] [[commands.subcommand.field]] id = "csv" label = "CSV output" type = "boolean" option = ["--csv", "-c"] sources = ["comp"] [[commands.subcommand.field]] id = "id" label = "User is an ID" type = "boolean" option = ["--id", "-i"] sources = ["comp"] [[commands.subcommand.field]] id = "reverse" label = "Reverse order" type = "boolean" option = ["--reverse", "-r"] sources = ["comp"] [[commands.subcommand.task]] id = "recent" label = "Recent posts" fields = ["user", "number", "long"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["user", "number", "long"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["csv", "id", "reverse"]