diff --git a/CHANGELOG.md b/CHANGELOG.md
index 063d6206..c2aac2be 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,7 +3,7 @@
- **[@konimex](https://github.com/konimex)**
- **[@iandrewt](https://github.com/iandrewt)**
- **[@jorgegonzalez](https://github.com/jorgegonzalez)**
-
+- **[@z33ky](https://github.com/z33ky)**
## IRC
@@ -69,7 +69,7 @@ Neofetch now has an irc channel at `#neofetch` on Freenode. If you have any ques
**~~Birthday~~ Install Date**
- Renamed `get_birthday()` -- > `get_install_date()`
-- Removed all `date` usage from `get_install_date()`.
+- Removed all `date` 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`
**Disk**
@@ -93,6 +93,7 @@ Neofetch now has an irc channel at `#neofetch` on Freenode. If you have any ques
- [cmus] Simplify block and fix `artistsort` bug.
- Removed `state` detection.
- Removed duplicate `dbus-send` commands.
+- Added support for xmms2. **[@z33ky](https://github.com/z33ky)**
**Battery**
diff --git a/neofetch b/neofetch
index 1da53997..8982916f 100755
--- a/neofetch
+++ b/neofetch
@@ -16,9 +16,8 @@ XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-${HOME}/.config}"
export LC_ALL=C
export LANG=C
-# Set PATH to binary directories only
-# This solves issues with neofetch opening the pacman game.
-export PATH="/usr/sbin:/usr/bin:/sbin:/bin"
+# Add /usr/sbin and /sbin to PATH.
+export PATH="/usr/sbin:/sbin:${PATH}"
# Set no case match.
shopt -s nocasematch
@@ -379,6 +378,14 @@ get_uptime() {
}
get_packages() {
+ # Remove /usr/games from $PATH.
+ # This solves issues with neofetch opening the
+ # 'pacman' game.
+ local PATH=":${PATH}:"
+ local PATH="${PATH/':/usr/games:'/:}"
+ local PATH="${PATH%:}"
+ local PATH="${PATH#:}"
+
case "$os" in
"Linux" | "iPhone OS" | "Solaris")
type -p pacman >/dev/null && \
@@ -498,6 +505,7 @@ get_shell() {
if [[ "$shell_version" == "on" ]]; then
case "${SHELL##*/}" in
"bash") shell+="${BASH_VERSION/-*}" ;;
+ "sh") ;;
"mksh" | "ksh")
shell+="$("$SHELL" -c 'printf "%s" "$KSH_VERSION"')"
@@ -1144,7 +1152,7 @@ get_memory() {
get_song() {
# This is absurdly long.
- player="$(ps x | awk '!(/awk|Helper|Cache/) && /mpd|cmus|mocp|spotify|Google Play|iTunes.app|rhythmbox|banshee|amarok|deadbeef|audacious|gnome-music|lollypop|clementine|pragha/ {printf $5 " " $6; exit}')"
+ player="$(ps x | awk '!(/awk|Helper|Cache/) && /mpd|cmus|mocp|spotify|Google Play|iTunes.app|rhythmbox|banshee|amarok|deadbeef|audacious|xmms2d|gnome-music|lollypop|clementine|pragha/ {printf $5 " " $6; exit}')"
get_song_dbus() {
# Multiple players use an almost identical dbus command to get the information.
@@ -1165,6 +1173,7 @@ get_song() {
"rhythmbox"*) song="$(rhythmbox-client --print-playing)" ;;
"deadbeef"*) song="$(deadbeef --nowplaying '%a - %t')" ;;
"audacious"*) song="$(audtool current-song)" ;;
+ "xmms2d"*) song="$(xmms2 current -f '${artist} - ${title}')" ;;
"gnome-music"*) get_song_dbus "GnomeMusic" ;;
"lollypop"*) get_song_dbus "Lollypop" ;;
"clementine"*) get_song_dbus "clementine" ;;
@@ -1272,7 +1281,7 @@ get_resolution() {
height="$(wmic path Win32_VideoController get CurrentVerticalResolution /value)"
height="${height//CurrentVerticalResolution'='/}"
- [[ "$width" ]] && resolution="${width}x${height}"
+ [[ "$(trim "$width")" ]] && resolution="${width}x${height}"
;;
"Haiku")
@@ -1482,7 +1491,7 @@ get_term() {
case "${name// }" in
"${SHELL/*\/}" | *"sh" | "tmux"* | "screen" | "su") get_term "$parent" ;;
- "login"* | *"Login"* | "init") term="$(tty)" ;;
+ "login"* | *"Login"* | "init" | "(init)") term="$(tty)" ;;
"ruby" | "1" | "systemd" | "sshd"* | "python"* | "USER"*"PID"*) unset term ;;
"gnome-terminal-") term="gnome-terminal" ;;
*) term="${name##*/}" ;;
@@ -1543,10 +1552,16 @@ get_term_font() {
get_disk() {
type -p df >/dev/null 2>&1 || { err "Disk requires 'df' to function. Install 'df' to get disk info."; return; }
- [[ "$os" == "Haiku" ]] && { err "Disk doesn't work on Haiku due to the non-standard 'df'"; return; }
+
+ # Get 'df' flags.
+ case "$os" in
+ "Haiku") err "Disk doesn't work on Haiku due to the non-standard 'df'"; return ;;
+ "Minix") df_flags=(-h) ;;
+ *) df_flags=(-P -h) ;;
+ esac
# Get the info for /
- disks=($(df -P -h /)) || { err "Disk: 'df' exited with error code 1"; return; }
+ disks=($(df "${df_flags[@]}" /)) || { err "Disk: 'df' exited with error code 1"; return; }
# Put it all together
disk_perc="${disks[11]/'%'}"
@@ -1622,7 +1637,7 @@ get_battery() {
"Windows")
battery="$(wmic Path Win32_Battery get EstimatedChargeRemaining /value)"
battery="${battery/EstimatedChargeRemaining'='}"
- [[ "$battery" ]] && battery+="%"
+ [[ "$(trim "$battery")" ]] && battery="%"
;;
"Haiku")
@@ -1648,6 +1663,10 @@ get_local_ip() {
[[ -z "$local_ip" ]] && local_ip="$(ifconfig | awk '/broadcast/ {print $2}')"
;;
+ "MINIX")
+ local_ip="$(ifconfig | awk '{printf $3; exit}')"
+ ;;
+
"Mac OS X" | "iPhone OS")
local_ip="$(ipconfig getifaddr en0)"
[[ -z "$local_ip" ]] && local_ip="$(ipconfig getifaddr en1)"
@@ -2791,8 +2810,7 @@ get_term_padding() {
case "$term" in
"URxvt"*)
- border="$(xrdb -query | grep -i "\(URxvt\|\*\)\.InternalBorder")"
- border="${border/*:}"
+ border="$(xrdb -query | awk -F ':' '/^(URxvt|\*).internalBorder/ {printf $2; exit}')"
;;
esac
}