コミットを比較

...

10 コミット

作成者 SHA1 メッセージ 日付
守矢諏訪子 032e920611 ロゴを追加、WMとパッケージを追加、GPUとホストを変更 2023-08-23 22:08:01 +09:00
JaGoLi d01638f093
Update README.md 2021-06-05 10:14:22 -04:00
JaGoLi c296d5dd09
Merge pull request #2 from Trriplex/master
Add Void linux logo
2021-06-04 22:20:10 -04:00
Trriplex 2a0a90cb03
Add Void linux logo 2021-06-04 22:55:04 +02:00
Jason Goulet-Lipman e964932e4a added gentoo logo and removed arch packages by default 2021-06-04 12:33:41 -04:00
Jason Goulet-Lipman f7fa1c7cad changed screenshot 2021-06-04 10:07:39 -04:00
JaGoLi 2898a07b26
Update README.md 2021-06-04 10:02:44 -04:00
Jason Goulet-Lipman d02a6323bb fixed bugs and added distros 2021-06-04 09:56:34 -04:00
sam-barr b7c58a52c0
Merge pull request #61 from srithon/master
Add Support for Battery Field
2020-05-09 09:21:15 -05:00
Sridaran Thoniyil 964ca21454 Use scanf/sprintf approach rather than micromanaging buffers 2020-05-09 09:36:16 -04:00
24個のファイルの変更674行の追加212行の削除

ファイルの表示

@ -8,8 +8,8 @@ clean:
rm -f paleofetch $(CACHE)/paleofetch
paleofetch: paleofetch.c paleofetch.h config.h
$(eval battery_path := $(shell ./config_scripts/battery_config.sh))
$(CC) paleofetch.c -o paleofetch $(CFLAGS) -D $(battery_path)
$(eval packages := $(shell ./config_scripts/package_config.sh))
$(CC) paleofetch.c -o paleofetch $(CFLAGS) -D $(packages)
strip paleofetch
install: paleofetch

ファイルの表示

@ -2,7 +2,16 @@ paleofetch
==========
A rewrite of [neofetch](https://github.com/dylanaraps/neofetch) in C.
Currently only supports Linux and Xorg.
Currently only supports Linux and Xorg.<br/><br/>
I am actively maintaining this fork by adding more features, fixing bugs, and supporting more distros.
As of now I have:
* Corrected all compiler warnings running on GCC 11.1
* Added logos for 5 distros.
* Added the option to change logo color, text color, and title color independently.
* Added macros to make setting colors easier.
* Fixed bugs in GPU detection code.
Why use paleofetch over neofetch?

ファイルの表示

@ -1,24 +1,66 @@
#include "logos/arch.h"
#define COLOR "\e[1;36m"
#define MYOS ARTIX
#define ALPINE 1
#define ARCH 2
#define ARTIX 3
#define CRUX 4
#define DEBIAN 5
#define DEVUAN 6
#define FREEBSD 7
#define GENTOO 8
#define NETBSD 9
#define OPENBSD 10
#define OPENINDIANA 11
#define POSTMARKETOS 12
#define VOID 13
#if MYOS == ALPINE
#include "logos/alpine.h"
#elif MYOS == ARCH
#include "logos/arch.h"
#elif MYOS == ARTIX
#include "logos/artix.h"
#elif MYOS == CRUX
#include "logos/crux.h"
#elif MYOS == DEBIAN
#include "logos/debian.h"
#elif MYOS == DEVUAN
#include "logos/devuan.h"
#elif MYOS == FREEBSD
#include "logos/freebsd.h"
#elif MYOS == GENTOO
#include "logos/gentoo.h"
#elif MYOS == NETBSD
#include "logos/netbsd.h"
#elif MYOS == OPENBSD
#include "logos/openbsd.h"
#elif MYOS == OPENINDIANA
#include "logos/openindiana.h"
#elif MYOS == POSTMARKETOS
#include "logos/postmarketos.h"
#elif MYOS == VOID
#include "logos/void.h"
#else
#include "logos/linux.h"
#endif
#define CONFIG \
{ \
/* name function cached */\
SPACER \
{ "", get_title, false }, \
{ "", get_bar, false }, \
{ "OS: ", get_os, true }, \
{ "Host: ", get_host, true }, \
{ "Kernel: ", get_kernel, true }, \
{ "Uptime: ", get_uptime, false }, \
{ "Battery: ", get_battery_percentage, false }, \
SPACER \
{ "Packages: ", get_packages_pacman, false }, \
{ "Packages: ", get_packages, false }, \
{ "Shell: ", get_shell, false }, \
{ "Resolution: ", get_resolution, false }, \
{ "WM: ", get_wm, false }, \
{ "Terminal: ", get_terminal, false }, \
SPACER \
{ "CPU: ", get_cpu, true }, \
{ "GPU: ", get_gpu1, true }, \
{ "GPU: ", get_gpu1, true }, \
{ "Memory: ", get_memory, false }, \
SPACER \
{ "", get_colors1, false }, \
@ -27,17 +69,21 @@
#define CPU_CONFIG \
{ \
REMOVE("(R)"), \
REMOVE("(TM)"), \
REMOVE("Dual-Core"), \
REMOVE("Quad-Core"), \
REMOVE("Six-Core"), \
REMOVE("Eight-Core"), \
REMOVE("Core"), \
REMOVE("CPU"), \
REMOVE("(R)"), \
REMOVE("(TM)"), \
REMOVE("Dual-Core"), \
REMOVE("Quad-Core"), \
REMOVE("Six-Core"), \
REMOVE("Eight-Core"), \
REMOVE("Core"), \
REMOVE("CPU"), \
}
#define GPU_CONFIG \
{ \
REMOVE("Corporation"), \
REMOVE("Advanced Micro Devices, Inc. "), \
REMOVE("Corporation"), \
REMOVE("Controller"), \
REMOVE("Graphics"), \
REMOVE("Integrated"), \
}

ファイルの表示

@ -1,5 +0,0 @@
#!/bin/sh
BATTERY_DIRECTORY=`ls /sys/class/power_supply | grep -i "^bat" | head -n 1`
echo "BATTERY_DIRECTORY='\"/sys/class/power_supply/$BATTERY_DIRECTORY\"'"

48
config_scripts/package_config.sh 実行可能ファイル
ファイルの表示

@ -0,0 +1,48 @@
#!/bin/sh
PACKAGEMANAGER="不明"
PACKAGECOUNT="0"
unamestr=$(uname)
if wc -v >/dev/null 2>&1; then
WC_COMMAND="wc -ln"
else
WC_COMMAND="wc -l'"
fi
if [ "$unamestr" = 'Linux' ]; then
platform=$(cat /etc/os-release | grep "^ID=" | sed -e "s/ID=//")
if [ "$platform" = 'alpine' ] || [ "$platform" = 'postmarketos' ]; then
PACKAGEMANAGER="apk"
PACKAGECOUNT=$(apk info -I | $WC_COMMAND)
elif [ "$platform" = 'arch' ] || [ "$platform" = 'artix' ]; then
PACKAGEMANAGER="pacman"
PACKAGECOUNT=$(pacman -Qq | $WC_COMMAND)
elif [ "$platform" = 'crux' ]; then
PACKAGEMANAGER="pkginfo"
PACKAGECOUNT=$(pkginfo -i | $WC_COMMAND)
elif [ "$platform" = 'debian' ] || [ "$platform" = 'devuan' ]; then
PACKAGEMANAGER="dpkg-query"
PACKAGECOUNT=$(dpkg-query -f '.\n' -W | $WC_COMMAND)
elif [ "$platform" = 'gentoo' ]; then
PACKAGEMANAGER="qlist"
PACKAGECOUNT=$(qlist -IC | $WC_COMMAND)
elif [ "$platform" = 'void' ]; then
PACKAGEMANAGER="xbps-query"
PACKAGECOUNT=$(xbps-query -l | $WC_COMMAND)
fi
elif [ "$unamestr" = 'FreeBSD' ]; then
PACKAGEMANAGER="pkg"
PACKAGECOUNT=$(pkg info -a | $WC_COMMAND)
elif [ "$unamestr" = 'OpenBSD' ]; then
PACKAGEMANAGER="pkg_info"
PACKAGECOUNT=$(pkg_info | $WC_COMMAND)
elif [ "$unamestr" = 'NetBSD' ]; then
PACKAGEMANAGER="pkg_info"
PACKAGECOUNT=$(pkg_info -a | $WC_COMMAND)
elif [ "$unamestr" = 'SunOS' ]; then
PACKAGEMANAGER="pkg"
PACKAGECOUNT=$(pkg list | $WC_COMMAND)
fi
echo "PACKAGES='\"$PACKAGECOUNT ($PACKAGEMANAGER)\"'"

バイナリ
example.png

バイナリファイルは表示されません。

変更前

幅:  |  高さ:  |  サイズ: 106 KiB

変更後

幅:  |  高さ:  |  サイズ: 37 KiB

30
logos/alpine.h ノーマルファイル
ファイルの表示

@ -0,0 +1,30 @@
// This was stolen from neofetch
#define BLUE "\e[1;34m"
#define MAGENTA "\e[1;35m"
#define RESET "\e[0m"
#define COLOR MAGENTA
#define TITLECOLOR BLUE
char *LOGO[] = {
BLUE " .hddddddddddddddddddddddh. ",
" :dddddddddddddddddddddddddd: ",
" /dddddddddddddddddddddddddddd/ ",
" +dddddddddddddddddddddddddddddd+ ",
" `sdddddddddddddddddddddddddddddddds` ",
" `ydddddddddddd++hdddddddddddddddddddy` ",
".hddddddddddd+` `+ddddh:-sdddddddddddh. ",
"hdddddddddd+` `+y: .sddddddddddh ",
"ddddddddh+` `//` `.` -sddddddddd ",
"ddddddh+` `/hddh/` `:s- -sddddddd ",
"ddddh+` `/+/dddddh/` `+s- -sddddd ",
"ddd+` `/o` :dddddddh/` `oy- .yddd ",
"hdddyo+ohddyosdddddddddho+oydddy++ohdddh ",
".hddddddddddddddddddddddddddddddddddddh. ",
" `yddddddddddddddddddddddddddddddddddy` ",
" `sdddddddddddddddddddddddddddddddds` ",
" +dddddddddddddddddddddddddddddd+ ",
" /dddddddddddddddddddddddddddd/ ",
" :dddddddddddddddddddddddddd: ",
" .hddddddddddddddddddddddh. " RESET
};

ファイルの表示

@ -1,22 +1,28 @@
// This was stolen from neofetch
#define CYAN "\e[1;36m"
#define RESET "\e[0m"
#define COLOR CYAN
#define TITLECOLOR CYAN
char *LOGO[] = {
" -` ",
" .o+` ",
" `ooo/ ",
" `+oooo: ",
" `+oooooo: ",
" -+oooooo+: ",
" `/:-:++oooo+: ",
" `/++++/+++++++: ",
" `/++++++++++++++: ",
" `/+++ooooooooooooo/` ",
" ./ooosssso++osssssso+` ",
" .oossssso-````/ossssss+` ",
" -osssssso. :ssssssso. ",
" :osssssss/ osssso+++. ",
" /ossssssss/ +ssssooo/- ",
" `/ossssso+/:- -:/+osssso+- ",
" `+sso+:-` `.-/+oso: ",
"`++:. `-/+/ ",
".` `/ "
CYAN " -` " RESET,
CYAN " .o+` " RESET,
CYAN " `ooo/ " RESET,
CYAN " `+oooo: " RESET,
CYAN " `+oooooo: " RESET,
CYAN " -+oooooo+: " RESET,
CYAN " `/:-:++oooo+: " RESET,
CYAN " `/++++/+++++++: " RESET,
CYAN " `/++++++++++++++: " RESET,
CYAN " `/+++ooooooooooooo/` " RESET,
CYAN " ./ooosssso++osssssso+` " RESET,
CYAN " .oossssso-````/ossssss+` " RESET,
CYAN " -osssssso. :ssssssso. " RESET,
CYAN " :osssssss/ osssso+++. " RESET,
CYAN " /ossssssss/ +ssssooo/- " RESET,
CYAN " `/ossssso+/:- -:/+osssso+- " RESET,
CYAN " `+sso+:-` `.-/+oso: " RESET,
CYAN "`++:. `-/+/ " RESET,
CYAN ".` `/ " RESET
};

ファイルの表示

@ -1,21 +0,0 @@
// And this was stolen from archey3
char *LOGO[] = {
" + ",
" # ",
" ### ",
" ##### ",
" ###### ",
" ; #####; ",
" +##.##### ",
" +########## ",
" #############; ",
" ###############+ ",
" ####### ####### ",
" .######; ;###;`'. ",
" .#######; ;#####. ",
" #########. .########` ",
" ######' '###### ",
" ;#### ####; ",
" ##' '## ",
"#' `# "
};

ファイルの表示

@ -1,22 +0,0 @@
// made by Reddit user LnLcFlx2
char *LOGO[] = {
"",
" ▟█▙ ",
" ▟███▙ ",
" ▟█████▙ ",
" ▟███████▙ ",
" ▂▔▀▜██████▙ ",
" ▟██▅▂▝▜█████▙ ",
" ▟█████████████▙ ",
" ▟███████████████▙ ",
" ▟█████████████████▙ ",
" ▟███████████████████▙ ",
" ▟█████████▛▀▀▜████████▙ ",
" ▟████████▛ ▜███████▙ ",
" ▟█████████ ████████▙ ",
" ▟██████████ █████▆▅▄▃▂ ",
" ▟██████████▛ ▜█████████▙ ",
" ▟██████▀▀▀ ▀▀██████▙ ",
" ▟███▀▘ ▝▀███▙ ",
" ▟▛▀ ▀▜▙ "
};

29
logos/artix.h ノーマルファイル
ファイルの表示

@ -0,0 +1,29 @@
// This was stolen from neofetch
#define CYAN "\e[1;36m"
#define RESET "\e[0m"
#define COLOR CYAN
#define TITLECOLOR CYAN
char *LOGO[] = {
CYAN " ' " RESET,
CYAN " 'o' " RESET,
CYAN " 'ooo' " RESET,
CYAN " 'ooxoo' " RESET,
CYAN " 'ooxxxoo' " RESET,
CYAN " 'oookkxxoo' " RESET,
CYAN " 'oiioxkkxxoo' " RESET,
CYAN " ':;:iiiioxxxoo' " RESET,
CYAN " `'.;::ioxxoo' " RESET,
CYAN " '-. `':;jiooo' " RESET,
CYAN " 'oooio-.. `'i:io' " RESET,
CYAN " 'ooooxxxxoio:,. `'-;' " RESET,
CYAN " 'ooooxxxxxkkxoooIi:-. `' " RESET,
CYAN " 'ooooxxxxxkkkkxoiiiiiji' " RESET,
CYAN " 'ooooxxxxxkxxoiiii:'` .i' " RESET,
CYAN " 'ooooxxxxxoi:::'` .;ioxo' " RESET,
CYAN " 'ooooxooi::'` .:iiixkxxo' " RESET,
CYAN " 'ooooi:'` `'';ioxxo' " RESET,
CYAN " 'i:'` '':io' " RESET,
CYAN "'` `' " RESET
};

29
logos/crux.h ノーマルファイル
ファイルの表示

@ -0,0 +1,29 @@
// This was stolen from neofetch
#define BLUE "\e[1;34m"
#define MAGENTA "\e[1;35m"
#define WHITE "\e[1;37m"
#define RESET "\e[0m"
#define COLOR MAGENTA
#define TITLECOLOR BLUE
char *LOGO[] = {
BLUE " odddd " RESET,
BLUE " oddxkkkxxdoo " RESET,
BLUE " ddcoddxxxdoool " RESET,
BLUE " xdclodod olol " RESET,
BLUE " xoc xdd olol " RESET,
BLUE " xdc " MAGENTA "k00" BLUE "Okdlol " RESET,
BLUE " xxd" MAGENTA "kOKKKOkd" BLUE "ldd " RESET,
BLUE " xdco" MAGENTA "xOkdlo" BLUE "dldd " RESET,
BLUE " ddc:cl" MAGENTA "lll" BLUE "oooodo " RESET,
BLUE " odxxdd" WHITE "xkO000kx" BLUE "ooxdo " RESET,
BLUE " oxdd" WHITE "x0NMMMMMMWW0od" BLUE "kkxo " RESET,
BLUE " oooxd" WHITE "0WMMMMMMMMMW0o" BLUE "dxkx " RESET,
BLUE "docldkXW" WHITE "MMMMMMMWWN" BLUE "Odolco " RESET,
BLUE "xx" MAGENTA "dx" BLUE "kxxOKN" WHITE "WMMWN" BLUE "0xdoxo::c " RESET,
MAGENTA "xOkkO" BLUE "0oo" WHITE "odOW" MAGENTA "WW" BLUE "XkdodOxc:l " RESET,
MAGENTA "dkkkxkkk" WHITE "OKX" MAGENTA "NNNX0Oxx" BLUE "xc:cd " RESET,
MAGENTA " odxxdx" WHITE "xllod" MAGENTA "ddooxx" BLUE "dc:ldo " RESET,
MAGENTA " lodd" BLUE "dolccc" MAGENTA "ccox" BLUE "xoloo " RESET
};

28
logos/debian.h ノーマルファイル
ファイルの表示

@ -0,0 +1,28 @@
// This was stolen from neofetch
#define RED "\e[1;31m"
#define WHITE "\e[1;37m"
#define RESET "\e[0m"
#define COLOR RED
#define TITLECOLOR RED
char *LOGO[] = {
WHITE " _,met$$$$$gg. " RESET,
WHITE " ,g$$$$$$$$$$$$$$$P. " RESET,
WHITE " ,g$$P\" \"\"\"Y$$.\". " RESET,
WHITE " ,$$P' `$$$. " RESET,
WHITE "',$$P ,ggs. `$$b: " RESET,
WHITE "`d$$' ,$P\"' " RED "." WHITE " $$$ " RESET,
WHITE " $$P d$' " RED "," WHITE " $$P " RESET,
WHITE " $$: $$. - ,d$$' " RESET,
WHITE " $$; Y$b._ _,d$P' " RESET,
WHITE " Y$$. " RED "`." WHITE "`\"Y$$$$P\"' " RESET,
WHITE " `$$b " RED "\"-.__" WHITE " " RESET,
WHITE " `Y$$ " RESET,
WHITE " `Y$$. " RESET,
WHITE " `$$b. " RESET,
WHITE " `Y$$b. " RESET,
WHITE " `\"Y$b._ " RESET,
WHITE " `\"\"\" " RESET,
WHITE " " RESET
};

27
logos/devuan.h ノーマルファイル
ファイルの表示

@ -0,0 +1,27 @@
// This was stolen from neofetch
#define MAGENTA "\e[1;35m"
#define RESET "\e[0m"
#define COLOR MAGENTA
#define TITLECOLOR MAGENTA
char *LOGO[] = {
MAGENTA " ..,,;;;::;,.. " RESET,
MAGENTA " `':ddd;:,. " RESET,
MAGENTA " `'dPPd:,. " RESET,
MAGENTA " `:b$$b`. " RESET,
MAGENTA " 'P$$$d` " RESET,
MAGENTA " .$$$$$` " RESET,
MAGENTA " ;$$$$$P " RESET,
MAGENTA " .:P$$$$$$` " RESET,
MAGENTA " .,:b$$$$$$$;' " RESET,
MAGENTA " .,:dP$$$$$$$$b:' " RESET,
MAGENTA " .,:;db$$$$$$$$$$Pd'` " RESET,
MAGENTA " ,db$$$$$$$$$$$$$$b:'` " RESET,
MAGENTA ":$$$$$$$$$$$$b:'` " RESET,
MAGENTA " `$$$$$bd:''` " RESET,
MAGENTA " `'''` " RESET,
MAGENTA " " RESET,
MAGENTA " " RESET,
MAGENTA " " RESET
};

28
logos/freebsd.h ノーマルファイル
ファイルの表示

@ -0,0 +1,28 @@
// This was stolen from neofetch
#define RED "\e[1;31m"
#define WHITE "\e[1;37m"
#define RESET "\e[0m"
#define COLOR RED
#define TITLECOLOR RED
char *LOGO[] = {
WHITE "``` " RED "` " RESET,
WHITE " ` `.....---..." RED "....--.``` -/ " RESET,
WHITE " +o .--` " RED "/y:` +. " RESET,
WHITE " yo`:. " RED ":o `+- " RESET,
WHITE " y/ " RED "-/` -o/ " RESET,
WHITE " .- " RED "::/sy+:. " RESET,
WHITE " / " RED "`-- / " RESET,
WHITE " `: " RED ":` " RESET,
WHITE " `: " RED ":` " RESET,
WHITE " / " RED "/ " RESET,
WHITE " .- " RED "-. " RESET,
WHITE " -- " RED "-. " RESET,
WHITE " `:` " RED "`:` " RESET,
RED " .-- `--. " RESET,
RED " .---.....----. " RESET,
RED " " RESET,
RED " " RESET,
RED " " RESET
};

27
logos/gentoo.h ノーマルファイル
ファイルの表示

@ -0,0 +1,27 @@
#define MAGENTA "\e[1;35m"
#define WHITE "\e[1;37m"
#define RESET "\e[0m"
#define COLOR MAGENTA
#define TITLECOLOR MAGENTA
char *LOGO[] = {
MAGENTA " -/oyddmdhs+:. " RESET,
MAGENTA " -o" WHITE "dNMMMMMMMMNNmhy+" MAGENTA "-` " RESET,
MAGENTA " -y" WHITE "NMMMMMMMMMMMNNNmmdhy" MAGENTA "+- " RESET,
MAGENTA " `o" WHITE "mMMMMMMMMMMMMNmdmmmmddhhy" MAGENTA "/` " RESET,
MAGENTA " om" WHITE "MMMMMMMMMMMN" MAGENTA "hhyyyo" WHITE "hmdddhhhd" MAGENTA "o` " RESET,
MAGENTA ".y" WHITE "dMMMMMMMMMMd" MAGENTA "hs++so/s" WHITE "mdddhhhhdm" MAGENTA "+` " RESET,
MAGENTA " oy" WHITE "hdmNMMMMMMMN" MAGENTA "dyooy" WHITE "dmddddhhhhyhN" MAGENTA "d. " RESET,
MAGENTA " :o" WHITE "yhhdNNMMMMMMMNNNmmdddhhhhhyym" MAGENTA "Mh " RESET,
MAGENTA " .:" WHITE "+sydNMMMMMNNNmmmdddhhhhhhmM" MAGENTA "my " RESET,
MAGENTA " /m" WHITE "MMMMMMNNNmmmdddhhhhhmMNh" MAGENTA "s: " RESET,
MAGENTA " `o" WHITE "NMMMMMMMNNNmmmddddhhdmMNhs" MAGENTA "+` " RESET,
MAGENTA " `s" WHITE "NMMMMMMMMNNNmmmdddddmNMmhs" MAGENTA "/. " RESET,
MAGENTA " /N" WHITE "MMMMMMMMNNNNmmmdddmNMNdso" MAGENTA ":` " RESET,
MAGENTA "+M" WHITE "MMMMMMNNNNNmmmmdmNMNdso" MAGENTA "/- " RESET,
MAGENTA "yM" WHITE "MNNNNNNNmmmmmNNMmhs+/" MAGENTA" -` " RESET,
MAGENTA "/h" WHITE "MMNNNNNNNNMNdhs++/" MAGENTA "-` " RESET,
MAGENTA "`/" WHITE "ohdmmddhys+++/:" MAGENTA ".` " RESET,
MAGENTA " `-//////:--. " RESET
};

29
logos/linux.h ノーマルファイル
ファイルの表示

@ -0,0 +1,29 @@
// This was stolen from neofetch
#define GREY "\e[1;30m"
#define YELLOW "\e[1;33m"
#define WHITE "\e[1;37m"
#define RESET "\e[0m"
#define COLOR WHITE
#define TITLECOLOR WHITE
char *LOGO[] = {
GREY " ##### " RESET,
GREY " ####### " RESET,
GREY " ##" WHITE "O" GREY "#" WHITE "O" GREY "## " RESET,
GREY " #" YELLOW "#####" GREY "# " RESET,
GREY " ##" WHITE "##" YELLOW "###" WHITE "##" GREY "## " RESET,
GREY " #" WHITE "##########" GREY "## " RESET,
GREY " #" WHITE "############" GREY "## " RESET,
GREY " #" WHITE "############" GREY "### " RESET,
YELLOW " ##" GREY "#" WHITE "###########" GREY "##" YELLOW "# " RESET,
YELLOW "######" YELLOW "#" GREY "#" WHITE "######" GREY "#" YELLOW "###### " RESET,
YELLOW "#######" GREY "#" WHITE "#####" GREY "#" YELLOW "####### " RESET,
YELLOW " #####" GREY "#######" YELLOW "##### " RESET,
GREY " " RESET,
GREY " " RESET,
GREY " " RESET,
GREY " " RESET,
GREY " " RESET,
GREY " " RESET
};

28
logos/netbsd.h ノーマルファイル
ファイルの表示

@ -0,0 +1,28 @@
// This was stolen from neofetch
#define MAGENTA "\e[1;35m"
#define WHITE "\e[1;37m"
#define RESET "\e[0m"
#define COLOR MAGENTA
#define TITLECOLOR MAGENTA
char *LOGO[] = {
MAGENTA " `-/oshdmNMNdhyo+:-` " RESET,
WHITE "y" MAGENTA "/s+:-`` `.-:+oydNMMMMNhs/-`` " RESET,
WHITE "-m+" MAGENTA "NMMMMMMMMMMMMMMMMMMMNdhmNMMMmdhs+/-` " RESET,
WHITE " -m+" MAGENTA "NMMMMMMMMMMMMMMMMMMMMmy+:` " RESET,
WHITE " -N/" MAGENTA "dMMMMMMMMMMMMMMMds:` " RESET,
WHITE " -N/" MAGENTA "hMMMMMMMMMmho:` " RESET,
WHITE " -N/" MAGENTA "-:/++/:.` " RESET,
WHITE " :M+ " RESET,
WHITE " :Mo " RESET,
WHITE " :Ms " RESET,
WHITE " :Ms " RESET,
WHITE " :Ms " RESET,
WHITE " :Ms " RESET,
WHITE " :Ms " RESET,
WHITE " :Ms " RESET,
WHITE " :Ms " RESET,
WHITE " :Ms " RESET,
WHITE " " RESET
};

35
logos/openbsd.h ノーマルファイル
ファイルの表示

@ -0,0 +1,35 @@
// This was stolen from neofetch
#define GREY "\e[1;30m"
#define RED "\e[1;31m"
#define YELLOW "\e[1;33m"
#define CYAN "\e[1;36m"
#define RESET "\e[0m"
#define COLOR YELLOW
#define TITLECOLOR YELLOW
char *LOGO[] = {
CYAN " _ " RESET,
CYAN " (_) " RESET,
YELLOW " | . " RESET,
YELLOW " . |L /| . " CYAN "_ " RESET,
YELLOW " _ . |\\ _| \\--+._/| . " CYAN " (_) " RESET,
YELLOW " / ||\\| Y J ) / |/| ./ " RESET,
YELLOW " J |)'( | ` F`.'/ " CYAN " _ " RESET,
YELLOW " -<| F __ .-< " CYAN " (_) " RESET,
YELLOW " | / .-'" CYAN "." YELLOW " `. /" CYAN "-. " YELLOW "L___ " RESET,
YELLOW " J \\ < " CYAN "\\ " YELLOW " | |" GREY " O" CYAN "\\" YELLOW "|.-' " CYAN " _ " RESET,
YELLOW " _J \\ .- \\" CYAN "/" GREY " O " CYAN "|" YELLOW" | \\ |F " CYAN " (_) " RESET,
YELLOW " '-F -<_. \\ .-' `-' L__ " RESET,
YELLOW "__J _ _. >-' )" RED "._." YELLOW " |-' " RESET,
YELLOW " `-|.' /_. " RED "\\_|" YELLOW " F " RESET,
YELLOW " /.- . _.< " RESET,
YELLOW " /' /.' .' `\\ " RESET,
YELLOW " /L /' |/ _.-'-\\ " RESET,
YELLOW " /'J ___.---'\\| " RESET,
YELLOW " |\\ .--' V | `. ` " RESET,
YELLOW " |/`. `-. `._) " RESET,
YELLOW " / .-.\\ " RESET,
YELLOW " \\ ( `\\ " RESET,
YELLOW " `.\\ " RESET
};

28
logos/openindiana.h ノーマルファイル
ファイルの表示

@ -0,0 +1,28 @@
#define BLUE "\e[1;34m"
#define WHITE "\e[1;37m"
#define RESET "\e[0m"
#define COLOR BLUE
#define TITLECOLOR BLUE
char *LOGO[] = {
WHITE " .sy/ " RESET,
WHITE " .yh+ " RESET,
WHITE " " RESET,
BLUE " " BLUE "-+syyyo+-" WHITE " /+. " RESET,
BLUE " " BLUE "+ddo/---/sdh/" WHITE " ym- " RESET,
BLUE " " BLUE "`hm+ `sms" WHITE " ym-```````.-. " RESET,
BLUE " " BLUE "sm+ sm/" WHITE " ym- +s " RESET,
BLUE " " BLUE "hm. /mo" WHITE " ym- /h " RESET,
BLUE " " BLUE "omo ym:" WHITE " ym- `os` " RESET,
BLUE " " BLUE "smo` .ym+" WHITE " ym- .os- " RESET,
WHITE " `` " BLUE ":ymy+///oyms-" WHITE " ym- .+s+. " RESET,
WHITE " ..` " BLUE "`:+oo+/-`" WHITE " -//oyo- " RESET,
WHITE " -:` .:oys/. " RESET,
WHITE "+- `./oyys/. " RESET,
WHITE "h+` `.-:+oyyyo/-` " RESET,
WHITE "`/ossssysso+/-.` " RESET,
WHITE " " RESET,
WHITE " " RESET,
WHITE " " RESET
};

28
logos/postmarketos.h ノーマルファイル
ファイルの表示

@ -0,0 +1,28 @@
// This was stolen from neofetch
#define GREEN "\e[1;32m"
#define RESET "\e[0m"
#define COLOR GREEN
#define TITLECOLOR GREEN
char *LOGO[] = {
GREEN " /\\ " RESET,
GREEN " / \\ " RESET,
GREEN " / \\ " RESET,
GREEN " / \\ " RESET,
GREEN " / \\ " RESET,
GREEN " / \\ " RESET,
GREEN " \\ \\ " RESET,
GREEN " /\\ \\____ \\ " RESET,
GREEN " / \\____ \\ \\ " RESET,
GREEN " / / \\ \\ " RESET,
GREEN " / / \\ ___\\ " RESET,
GREEN " / / \\ / ____ " RESET,
GREEN " / / \\/ / \\ " RESET,
GREEN " / / __________/ \\ " RESET,
GREEN " / \\ \\ \\ " RESET,
GREEN " / \\ \\ \\ " RESET,
GREEN " / / / \\ " RESET,
GREEN "/___________/ /____________________\\ " RESET,
GREEN " " RESET
};

31
logos/void.h ノーマルファイル
ファイルの表示

@ -0,0 +1,31 @@
// This was stolen from neofetch
#define GREY "\e[1;30m"
#define GREEN "\e[1;32m"
#define WHITE "\e[1;37m"
#define RESET "\e[0m"
#define COLOR WHITE
#define TITLECOLOR GREEN
char *LOGO[] = {
GREEN " __.;=====;.__ " RESET,
GREEN " _.=+==++=++=+=+===;. " RESET,
GREEN " -=+++=+===+=+=+++++=_ " RESET,
GREEN " . -=:`` `--==+=++==. " RESET,
GREEN " _vi, ` --+=++++: " RESET,
GREEN " .uvnvi. _._ -==+==+. " RESET,
GREEN " .vvnvnI` .;==|==;. :|=||=|. " RESET,
GREY "+QmQQm" GREEN "pvvnv; " GREY "_yYsyQQWUUQQQm #QmQ#" GREEN ":" GREY "QQQWUV$QQm. " RESET,
GREY " -QQWQW" GREEN "pvvo" GREY "wZ?.wQQQE" GREEN "==<" GREY "!QWWQ/QWQW.QQWW" GREEN "(: " GREY "jQWQE " RESET,
GREY " -$QQQQmmU' jQQQ@" GREEN "+=<" GREY "QWQQ)mQQQ.mQQQC" GREEN "+;" GREY "jWQQ@' " RESET,
GREY " -$WQ8Y" GREEN "nI: " GREY "QWQQwgQQWV" GREEN"`" GREY "mWQQ.jQWQQgyyWW@! " RESET,
GREEN " -1vvnvv. `~+++` ++|+++ " RESET,
GREEN " +vnvnnv, `-|=== " RESET,
GREEN " +vnvnvns. . :=- " RESET,
GREEN " -Invnvvnsi..___..=sv=. ` " RESET,
GREEN " +Invnvnvnnnnnnnnvvnn;. " RESET,
GREEN " ~|Invnvnvvnvvvnnv}+` " RESET,
GREEN " -~|{*l}*|~ " RESET,
GREEN " " RESET,
GREEN " " RESET
};

ファイルの表示

@ -135,7 +135,7 @@ static char *get_title() {
title_length = strlen(hostname) + strlen(username) + 1;
char *title = malloc(BUF_SIZE);
snprintf(title, BUF_SIZE, COLOR"%s\e[0m@"COLOR"%s", username, hostname);
snprintf(title, BUF_SIZE, TITLECOLOR"%s\e[0m@"TITLECOLOR"%s", username, hostname);
return title;
}
@ -178,36 +178,39 @@ static char *get_kernel() {
}
static char *get_host() {
char *host = malloc(BUF_SIZE), buffer[BUF_SIZE/2];
FILE *product_name, *product_version, *model;
char *host = malloc(BUF_SIZE), buffer[BUF_SIZE/2];
FILE *product_name, *product_version, *model;
if((product_name = fopen("/sys/devices/virtual/dmi/id/product_name", "r")) != NULL) {
if((product_version = fopen("/sys/devices/virtual/dmi/id/product_version", "r")) != NULL) {
fread(host, 1, BUF_SIZE/2, product_name);
remove_newline(host);
strcat(host, " ");
fread(buffer, 1, BUF_SIZE/2, product_version);
remove_newline(buffer);
strcat(host, buffer);
fclose(product_version);
} else {
fclose(product_name);
goto model_fallback;
}
fclose(product_name);
return host;
if ((product_name = fopen("/sys/devices/virtual/dmi/id/product_name", "r")) != NULL) {
if ((product_version = fopen("/sys/devices/virtual/dmi/id/product_version", "r")) != NULL) {
fread(host, 1, BUF_SIZE/2, product_name);
remove_newline(host);
strcat(host, " ");
fread(buffer, 1, BUF_SIZE/2, product_version);
remove_newline(buffer);
if (strcmp(buffer, "To Be Filled By O.E.M.") != 0) {
strcat(host, " ");
strcat(host, buffer);
}
fclose(product_version);
} else {
fclose(product_name);
goto model_fallback;
}
fclose(product_name);
return host;
}
model_fallback:
if((model = fopen("/sys/firmware/devicetree/base/model", "r")) != NULL) {
fread(host, 1, BUF_SIZE, model);
remove_newline(host);
return host;
}
if ((model = fopen("/sys/firmware/devicetree/base/model", "r")) != NULL) {
fread(host, 1, BUF_SIZE, model);
remove_newline(host);
return host;
}
status = -1;
halt_and_catch_fire("unable to get host");
return NULL;
status = -1;
halt_and_catch_fire("unable to get host");
return NULL;
}
static char *get_uptime() {
@ -232,64 +235,10 @@ static char *get_uptime() {
return uptime;
}
// returns "<Battery Percentage>% [<Charging | Discharging | Unknown>]"
static char *get_battery_percentage() {
// battery status is at most 11 characters: "discharging"
char *battery_percentage = malloc(BUF_SIZE / 2), battery_status[12];
FILE *battery_percentage_file, *battery_status_file;
if((battery_percentage_file = fopen(BATTERY_DIRECTORY "/capacity", "r")) != NULL) {
// at most 100, which is 3 characters
fread(battery_percentage, 1, 3, battery_percentage_file);
remove_newline(battery_percentage);
strcat(battery_percentage, "% [");
if((battery_status_file = fopen(BATTERY_DIRECTORY "/status", "r")) != NULL) {
fread(battery_status, 1, 12, battery_status_file);
remove_newline(battery_status);
strcat(battery_percentage, battery_status);
strcat(battery_percentage, "]");
}
else {
strcat(battery_percentage, "Unknown]");
}
fclose(battery_status_file);
}
else {
halt_and_catch_fire("unable to get battery information");
}
fclose(battery_percentage_file);
return battery_percentage;
}
static char *get_packages(const char* dirname, const char* pacname, int num_extraneous) {
int num_packages = 0;
DIR * dirp;
struct dirent *entry;
dirp = opendir(dirname);
if(dirp == NULL) {
status = -1;
halt_and_catch_fire("You may not have %s installed", dirname);
}
while((entry = readdir(dirp)) != NULL) {
if(entry->d_type == DT_DIR) num_packages++;
}
num_packages -= (2 + num_extraneous); // accounting for . and ..
status = closedir(dirp);
char *packages = malloc(BUF_SIZE);
snprintf(packages, BUF_SIZE, "%d (%s)", num_packages, pacname);
return packages;
}
static char *get_packages_pacman() {
return get_packages("/var/lib/pacman/local", "pacman", 0);
static char *get_packages() {
char *packages = malloc(BUF_SIZE);
snprintf(packages, BUF_SIZE, "%s", PACKAGES);
return packages;
}
static char *get_shell() {
@ -298,9 +247,9 @@ static char *get_shell() {
char *shell_name = strrchr(getenv("SHELL"), '/');
if(shell_name == NULL) /* if $SHELL doesn't have a '/' */
strncpy(shell, shell_path, BUF_SIZE); /* copy the whole thing over */
strncpy(shell, shell_path, BUF_SIZE - 1); /* copy the whole thing over */
else
strncpy(shell, shell_name + 1, BUF_SIZE); /* o/w copy past the last '/' */
strncpy(shell, shell_name + 1, BUF_SIZE - 1); /* o/w copy past the last '/' */
return shell;
}
@ -341,7 +290,7 @@ static char *get_resolution() {
modes = fopen(modes_file_name, "r");
if (modes != NULL) {
if (getline(&line, &len, modes) != -1) {
strncpy(resolution, line, BUF_SIZE);
strncpy(resolution, line, BUF_SIZE - 1);
remove_newline(resolution);
free(line);
@ -361,42 +310,117 @@ static char *get_resolution() {
return resolution;
}
static char *get_terminal() {
unsigned char *prop;
char *terminal = malloc(BUF_SIZE);
static char *get_wm() {
char *wayland_display = getenv("WAYLAND_DISPLAY");
if (wayland_display != NULL) {
char *wayland_wms[] = {
"[a]rcan", "[a]sc", "[c]layland", "[d]wc", "[d]wl", "[f]ireplace",
"[g]nome-shell", "[g]reenfield", "[g]refsen", "[k]win",
"[l]ipstick", "[m]aynard", "[m]azecompositor", "[m]otorcar",
"[o]rbital", "[o]rbment", "[p]erceptia", "[r]ustland", "[s]way",
"[u]lubis", "[v]elox", "[w]avy", "[w]ay-cooler", "[w]ayfire",
"[w]ayhouse", "[w]esteros", "[w]estford", "[w]eston"
};
/* check if xserver is running or if we are running in a straight tty */
if (display != NULL) {
char command[1024] = "ps aux | grep -m 1 -E -o '";
size_t num_wms = sizeof(wayland_wms) / sizeof(wayland_wms[0]);
for (size_t i = 0; i < num_wms - 1; i++) {
strcat(command, wayland_wms[i]);
strcat(command, "|");
}
strcat(command, wayland_wms[sizeof(wayland_wms) / sizeof(wayland_wms[0]) - 1]);
strcat(command, "'");
unsigned long _, // not unused, but we don't need the results
window = RootWindow(display, XDefaultScreen(display));
Atom a,
active = XInternAtom(display, "_NET_ACTIVE_WINDOW", True),
class = XInternAtom(display, "WM_CLASS", True);
#define GetProp(property) \
XGetWindowProperty(display, window, property, 0, 64, 0, 0, &a, (int *)&_, &_, &_, &prop);
GetProp(active);
window = (prop[3] << 24) + (prop[2] << 16) + (prop[1] << 8) + prop[0];
free(prop);
if(!window) goto terminal_fallback;
GetProp(class);
#undef GetProp
snprintf(terminal, BUF_SIZE, "%s", prop);
free(prop);
} else {
terminal_fallback:
strncpy(terminal, getenv("TERM"), BUF_SIZE); /* fallback to old method */
/* in tty, $TERM is simply returned as "linux"; in this case get actual tty name */
if (strcmp(terminal, "linux") == 0) {
strncpy(terminal, ttyname(STDIN_FILENO), BUF_SIZE);
}
FILE *fp = popen(command, "r");
if (fp == NULL) {
perror("popen");
return strdup("不明");
}
return terminal;
char wm_name[256];
if (fgets(wm_name, sizeof(wm_name), fp) != NULL) {
char *newline = strchr(wm_name, '\n');
if (newline) {
*newline = '\0';
}
} else {
strcpy(wm_name, "不明");
}
pclose(fp);
return strdup(wm_name);
}
Display *dpy = XOpenDisplay(NULL);
if (dpy == NULL) {
fprintf(stderr, "Unable to connect to display\n");
return strdup("不明");
}
int screen = DefaultScreen(dpy);
Window root = RootWindow(dpy, screen);
Atom atom = XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False);
Atom type;
int format;
unsigned long nitems, bytes_after;
unsigned char *prop;
int status = XGetWindowProperty(dpy, root, atom, 0, (~0L), False, AnyPropertyType, &type, &format, &nitems, &bytes_after, &prop);
if (status != Success || !prop) {
fprintf(stderr, "Unable to get window manager property\n");
XCloseDisplay(dpy);
return strdup("不明");
}
Window wm_window = *(Window *)prop;
XFree(prop);
status = XGetWindowProperty(dpy, wm_window, XInternAtom(dpy, "_NET_WM_NAME", False), 0, (~0L), False, AnyPropertyType, &type, &format, &nitems, &bytes_after, &prop);
if (status != Success || !prop) {
fprintf(stderr, "Unable to get window manager name property\n");
XCloseDisplay(dpy);
return strdup("不明");
}
char *wm_name = strdup((char *)prop);
XFree(prop);
XCloseDisplay(dpy);
return wm_name;
}
static char *get_terminal() {
unsigned char *prop;
char *terminal = malloc(BUF_SIZE);
if (display != NULL) {
unsigned long _, // not unused, but we don't need the results
window = RootWindow(display, XDefaultScreen(display));
Atom a,
active = XInternAtom(display, "_NET_ACTIVE_WINDOW", True),
class = XInternAtom(display, "WM_CLASS", True);
#define GetProp(property) \
XGetWindowProperty(display, window, property, 0, 64, 0, 0, &a, (int *)&_, &_, &_, &prop);
GetProp(active);
window = (prop[3] << 24) + (prop[2] << 16) + (prop[1] << 8) + prop[0];
free(prop);
if(!window) goto terminal_fallback;
GetProp(class);
#undef GetProp
snprintf(terminal, BUF_SIZE, "%s", prop);
free(prop);
} else {
terminal_fallback:
strncpy(terminal, getenv("TERM"), BUF_SIZE - 1); /* fallback to old method */
if (strcmp(terminal, "linux") == 0) {
strncpy(terminal, ttyname(STDIN_FILENO), BUF_SIZE - 1);
}
}
return terminal;
}
static char *get_cpu() {
@ -500,10 +524,10 @@ static char *find_gpu(int index) {
dev = pacc->devices;
while(dev != NULL) {
pci_fill_info(dev, PCI_FILL_IDENT);
pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_BASES | PCI_FILL_CLASS);
device_class = pci_lookup_name(pacc, buffer, sizeof(buffer), PCI_LOOKUP_CLASS, dev->device_class);
if(strcmp("VGA compatible controller", device_class) == 0 || strcmp("3D controller", device_class) == 0) {
strncpy(gpu, pci_lookup_name(pacc, buffer, sizeof(buffer), PCI_LOOKUP_DEVICE | PCI_LOOKUP_VENDOR, dev->vendor_id, dev->device_id), BUF_SIZE);
strncpy(gpu, pci_lookup_name(pacc, buffer, sizeof(buffer), PCI_LOOKUP_DEVICE | PCI_LOOKUP_VENDOR, dev->vendor_id, dev->device_id), BUF_SIZE - 1);
if(gpu_index == index) {
found = true;
break;
@ -717,13 +741,13 @@ int main(int argc, char *argv[]) {
for (int i = 0; i < COUNT(LOGO); i++) {
// If we've run out of information to show...
if(i >= COUNT(config) - offset) // just print the next line of the logo
printf(COLOR"%s\n", LOGO[i]);
printf("%s\n", LOGO[i]);
else {
// Otherwise, we've got a bit of work to do.
char *label = config[i+offset].label,
*value = get_value(config[i+offset], read_cache, cache_data);
if (strcmp(value, "") != 0) { // check if value is an empty string
printf(COLOR"%s%s\e[0m%s\n", LOGO[i], label, value); // just print if not empty
printf("%s"COLOR"%s\e[0m%s\n", LOGO[i], label, value); // just print if not empty
} else {
if (strcmp(label, "") != 0) { // check if label is empty, otherwise it's a spacer
++offset; // print next line of information
@ -731,7 +755,7 @@ int main(int argc, char *argv[]) {
label = config[i+offset].label; // read new label and value
value = get_value(config[i+offset], read_cache, cache_data);
}
printf(COLOR"%s%s\e[0m%s\n", LOGO[i], label, value);
printf("%s"COLOR"%s\e[0m%s\n", LOGO[i], label, value);
}
free(value);

ファイルの表示

@ -7,10 +7,10 @@ static char *get_title(),
*get_kernel(),
*get_host(),
*get_uptime(),
*get_battery_percentage(),
*get_packages_pacman(),
*get_packages(),
*get_shell(),
*get_resolution(),
*get_wm(),
*get_terminal(),
*get_cpu(),
*get_gpu1(),