Yayfetch is a tool similar to screenfetch, it just displays info about your computer in a prettified format - except you can use it on a non-linux machine via npx, thanks to the wonders of node
Yayfetch works both with npx and bunx
-
npm -
npx yayfetch -
bun -
bunx yayfetch
or install it globally:
bun install --global yayfetch/npm install -g yayfetch and then just call yayfetch!
-p or --pick - first asks you what information you want to display, then displays it
-c <color> or --color <color> - allows to specify in which color the data will be shown in predefined colors. Cannot be used with --rgb flag. Available predefined colors:
pink(default), orange, green, white, black, red, blue, yellow, violet, rainbow
--rgb r,g,b - specify RGB values in which data will be shown. Cannot be used with -c(--color) flag. Example npx yayfetch --rgb 125,25,78
--no-logo - prints data without ASCII art
--custom-lines {[key]: value, [key2]: value2, ...} - object with {[key]: value} string pairs separated by spaces ex.
'{"Funny:": "joke", "exampleline:": "examplevalue"}'. This is being parsed using JSON.parse, so if you encounter any problem, make sure that string you provided can be parsed by it.
--no-colored-boxes - hides the colored boxes underneath the information.
-h or --help - shows available flags.
--config <path_to_file> - specify a file path to a custom config. See here
Some more advanced features are almost impossible to implement through flags(to be quite honest, some are already pushing it e.g. --custom-lines).
To customize the ASCIIs just define "ascii" line in the config. It should be an Array<string> with path(s) to the ASCII(s).
Example:
{
"ascii": ["./path/to/file.txt", "./path/to/2nd/file.txt"]
}You can also defined iamges instead of ASCIIs, by defining images field. Note that this flag is mutually exclusive with ascii flag.
Uses terminal-image underneath, so refer to it when specifying options.
interface ImageOptions {
path: string;
options?: {
width?: string | number | undefined;
height?: string | number | undefined;
preserveAspectRatio?: boolean | undefined;
};
}Example:
{
"image": {
"path": "./path/to/file.img",
"options": { "preserveAspectRatio": false }
}
}Output can be animated by line-animations flag in the config file. It should be an AnimationOptions object.
type Animations = 'colors' | 'flowing-rainbow';
interface AnimationOptions {
type: Animations; // Animations - applied per column basis
msFrequency: number; // How fast should the animation be
}Note: Printing to stdout is not performant, so it may not work well with less performant console environments
Example:
{
"line-animations": {
"type": "flowing-rainbow",
"msFrequency": 150
}
}You can specify options through a file and use them by using --config <path_to_file>. Config file should contain a JSON object with keys representing flags.
Note that every flag with a prefix of --no- just negates the flag that is on by default. For example CLI flag --no-colored-boxes negates colored-boxes flag, which is true by default. This is important for creating a config, because if you want to invoke --no-colored-boxes through config, you would provide a "colored-boxes": false in JSON object.
Example config:
{
"color": "blue",
"colored-boxes": false,
"logo": false,
"custom-lines": {"Funny:": "joke", "exampleline:": "examplevalue"}
}
If it doesn't work for you make sure that you have the newest node(it's developed using node 18.18.0).
If you came here because of the 'Error - check https://www.npmjs.com/package/yayfetch for more' error, then most likely the software just can't detect the information. Why? Because of the system you use. It may not work when:
- You're using linux subsystem for windows
- Your system is within virtual machine
