Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
neofetch
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ximper Linux
neofetch
Commits
93e4f416
Commit
93e4f416
authored
Aug 07, 2017
by
Dylan Araps
Committed by
GitHub
Aug 07, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #797 from dylanaraps/100
cleanup: Enforce a line length of '100'
parents
0dd98bb0
6ba15d6e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
367 additions
and
177 deletions
+367
-177
.travis.yml
.travis.yml
+5
-1
neofetch
neofetch
+338
-161
neofetch.1
neofetch.1
+24
-15
No files found.
.travis.yml
View file @
93e4f416
...
...
@@ -20,4 +20,8 @@ script:
-
time ./neofetch --ascii --config config/travis.conf -v
# 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; fi
-
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then shellcheck neofetch -e SC1090,SC2009,SC2012,SC2016,SC2034,SC2128,SC2153,SC2154,SC2178,SC2010,SC1004; 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.
-
if grep '.\{101\}' neofetch; then (exit 1); else (exit 0); fi
neofetch
View file @
93e4f416
...
...
@@ -20,8 +20,8 @@ old_ifs="$IFS"
export
LC_ALL
=
C
export
LANG
=
C
# Add
/usr/xpg4/bin, /usr/sbin, /sbin, and /usr/etc to
PATH.
export
PATH
=
"/usr/xpg4/bin:/usr/sbin:/sbin:/usr/etc:
${
PATH
}
"
# Add
more paths to $
PATH.
export
PATH
=
"/usr/xpg4/bin:/usr/sbin:/sbin:/usr/etc:
/usr/libexec:
${
PATH
}
"
# Set no case match.
shopt
-s
nocasematch
...
...
@@ -57,7 +57,8 @@ get_distro() {
case
"
$os
"
in
"Linux"
|
"BSD"
|
"MINIX"
)
if
[[
"
$(
< /proc/version
)
"
==
*
"Microsoft"
*
||
"
$kernel_version
"
==
*
"Microsoft"
*
]]
;
then
if
[[
"
$(
< /proc/version
)
"
==
*
"Microsoft"
*
||
"
$kernel_version
"
==
*
"Microsoft"
*
]]
;
then
case
"
$distro_shorthand
"
in
"on"
)
distro
=
"
$(
lsb_release
-sir
)
[Windows 10]"
;;
"tiny"
)
distro
=
"Windows 10"
;;
...
...
@@ -114,8 +115,10 @@ get_distro() {
distro
=
"Android
$(
getprop ro.build.version.release
)
"
elif
[[
-f
"/etc/os-release"
||
-f
"/usr/lib/os-release"
]]
;
then
files
=(
"/etc/os-release"
"/usr/lib/os-release"
)
# Source the os-release file
for
file
in
/etc/os-release /usr/lib/os-release
;
do
for
file
in
"
${
files
[@]
}
"
;
do
source
"
$file
"
&&
break
done
...
...
@@ -127,8 +130,8 @@ get_distro() {
esac
# Workarounds for distros that go against the os-release standard.
[[
-z
"
${
distro
//
}
"
]]
&&
distro
=
"
$(
awk
'/BLAG/ {print $1; exit}'
/etc/os-release /usr/lib/os-release
)
"
[[
-z
"
${
distro
//
}
"
]]
&&
distro
=
"
$(
awk
-F
'='
'{print $2; exit}'
/etc/os-release /usr/lib/os-release
)
"
[[
-z
"
${
distro
//
}
"
]]
&&
distro
=
"
$(
awk
'/BLAG/ {print $1; exit}'
)
"
"
${
files
[@]
}
"
[[
-z
"
${
distro
//
}
"
]]
&&
distro
=
"
$(
awk
-F
'='
'{print $2; exit}'
)
"
"
${
files
[@]
}
"
else
for
release_file
in
/etc/
*
-release
;
do
...
...
@@ -145,7 +148,9 @@ get_distro() {
# Workarounds for FreeBSD based distros.
[[
-f
"/etc/pcbsd-lang"
]]
&&
distro
=
"PCBSD"
[[
-f
"/etc/rc.conf.trueos"
]]
&&
distro
=
"TrueOS"
[[
-f
"/etc/pacbsd-release"
]]
&&
distro
=
"PacBSD"
# /etc/pacbsd-release is an empty file
# /etc/pacbsd-release is an empty file
[[
-f
"/etc/pacbsd-release"
]]
&&
distro
=
"PacBSD"
fi
fi
distro
=
"
$(
trim_quotes
"
$distro
"
)
"
...
...
@@ -493,9 +498,6 @@ get_packages() {
type -p pacman-g2 >/dev/null &&
\
packages="
$((
packages+
=
$(
pacman-g2
-Q
|
wc
-l
)))
"
type -p cave >/dev/null &&
\
packages="
$((
packages+
=
$(
ls
-d
-1
/var/db/paludis/repositories/cross-installed/
*
/data/
*
/var/db/paludis/repositories/installed/data/
*
|
wc
-l
)))
"
type -p lvu >/dev/null &&
\
packages="
$((
packages+
=
$(
lvu installed |
wc
-l
)))
"
...
...
@@ -523,6 +525,11 @@ get_packages() {
type -p alps >/dev/null &&
\
packages="
$((
packages+
=
$(
alps showinstalled |
wc
-l
)))
"
if type -p cave >/dev/null; then
package_dir=(/var/db/paludis/repositories/{cross-installed,installed}/*/data/*)
packages="
$((
packages+
=
$(
ls
-d
-1
"
${
package_dir
[@]
}
"
|
wc
-l
)))
"
fi
if type -p pkg >/dev/null; then
case "
$kernel_name
" in
"
FreeBSD
") packages="
$((
packages+
=
$(
pkg info |
wc
-l
)))
" ;;
...
...
@@ -697,7 +704,11 @@ get_wm() {
;;
"Windows"
)
wm=
"
$(
tasklist |
grep
-m
1
-o
-F
-e
"bugn"
-e
"Windawesome"
-e
"blackbox"
-e
"emerge"
-e
"litestep"
)
"
wm=
"
$(
tasklist |
grep
-m
1
-o
-F
-e
"bugn"
\
-e
"Windawesome"
\
-e
"blackbox"
\
-e
"emerge"
\
-e
"litestep"
)
"
[[
"
$wm
"
==
"blackbox"
]] && wm=
"bbLean (Blackbox)"
wm=
"
${
wm
:+
$wm
,
}
Explorer"
;;
...
...
@@ -713,8 +724,14 @@ get_wm_theme() {
((de_run != 1)) && get_de
case "
$wm
" in
"
E16
") wm_theme="
$(
awk
-F
"= "
'/theme.name/ {print $2}'
"
${
HOME
}
/.e16/e_config--0.0.cfg"
)
";;
"
Sawfish
") wm_theme="
$(
awk
-F
")"
'/\(quote default-frame-style/ {print $2}'
"
${
HOME
}
/.sawfish/custom"
)
" ;;
"
E16
")
wm_theme="
$(
awk
-F
"= "
'/theme.name/ {print $2}'
"
${
HOME
}
/.e16/e_config--0.0.cfg"
)
"
;;
"
Sawfish
")
wm_theme="
$(
awk
-F
")"
'/\(quote default-frame-style/ {print $2}'
\
"
${
HOME
}
/.sawfish/custom"
)
"
;;
"
Cinnamon
" | "
Muffin
" | "
Mutter
(Muffin)
")
detheme="
$(
gsettings get org.cinnamon.theme name
)
"
...
...
@@ -748,7 +765,8 @@ get_wm_theme() {
"E17" | "Enlightenment")
if type -p eet >/dev/null; then
wm_theme="$(eet -d "${HOME}/.e/e/config/standard/e.cfg" config | awk '
/value \
"file
\"
string.*.edj/ {print
$4
}')"
wm_theme="$(eet -d "${HOME}/.e/e/config/standard/e.cfg" config |\
awk '
/value \
"file
\"
string.*.edj/ {print
$4
}')"
wm_theme=
"
${
wm_theme
##*/
}
"
wm_theme=
"
${
wm_theme
%.*
}
"
fi
...
...
@@ -772,12 +790,13 @@ get_wm_theme() {
ob_file=
"rc"
fi
wm_theme=
"
$(
awk
-F
"[<,>]"
'/<theme/ {getline; print $3}'
"
${
XDG_CONFIG_HOME
}
/openbox/
${
ob_file
}
.xml"
)
"
;
wm_theme=
"
$(
awk
-F
"[<,>]"
'/<theme/ {getline; print $3}'
\
"
${
XDG_CONFIG_HOME
}
/openbox/
${
ob_file
}
.xml"
)
"
;
;;
"PekWM"
)
[[ -f
"
${
HOME
}
/.pekwm/config"
]] && \
wm_theme=
"
$(
awk
-F
"/"
'/Theme/
{gsub(/\"/,""); print $NF}'
"
${
HOME
}
/.pekwm/config"
)
"
wm_theme=
"
$(
awk
-F
"/"
'/Theme/{gsub(/\"/,""); print $NF}'
"
${
HOME
}
/.pekwm/config"
)
"
;;
"Xfwm4"
)
...
...
@@ -787,19 +806,29 @@ get_wm_theme() {
"KWin"
*)
kde_config_dir
if [[ -f
"
${
kde_config_dir
}
/kwinrc"
]]; then
wm_theme=
"
$(
awk
'/theme=/{gsub(/theme=.*qml_|theme=.*svg__/,"",$0); print $0; exit}'
"
${
kde_config_dir
}
/kwinrc"
)
"
[[ -z
"
$wm_theme
"
]] && wm_theme=
"
$(
awk
'/library=org.kde/{gsub(/library=org.kde./,"",$0); print $0; exit}'
"
${
kde_config_dir
}
/kwinrc"
)
"
[[ -z
"
$wm_theme
"
]] && wm_theme=
"
$(
awk
'/PluginLib=kwin3_/{gsub(/PluginLib=kwin3_/,"",$0); print $0; exit}'
"
${
kde_config_dir
}
/kwinrc"
)
"
elif [[ -f
"
${
kde_config_dir
}
/kdebugrc"
]]; then
wm_theme=
"
$(
awk
'/(decoration)/ {gsub(/\[/,"",$1); print $1; exit}'
"
${
kde_config_dir
}
/kdebugrc"
)
"
kwinrc=
"
${
kde_config_dir
}
/kwinrc"
kdebugrc=
"
${
kde_config_dir
}
/kdebugrc"
if [[ -f
"
$kwinrc
"
]]; then
wm_theme=
"
$(
awk
'/theme=/{gsub(/theme=.*qml_|theme=.*svg__/,"",$0);\
print $0; exit}'
"
$kwinrc
"
)
"
[[ -z
"
$wm_theme
"
]] && \
wm_theme=
"
$(
awk
'/library=org.kde/{gsub(/library=org.kde./,"",$0);\
print $0; exit}'
"
$kwinrc
"
)
"
[[ -z
"
$wm_theme
"
]] && \
wm_theme=
"
$(
awk
'/PluginLib=kwin3_/{gsub(/PluginLib=kwin3_/,"",$0);\
print $0; exit}'
"
$kwinrc
"
)
"
elif [[ -f
"
$kdebugrc
"
]]; then
wm_theme=
"
$(
awk
'/(decoration)/ {gsub(/\[/,"",$1); print $1; exit}'
"
$kdebugrc
"
)
"
fi
;;
"Quartz Compositor"
)
wm_theme=
"
$(
/usr/libexec/PlistBuddy
-c
"Print AppleAquaColorVariant"
~/Library/Preferences/.GlobalPreferences.plist
)
"
wm_theme=
"
$(
PlistBuddy
-c
"Print AppleAquaColorVariant"
\
"
${
HOME
}
/Library/Preferences/.GlobalPreferences.plist"
)
"
if [[ -z
"
$wm_theme
"
]] || ((wm_theme == 1)); then
wm_theme=
"Blue"
else
...
...
@@ -840,22 +869,30 @@ get_cpu() {
case
"
$os
"
in
"Linux"
|
"MINIX"
|
"Windows"
)
# Get CPU name.
case
"
$machine_arch
"
in
"frv"
|
"hppa"
|
"m68k"
|
"openrisc"
|
"or"
* |
"powerpc"
|
"ppc"
* |
"sparc"
*)
cpu=
"
$(
awk
-F
':'
'/^cpu\t|^CPU/ {printf $2; exit}'
/proc/cpuinfo
)
"
;;
"s390"
*)
cpu=
"
$(
awk
-F
'='
'/machine/ {print $4; exit}'
/proc/cpuinfo
)
"
;;
"ia64"
|
"m32r"
)
cpu=
"
$(
awk
-F
':'
'/model/ {print $2; exit}'
/proc/cpuinfo
)
"
[[ -z
"
$cpu
"
]] && cpu=
"
$(
awk
-F
':'
'/family/ {printf $2; exit}'
/proc/cpuinfo
)
"
;;
*)
cpu=
"
$(
awk
-F
': | @'
'/model name|Processor|^cpu model|chip type|^cpu type/ {printf $2; exit}'
/proc/cpuinfo
)
"
[[
"
$cpu
"
== *
"processor rev"
* ]] && cpu=
"
$(
awk
-F
':'
'/Hardware/ {print $2; exit}'
/proc/cpuinfo
)
"
;;
esac
cpu_file=
"/proc/cpuinfo"
case
"
$machine_arch
"
in
"frv"
|
"hppa"
|
"m68k"
|
"openrisc"
|
"or"
* |
"powerpc"
|
"ppc"
* |
"sparc"
*)
cpu=
"
$(
awk
-F
':'
'/^cpu\t|^CPU/ {printf $2; exit}'
"
$cpu_file
"
)
"
;;
"s390"
*)
cpu=
"
$(
awk
-F
'='
'/machine/ {print $4; exit}'
"
$cpu_file
"
)
"
;;
"ia64"
|
"m32r"
)
cpu=
"
$(
awk
-F
':'
'/model/ {print $2; exit}'
"
$cpu_file
"
)
"
[[ -z
"
$cpu
"
]] && cpu=
"
$(
awk
-F
':'
'/family/ {printf $2; exit}'
"
$cpu_file
"
)
"
;;
*)
cpu=
"
$(
awk
-F
': | @'
'/model name|Processor|^cpu model|chip type|^cpu type/\
{printf $2; exit}'
"
$cpu_file
"
)
"
[[
"
$cpu
"
== *
"processor rev"
* ]] && \
cpu=
"
$(
awk
-F
':'
'/Hardware/ {print $2; exit}'
"
$cpu_file
"
)
"
;;
esac
speed_dir=
"/sys/devices/system/cpu/cpu0/cpufreq"
temp_dir=
"/sys/class/hwmon/hwmon0/temp1_input"
...
...
@@ -863,14 +900,14 @@ get_cpu() {
# Get CPU speed.
if [[ -d
"
$speed_dir
"
]]; then
# Fallback to bios_limit if
$speed_type
fails.
speed=
"
$(
<
"
${
speed_dir
}
/
${
speed_type
}
"
)
"
||
\
speed=
"
$(
<
"
${
speed_dir
}
/bios_limit"
)
"
||
\
speed=
"
$(
<
"
${
speed_dir
}
/scaling_max_freq"
)
"
||
\
speed=
"
$(
<
"
${
speed_dir
}
/
${
speed_type
}
"
)
"
||\
speed=
"
$(
<
"
${
speed_dir
}
/bios_limit"
)
"
||\
speed=
"
$(
<
"
${
speed_dir
}
/scaling_max_freq"
)
"
||\
speed=
"
$(
<
"
${
speed_dir
}
/cpuinfo_max_freq"
)
"
speed=
"
$((
speed
/
1000
))
"
else
speed=
"
$(
awk
-F
': |\\.'
'/cpu MHz|^clock/ {printf $2; exit}'
/proc/cpuinfo
)
"
speed=
"
$(
awk
-F
': |\\.'
'/cpu MHz|^clock/ {printf $2; exit}'
"
$cpu_file
"
)
"
speed=
"
${
speed
/MHz
}
"
fi
...
...
@@ -882,8 +919,8 @@ get_cpu() {
# Get CPU cores.
case
"
$cpu_cores
"
in
"logical"
|
"on"
) cores=
"
$(
grep
-c
"^processor"
/proc/cpuinfo
)
"
;;
"physical"
) cores=
"
$(
grep
"^core id"
/proc/cpuinfo
|
sort
-u
|
wc
-l
)
"
;;
"logical"
|
"on"
) cores=
"
$(
grep
-c
"^processor"
"
$cpu_file
"
)
"
;;
"physical"
) cores=
"
$(
grep
"^core id"
"
$cpu_file
"
|
sort
-u
|
wc
-l
)
"
;;
esac
;;
...
...
@@ -991,7 +1028,10 @@ get_cpu() {
# Get CPU cores.
case
"
$cpu_cores
"
in
"logical"
|
"on"
) cores=
"
$(
lparstat
-i
|
awk
-F
':'
'/Online Virtual CPUs/ {printf $2}'
)
"
;;
"logical"
|
"on"
)
cores=
"
$(
lparstat
-i
|
awk
-F
':'
'/Online Virtual CPUs/ {printf $2}'
)
"
;;
"physical"
) cores=
"
$(
lparstat
-i
|
awk
-F
':'
'/Active Physical CPUs/ {printf $2}'
)
"
esac
;;
...
...
@@ -1123,7 +1163,7 @@ get_gpu() {
for gpu in "
${
gpus
[@]
}
"; do
# GPU shorthand tests.
[[ "
$gpu_type
" == "
dedicated
" && "
$gpu
" =~ (i|I)ntel ]] ||
\
[[ "
$gpu_type
" == "
dedicated
" && "
$gpu
" =~ (i|I)ntel ]] ||
\
[[ "
$gpu_type
" == "
integrated
" && ! "
$gpu
" =~ (i|I)ntel ]] &&
\
{ unset -v gpu; continue; }
...
...
@@ -1177,7 +1217,8 @@ get_gpu() {
source "
${
cache_dir
}
/neofetch/gpu
"
else
gpu="
$(
system_profiler SPDisplaysDataType |
awk
-F
': '
'/^\ *Chipset Model:/ {printf $2 ", "}'
)
"
gpu="
$(
system_profiler SPDisplaysDataType |
\
awk
-F
': '
'/^\ *Chipset Model:/ {printf $2 ", "}'
)
"
gpu="
${
gpu
//
'/ $'
}
"
gpu="
${
gpu
%,*
}
"
...
...
@@ -1223,7 +1264,8 @@ get_gpu() {
;;
"
Haiku
")
gpu="
$(
listdev |
grep
-A2
-F
'device Display controller'
|
awk
-F
':'
'/device beef/ {print $2}'
)
"
gpu="
$(
listdev |
grep
-A2
-F
'device Display controller'
|
\
awk
-F
':'
'/device beef/ {print $2}'
)
"
;;
*)
...
...
@@ -1258,7 +1300,9 @@ get_memory() {
case "
$a
" in
"
MemTotal
") mem_used="
$((
mem_used+
=
${
b
/kB
}))
"; mem_total="
${
b
/kB
}
" ;;
"
Shmem
") mem_used="
$((
mem_used+
=
${
b
/kB
}))
" ;;
"
MemFree
" | "
Buffers
" | "
Cached
" | "
SReclaimable
") mem_used="
$((
mem_used-
=
${
b
/kB
}))
" ;;
"
MemFree
" | "
Buffers
" | "
Cached
" | "
SReclaimable
")
mem_used="
$((
mem_used-
=
${
b
/kB
}))
"
;;
esac
done < /proc/meminfo
...
...
@@ -1283,7 +1327,10 @@ get_memory() {
# Mem free.
case "
$kernel_name
" in
"
NetBSD
"*) mem_free="
$(($(
awk
-F
':|kB'
'/MemFree:/ {printf $2}'
/proc/meminfo
)
/
1024
))
" ;;
"
NetBSD
"*)
mem_free="
$(($(
awk
-F
':|kB'
'/MemFree:/ {printf $2}'
/proc/meminfo
)
/
1024
))
"
;;
"
FreeBSD
"* | "
DragonFly
"*)
hw_pagesize="
$(
sysctl
-n
hw.pagesize
)
"
mem_inactive="
$(($(
sysctl
-n
vm.stats.vm.v_inactive_count
)
*
hw_pagesize
))
"
...
...
@@ -1291,10 +1338,12 @@ get_memory() {
mem_cache="
$(($(
sysctl
-n
vm.stats.vm.v_cache_count
)
*
hw_pagesize
))
"
mem_free="
$((
(
mem_inactive
+
mem_unused
+
mem_cache
)
/
1024
/
1024
))
"
;;
"
MINIX
")
mem_free="
$(
top
-d
1 |
awk
-F
','
'/^Memory:/ {print $2}'
)
"
mem_free="
${
mem_free
/M Free
}
"
;;
"
OpenBSD
"*) ;;
*) mem_free="
$(($(
vmstat |
awk
'END{printf $5}'
)
/
1024
))
" ;;
esac
...
...
@@ -1344,15 +1393,19 @@ get_memory() {
}
get_song() {
# This is absurdly long.
player="
$(
ps x |
awk
'!(/ awk|Helper|Cache|ibus|indicator/) && /mpd|mopidy|cmus|mocp|spotify|Google Play|iTunes.app|rhythmbox|banshee|amarok|deadbeef|audacious|xmms2d|gnome-music|lollypop|clementine|pragha|exaile|juk|bluemindo|guayadeque|yarock|qmmp|quodlibet|deepin-music|tomahawk|pogo/ {printf $5 " " $6; exit}'
)
"
player="
$(
ps x |
awk
'!(/ awk|Helper|Cache|ibus|indicator/) && /mpd|mopidy|cmus|mocp|spotify|\
Google Play|iTunes.app|rhythmbox|banshee|amarok|deadbeef|audacious|\
xmms2d|gnome-music|lollypop|clementine|pragha|exaile|juk|bluemindo|\
guayadeque|yarock|qmmp|quodlibet|deepin-music|tomahawk|pogo/
{printf $5 " " $6; exit}'
)
"
get_song_dbus() {
# Multiple players use an almost identical dbus command to get the information.
# This function saves us using the same command throughout the function.
song="
$(
\
dbus-send
--print-reply
--dest
=
org.mpris.MediaPlayer2.
"
${
1
}
"
/org/mpris/MediaPlayer2
\
org.freedesktop.DBus.Properties.Get string:
'org.mpris.MediaPlayer2.Player'
string:
'Metadata'
|
\
org.freedesktop.DBus.Properties.Get string:
'org.mpris.MediaPlayer2.Player'
\
string:
'Metadata'
|
\
awk
-F
'string "'
'/string|array/ {printf "%s",$2; next}{print ""}'
|
\
awk
-F
'"'
'/artist/ {a=$2} /title/ {t=$2} END{print a " - " t}'
)
"
...
...
@@ -1386,7 +1439,8 @@ get_song() {
;;
"
cmus
"*)
song="
$(
cmus-remote
-Q
|
awk
'/tag artist/ {$1=$2=""; print; print " - "} /tag title/ {$1=$2=""; print}'
)
"
song="
$(
cmus-remote
-Q
|
awk
'/tag artist/ {$1=$2=""; print; print " - "}\
/tag title/ {$1=$2=""; print}'
)
"
;;
"
spotify
"*)
...
...
@@ -1394,21 +1448,25 @@ get_song() {
"
Linux
") get_song_dbus "
spotify
" ;;
"
Mac
OS X
")
song="
$(
osascript
-e
'tell application "Spotify" to artist of current track as string & " - " & name of current track as string'
)
"
song="
$(
osascript
-e
'tell application "Spotify" to artist of current track as \
string & " - " & name of current track as string'
)
"
;;
esac
;;
"
itunes
"*)
song="
$(
osascript
-e
'tell application "iTunes" to artist of current track as string & " - " & name of current track as string'
)
"
song="
$(
osascript
-e
'tell application "iTunes" to artist of current track as \
string & " - " & name of current track as string'
)
"
;;
"
banshee
"*)
song="
$(
banshee
--query-artist
--query-title
|
awk
-F
':'
'/^artist/ {a=$2} /^title/ {t=$2} END{print a " - " t}'
)
"
song="
$(
banshee
--query-artist
--query-title
|
\
awk
-F
':'
'/^artist/ {a=$2} /^title/ {t=$2} END{print a " - " t}'
)
"
;;
"
amarok
"*)
song="
$(
qdbus org.kde.amarok /Player GetMetadata |
awk
-F
':'
'/^artist/ {a=$2} /^title/ {t=$2} END{print a " - " t}'
)
"
song="
$(
qdbus org.kde.amarok /Player GetMetadata |
\
awk
-F
':'
'/^artist/ {a=$2} /^title/ {t=$2} END{print a " - " t}'
)
"
;;
"
pragha
"*)
...
...
@@ -1421,18 +1479,20 @@ get_song() {
;;
"
quodlibet
"*)
song="
$(
dbus-send
--print-reply
--dest
=
net.sacredchao.QuodLibet /net/sacredchao/QuodLibet net.sacredchao.QuodLibet.CurrentSong |
\
awk
-F
'"'
'/artist/ {getline; a=$2} /title/ {getline; t=$2} END{print a " - " t}'
)
"
song="
$(
dbus-send
--print-reply
--dest
=
net.sacredchao.QuodLibet
\
/net/sacredchao/QuodLibet net.sacredchao.QuodLibet.CurrentSong |
\
awk
-F
'"'
'/artist/ {getline; a=$2} \
/title/ {getline; t=$2} END{print a " - " t}'
)
"
;;
"
pogo
"*)
song="
$(
dbus-send
--print-reply
--dest
=
org.mpris.pogo /Player org.freedesktop.MediaPlayer.GetMetadata |
awk
-F
'"'
'/string "artist"/ {getline; a=$2} /string "title"/ {getline; t=$2} END{print a " - " t}'
)
"
song="
$(
dbus-send
--print-reply
--dest
=
org.mpris.pogo /Player
\
org.freedesktop.MediaPlayer.GetMetadata |
awk
-F
'"'
'/string "artist"/ {getline; a=$2} /string "title"/ {getline; t=$2} \
END{print a " - " t}'
)
"
;;
*)
mpc >/dev/null 2>&1 && song="
$(
mpc current
)
"
;;
*) mpc >/dev/null 2>&1 && song="
$(
mpc current
)
" ;;
esac
[[ "
$(
trim
"
$song
"
)
" == "
-
" ]] && unset -v song
...
...
@@ -1459,10 +1519,12 @@ get_resolution() {
resolution="
${
resolution
//x??@/ @
}
"
else
resolution="
$(
system_profiler SPDisplaysDataType |
awk
'/Resolution:/ {printf $2"x"$4" @ "$6"Hz, "}'
)
"
resolution="
$(
system_profiler SPDisplaysDataType |
\
awk
'/Resolution:/ {printf $2"x"$4" @ "$6"Hz, "}'
)
"
fi
scale_factor="
$(
/usr/libexec/PlistBuddy
-c
"Print DisplayAnyUserSets:0:0:Resolution"
/Library/Preferences/com.apple.windowserver.plist
)
"
scale_factor="
$(
PlistBuddy
-c
"Print DisplayAnyUserSets:0:0:Resolution"
\
/Library/Preferences/com.apple.windowserver.plist
)
"
# If no refresh rate is empty.
[[ "
$resolution
" == *"
@ Hz
"* ]] &&
\
...
...
@@ -1501,9 +1563,15 @@ get_resolution() {
*)
if type -p xrandr >/dev/null; then
case "
$refresh_rate
" in
"
on
") resolution="
$(
xrandr
--nograb
--current
|
awk
'match($0,/[0-9]*\.[0-9]*\*/) {printf $1 " @ " substr($0,RSTART,RLENGTH) "Hz, "}'
)
" ;;
"
on
")
resolution="
$(
xrandr
--nograb
--current
|
\
awk
'match($0,/[0-9]*\.[0-9]*\*/) {printf $1 " @ "\
substr($0,RSTART,RLENGTH) "Hz, "}'
)
"
;;
"
off
")
resolution="
$(
xrandr
--nograb
--current
|
awk
-F
'connected |\\+'
'/ connected/ {printf $2 ", "}'
)
"
resolution="
$(
xrandr
--nograb
--current
|
\
awk
-F
'connected |\\+'
'/ connected/ {printf $2 ", "}'
)
"
resolution="
${
resolution
/primary
}
"
;;
esac
...
...
@@ -1703,7 +1771,9 @@ get_term() {
case "
${
name
//
}
" in
"
${
SHELL
/*\/
}
" | *"
sh
" | "
tmux
"* | "
screen
" | "
su
"*) ;;
"
login
"* | *"
Login
"* | "
init
" | "
(init)
") term="
$(
tty
)
" ;;
"
ruby
" | "
1
" | "
systemd
" | "
sshd
"* | "
python
"* | "
USER
"*"
PID
"* | "
kdeinit
"*) break ;;
"
ruby
" | "
1
" | "
systemd
" | "
sshd
"* | "
python
"* | "
USER
"*"
PID
"* | "
kdeinit
"*)
break
;;
"
gnome
-terminal-
") term="
gnome
-terminal
" ;;
*"
nvim
") term="
Neovim
Terminal
" ;;
*"
NeoVimServer
"*) term="
VimR
Terminal
" ;;
...
...
@@ -1721,58 +1791,64 @@ get_term_font() {
case "
$term
" in
"
alacritty
"*)
term_font="
$(
awk
-F
':|#'
'/normal:/ {getline; print}'
"
${
XDG_CONFIG_HOME
}
/alacritty/alacritty.yml"
)
"
term_font="
$(
awk
-F
':|#'
'/normal:/ {getline; print}'
\
"
${
XDG_CONFIG_HOME
}
/alacritty/alacritty.yml"
)
"
term_font="
${
term_font
/*family
:
}
"
term_font="
${
term_font
/
$'
\n
'
*
}
"
term_font="
${
term_font
/\#*
}
"
;;
"
Apple_Terminal
")
term_font="
$(
osascript
-e
'tell application "Terminal" to font name of window frontmost'
)
"
term_font="
$(
osascript
-e
'tell application "Terminal" to \
font name of window frontmost'
)
"
;;
"
iTerm2
")
# Unfortunately the profile name is not unique, but it seems to be the only thing
# that identifies an active profile. There is the "
id
of current session of current win
dow
"
#
thou
, but that does not match to a guid in the plist.
# So, be warned
! C
ollisions may occur!
# that identifies an active profile. There is the "
id
of current session of current win
-
#
dow
" though
, but that does not match to a guid in the plist.
# So, be warned
, c
ollisions may occur!
# See: https://groups.google.com/forum/#!topic/iterm2-discuss/0tO3xZ4Zlwg
local current_profile_name
current_profile_name="
$(
osascript
-e
'tell application "iTerm2" to profile name of current session of current window'
)
"
local current_profile_name profiles_count profile_name diff_font none_ascii
current_profile_name="
$(
osascript
-e
'tell application "iTerm2" to profile name \
of current session of current window'
)
"
# Warning: Dynamic profiles are not taken into account here!
# https://www.iterm2.com/documentation-dynamic-profiles.html
font_file="
${
HOME
}
/Library/Preferences/com.googlecode.iterm2.plist
"
# Count Guids in "
New
Bookmarks
"; they should be unique
local profiles_count
profiles_count="
$(
/usr/libexec/PlistBuddy
-c
"Print :New
\
Bookmarks:"
~/Library/Preferences/com.googlecode.iterm2.plist |
grep
-c
"Guid"
)
"
profiles_count="
$(
PlistBuddy
-c
"Print :New
\
Bookmarks:"
"
$font_file
"
|
grep
-c
"Guid"
)
"
for ((i=0; i<=profiles_count; i++)); do
local profile_name
profile_name="
$(
/usr/libexec/PlistBuddy
-c
"Print :New
\
Bookmarks:
${
i
}
:Name:"
~/Library/Preferences/com.googlecode.iterm2.plist
)
"
profile_name="
$(
PlistBuddy
-c
"Print :New
\
Bookmarks:
${
i
}
:Name:"
"
$font_file
"
)
"
if [[ "
$profile_name
" == "
$current_profile_name
" ]]; then
# "
Normal
Font
"
term_font="
$(
/usr/libexec/PlistBuddy
-c
"Print :New
\
Bookmarks:
${
i
}
:Normal
\
Font:"
~/Library/Preferences/com.googlecode.iterm2.plist
)
"
term_font="
$(
PlistBuddy
-c
"Print :New
\
Bookmarks:
${
i
}
:Normal
\
Font:"
\
"
$font_file
"
)
"
# Font for non-ascii characters
# Only check for a different non-ascii font, if the user checked
# the "
use
a different font for non-ascii text
" switch.
local use_different_font
use_different_font="
$(
/usr/libexec/PlistBuddy
-c
"Print :New
\
Bookmarks:
${
i
}
:Use
\
Non-ASCII
\
Font:"
~/Library/Preferences/com.googlecode.iterm2.plist
)
"
diff_font="
$(
PlistBuddy
-c
"Print :New
\
Bookmarks:
${
i
}
:Use
\
Non-ASCII
\
Font:"
\
"
$font_file
"
)
"
if [[ "
$
use_different
_font
" == "
true
" ]]; then
local non_ascii_font
non_ascii_font="
$(
/usr/libexec/PlistBuddy
-c
"Print :New
\
Bookmarks:
${
i
}
:Non
\
Ascii
\
Font:"
~/Library/Preferences/com.googlecode.iterm2.plist
)
"
if [[ "
$
diff
_font
" == "
true
" ]]; then
non_ascii="
$(
PlistBuddy
-c
"Print :New
\
Bookmarks:
${
i
}
:Non
\
Ascii
\
Font:"
\
"
$font_file
"
)
"
[[ "
$term_font
" != "
$non_ascii
_font
" ]] &&
\
term_font="
$term_font
(normal) /
$non_ascii
_font
(non-ascii)
"
[[ "
$term_font
" != "
$non_ascii
" ]] &&
\
term_font="
$term_font
(normal) /
$non_ascii
(non-ascii)
"
fi
fi
done
;;
"
deepin
-terminal
"*)
term_font="
$(
awk
-F
'='
'/font=/ {a=$2} /font_size/ {b=$2} END{print a " " b}'
"
${
XDG_CONFIG_HOME
}
/deepin/deepin-terminal/config.conf"
)
"
term_font="
$(
awk
-F
'='
'/font=/ {a=$2} /font_size/ {b=$2} END{print a " " b}'
\
"
${
XDG_CONFIG_HOME
}
/deepin/deepin-terminal/config.conf"
)
"
;;
"
GNUstep_Terminal
")
...
...
@@ -1796,7 +1872,8 @@ get_term_font() {
konsole_sessions=(
$(
qdbus
"
${
i
}
"
|
grep
'/Sessions/'
)
)
for session in "
${
konsole_sessions
[@]
}
"; do
if ((child == "
$(
qdbus
"
${
i
}
"
"
${
session
}
"
processId
)
")); then
profile="
$(
qdbus
"
${
i
}
"
"
${
session
}
"
environment |
awk
-F
'='
'/KONSOLE_PROFILE_NAME/ {print $2}'
)
"
profile="
$(
qdbus
"
${
i
}
"
"
${
session
}
"
environment |
\
awk
-F
'='
'/KONSOLE_PROFILE_NAME/ {print $2}'
)
"
break
fi
done
...
...
@@ -1806,15 +1883,18 @@ get_term_font() {
# We could have two profile files for the same profile name, take first match
profile_filename="
$(
grep
-l
"Name=
${
profile
}
"
"
${
HOME
}
"
/.local/share/konsole/
*
.profile
)
"
profile_filename="
${
profile_filename
/
$'
\n
'
*
}
"
[[ "
$profile_filename
" ]] && term_font="
$(
awk
-F
'=|,'
'/Font=/ {print $2 " " $3}'
"
$profile_filename
"
)
"
[[ "
$profile_filename
" ]] &&
\
term_font="
$(
awk
-F
'=|,'
'/Font=/ {print $2 " " $3}'
"
$profile_filename
"
)
"
;;
"
lxterminal
"*)
term_font="
$(
awk
-F
'='
'/fontname=/ {print $2; exit}'
"
${
XDG_CONFIG_HOME
}
/lxterminal/lxterminal.conf"
)
"
term_font="
$(
awk
-F
'='
'/fontname=/ {print $2; exit}'
\
"
${
XDG_CONFIG_HOME
}
/lxterminal/lxterminal.conf"
)
"
;;
"
mate
-terminal
")
# To get the actual config we have to create a temporarily file with the --save-config option.
# To get the actual config we have to create a temporarily file with the
# --save-config option.
mateterm_config="
/tmp/mateterm.cfg
"
# Ensure /tmp exists and we do not overwrite anything.
...
...
@@ -1826,15 +1906,21 @@ get_term_font() {
role="
${
role
//\
"}"
profile=
"
$(
awk
-F
'='
-v
r
=
"
$role
"
\
'$0~r {getline; if(/Maximized/) getline; if(/Fullscreen/) getline; id=$2"]"}
'$0~r {getline; if(/Maximized/) getline; \
if(/Fullscreen/) getline; id=$2"]"} \
$0~id {if(id) {getline; print $2; exit}}'
"
$mateterm_config
"
)
"
rm -f
"
$mateterm_config
"
if [[
"
$(
gsettings get org.mate.terminal.profile:/org/mate/terminal/profiles/
"
${
profile
}
"
/ use-system-font
)
"
==
"true"
]]; then
mate_get() {
gsettings get org.mate.terminal.profile
:
\
/org/mate/terminal/profiles/
"
$1
"
/
"
$2
"
}
if [[
"
$(
mate_get
"
$profile
"
"use-system-font"
)
"
==
"true"
]]; then
term_font=
"
$(
gsettings get org.mate.interface monospace-font-name
)
"
else
term_font=
"
$(
gsettings get org.mate.terminal.profile:/org/mate/terminal/profiles/
"
${
profile
}
"
/ font
)
"
term_font=
"
$(
mate_get
"
$profile
"
"font"
)
"
fi
term_font=
"
$(
trim_quotes
"
$term_font
"
)
"
fi
...
...
@@ -1846,23 +1932,31 @@ get_term_font() {
"pantheon"
*)
term_font=
"
$(
gsettings get org.pantheon.terminal.settings font
)
"
[[ -z
"
${
term_font
//\
'}" ]] && term_font="$(gsettings get org.gnome.desktop.interface monospace-font-name)"
[[ -z
"
${
term_font
//\
'}" ]] && \
term_font="$(gsettings get org.gnome.desktop.interface monospace-font-name)"
term_font="$(trim_quotes "$term_font")"
;;
"sakura"*)
term_font="$(awk -F '
=
' '
/^font=/ {print
$2
; exit
}
' "
${
XDG_CONFIG_HOME
}
/sakura/sakura.conf
")"
term_font="$(awk -F '
=
' '
/^font=/ {print
$2
; exit
}
'
\
"
${
XDG_CONFIG_HOME
}
/sakura/sakura.conf
")"
;;
"terminology"
)
term_font=
"
$(
strings
"
${
XDG_CONFIG_HOME
}
/terminology/config/standard/base.cfg"
|
awk
'/^font\.name$/{print a}{a=$0}'
)
"
term_font=
"
$(
strings
"
${
XDG_CONFIG_HOME
}
/terminology/config/standard/base.cfg"
|
\
awk
'/^font\.name$/{print a}{a=$0}'
)
"
term_font=
"
${
term_font
/.pcf
}
"
term_font=
"
${
term_font
/
:
*
}
"
;;
"termite"
)
[[ -f
"
${
XDG_CONFIG_HOME
}
/termite/config"
]] && termite_config=
"
${
XDG_CONFIG_HOME
}
/termite/config"
term_font=
"
$(
awk
-F
'= '
'/\[options\]/ {opt=1} /^\s*font/ {if(opt==1) a=$2; opt=0} END{print a}'
"/etc/xdg/termite/config"
"
$termite_config
"
)
"
[[ -f
"
${
XDG_CONFIG_HOME
}
/termite/config"
]] && \
termite_config=
"
${
XDG_CONFIG_HOME
}
/termite/config"
term_font=
"
$(
awk
-F
'= '
'/\[options\]/ {opt=1} /^\s*font/ {if(opt==1) a=$2; opt=0} \
END{print a}'
"/etc/xdg/termite/config"
"
$termite_config
"
)
"
;;
"urxvt"
|
"urxvtd"
|
"rxvt-unicode"
|
"xterm"
)
...
...
@@ -1883,7 +1977,8 @@ get_term_font() {
;;
"xfce4-terminal"
)
term_font=
"
$(
awk
-F
'='
'/^FontName/ {a=$2} /^FontUseSystem=TRUE/ {a=$0} END{print a}'
"
${
XDG_CONFIG_HOME
}
/xfce4/terminal/terminalrc"
)
"
term_font=
"
$(
awk
-F
'='
'/^FontName/ {a=$2} /^FontUseSystem=TRUE/ {a=$0} END{print a}'
\
"
${
XDG_CONFIG_HOME
}
/xfce4/terminal/terminalrc"
)
"
if [[
"
$term_font
"
==
"FontUseSystem=TRUE"
]]; then
term_font=
"
$(
gsettings get org.gnome.desktop.interface monospace-font-name
)
"
...
...
@@ -1897,13 +1992,16 @@ get_term_font() {
}
get_disk
()
{
type -p df >/dev/null 2>&1 ||
\
type
-
p
df
>/
dev/null
2
>&
1
||
\
{
err
"Disk requires 'df' to function. Install 'df' to get disk info."
;
return
;
}
# Get "df" version.
df_version
=
"
$(
df
--version
2>&1
)
"
case
"
$df_version
"
in
*
"blocks"
*
)
err
"Your version of df cannot be used due to the non-standard flags"
;
return
;;
# Haiku
*
"blocks"
*
)
# Haiku
err
"Your version of df cannot be used due to the non-standard flags"
return
;;
*
"IMitv"
*
)
df_flags
=(
-P
-g
)
;;
# AIX
*
"befhikm"
*
)
df_flags
=(
-P
-k
)
;;
# IRIX
*
)
df_flags
=(
-P
-h
)
;;
...
...
@@ -1917,8 +2015,10 @@ get_disk() {
IFS
=
"
$old_ifs
"
# Stop here if 'df' fails to print disk info.
[[
-
z
"
${
disks
[*]
}
"
]]
&&
\
{
err
"Disk: df failed to print the disks, make sure the disk_show array is set properly."
;
return
;
}
if
[[
-
z
"
${
disks
[*]
}
"
]]
;
then
err
"Disk: df failed to print the disks, make sure the disk_show array is set properly."
return
fi
for
disk
in
"
${
disks
[@]
}
"
;
do
# Create a second array and make each element split at whitespace this time.
...
...
@@ -1926,7 +2026,9 @@ get_disk() {
disk_perc
=
"
${
disk_info
[4]/
'%'
}
"
case
"
$df_version
"
in
*
"befhikm"
*
)
disk
=
"
$((
disk_info[2]/1024/1024
))
G /
$((
disk_info[1]/1024/1024
))
G (
${
disk_perc
}
%)"
;;
*
"befhikm"
*
)
disk
=
"
$((
disk_info[2]/1024/1024
))
G /
$((
disk_info[1]/1024/1024
))
G (
${
disk_perc
}
%)"
;;
*
)
disk
=
"
${
disk_info
[2]/i
}
/
${
disk_info
[1]/i
}
(
${
disk_perc
}
%)"
;;
esac
...
...
@@ -2108,11 +2210,27 @@ get_install_date() {
ls_prog
=
"
$(
ls
--version
2>&1
)
"
case
"
$ls_prog
"
in
*
"BusyBox"
*
)
install_date
=
"
$(
ls
-tdce
"
$install_file
"
|
awk
'{printf $10 " " $7 " " $8 " " $9}'
)
"
;;
*
"crtime"
*
)
install_date
=
"
$(
ls
-tdcE
"
$install_file
"
|
awk
'{printf $6 " " $7}'
)
"
;;
# xpg4 (Solaris)
*
"ACFHLRSZ"
*
)
install_date
=
"
$(
ls
-dl
"
$install_file
"
|
awk
'{printf $6 " " $7}'
)
"
;;
# Toybox
*
"GNU coreutils"
*
)
install_date
=
"
$(
ls
-tcd
--full-time
"
$install_file
"
|
awk
'{printf $6 " " $7}'
)
"
;;
*
"ACFHLNRS"
*
|
*
"RadC1xmnlog"
*
)
err
"Install Date doesn't work because your 'ls' does not support showing full date and time."
;
return
;;
# AIX ls / IRIX ls
*
"BusyBox"
*
)
install_date
=
"
$(
ls
-tdce
"
$install_file
"
|
awk
'{printf $10 " " $7 " " $8 " " $9}'
)
"
;;
*
"crtime"
*
)
# xpg4 (Solaris)
install_date
=
"
$(
ls
-tdcE
"
$install_file
"
|
awk
'{printf $6 " " $7}'
)
"
;;
*
"ACFHLRSZ"
*
)
# Toybox
install_date
=
"
$(
ls
-dl
"
$install_file
"
|
awk
'{printf $6 " " $7}'
)
"
;;
*
"GNU coreutils"
*
)
install_date
=
"
$(
ls
-tcd
--full-time
"
$install_file
"
|
awk
'{printf $6 " " $7}'
)
"
;;
*
"ACFHLNRS"
*
|
*
"RadC1xmnlog"
*
)
# AIX ls / IRIX ls
err
"Install Date doesn't work because your 'ls' doesn't support full date/time."
return
;;
*
)
install_date
=
"
$(
ls
-dlctT
"
$install_file
"
|
awk
'{printf $9 " " $6 " "$7 " " $8}'
)
"
;;
esac
...
...
@@ -2206,7 +2324,8 @@ image_backend() {
*
)
err
"Image: Unknown image backend specified '
$image_backend
'."
err
"Image: Valid backends are: 'ascii', 'caca', 'catimg', 'jp2a', 'iterm2', 'off', 'sixel', 'termpix', 'tycat', 'w3m')"
err
"Image: Valid backends are: 'ascii', 'caca', 'catimg', 'jp2a', 'iterm2',
'off', 'sixel', 'termpix', 'tycat', 'w3m')"
err
"Image: Falling back to ascii mode."
get_ascii
;;
...
...
@@ -2328,7 +2447,10 @@ get_wallpaper() {
case "
$de
" in
"
MATE
"*) image="
$(
gsettings get org.mate.background picture-filename
)
" ;;
"
Xfce
"*) image="
$(
xfconf-query
-c
xfce4-desktop
-p
/backdrop/screen0/monitor0/workspace0/last-image
)
" ;;
"
Xfce
"*)
image="
$(
xfconf-query
-c
xfce4-desktop
-p
\
"/backdrop/screen0/monitor0/workspace0/last-image"
)
"
;;
"
Cinnamon
"*)
image="
$(
gsettings get org.cinnamon.desktop.background picture-uri
)
"
...
...
@@ -2340,7 +2462,8 @@ get_wallpaper() {
image="
$(
awk
-F
\'
'/feh/ {printf $2}'
"
${
HOME
}
/.fehbg"
)
"
elif type -p nitrogen >/dev/null; then
image="
$(
awk
-F
'='
'/file/ {printf $2;exit;}'
"
${
XDG_CONFIG_HOME
}
/nitrogen/bg-saved.cfg"
)
"
image="
$(
awk
-F
'='
'/file/ {printf $2;exit;}'
\
"
${
XDG_CONFIG_HOME
}
/nitrogen/bg-saved.cfg"
)
"
else
image="
$(
gsettings get org.gnome.desktop.background picture-uri
)
"
...
...
@@ -2443,7 +2566,8 @@ get_term_size() {
# If the ID was found get the window size.
if
[[
"
$current_window
"
]]
;
then
term_size
=
"
$(
xwininfo
-id
"
$current_window
"
|
awk
-F
': '
'/Width|Height/ {printf $2 " "}'
)
"
term_size
=
"
$(
xwininfo
-id
"
$current_window
"
|
\
awk
-F
': '
'/Width|Height/ {printf $2 " "}'
)
"
term_width
=
"
${
term_size
/ *
}
"
term_height
=
"
${
term_size
/
${
term_width
}}
"
else
...
...
@@ -2579,15 +2703,20 @@ make_thumbnail() {
display_image
()
{
case
"
$image_backend
"
in
"caca"
)
img2txt
-W
"
$((
width
/
font_width
))
)"
-H
"
$((
height
/
font_height
))
"
--gamma
=
0.6
"
$image
"
||
to_off
"Image: libcaca failed to display the image."
img2txt
-W
"
$((
width
/
font_width
))
)"
\
-H
"
$((
height
/
font_height
))
"
\
--gamma
=
0.6
"
$image
"
||
\
to_off
"Image: libcaca failed to display the image."
;;
"catimg"
)
catimg
-w
"
$((
width
*
2
/
font_width
))
"
-r
0
"
$image
"
||
to_off
"Image: catimg failed to display the image."
catimg
-w
"
$((
width
*
2
/
font_width
))
"
-r
0
"
$image
"
||
\
to_off
"Image: catimg failed to display the image."
;;
"jp2a"
)
jp2a
--width
=
"
$((
width
/
font_width
))
"
--colors
"
$image
"
||
to_off
"Image: jp2a failed to display the image."
jp2a
--width
=
"
$((
width
/
font_width
))
"
--colors
"
$image
"
||
\
to_off
"Image: jp2a failed to display the image."
;;
"sixel"
)
...
...
@@ -2595,11 +2724,13 @@ display_image() {
;;
"termpix"
)
termpix
--width
"
$((
width
/
font_width
))
"
"
$image
"
||
to_off
"Image: termpix failed to display the image."
termpix
--width
"
$((
width
/
font_width
))
"
"
$image
"
||
\
to_off
"Image: termpix failed to display the image."
;;
"iterm2"
)
iterm_cmd
=
"
\0
33]1337;File=width=
${
width
}
px;height=
${
height
}
px;inline=1:
$(
base64
<
"
$image
"
)
"
image
=
"
$(
base64
<
"
$image
"
)
"
iterm_cmd
=
"
\0
33]1337;File=width=
${
width
}
px;height=
${
height
}
px;inline=1:
${
image
}
"
# Tmux requires an additional escape sequence for this to work.
[[
-n
"
$TMUX
"
]]
&&
iterm_cmd
=
"
\0
33Ptmux;
\0
33
${
iterm_cmd
}
\0
33
\\
"
...
...
@@ -2608,7 +2739,8 @@ display_image() {
;;
"tycat"
)
tycat
"
$image
"
||
to_off
"Image: tycat failed to display the image."
tycat
"
$image
"
||
\
to_off
"Image: tycat failed to display the image."
;;
"w3m"
)
...
...
@@ -2618,7 +2750,8 @@ display_image() {
# appearing in specific terminal emulators.
sleep
0.05
printf
"%b
\n
"
"0;1;
$xoffset
;
$yoffset
;
$width
;
$height
;;;;;
$image
\n
4;
\n
3;"
|
\
"
${
w3m_img_path
:-
false
}
"
-bg
"
$background_color
"
>
/dev/null 2>&1
||
to_off
"Image: w3m-img failed to display the image."
"
${
w3m_img_path
:-
false
}
"
-bg
"
$background_color
"
>
/dev/null 2>&1
||
\
to_off
"Image: w3m-img failed to display the image."
zws
=
"
\x
E2
\x
80
\x
8B
\x
20"
;;
...
...
@@ -2676,12 +2809,14 @@ scrot_upload() {
case
"
$image_host
"
in
"teknik"
)
image_url
=
"
$(
curl
-sf
-F
file
=
"@
${
image_file
}
;type=image/png"
"https://api.teknik.io/v1/Upload"
)
"
image_url
=
"
$(
curl
-sf
-F
file
=
"@
${
image_file
}
;type=image/png"
\
"https://api.teknik.io/v1/Upload"
)
"
image_url
=
"
$(
awk
-F
'url:|,'
'{printf $2}'
<<<
"
${
image_url
//\
"}"
)
"
;;
"
imgur
")
image_url="
$(
curl
-sH
"Authorization: Client-ID 0e8b44d15e9fc95"
-F
image
=
"@
${
image_file
}
"
"https://api.imgur.com/3/upload"
)
"
image_url="
$(
curl
-sH
"Authorization: Client-ID 0e8b44d15e9fc95"
\
-F
image
=
"@
${
image_file
}
"
"https://api.imgur.com/3/upload"
)
"
image_url="
$(
awk
-F
'id:|,'
'{printf $2}'
<<<
"
${
image_url
//\
"}"
)
"
[[ "
$image_url
" ]] && image_url="
https
://i.imgur.com/
${
image_url
}
.png
"
;;
...
...
@@ -2819,7 +2954,8 @@ prin() {
get_underline() {
if [[ "$underline_enabled" == "on" ]]; then
printf -v underline "%${length}s"
printf "%b\n" "${text_padding:+\033[${text_padding}C}${zws}${underline_color}${underline// /$underline_char}${reset}"
printf "%b%b\n" "${text_padding:+\033[${text_padding}C}${zws}${underline_color}" \
"${underline// /$underline_char}${reset}"
unset -v length
fi
prin=1
...
...
@@ -3524,7 +3660,8 @@ get_distro_colors() {
ascii_file="
void
"
;;
*"
[
Windows 10]
"* | *"
on Windows 10
"* | "
Windows 8
"* | "
Windows 10
"* | "
windows10
" | "
windows8
" )
*"
[
Windows 10]
"* | *"
on Windows 10
"* | "
Windows 8
"* |
\
"
Windows 10
"* | "
windows10
" | "
windows8
" )
set_colors 6 7
ascii_file="
windows10
"
;;
...
...
@@ -3869,41 +4006,67 @@ old_functions() {
}
old_options() {
[[ -n "
$osx_buildversion
" ]] && err "
Config:
\$
osx_buildversion is deprecated, use
\$
distro_shorthand instead.
"
[[ -n "
$osx_codename
" ]] && err "
Config:
\$
osx_codename is deprecated, use
\$
distro_shorthand instead.
"
[[ "
$cpu_cores
" == "
on
" ]] && err "
Config:
cpu_cores
=
'on'
is deprecated, use
cpu_cores
=
'logical|physical|off'
instead.
"
[[ -n "
$image
" ]] && { err "
Config:
\$
image is deprecated, use
\$
image_source instead.
"; image_source="
$image
"; }
[[ -n "
$osx_buildversion
" ]] &&
\
err "
Config:
\$
osx_buildversion is deprecated, use
\$
distro_shorthand instead.
"
[[ -n "
$osx_codename
" ]] &&
\
err "
Config:
\$
osx_codename is deprecated, use
\$
distro_shorthand instead.
"
[[ "
$cpu_cores
" == "
on
" ]] &&
\
err "
Config:
cpu_cores
=
'on'
is deprecated, use
cpu_cores
=
'logical|physical|off'
instead.
"
[[ -n "
$image
" ]] &&
\
{ err "
Config:
\$
image is deprecated, use
\$
image_source instead.
"; image_source="
$image
"; }
# All progress_ variables were changed to bar_.
[[ -n "
$progress_char
" ]] && err "
Config:
\$
progress_char is deprecated, use
\$
bar_char_elapsed and
\$
bar_char_total instead.
"
[[ -n "
$progress_border
" ]] && { err "
Config:
\$
progress_border is deprecated, use
\$
bar_border instead.
"; bar_border="
$progress_border
"; }
[[ -n "
$progress_length
" ]] && { err "
Config:
\$
progress_length is deprecated, use
\$
bar_length instead.
"; bar_length="
$progress_length
"; }
[[ -n "
$progress_color_elapsed
" ]] && { err "
Config:
\$
progress_color_elapsed is deprecated, use
\$
bar_color_elapsed instead.
"; bar_color_elapsed="
$progress_color_elapsed
"; }
[[ -n "
$progress_color_total
" ]] && { err "
Config:
\$
progress_color_total is deprecated, use
\$
bar_color_total instead.
"; bar_color_total="
$progress_color_total
"; }
[[ -n "
$progress_char
" ]] &&
\
err "
Config:
\$
progress_char is deprecated, use
\$
bar_char_
{
elapsed,total
}
instead.
"
[[ -n "
$progress_border
" ]] &&
\
{ err "
Config:
\$
progress_border is deprecated, use
\$
bar_border instead.
";
\
bar_border="
$progress_border
"; }
[[ -n "
$progress_length
" ]] &&
\
{ err "
Config:
\$
progress_length is deprecated, use
\$
bar_length instead.
";
\
bar_length="
$progress_length
"; }
[[ -n "
$progress_color_elapsed
" ]] &&
\
{ err "
Config:
\$
progress_color_elapsed is deprecated, use
\$
bar_color_elapsed instead.
";
\
bar_color_elapsed="
$progress_color_elapsed
"; }
[[ -n "
$progress_color_total
" ]] &&
\
{ err "
Config:
\$
progress_color_total is deprecated, use
\$
bar_color_total instead.
";
\
bar_color_total="
$progress_color_total
"; }
# All cpufreq values were changed in 3.0.
[[ "
$speed_type
" == "
current
" ]] && err "
Config:
speed_type
=
'current'
is deprecated, use
speed_type
=
'scaling_cur_freq'
instead.
"
[[ "
$speed_type
" == "
min
" ]] && err "
Config:
speed_type
=
'min'
is deprecated, use
speed_type
=
'scaling_min_freq'
instead.
"
[[ "
$speed_type
" == "
max
" ]] && err "
Config:
speed_type
=
'max'
is deprecated, use
speed_type
=
'scaling_max_freq'
instead.
"
[[ "
$speed_type
" == "
bios
" ]] && err "
Config:
speed_type
=
'bios'
is deprecated, use
speed_type
=
'bios_limit'
instead.
"
[[ "
$speed_type
" == "
current
" ]] &&
\
err "
Config:
speed_type
=
'current'
is deprecated, use
speed_type
=
'scaling_cur_freq'
instead.
"
[[ "
$speed_type
" == "
min
" ]] &&
\
err "
Config:
speed_type
=
'min'
is deprecated, use
speed_type
=
'scaling_min_freq'
instead.
"
[[ "
$speed_type
" == "
max
" ]] &&
\
err "
Config:
speed_type
=
'max'
is deprecated, use
speed_type
=
'scaling_max_freq'
instead.
"
[[ "
$speed_type
" == "
bios
" ]] &&
\
err "
Config:
speed_type
=
'bios'
is deprecated, use
speed_type
=
'bios_limit'
instead.
"
# Ascii_logo_size was removed in 3.0.
[[ "
$ascii_logo_size
" ]] && err "
Config: ascii_logo_size is deprecated, use
ascii_distro
=
'{alpine,arch,crux,gentoo,openbsd,void}_small'
instead.
"
[[ "
$ascii_logo_size
" ]] &&
\
err "
Config: ascii_logo_size is deprecated, use
ascii_distro
=
'{distro}_small'
instead.
"
#
$start
and
$end
were replaced with
${
block_range
[@]
}
in 3.0.
[[ "
$start
" && "
$end
" ]] && { err "
Config:
\$
start and
\$
end are deprecated, use
block_range
=(
0 7
)
instead."
;
block_range
=(
"
$start
"
"
$end
"
)
;
}
[[ "
$start
" && "
$end
" ]] &&
\
{ err "
Config:
\$
start and
\$
end are deprecated, use
block_range
=(
0 7
)
instead."
;
\
block_range
=(
"
$start
"
"
$end
"
)
;
}
# Fahrenheit support was added to CPU so the options were changed.
[[
"
$cpu_temp
"
==
"on"
]]
&&
{
err
"Config: cpu_temp='on' is deprecated, use cpu_temp='C' or 'F' instead."
;
cpu_temp
=
"C"
;
}
[[
"
$cpu_temp
"
==
"on"
]]
&&
\
{
err
"Config: cpu_temp='on' is deprecated, use cpu_temp='C' or 'F' instead."
;
cpu_temp
=
"C"
;
}
# Birthday was renamed to Install Date in 3.0
[[
-n
"
$birthday_time
"
]]
&&
{
err
"Config:
\$
birthday_time is deprecated, use
\3
install_time instead."
;
install_time
=
"
$birthday_time
"
;
}
[[
-n
"
$birthday_time
"
]]
&&
\
{
err
"Config:
\$
birthday_time is deprecated, use
\3
install_time instead."
;
\
install_time
=
"
$birthday_time
"
;
}
# Scrot dir was removed in 3.1.0.
[[
-n
"
$scrot_dir
"
]]
&&
scrot_dir
=
# cpu_shorthand was deprecated in 3.3.0
[[
-n
"
$cpu_shorthand
"
]]
&&
{
err
"Config:
\$
cpu_shorthand is deprecated, use
\$
cpu_brand,
\$
cpu_cores, and
\$
cpu_speed instead."
;
}
[[
-n
"
$cpu_shorthand
"
]]
&&
\
{
err
"Config:
\$
cpu_shorthand is deprecated, use
\$
cpu_brand,
\$
cpu_cores, and
\$
cpu_speed instead."
;
}
}
cache_uname
()
{
...
...
@@ -4044,7 +4207,7 @@ INFO:
--disable infoname Allows you to disable an info line from appearing
in the output.
NOTE: You can supply multiple args. eg. 'neofetch --disable cpu gpu
disk shell
'
NOTE: You can supply multiple args. eg. 'neofetch --disable cpu gpu'
--os_arch on/off Hide/Show OS architecture.
--speed_type type Change the type of cpu speed to display.
...
...
@@ -4055,7 +4218,8 @@ INFO:
--speed_shorthand on/off Whether or not to show decimals in CPU speed.
NOTE: This flag is not supported in systems with CPU speed less than 1 GHz.
NOTE: This flag is not supported in systems with CPU speed less than
1 GHz.
--cpu_brand on/off Enable/Disable CPU brand in output.
--cpu_cores type Whether or not to display the number of CPU cores
...
...
@@ -4068,7 +4232,8 @@ INFO:
NOTE: This only works on Linux and BSD.
NOTE: For FreeBSD and NetBSD-based systems, you need to enable coretemp kernel module. This only supports newer Intel processors.
NOTE: For FreeBSD and NetBSD-based systems, you need to enable
coretemp kernel module. This only supports newer Intel processors.
--distro_shorthand on/off Shorten the output of distro (tiny, on, off)
...
...
@@ -4142,9 +4307,11 @@ BARS:
IMAGE BACKEND:
--backend backend Which image backend to use.
Possible values: 'ascii', 'caca', 'catimg', 'jp2a', 'iterm2', 'off', 'sixel', 'tycat', 'w3m'
Possible values: 'ascii', 'caca', 'catimg', 'jp2a', 'iterm2', 'off',
'sixel', 'tycat', 'w3m'
--source source Which image or ascii file to use.
Possible values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
Possible values: 'auto', 'ascii', 'wallpaper', '/path/to/img',
'/path/to/ascii', '/path/to/dir/'
--ascii source Shortcut to use 'ascii' backend.
--caca source Shortcut to use 'caca' backend.
--catimg source Shortcut to use 'catimg' backend.
...
...
@@ -4156,7 +4323,8 @@ IMAGE BACKEND:
--w3m source Shortcut to use 'w3m' backend.
--off Shortcut to use 'off' backend.
NOTE: 'source; can be any of the following: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
NOTE: 'source; can be any of the following: 'auto', 'ascii', 'wallpaper', '/path/to/img',
'/path/to/ascii', '/path/to/dir/'
ASCII:
--ascii_colors x x x x x x Colors to print the ascii art
...
...
@@ -4168,9 +4336,11 @@ ASCII:
NOTE: Ubuntu has flavor variants.
NOTE: Change this to 'Lubuntu', 'Xubuntu', 'Ubuntu-GNOME', 'Ubuntu-Studio' or 'Ubuntu-Budgie' to use the flavors.
NOTE: Change this to 'Lubuntu', 'Xubuntu', 'Ubuntu-GNOME',
'Ubuntu-Studio' or 'Ubuntu-Budgie' to use the flavors.
NOTE: Alpine, Arch, CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, and Void have a smaller logo variant.
NOTE: Alpine, Arch, CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS,
OpenBSD, and Void have a smaller logo variant.
NOTE: Use '{distro name}_small' to use the small variants.
...
...
@@ -4180,7 +4350,8 @@ ASCII:
Possible values: bar, infobar, barinfo, off
IMAGE:
--loop Redraw the image constantly until Ctrl+C is used. This fixes issues in some terminals emulators when using image mode.
--loop Redraw the image constantly until Ctrl+C is used. This fixes issues
in some terminals emulators when using image mode.
--size 00px | --size 00% How to size the image.
Possible values: auto, 00px, 00%, none
--crop_mode mode Which crop mode to use
...
...
@@ -4197,7 +4368,8 @@ IMAGE:
This only works with w3m.
--gap num Gap between image and text.
NOTE: --gap can take a negative value which will move the text closer to the left side.
NOTE: --gap can take a negative value which will move the text
closer to the left side.
--clean Delete cached files and thumbnails.
...
...
@@ -4360,7 +4532,8 @@ get_args() {
# Image backend
"--backend"
)
image_backend
=
"
$2
"
;;
"--source"
)
image_source
=
"
$2
"
;;
"--ascii"
|
"--caca"
|
"--catimg"
|
"--jp2a"
|
"--iterm2"
|
"--off"
|
"--sixel"
|
"--termpix"
|
"--tycat"
|
"--w3m"
)
"--ascii"
|
"--caca"
|
"--catimg"
|
"--jp2a"
|
"--iterm2"
|
"--off"
|
"--sixel"
|
\
"--termpix"
|
"--tycat"
|
"--w3m"
)
image_backend
=
"
${
1
/--
}
"
case
"
$2
"
in
"-"
*
|
""
)
;;
...
...
@@ -4434,7 +4607,11 @@ get_args() {
"-vv"
)
set
-x
;
verbose
=
"on"
;;
"--help"
)
usage
;;
"--version"
)
version
;;
"--gen-man"
)
help2man
-n
"A fast, highly customizable system info script"
-N
./neofetch
-o
neofetch.1
;
exit
1
;;
"--gen-man"
)
help2man
-n
"A fast, highly customizable system info script"
\
-N
./neofetch
-o
neofetch.1
exit
1
;;
esac
shift
...
...
neofetch.1
View file @
93e4f416
...
...
@@ -18,7 +18,7 @@ NOTE: Every launch flag has a config option.
Allows you to disable an info line from appearing
in the output.
.IP
NOTE: You can supply multiple args. eg. 'neofetch \fB\-\-disable\fR cpu gpu
disk shell
'
NOTE: You can supply multiple args. eg. 'neofetch \fB\-\-disable\fR cpu gpu'
.TP
\fB\-\-os_arch\fR on/off
Hide/Show OS architecture.
...
...
@@ -32,8 +32,9 @@ NOTE: This only supports Linux with cpufreq.
.TP
\fB\-\-speed_shorthand\fR on/off
Whether or not to show decimals in CPU speed.
.IP
NOTE: This flag is not supported in systems with CPU speed less than 1 GHz.
.TP
NOTE: This flag is not supported in systems with CPU speed less than
1 GHz.
.TP
\fB\-\-cpu_brand\fR on/off
Enable/Disable CPU brand in output.
...
...
@@ -51,8 +52,9 @@ Hide/Show cpu speed.
Hide/Show cpu temperature.
.IP
NOTE: This only works on Linux and BSD.
.IP
NOTE: For FreeBSD and NetBSD\-based systems, you need to enable coretemp kernel module. This only supports newer Intel processors.
.TP
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 (tiny, on, off)
...
...
@@ -182,11 +184,13 @@ Possible values: bar, infobar, barinfo, off
.TP
\fB\-\-backend\fR backend
Which image backend to use.
Possible values: 'ascii', 'caca', 'catimg', 'jp2a', 'iterm2', 'off', 'sixel', 'tycat', 'w3m'
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/'
Possible values: 'auto', 'ascii', 'wallpaper', '/path/to/img',
\&'/path/to/ascii', '/path/to/dir/'
.TP
\fB\-\-ascii\fR source
Shortcut to use 'ascii' backend.
...
...
@@ -218,7 +222,8 @@ Shortcut to use 'w3m' backend.
\fB\-\-off\fR
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/'
NOTE: 'source; can be any of the following: 'auto', 'ascii', 'wallpaper', '/path/to/img',
\&'/path/to/ascii', '/path/to/dir/'
.SS "ASCII:"
.TP
\fB\-\-ascii_colors\fR x x x x x x
...
...
@@ -232,10 +237,12 @@ NOTE: Arch and Ubuntu have 'old' logo variants.
NOTE: Use 'arch_old' or 'ubuntu_old' to use the old logos.
.IP
NOTE: Ubuntu has flavor variants.
.IP
NOTE: Change this to 'Lubuntu', 'Xubuntu', 'Ubuntu\-GNOME', 'Ubuntu\-Studio' or 'Ubuntu\-Budgie' to use the flavors.
.IP
NOTE: Alpine, Arch, CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, and Void have a smaller logo variant.
.TP
NOTE: Change this to 'Lubuntu', 'Xubuntu', 'Ubuntu\-GNOME',
\&'Ubuntu\-Studio' or 'Ubuntu\-Budgie' to use the flavors.
.TP
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
...
...
@@ -249,7 +256,8 @@ Possible values: bar, infobar, barinfo, off
.SS "IMAGE:"
.TP
\fB\-\-loop\fR
Redraw the image constantly until Ctrl+C is used. This fixes issues in some terminals emulators when using image mode.
Redraw the image constantly until Ctrl+C is used. This fixes issues
in some terminals emulators when using image mode.
.TP
\fB\-\-size\fR 00px | \fB\-\-size\fR 00%
How to size the image.
...
...
@@ -278,8 +286,9 @@ This only works with w3m.
.TP
\fB\-\-gap\fR num
Gap between image and text.
.IP
NOTE: \fB\-\-gap\fR can take a negative value which will move the text closer to the left side.
.TP
NOTE: \fB\-\-gap\fR can take a negative value which will move the text
closer to the left side.
.TP
\fB\-\-clean\fR
Delete cached files and thumbnails.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment