# 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](http://i.imgur.com/bORHxT5.png) ## Table of Contents - [Features](#features) - [Dependencies](#dependencies) - [Installation](#installation) - [Post Install](#post-install) - [Usage](#usage) - [Frequently Asked Questions](#frequently-asked-questions) - [Issues and Workarounds](#issues-and-workarounds) - [Todo](#todo) - [Thanks](#thanks) ## 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
string manipulation. - **Display an image next to the info. (or don't!)** - Use your current wallpaper, shuffle through a directory or just
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
to use with `--scrotcmd cmd` at launch or by
changing the value of `$scrotcmd` in the script. - **Smart crop (or Waifu crop)** - See https://github.com/dylanaraps/fetch/wiki/What-is-Smart-Crop%3F ## 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](https://aur.archlinux.org/packages/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. 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: ```sh 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
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
or you know where it's stored then adding support won't be a problem!
## 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
enable them by changing these variables or using these flags. ```sh # 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 `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
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
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](https://github.com/dylanaraps/fetch/issues/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.