fetch | ||
LICENSE.md | ||
README.md |
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
Table of Contents
- Features
- Dependencies
- Installation
- Post Install
- Usage
- Frequently Asked Questions
- Issues and Workarounds
- Todo
- 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 <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
- You can customize almost everything.
- 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.
- It's disabled by default and you can specify the cmd <br >to use with
- Smart crop (or Waifu crop)
Dependencies
Required dependencies:
Bash 4.0+
- Text formatting, dynamic image size and padding:
tput
- Uptime detection:
procps
orprocps-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
toiterm2
or by using the launch flag--image_backend
.
- Enable it by changing
- You may also need
- 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
.
- This is used as a fallback to parsing
- Take a screenshot on script finish:
scrot
- You can change this to another program with a
--scrotcmd
and an in script option.
- You can change this to another program with a
Linux | BSD:
- Display Wallpaper:
feh
ornitrogen
Installation
Arch
- Install fetch-git from the aur.
Others
- Download the latest source at https://github.com/dylanaraps/fetch
- Make the file executable using chmod.
chmod +x /path/to/fetch
- 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:
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
--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 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
-
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.