This is another large release containing over `550` commits from 7 contributors. Due to the size and large amount of changes made this release expect at least one minor release to fix any bugs that come up.
The version number has been bumped to `3.0` due to the large amount of breaking changes introduced this update. I've added backwards compatibility for all of the new changes but there may still be some breakage. I highly recommend starting with a new config to avoid any issues that may arise.
Neofetch now supports displaying images using `catimg`, `libcaca` and `jp2a`. See this wiki page for screenshots. https://github.com/dylanaraps/neofetch/wiki/Image-Backends
Thanks to everyone who contributed this release, there were a lot of new faces this time around. :)
Neofetch now has an IRC channel at `#neofetch` on Freenode. If you have any questions, issues or ideas feel free to join the IRC channel and I'll be happy to assist you. I know that we've already got the Gitter chat but hopefully this makes things easier for those without a GitHub account. :)
I have given collaborator access to both **[@konimex](https://github.com/konimex)** and **[@iandrewt](https://github.com/iandrewt)**. In short this allows them to push directly to the master branch of the repo, manage the issue tracker and also merge pull requests. They've been a huge help the past year so this made sense to me.
## OS
- Added support for AIX.
- Added support for AntiX.
- Added support for GNU/kFreeBSD.
- Added support for Gentoo FreeBSD.
- Added support for GrombyangOS.
- Added support for Joyent SmartOS.
- Added support for Mer.
- Added support for MINIX.
- Added support for MX.
- Added support for Open Source Media Center (OSMC).
- Added support for SalentOS.
- Added support for TrueOS.
- Added support for Windows (MSYS2).
## General
- The default config file is now installed to `/etc/neofetch/config` and acts as a system-wide config file for Neofetch. Editing this file will make the changes available to all users on the system. Those packaging Neofetch **without** using the Makefile will need to make changes to support this.
- The Makefile was rewritten to remove GNU-isms.
- Removed executable permission from config files. BASH can source them even if they're un-executable.
- Travis now runs [shellcheck](https://github.com/koalaman/shellcheck) on every commit and pull request.
- We've had to exclude around 10 lint errors, see this wiki page for why we did this:
- Neofetch now supports relative path values when specifying the location to images, ascii files and config files.
- For example, `neofetch --w3m Pictures/Wallpapers/10.jpg` and `neofetch --w3m 10.jpg` now work.
- Optimize usage of `get_de()`, `get_wm()` and `get_term().
- We were calling these multiple times, we now only run them once and check to see if they were run previously.
- Optimize info caching, only check for cache files in functions that use caching.
- The manpage is now generated using `help2man`. `help2man` parses the output of `--help` and `--version` to create a manpage. This ensures that our manpage stays 1:1 with the script documentation. We actually found a lot of outdated info in the old manpage thanks to this.
- A new flag was added called `--gen-man` which generates a neofetch manpage in your current directory.
- Delete most of `info()` and instead call `prin()`.
- This removes a lot of duplicate code between `info()` and `prin()`.
- Remove `printf` subshells and instead use `printf -v` to declare the variables.
- Removed all `date` command usage from `get_install_date()`.
- Added a new function called `convert_time()` which takes the time stamped `ls` output and converts it to a pretty format. The function only uses bash so its much faster than calling `date`. This makes things simple and keeps the output consistent across all Operating Systems. Example: `2016-12-06 16:58:58.000000000` --> `Tue 06 Dec 2016 4:58 PM`
- Added an option so users can choose between using 24-hour and 12-hour time format
- `get_install_date()` will detect which `ls` program is being used instead of hardcoding them per OS.
**Disk**<br \>
- Rewrote function from scratch.
- The function is `40` lines smaller than before and works on all \[1\] versions of `df` we tested on \[2\].
- Added the option/flag `disk_show` which allows you to specify which disks, mount points or directories to show the disk info of. (One per line)
- Added the option/flag `disk_subtitle` which allows you to specify how we label each disk. (Mount point or Disk name)
- Removed all percentage calculation since `df` already provides us with the percentage.
- Warn the user if `df` isn't installed.
- Fixed broken output if `df` wasn't installed but the function was enabled.
\[1\] The function doesn't work on Haiku since their `df` is wildly non-standard. (The output format and flags are 100% different from all of the other `df` versions floating around.)
\[2\] Tested on `GNU`, `Busybox`, `BSD`, `Solaris` and `macOS` `df` versions.
**Theme**<br \>
- [KDE] Don't display GTK Themes if KDE is detected.
- [KDE] If `kde[0-9]-config` isn't found, try and look for `$HOME/.kde`.
**Window Manager Theme**<br \>
- Fixed WM Theme not detected on MATE. **[@mstraube](https://github.com/mstraube)**
- Fixed WM Theme detection on KDE. **[@mstraube](https://github.com/mstraube)**
**Song**<br \>
- Added support for xmms2. **[@z33ky](https://github.com/z33ky)**
- Added support for Exaile music player. **[@mstraube](https://github.com/mstraube)**
- Added support for JuK .**[@mstraube](https://github.com/mstraube)**
- Added support for Bluemindo. **[@mstraube](https://github.com/mstraube)**
- Added support for Guayadeque Player. **[@mstraube](https://github.com/mstraube)**
- Added support for Yarock. **[@mstraube](https://github.com/mstraube)**
- Added support for Qmmp. **[@mstraube](https://github.com/mstraube)**
- Added support for QuodLibet. **[@mstraube](https://github.com/mstraube)**
- Added support for Mopidy. **[@d3rrial](https://github.com/d3rrial)**