Cierre de neofetch en abril 2024
Find a file
2016-01-24 08:16:06 +11:00
fetch Fixed cpu speed on elementary, Added more rules to getgpu for AMD cards 2016-01-24 08:16:06 +11:00
LICENSE.md Fetch is now MIT licensed 2016-01-20 20:18:09 +11:00
README.md wmctrl is now used by default if found 2016-01-23 10:31:24 +11:00

fetch

This is the home of my fetch script! This script gathers info
about your system and prints it to the terminal next to an image of your choice!

NOTE: See this wiki page for info on the new info function and it's usage

https://github.com/dylanaraps/fetch/wiki/Customizing-Info

1

Table of Contents

Features

  • Supports Linux, Mac OS X, BSD and Windows (Cygwin)!
    • If the script doesn't work on your system, open an issue.
  • It's Fast
    • The script makes heavy use of bash builtins and <br >string manipulation.
  • Display an image next to the info. (or don't!)
    • Use your current wallpaper, shuffle through a directory or just <br >display an image of your choice.
    • Supports using w3m or iTerm2 to display the images.
  • Highly Customizable
    • You can customize almost everything.
      • See Usage below or lines 23-233 in script
  • Take a screenshot at the end.
    • It's disabled by default and you can specify the cmd <br >to use with --scrotcmd cmd at launch or by <br >changing the value of $scrotcmd in the script.
  • Smart crop (or Waifu crop)

Dependencies

Required dependencies:

All OS:

  • Bash 4.0+
  • Text formatting, dynamic image size and padding: tput

Linux / BSD / Windows:

  • Uptime detection: procps or procps-ng

Optional dependencies:

All OS:

  • Displaying Images: w3m
    • You may also need w3m-img
    • Note: The script can now also use iTerm2's builtin image rendering instead of w3m!
      • Enable it by changing image_backend to iterm2 or by using the launch flag --image_backend.
  • Image Cropping, Resizing etc: ImageMagick
  • Window manager detection: wmctrl
    • This is used as a fallback to parsing .xinitrc and $XDG_CURRENT_DESKTOP.

Linux / BSD:

  • Display Wallpaper: feh or nitrogen
  • Current Song: mpc or cmus
  • Resolution Detection: xorg-xdpyinfo
  • Take a screenshot on script finish: scrot
    • You can change this to another program with a --scrotcmd and an in script option.

Installation

Arch

  1. Install fetch-git from the aur.

Others

  1. Download the latest source at https://github.com/dylanaraps/fetch
  2. Make the file executable using chmod. chmod +x /path/to/fetch
  3. Move the script to somewhere in your $PATH or just run it from where it is.

Post Install

Sizing the image correctly

NOTE: For the images to be sized correctly you need to set the $font_width variable. If you don't know your font width in pixels keep trying values until the image is sized correctly.

You can also use the launch flag --font_width to set it on the fly.

Customizing what info gets displayed

At the top of the script there's a function that allows you to customize all of the info that gets displayed.

Here's what you can do:

  • Add new info lines
  • Change the ordering of the info
  • Remove unwanted info lines
  • Use bash syntax to control when info gets displayed

See this wiki page that goes more in-depth about it:

https://github.com/dylanaraps/fetch/wiki/Customizing-Info

Customizing the script using a custom alias

If you don't want to edit the script you can customize almost everything using launch flags!

Here's what my fetch alias looks like:

alias fetch2="fetch \
--block_range 1 8 \
--line_wrap off \
--bold off \
--uptime_shorthand on \
--gtk_shorthand on \
--colors 4 1 8 8 8 7 \
"

Usage

usage: ${0##*/} [--colors 1 2 3 4 5] [--kernel "\$\(uname -rs\)"]

Info:
--title string         Change the title at the top
--distro string/cmd    Manually set the distro
--kernel string/cmd    Manually set the kernel
--uptime string/cmd    Manually set the uptime
--packages string/cmd  Manually set the package count
--shell string/cmd     Manually set the shell
--winman string/cmd    Manually set the window manager
--cpu string/cmd       Manually set the cpu name
--memory string/cmd    Manually set the memory
--speed_type           Change the type of cpu speed to get
                       Possible values: current, min, max
--song string/cmd      Manually set the current song

--uptime_shorthand     Shorten the output of uptime
--gtk_shorthand on/off Shorten output of gtk theme/icons
--gpu_shorthand on/off Shorten the output of GPU

Text Colors:
--colors 1 2 3 4 5     Change the color of text
                       (title, subtitle, colon, underline, info)
--title_color num      Change the color of the title
--subtitle_color num   Change the color of the subtitle
--colon_color num      Change the color of the colons
--underline_color num  Change the color of the underlines
--info_color num       Change the color of the info

Text Formatting:
--underline on/off     Enable/Disable title underline
--underline_char char  Character to use when underlineing title
--line_wrap on/off     Enable/Disable line wrapping
--bold on/off          Enable/Disable bold text
--prompt_height num    Set this to your prompt height to fix
                       issues with the text going off screen at the top

Color Blocks:
--color_blocks on/off  Enable/Disable the color blocks
--block_width num      Width of color blocks
--block_range start end --v
                       Range of colors to print as blocks

Image:
--image                Image source. Where and what image we display.
                       Possible values: wall, shuffle, /path/to/img, off
--shuffledir           Which directory to shuffle for an image.
--font_width px        Used to automatically size the image
--image_position       Where to display the image: (Left/Right)
--split_size num       Width of img/text splits
                       A value of 2 makes each split half the terminal
                       width and etc
--crop_mode            Which crop mode to use
                       Takes the values: normal, fit, fill
--crop_offset value    Change the crop offset for normal mode.
                       Possible values: northwest, north, northeast,
                       west, center, east, southwest, south, southeast

--xoffset px           How close the image will be
                       to the left edge of the window
--yoffset px           How close the image will be
                       to the top edge of the window
--gap num              Gap between image and text right side
                       to the top edge of the window
--clean                Remove all cropped images

Screenshot:
--scrot /path/to/img   Take a screenshot, if path is left empty
                       the screenshot function will use
                       \$scrot_dir and \$scrot_name.
--scrot_cmd            Screenshot program to launch

Other:
--help                 Print this text and exit

Frequently Asked Questions

Why doesn't fetch support my wallpaper setter?

It's hard to add support for other wallpaper setters as<br > they don't provide a way of getting the current wallpaper from the cli.

If your wallpaper setter does provide a way of getting the current wallpaper<br > or you know where it's stored then adding support won't be a problem!<br >

Issues and Workarounds

The image is rendering with black lines in Urxvt while using an xft font.

This is an issue with w3mimgdisplay and not the script. You can find a workaround here:

https://github.com/hut/ranger/issues/86#issuecomment-17346249

The text is too long for my terminal window and wraps to the next line causing the image to not render correctly.

There are a few ways to fix this.

  • Disable line wrapping with $line_wrap off in the script or with the launch flag --line_wrap off

  • The uptime and gtk info lines each have a shorthand option that makes their output smaller. You can <br > enable them by changing these variables or using these flags.

# In script options
uptime_shorthand="on"
gtk_shorthand="on"
gpu_shorthand="on"

# Launch flags
--uptime_shorthand on
--gtk_shorthand on
--gpu_shorthand on
  • Edit the info array to make the subtitles shorter

  • Resizing the terminal so that the lines don't wrap.

getgpu doesn't show my exact video card name

If your lspci | grep "VGA" output looks like this:

01:00.0 VGA compatible controller: NVIDIA Corporation Device 1401 (rev a1)

Instead of this:

01:00.0 VGA compatible controller: NVIDIA Corporation GM206 [GeForce GTX 960] (rev a1)

Then you're affected by the issue.

This is caused by your /usr/share/misc/pci.ids\* files being outdated and you can fix it<br > by running this command as root.

sudo update-pciids

Todo

Here's what's on my todo list

  • More info outputs. Now that it's easy to customize what's printed and<br > everything is a function we can add optional support for pretty much anything.

    • Resolution (Just missing Windows support)
    • GTK themes
    • Terminal Font
      • This will be difficult to add as there's no standard way of getting this info. We can't check<br > for terminal config files because the user may have multiple terminals installed.<br > Using $PPID isn't an option because it won't work in tmux/screen, subshells or neovim terminal splits.
    • GPU (In master but experimental) See issue #21.

Thanks

Thanks to:

  • metakirby5: Providing great feedback as well as ideas for the script.

  • Screenfetch: I've used some snippets as a base for a few functions in this script.

  • @jrgz: Helping me test the Mac OS X version.

  • @xDemonessx: Helping me test the Windows version.