Cierre de neofetch en abril 2024
Find a file
2016-01-21 00:37:31 +11:00
fetch Turns out we only supported bash 4.3, this commit swaps typeset for eval 2016-01-21 00:37:31 +11:00
LICENSE.md Fetch is now MIT licensed 2016-01-20 20:18:09 +11:00
README.md Fix hang when wallpaper isn't found 2016-01-20 21:46:20 +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!

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:

  • Bash 4.0+
  • Text formatting, dynamic image size and padding: tput
  • 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
  • Current Song: mpc
  • Resolution Detection: xorg-xdpyinfo
  • Window manager detection: wmctrl
    • This is used as a fallback to parsing .xinitrc and $XDG_CURRENT_DESKTOP.
  • Take a screenshot on script finish: scrot
    • You can change this to another program with a --scrotcmd and an in script option.

Linux | BSD:

  • Display Wallpaper: feh or nitrogen

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

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.

You can customize what info to print by editing the info array near the top of the script. The array looks like this:

info=(
    "gettitle"
    "underline"
    "OS: getdistro"
    "Kernel: getkernel"
    "Uptime: getuptime"
    "Packages: getpackages"
    etc...
)

See these comments inside the script for more info: https://github.com/dylanaraps/fetch/blob/master/fetch#L29

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

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 \
--exclude 'Icons: getgtkicons' \
--exclude 'Resolution: getresolution' \
--colors 4 1 8 8 8 7 \
"

Usage

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

Info:
--exclude "OS: getos"  Disable an info line at launch
--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
--use_wmctrl on/off    Use wmctrl for a more accurate reading
--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                Take a screenshot
--scrotdir             Directory to save the scrot
--scrotfile            File name of scrot
--scrotcmd             Screenshot program to launch

Other:
--clear on/off         Whether or not to clear the terminal
                       before printing.
--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

# Launch flags
--uptime_shorthand on
--gtk_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 you're 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

  • Cleanup of info array handling

  • Imagemagick optimizations

  • 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 (Done!)
    • Terminal Font
    • GPU (In master but experimental) See issue #21.
    • IP
    • etc

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.