Compare commits

..

4 commits

Author SHA1 Message Date
Dylan Araps
92bf7da15a tests: Add main test file 2018-05-18 14:35:31 +10:00
Dylan Araps
5fb3ab6ee3 tests: properly set exit code. 2018-05-18 14:28:56 +10:00
Dylan Araps
3b57104997 travis: Run initial tests. 2018-05-18 14:04:20 +10:00
Dylan Araps
fbc029b1b1 general: Added tests 2018-05-18 14:03:22 +10:00
12 changed files with 5073 additions and 5244 deletions

View file

@ -2,8 +2,6 @@
If you're suggesting a new feature then just a description will suffice.
- [ ] Does this issue still occur in the master branch? (**Required if issue**)
#### Neofetch version

View file

@ -11,6 +11,13 @@ before_install:
script:
- time ./neofetch --travis -v
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then shellcheck -e SC2244 -e SC2243 neofetch; fi
# See this wiki page for why we're disabling these errors.
# https://github.com/dylanaraps/neofetch/wiki/Shellcheck-Exclusions
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then shellcheck neofetch -e SC1090,SC2009,SC2012,SC2016,SC2034,SC2128,SC2153,SC2154,SC2178,SC2010,SC1004,SC1091,SC1117; fi
# The if statement is here to invert the exit code from grep.
# grep normally errors if no match is found but we want the opposite.
# We invert it so grep fails if a match is found.
# Check for lines longer than 100 chars.
- if grep '.\{102\}' neofetch; then (exit 1); else (exit 0); fi
# There are 3 lines that must be longer than 100 chars.
- if (("$(grep '.\{101\}' neofetch | wc -l)" > 3)); then (exit 1); else (exit 0); fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then cd tests && ./test.sh; fi

2685
CHANGELOG.md Normal file

File diff suppressed because it is too large Load diff

View file

@ -23,15 +23,20 @@
and variable names.
- Keep lines below `100` characters long.
- Use `[[ ]]` for tests.
- Quote **EVERYTHING**.
- Double Quote **EVERYTHING**.
- Dont use single quotes, except for special cases.
### ShellCheck
For your contribution to be accepted, your changes need to pass
ShellCheck.
Run ShellCheck with the following command:
```sh
shellcheck neofetch
# Why do we exclude numerous tests?
# See: https://github.com/dylanaraps/neofetch/wiki/Shellcheck-Exclusions
shellcheck neofetch -e SC1090,SC2009,SC2012,SC2016,SC2034,SC2128,SC2153,SC2154,SC2178,SC2010,SC1004,SC1091,SC1117
```
**Note**: If you have trouble installing ShellCheck. You can open a pull
@ -53,8 +58,6 @@ request on the repo and our Travis.ci hook will run ShellCheck for you.
- Use `bash`'s built-in syntax (`file="$(< /path/to/file.txt)")`).
- Dont use `grep "pattern" | awk '{ printf }'`.
- Use `awk '/pattern/ { printf }'`
- Dont use `wc`.
- Use `${#var}` or `${#arr[@]}`.
### If Statements

View file

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2015-2021 Dylan Araps
Copyright (c) 2016-2018 Dylan Araps
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View file

@ -1,5 +1,5 @@
PREFIX = /usr
MANDIR = $(PREFIX)/share/man
PREFIX ?= /usr
MANDIR ?= $(PREFIX)/share/man
all:
@echo Run \'make install\' to install Neofetch.

View file

@ -1,13 +1,16 @@
<h3 align="center"><img src="https://i.imgur.com/ZQI2EYz.png" alt="logo" height="100px"></h3>
<p align="center">A command-line system information tool written in bash 3.2+</p>
<h1 align="center"><img src="https://i.imgur.com/JFxwJtU.png" alt="logo" height="50px"></h1>
<p align="center">
<a href="https://discord.gg/BtnTPFF"><img src="https://img.shields.io/discord/440354555197128704.svg"></a>
<a href="https://travis-ci.org/dylanaraps/neofetch"><img src="https://travis-ci.org/dylanaraps/neofetch.svg?branch=master"></a>
<a href="./LICENSE.md"><img src="https://img.shields.io/badge/license-MIT-blue.svg"></a>
<a href="https://github.com/dylanaraps/neofetch/releases"><img src="https://img.shields.io/github/release/dylanaraps/neofetch.svg"></a>
<a href="https://repology.org/metapackage/neofetch"><img src="https://repology.org/badge/tiny-repos/neofetch.svg" alt="Packaging status"></a>
<a href="https://www.patreon.com/dyla"><img src="https://img.shields.io/badge/donate-patreon-yellow.svg"></a>
</p>
<img src="https://i.imgur.com/GFmC5Ad.png" alt="neofetch" align="right" height="240px">
<a href="https://repology.org/metapackage/neofetch">
<img src="https://repology.org/badge/vertical-allrepos/neofetch.svg" alt="Packaging status" align="right" width="150px" height="700px">
</a>
Neofetch is a command-line system information tool written in `bash 3.2+`. Neofetch displays information about your operating system, software and hardware in an aesthetic and visually pleasing way.
@ -15,11 +18,42 @@ The overall purpose of Neofetch is to be used in screen-shots of your system. Ne
The information by default is displayed alongside your operating system's logo. You can further configure Neofetch to instead use an image, a custom ASCII file, your wallpaper or nothing at all.
<img src="https://i.imgur.com/lUrkQBN.png" alt="neofetch" align="right" height="240px">
You can further configure Neofetch to display exactly what you want it to. Through the use of command-line flags and the configuration file you can change existing information outputs or add your own custom ones.
Neofetch supports almost 150 different operating systems. From Linux to Windows, all the way to more obscure operating systems like Minix, AIX and Haiku. If your favourite operating system is unsupported: Open up an issue and support will be added.
Neofetch supports almost 150 different operating systems. From Linux to Windows, all the way to more obscure operating systems like Minix, AIX and Haiku. If your favourite operating system is unsupported: Open up an issue and support will be added.<br>
<img src="https://i.imgur.com/lUrkQBN.png" alt="neofetch" align="right" width="349px">
<img src="https://i.imgur.com/GFmC5Ad.png" alt="neofetch" width="349px">
### For more information: \[[Dependencies](https://github.com/dylanaraps/neofetch/wiki/Dependencies)\] \[[Installation](https://github.com/dylanaraps/neofetch/wiki/Installation)\] \[[Wiki](https://github.com/dylanaraps/neofetch/wiki)\]
## Articles
- https://lamiradadelreplicante.com/2016/05/15/la-informacion-de-tu-sistema-en-la-terminal-con-neofetch/
- https://linuxconfig.org/how-to-display-system-information-with-neofetch
- https://www.2daygeek.com/neofetch-display-linux-systems-information-ascii-distribution-logo-terminal/
- https://www.cyberciti.biz/howto/neofetch-awesome-system-info-bash-script-for-linux-unix-macos/
- https://www.lffl.org/2016/11/neofetch-le-informazioni-sistema-sul-terminale-stile.html
- https://www.maketecheasier.com/display-system-information-neofetch-linux/
- https://www.omgubuntu.co.uk/2016/11/neofetch-terminal-system-info-app
- https://www.omgubuntu.co.uk/2016/12/cli-system-tool-neofetch-2-0-released
- https://www.omgubuntu.co.uk/2017/01/neofetch-3-0-released
- https://www.ostechnix.com/neofetch-display-linux-systems-information/
- https://www.techrepublic.com/article/how-to-get-all-the-information-you-need-about-your-linux-machine-with-a-single-command/
- https://www.tecmint.com/neofetch-shows-linux-system-information-with-logo/
- https://www.youtube.com/watch?v=bgepGW858fc
### More: \[[Dependencies](https://github.com/dylanaraps/neofetch/wiki/Dependencies)\] \[[Installation](https://github.com/dylanaraps/neofetch/wiki/Installation)\] \[[Wiki](https://github.com/dylanaraps/neofetch/wiki)\]
## Thanks
- [Contributors](https://github.com/dylanaraps/neofetch/contributors)
- [Packagers](https://github.com/dylanaraps/neofetch/issues/115)
- [Screenfetch](https://github.com/KittyKatt/screenFetch)
- [ufetch](https://github.com/jschx/ufetch)
## Donate
Donations will allow me to spend more time working on `neofetch`.
If you like `neofetch` and want to give back in some way you can donate here: **https://patreon.com/dyla**

7335
neofetch

File diff suppressed because it is too large Load diff

View file

@ -1,10 +1,10 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.3.
.TH NEOFETCH "1" "April 2021" "Neofetch 7.1.0" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH NEOFETCH "1" "May 2018" "Neofetch 4.0.1" "User Commands"
.SH NAME
Neofetch \- A fast, highly customizable system info script
.SH SYNOPSIS
.B neofetch
\fI\,func_name --option "value" --option "value"\/\fR
\fI\,--option "value" --option "value"\/\fR
.SH DESCRIPTION
Neofetch is a CLI system information tool written in BASH. Neofetch
displays information about your system next to an image, your OS logo,
@ -14,38 +14,12 @@ NOTE: Every launch flag has a config option.
.SH OPTIONS
.SS "INFO:"
.TP
func_name
Specify a function name (second part of info() from config) to
quickly display only that function's information.
.IP
Example: neofetch uptime \fB\-\-uptime_shorthand\fR tiny
.IP
Example: neofetch uptime disk wm memory
.IP
This can be used in bars and scripts like so:
.IP
memory="$(neofetch memory)"; memory="${memory##*: }"
.IP
For multiple outputs at once (each line of info in an array):
.IP
IFS=$'\en' read \fB\-d\fR "" \fB\-ra\fR info < <(neofetch memory uptime wm)
.IP
info=("${info[@]##*: }")
.TP
\fB\-\-disable\fR infoname
Allows you to disable an info line from appearing
in the output. 'infoname' is the function name from the
\&'print_info()' function inside the config file.
For example: 'info "Memory" memory' would be '\-\-disable memory'
in the output.
.IP
NOTE: You can supply multiple args. eg. 'neofetch \fB\-\-disable\fR cpu gpu'
.TP
\fB\-\-title_fqdn\fR on/off
Hide/Show Fully Qualified Domain Name in title.
.TP
\fB\-\-package_managers\fR on/off
Hide/Show Package Manager names . (on, tiny, off)
.TP
\fB\-\-os_arch\fR on/off
Hide/Show OS architecture.
.TP
@ -83,7 +57,7 @@ NOTE: For FreeBSD and NetBSD\-based systems, you need to enable
coretemp kernel module. This only supports newer Intel processors.
.TP
\fB\-\-distro_shorthand\fR on/off
Shorten the output of distro (on, tiny, off)
Shorten the output of distro (tiny, on, off)
.IP
NOTE: This option won't work in Windows (Cygwin)
.TP
@ -93,7 +67,7 @@ Shorten the output of kernel
NOTE: This option won't work in BSDs (except PacBSD and PC\-BSD)
.TP
\fB\-\-uptime_shorthand\fR on/off
Shorten the output of uptime (on, tiny, off)
Shorten the output of uptime (tiny, on, off)
.TP
\fB\-\-refresh_rate\fR on/off
Whether to display the refresh rate of each monitor
@ -107,9 +81,6 @@ Which GPU to display. (all, dedicated, integrated)
.IP
NOTE: This only supports Linux.
.TP
\fB\-\-de_version\fR on/off
Show/Hide Desktop Environment version
.TP
\fB\-\-gtk_shorthand\fR on/off
Shorten output of gtk theme/icons
.TP
@ -133,43 +104,32 @@ NOTE: Multiple values can be given. (\fB\-\-disk_show\fR '/' '/dev/sdc1')
.TP
\fB\-\-disk_subtitle\fR type
What information to append to the Disk subtitle.
Takes: name, mount, dir, none
Takes: name, mount, dir
.IP
\&'name' shows the disk's name (sda1, sda2, etc)
.IP
\&'mount' shows the disk's mount point (/, \fI\,/mnt/Local\/\fP Disk, etc)
.IP
\&'dir' shows the basename of the disks's path. (/, Local Disk, etc)
.IP
\&'none' shows only 'Disk' or the configured title.
.TP
\fB\-\-disk_percent\fR on/off
Hide/Show disk percent.
.TP
\fB\-\-ip_host\fR url
URL to query for public IP
.TP
\fB\-\-ip_timeout\fR int
Public IP timeout (in seconds).
.TP
\fB\-\-ip_interface\fR value
Interface(s) to use for local IP
.TP
\fB\-\-song_format\fR format
Print the song data in a specific format (see config file).
.TP
\fB\-\-song_shorthand\fR on/off
Print the Artist/Album/Title on separate lines.
.TP
\fB\-\-memory_percent\fR on/off
Display memory percentage.
.TP
\fB\-\-memory_unit\fR kib/mib/gib
Memory output unit.
.TP
\fB\-\-music_player\fR player\-name
Manually specify a player to use.
Available values are listed in the config file
.TP
\fB\-\-install_time\fR on/off
Enable/Disable showing the time in Install Date output.
.TP
\fB\-\-install_time_format\fR 12h/24h
Set time format in Install Date to be 12 hour or 24 hour.
.SS "TEXT FORMATTING:"
.TP
\fB\-\-colors\fR x x x x x x
@ -184,17 +144,11 @@ Character to use when underlining title
.TP
\fB\-\-bold\fR on/off
Enable/Disable bold text
.TP
\fB\-\-separator\fR string
Changes the default ':' separator to the specified string.
.SS "COLOR BLOCKS:"
.TP
\fB\-\-color_blocks\fR on/off
Enable/Disable the color blocks
.TP
\fB\-\-col_offset\fR auto/num
Left\-padding of color blocks
.TP
\fB\-\-block_width\fR num
Width of color blocks in spaces
.TP
@ -218,6 +172,10 @@ Length in spaces to make the bars.
Colors to make the bar.
Set in this order: elapsed, total
.TP
\fB\-\-cpu_display\fR mode
Bar mode.
Possible values: bar, infobar, barinfo, off
.TP
\fB\-\-memory_display\fR mode
Bar mode.
Possible values: bar, infobar, barinfo, off
@ -233,18 +191,16 @@ Possible values: bar, infobar, barinfo, off
.TP
\fB\-\-backend\fR backend
Which image backend to use.
Possible values: 'ascii', 'caca', 'catimg', 'chafa', 'jp2a',
\&'iterm2', 'off', 'sixel', 'tycat', 'w3m', 'kitty', 'viu'
Possible values: 'ascii', 'caca', 'catimg', 'jp2a', 'iterm2', 'off',
\&'sixel', 'tycat', 'w3m'
.TP
\fB\-\-source\fR source
Which image or ascii file to use.
Possible values: 'auto', 'ascii', 'wallpaper', '/path/to/img',
\&'/path/to/ascii', '/path/to/dir/', 'command output' [ascii]
\&'/path/to/ascii', '/path/to/dir/'
.TP
\fB\-\-ascii\fR source
Shortcut to use 'ascii' backend.
.IP
NEW: neofetch \fB\-\-ascii\fR "$(fortune | cowsay \fB\-W\fR 30)"
.TP
\fB\-\-caca\fR source
Shortcut to use 'caca' backend.
@ -252,9 +208,6 @@ Shortcut to use 'caca' backend.
\fB\-\-catimg\fR source
Shortcut to use 'catimg' backend.
.TP
\fB\-\-chafa\fR source
Shortcut to use 'chafa' backend.
.TP
\fB\-\-iterm2\fR source
Shortcut to use 'iterm2' backend.
.TP
@ -264,9 +217,6 @@ Shortcut to use 'jp2a' backend.
\fB\-\-kitty\fR source
Shortcut to use 'kitty' backend.
.TP
\fB\-\-pot\fR source
Shortcut to use 'pot' backend.
.TP
\fB\-\-pixterm\fR source
Shortcut to use 'pixterm' backend.
.TP
@ -282,14 +232,8 @@ Shortcut to use 'tycat' backend.
\fB\-\-w3m\fR source
Shortcut to use 'w3m' backend.
.TP
\fB\-\-ueberzug\fR source
Shortcut to use 'ueberzug' backend
.TP
\fB\-\-viu\fR source
Shortcut to use 'viu' backend
.TP
\fB\-\-off\fR
Shortcut to use 'off' backend (Disable ascii art).
Shortcut to use 'off' backend.
.IP
NOTE: 'source; can be any of the following: 'auto', 'ascii', 'wallpaper', '/path/to/img',
\&'/path/to/ascii', '/path/to/dir/'
@ -300,51 +244,18 @@ Colors to print the ascii art
.TP
\fB\-\-ascii_distro\fR distro
Which Distro's ascii art to print
.TP
NOTE: AIX, Hash, Alpine, AlterLinux, Amazon, Anarchy, Android, instantOS,
Antergos, antiX, "AOSC OS", "AOSC OS/Retro", Apricity, ArchCraft,
ArcoLinux, ArchBox, ARCHlabs, ArchStrike, XFerience, ArchMerge, Arch,
Artix, Arya, Bedrock, Bitrig, BlackArch, BLAG, BlankOn, BlueLight,
bonsai, BSD, BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover, Condres,
Container_Linux, CRUX, Cucumber, dahlia, Debian, Deepin, DesaOS,
Devuan, DracOS, DarkOs, Itc, DragonFly, Drauger, Elementary,
EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra, HydroOS,
Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion, Korora,
KSLinux, Kubuntu, LEDE, LaxerOS, LibreELEC, LFS, Linux_Lite, LMDE,
Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, Manjaro, TeArch, Maui,
Mer, Minix, LinuxMint, Live_Raizo, MX_Linux, Namib, Neptune, NetBSD,
Netrunner, Nitrux, NixOS, Nurunner, NuTyX, OBRevenge, OpenBSD,
openEuler, OpenIndiana, openmamba, OpenMandriva, OpenStage, OpenWrt,
osmc, Oracle, OS Elbrus, PacBSD, Parabola, Pardus, Parrot, Parsix,
TrueOS, PCLinuxOS, Pengwin, Peppermint, Pisi, popos, Porteus, PostMarketOS,
Proxmox, Puppy, PureOS, Qubes, Quibian, Radix, Raspbian, Reborn_OS,
Redstar, Redcore, Redhat, Refracted_Devuan, Regata, Regolith, Rosa,
sabotage, Sabayon, Sailfish, SalentOS, Scientific, Septor,
SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, SmartOS,
Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, openSUSE_Leap,
t2, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, Trisquel,
Ubuntu\-Cinnamon, Ubuntu\-Budgie, Ubuntu\-GNOME, Ubuntu\-MATE,
Ubuntu\-Studio, Ubuntu, Univention, Venom, Void, VNux, semc, Obarun,
windows10, Windows7, Xubuntu, Zorin, and IRIX have ascii logos.
.IP
NOTE: Arch, Ubuntu, Redhat, Fedora and Dragonfly have 'old' logo variants.
NOTE: Arch and Ubuntu have 'old' logo variants.
.IP
NOTE: Use '{distro name}_old' to use the old logos.
NOTE: Use 'arch_old' or 'ubuntu_old' to use the old logos.
.IP
NOTE: Ubuntu has flavor variants.
.TP
NOTE: Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu\-GNOME,
Ubuntu\-Studio, Ubuntu\-Mate or Ubuntu\-Budgie to use the flavors.
NOTE: Change this to 'Lubuntu', 'Xubuntu', 'Ubuntu\-GNOME',
\&'Ubuntu\-Studio' or 'Ubuntu\-Budgie' to use the flavors.
.TP
NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
Artix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
postmarketOS, and Void have a smaller logo variant.
NOTE: Alpine, Arch, CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS,
OpenBSD, and Void have a smaller logo variant.
.IP
NOTE: Use '{distro name}_small' to use the small variants.
.TP
@ -353,6 +264,8 @@ Whether or not to bold the ascii logo.
.TP
\fB\-L\fR, \fB\-\-logo\fR
Hide the info text and only show the ascii logo.
.IP
Possible values: bar, infobar, barinfo, off
.SS "IMAGE:"
.TP
\fB\-\-loop\fR
@ -363,9 +276,6 @@ in some terminals emulators when using image mode.
How to size the image.
Possible values: auto, 00px, 00%, none
.TP
\fB\-\-catimg_size\fR 1/2
Change the resolution of catimg.
.TP
\fB\-\-crop_mode\fR mode
Which crop mode to use
Takes the values: normal, fit, fill
@ -395,6 +305,19 @@ closer to the left side.
.TP
\fB\-\-clean\fR
Delete cached files and thumbnails.
.SS "SCREENSHOT:"
.TP
\fB\-s\fR, \fB\-\-scrot\fR \fI\,/path/to/img\/\fP
Take a screenshot, if path is left empty the screenshot function will use $scrot_dir and $scrot_name.
.TP
\fB\-su\fR, \fB\-\-upload\fR \fI\,/path/to/img\/\fP
Same as \fB\-\-scrot\fR but uploads the scrot to a website.
.TP
\fB\-\-image_host\fR imgur/teknik
Website to upload scrots to.
.TP
\fB\-\-scrot_cmd\fR cmd
Screenshot program to launch
.SS "OTHER:"
.TP
\fB\-\-config\fR \fI\,/path/to/config\/\fP
@ -403,12 +326,6 @@ Specify a path to a custom config file
\fB\-\-config\fR none
Launch the script without a config file
.TP
\fB\-\-no_config\fR
Don't create the user config file.
.TP
\fB\-\-print_config\fR
Print the default config file to stdout.
.TP
\fB\-\-stdout\fR
Turn off all colors and disables any ASCII/image backend.
.TP

7
tests/test.sh Executable file
View file

@ -0,0 +1,7 @@
#!/usr/bin/env bash
#
# Run all tests.
./test_misc.sh
[[ -f /tmp/err ]] || exit 0 && { rm /tmp/err; exit 1; }

32
tests/test_misc.sh Executable file
View file

@ -0,0 +1,32 @@
#!/usr/bin/env bash
#
# Test misc functions.
source test_util.sh
source ../neofetch
# Tests only work on Linux for now.
os="Linux"
test_convert_time() {
# 24 hour time.
result="$(convert_time "2016" "04" "14" "23:50")"
assert_equals "$result" "Thu 14 Apr 2016 23:50"
# 12 hour time.
install_time_format="12h"
result="$(convert_time "2016" "04" "14" "23:50")"
assert_equals "$result" "Thu 14 Apr 2016 11:50 PM"
}
test_get_ppid() {
result="$(trim "$(get_ppid "1")")"
assert_equals "$result" "0"
}
printf "%s\\n" "Test MISC functions."
test_convert_time
test_get_ppid

11
tests/test_util.sh Executable file
View file

@ -0,0 +1,11 @@
#!/usr/bin/env bash
#
# Test util functions.
assert_equals() {
# Test equality.
local status
[[ "$1" == "$2" ]] && status="✔"
printf "%s\\n" " ${status:-} : ${FUNCNAME[1]}"
[[ "$1" == "$2" ]] || { :>/tmp/err; return 1; } && return 0
}