fetch | ||
LICENSE.md | ||
README.md |
fetch
[Features] [Dependencies] [Installation] [Post Install] [Usage] [Issues and Workarounds] [TODO] [Thanks]
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!
Features
- Supports Linux, Mac OS X, *BSD and Windows (Cygwin)!
- If the script isn't working on your system open an issue.
- *BSD support is currently in testing! See issue #10
- If the script isn't working 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!)
- The script can use your current wallpaper, shuffle through a directory or just <br >display an image of your choice.
- The wallpaper function on linux uses feh, It's hard to add support <br > for other wallpaper setters as they don't provide a way of getting <br > the current wallpaper from the cli.
- The script can use your current wallpaper, shuffle through a directory or just <br >display an image of your choice.
- 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
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.
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
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.
[Linux] The script hangs and doesn't display anything
This is caused by the getwallpaper function failing to find your current wallpaper and <br > imagemagick trying to crop a nonexistent image. You can fix this by installing feh and using it<br > to set your wallpaper or by changing the image source.
You can change the source by editing the $image
variable or by launching the script with --image
.
The possible values are:
- wall - Use the current wallpaper. (Default)
- shuffle - Shuffle through images in a directory. See
$shuffledir
- path/to/img.png - Select an image to display.
- off - Disable images
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
-
Add Windows resolution detection
-
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 (Done! 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.