CLI tool
KittyKatt/screenFetch avatar
KittyKatt/screenFetch

screenFetch: the Bash screenshot information tool, and what to check before you adopt it

Fetches system/theme information in terminal for Linux desktop screenshots.

4,075 stars446 forksShellGPL-3.0

At a glance

What is it?
screenFetch is a Bash script that prints a distribution ASCII logo beside system and theme details for terminal screenshots. It is easy to run and easy to extend, but its installation steps live in a wiki, and the README points readers to a discussion about the project's current state.
Who is it for?
Adopt screenFetch if you want a small Bash script whose output you can shape with -d, -c and -C, or if you intend to write your own ASCII art script for -a. Do not adopt it if you need a documented installation path inside the repository, or if you need a project with a steady release cadence; the last push was on 2026-03-02, and the README defers to a wiki page and to a discussion thread on the project's state.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Activity is slowing. The repository last received commits 7 months ago.
What is it written in?
Mainly Shell, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What screenFetch prints and who the output is for

screenFetch generates the terminal theme information block with an ASCII distribution logo that people put in desktop screenshots. The README describes it as a "Bash Screenshot Information Tool" that auto-detects your distribution and prints an ASCII version of that distribution's logo with information to the right of it. The audience is narrow and specific: people who post Linux desktop screenshots and want the distro, theme and system details visible in the same image without assembling them by hand.

That framing matters when you weigh the project. This is not a monitoring agent or an inventory tool. It reads local system and theme information and formats it for a human looking at a picture. If you need machine-readable output for a fleet of hosts, the script's purpose is the opposite of yours.

How detection, ASCII art and the display list fit together

The script detects the distribution, then selects an ASCII logo for it. Two flags override that decision independently: -D 'DISTRO' sets the distribution the script uses, and -A 'DISTRO' sets which distribution art is displayed. That split is the interesting part of the design, because it lets you keep accurate detection while showing a different logo, which the README describes as the case where you want your distro detected but want to display a different logo.

What appears beside the logo is controlled by a display list. The -d flag takes a string of the form '+var;-var;var': a plus sign adds entries, a minus sign removes them, and a bare variable sets the display to that explicit combination. Add and delete statements can be combined by separating them with a semicolon. So the visible output is not a fixed block; it is a set assembled at run time.

Rendering is also configurable. The -c flag takes a string in the format [0-9][0-9],[0-9][0-9], where the first argument controls the ASCII logo colors and the label colors and the second controls the colors of the information found. Either argument can be used without the other. The -n flag drops the ASCII logo entirely, -N strips all color, -w wraps long lines, and -p switches to portrait mode with the logo above the info. The -o flag sets script variables from the command line using the format 'OPTION1="OPTIONARG1";OPTION2="OPTIONARG2"'.

For custom art, -a 'PATH' points at a Bash script that defines startline and fulloutput, and optionally labelcolor and textcolor. The README directs readers to the asciiText function in the source for the variable format. Extra lines come from -C, which the README illustrates with a comma-separated list of label and value pairs.

Installing screenFetch and running it the first time

The README does not carry installation steps. It points to an Installation page on the project wiki, so the commands below are the invocation the README does document, not a package-manager recipe it supplies. Get the script the way that wiki page describes for your distribution, then run it.

The plain command prints the ASCII logo with information beside it:

bash
screenfetch

If the script is not on your PATH, run it from wherever you saved it. The README says you can type screenfetch "or wherever you saved the script to".

A first useful variation is dropping the logo when you only want the data block:

bash
screenfetch -n

The -n flag means do not display the ASCII distribution logo, so you should see the information lines without the art.

To add your own lines, pass -C a comma-separated list. The README gives this exact example:

bash
screenfetch -C 'IP WAN=192.168.0.12,IP BRIDGED=10.1.1.10'

According to the README, that adds two extra lines reading IP WAN: 192.168.0.12 and IP BRIDGED: 10.1.1.10. Note the separator: the flag takes one quoted string, and the pairs inside it are separated by commas.

For screenshots, -s tells the script to take a screenshot, and -m moves it to a new location afterwards. The README also documents -S 'COMMAND' for supplying your own screenshot command, with surrounding quotes required, and -u IMGHOST as an option on -s. The README does not spell out which tools those flags call, so check the script before you rely on them in a headless session.

Where screenFetch is the wrong tool

The output is formatted for a screenshot, not for a parser. There is no documented JSON, YAML or CSV mode in the README. If your goal is to collect host facts across machines, you would be scraping colored text that changes with -c, -d and -p, which is a fragile base for automation.

The screenshot flags are the second soft spot. The README documents that -s takes a screenshot and that -S lets you replace the command, but it does not document what happens when no screenshot utility is present, what path the image lands in, or how to undo a move performed with -m. Anyone running this on a minimal server image should treat those flags as untested until they read the source.

Third, the README itself opens with an Important note linking to a discussion on the current state of screenFetch. That is the project telling you to read before adopting, and it is the first thing a reviewer should open. The repository is not archived and the last push was on 2026-03-02, but the release history is uneven: v3.9.9 is dated 2024-12-03, and before it the previous tagged release was v3.9.1 in 2019. Long gaps between releases are a real planning input when you depend on a script.

screenFetch against neofetch and fastfetch

The comparison people search for is screenFetch versus neofetch, and versus fastfetch. The honest difference visible in this material is scope and language: screenFetch is a Bash script, which is why the README calls it easy to add to and extend, and why custom art is a Bash script defining startline and fulloutput rather than a data file in another format. That makes contribution cheap for anyone who writes shell, and it makes the display logic something you can read end to end.

A compiled or differently structured tool will not share those properties. If you want to extend the output, screenFetch's extension path is editing a shell script or pointing -a at one. That is the trade-off: a low barrier to modification in exchange for a rendering pipeline built out of shell string handling, where the -t truncation flag is explicitly marked Experimental in the README. Choose screenFetch when you want to read and change the code; choose otherwise when you want a tool whose output format is specified rather than assembled.

Licence, maintenance and the cost of upgrading

screenFetch is GPL-3.0. The repository carries a COPYING file, and the script is the distributed work. If you ship a modified screenFetch inside a product, the GPL-3.0 obligations attach to that distribution; if you keep it as an internal tool, the practical effect is smaller. This is a description of the licence identifier, not legal advice, and anyone embedding the script in a shipped product should read COPYING and get their own counsel.

On upgrades, the repository layout tells you what to watch. There is a CHANGELOG, a TODO, a man page (screenfetch.1) and a script named update-manpage.sh, plus two script files at the top level: screenfetch and screenfetch-dev. The presence of a man page and a generator for it means flag changes should surface in documentation, but the README's own help text is the thing to diff against after an update, since flags like -C and -d change what users type.

Upgrade cost is low in absolute terms. It is one script. The cost that matters is behavioural: if you have scripts or documentation that pin the output of screenfetch, a change in detection or in the default display list will change that output, and nothing in the README promises output stability across versions.

Editorial conclusion

Adopt screenFetch if you want a small Bash script whose output you can shape with -d, -c and -C, or if you intend to write your own ASCII art script for -a. Do not adopt it if you need a documented installation path inside the repository, or if you need a project with a steady release cadence; the last push was on 2026-03-02, and the README defers to a wiki page and to a discussion thread on the project's state. Before you commit, read that discussion, confirm which file your package installs (screenfetch or screenfetch-dev), and check whether the -t truncation flag, marked Experimental, behaves on your terminal width.

Frequently asked questions

What is screenFetch in Linux?

It is a Bash script that auto-detects your distribution and prints an ASCII version of that distribution's logo with system and theme information to the right of it. The README calls it a Bash Screenshot Information Tool and describes it as intended for terminal theme information plus ASCII distribution logos in screenshots.

How do I install screenFetch?

The README does not include installation commands. It directs readers to the Installation page on the project wiki, so the exact steps depend on your distribution and on what that page says.

How do I use screenFetch?

Open a terminal and run screenfetch, or run the script from wherever you saved it. Options can be passed on the command line, and screenfetch -h prints the list of flags the README documents.

What does the screenFetch command do?

It generates an ASCII logo for your detected distribution and prints information beside it. Flags change that output: -n removes the logo, -N strips color, -p switches to portrait mode, and -C adds extra lines.

What does the screenFetch command output show?

It shows an ASCII distribution logo with information printed to the side of it, based on the distribution the script detects. The -d flag controls which information entries appear, and -n removes the logo so only the information remains.

How do I install screenFetch on Ubuntu?

The README does not give distribution-specific commands for Ubuntu or any other system. It points to the Installation page on the project wiki, which is where the per-distribution steps are kept.

Official sources

  1. Issues
  2. KittyKatt/screenFetch on GitHub
  3. License: GPL-3.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/kittykatt-screenfetch.svg)](https://hysenlabs.com/projects/kittykatt-screenfetch)