コミットを比較

...

39 コミット

作成者 SHA1 メッセージ 日付
守矢諏訪子 fc2b3fa498 ライセンスの修正 2024-09-01 04:28:10 +09:00
守矢諏訪子 2376e7612a うんち 2024-08-16 10:34:43 +09:00
守矢諏訪子 a79b20b41f コンフィグ: ロゴの設定 #44 2024-08-16 03:06:00 +09:00
守矢諏訪子 3db5f7c209 コンフィグ: 「show|hide logo big|small custom」 2024-08-16 02:14:19 +09:00
守矢諏訪子 6cfc3ed172 コンフィグ: 「show|hide logo」と「show|hide logo big|small」 2024-08-16 02:06:03 +09:00
守矢諏訪子 356ef1ff4b この部分はLinuxとIllumosだけで必要 2024-08-16 01:43:35 +09:00
守矢諏訪子 06d09963b5 macOS: 色バグの修正 2024-08-16 01:39:50 +09:00
守矢諏訪子 8e036db3f6 ごめん 2024-08-16 01:21:34 +09:00
守矢諏訪子 6575c53d9c マンコページ 2024-08-16 01:19:13 +09:00
守矢諏訪子 22062d76c6 キャッシュから削除の関数 2024-08-16 01:17:52 +09:00
守矢諏訪子 feb4f93545 os、host、distro、cpu、とgpuのモジュールにキャッシングの追加 2024-08-16 00:29:27 +09:00
守矢諏訪子 0170c12f9b . 2024-08-14 20:44:04 +09:00
守矢諏訪子 608038ddad ごめん 2024-08-14 20:42:12 +09:00
守矢諏訪子 e90392170c Merge branch 'customlogo' of gitler.moe:suwako/farfetch into customlogo 2024-08-14 20:36:24 +09:00
守矢諏訪子 92f1fb0982 カスタムロゴコンフィグの追加 2024-08-14 20:36:05 +09:00
守矢諏訪子 f1d1323595 ごめん 2024-08-14 17:20:17 +09:00
守矢諏訪子 cb9191123b 色コンフィグの追加 2024-08-14 16:55:32 +09:00
守矢諏訪子 ae56f01588 Merge branch 'master' of gitler.moe:suwako/farfetch 2024-08-10 15:38:24 +09:00
守矢諏訪子 fe371f5f13 LinuxとBSD: 今から、静的リンクがデフォルトになりました(動的リンクには「make LDFLAGS=-lc」をご利用下さい) 2024-08-10 15:37:41 +09:00
守矢諏訪子 9ed1f6cf36 セックス 2024-07-18 19:23:12 +09:00
守矢諏訪子 8d8a604c02 . 2024-07-18 18:47:14 +09:00
守矢諏訪子 8bed0f368a ロゴとパッケージ 2024-07-18 17:29:36 +09:00
守矢諏訪子 7c8ea39b59 Linux: pacman対応 2024-07-18 16:09:05 +09:00
守矢諏訪子 a1c03d5c31 Pop OSロゴの追加 2024-07-18 15:44:34 +09:00
守矢諏訪子 d93928e032 ごめん 2024-07-18 15:29:10 +09:00
守矢諏訪子 2c424c0bcb Arco、Hyperbola、Parabolaロゴの追加 2024-07-18 15:27:39 +09:00
守矢諏訪子 0079202d8b Linux: 「hostname」コマンドがなければ、「cat /etc/hostname」を実効する様に 2024-07-18 03:12:54 +09:00
守矢諏訪子 5927aefd61 ごめん 2024-07-18 03:06:49 +09:00
守矢諏訪子 cbd6c50beb . 2024-07-18 03:05:47 +09:00
守矢諏訪子 2e6d8394ce Arcoロゴの追加 2024-07-18 02:51:19 +09:00
守矢諏訪子 6358db2074 Kubuntu、Xubuntu、Lubuntuロゴの追加 2024-07-18 02:23:50 +09:00
守矢諏訪子 f6960d3f1f Linux: 「/proc/cpuinfo」で使ってCPU速さの受け取る様に 2024-07-18 01:36:43 +09:00
守矢諏訪子 61f3304581 Linux: 全てのケースに解像度を受け取る様に 2024-07-18 01:14:18 +09:00
守矢諏訪子 eef3420bbb #44#45 の準備 2024-07-17 22:12:54 +09:00
守矢諏訪子 1bd16354f7 ちんぽ 2024-07-17 21:29:47 +09:00
守矢諏訪子 4e6d1d305a コンフィグのエラーの修正(osとhostのコンフリクト) (#40) 2024-07-17 21:02:39 +09:00
守矢諏訪子 1ef76b5fdf Merge branch 'master' of gitler.moe:suwako/farfetch into macos-res 2024-07-17 20:44:23 +09:00
守矢諏訪子 b8da1256e9 macOSでOS情報の修正 2024-07-16 21:50:04 +09:00
守矢諏訪子 14e524766f macOS: 解像度の追加 2024-07-16 18:26:32 +09:00
31個のファイルの変更2915行の追加1006行の削除

ファイルの表示

@ -1,3 +1,20 @@
# 0.3.0
* macOSでOS情報の修正
* macOS: 解像度の追加
* コンフィグのエラーの修正(osとhostのコンフリクト)
* Linux: 全てのケースに解像度を受け取る様に
* Linux: 「/proc/cpuinfo」で使ってCPU速さの受け取る様に
* Kubuntu、Xubuntu、Lubuntu、Arco、Hyperbola、Parabola、とPop OSロゴの追加
* Ubuntu MATE、Ubuntu Budgie、Ubuntu Lomiri、Ubuntu Unity、とUbuntu Cinnamonロゴの追加
* Linux: 「hostname」コマンドがなければ、「cat /etc/hostname」を実効する様に
* Linux: pacman、rpm対応
* LinuxとBSD: 今から、静的リンクがデフォルトになりました(動的リンクには「make LDFLAGS=-lc」をご利用下さい)
* 色コンフィグの追加
* カスタムロゴコンフィグの追加
* モジュールのキャッシングの追加(それでスピードアップする)
* コンフィグでロゴの設定の追加(隠し・表示、大・小、カスタムロゴ、LinuxとIllumosの場合ディストロロゴ)
* マンページの英訳
# 0.2.0
* Manjaroのロゴの追加
* OpenSUSEのロゴの追加

ファイルの表示

@ -1,4 +1,3 @@
Copyright © 2004-2011 by Internet Systems Consortium, Inc. ("ISC")
Copyright © 2018-2024 by 076.moe
Permission to use, copy, modify, and/or distribute this software for any

ファイルの表示

@ -44,33 +44,37 @@ CNFPREFIX = /boot/home/config/settings
CC = cc
FILES = main.c src/*.c src/logo/*.c
CFLAGS = -Wall -Wextra -O3 -I${PREFIX}/include -L${PREFIX}/lib
.if ${UNAME_S} == "NetBSD"
CFLAGS += -I/usr/pkg/include -L/usr/pkg/lib -I/usr/include -L/usr/lib
.endif
CFLAGS = -Wall -Wextra -O3
LDFLAGS = -static -lc
.if ${UNAME_S} == "Haiku" || ${UNAME_S} == "Darwin" || ${UNAME_S} == "SunOS"\
|| ${UNAME_S} == "Minix"
LDFLAGS = -lc
.endif
all:
${CC} ${CFLAGS} -o ${NAME} ${FILES} ${LDFLAGS}
strip ${NAME}
clean:
rm -f ${NAME}
rm -rf ${NAME}
dist:
mkdir -p ${NAME}-${VERSION} release/src
cp -R LICENSE.txt Makefile README.md CHANGELOG.md\
${NAME}.conf ${NAME}.1 ${NAME}.conf.5 main.c src ${NAME}-${VERSION}
${NAME}.conf ${NAME}.1 ${NAME}-en.1 ${NAME}.conf.5 ${NAME}.conf-en.5\
main.c src ${NAME}-${VERSION}
tar zcfv release/src/${NAME}-${VERSION}.tar.gz ${NAME}-${VERSION}
rm -rf ${NAME}-${VERSION}
man:
mkdir -p release/man/${VERSION}
sed "s/VERSION/${VERSION}/g" < ${NAME}.1 > release/man/${VERSION}/${NAME}.1
sed "s/VERSION/${VERSION}/g" < ${NAME}.conf.5 > release/man/${VERSION}/${NAME}.conf.5
depend:
${DEPS}
sed "s/VERSION/${VERSION}/g" < ${NAME}-en.1 > release/man/${VERSION}/${NAME}-en.1
sed "s/VERSION/${VERSION}/g" < ${NAME}.conf.5 >\
release/man/${VERSION}/${NAME}.conf.5
sed "s/VERSION/${VERSION}/g" < ${NAME}.conf-en.5 >\
release/man/${VERSION}/${NAME}.conf-en.5
release:
mkdir -p release/bin/${VERSION}/${OS}/${UNAME_M}
@ -81,18 +85,26 @@ release:
install:
mkdir -p ${DESTDIR}${PREFIX}/bin ${DESTDIR}${MANPREFIX}/man1\
${DESTDIR}${MANPREFIX}/man5
cp -f ${NAME} ${DESTDIR}${PREFIX}/bin
cp -f ${NAME}.conf ${DESTDIR}${CNFPREFIX}
cp -rf ${NAME} ${DESTDIR}${PREFIX}/bin
cp -rf ${NAME}.conf ${DESTDIR}${CNFPREFIX}
chmod 755 ${DESTDIR}${PREFIX}/bin/${NAME}
sed "s/VERSION/${VERSION}/g" < ${NAME}.1 > ${DESTDIR}${MANPREFIX}/man1/${NAME}.1
chmod 644 ${DESTDIR}${MANPREFIX}/man1/${NAME}.1
sed "s/VERSION/${VERSION}/g" < ${NAME}-en.1 >\
${DESTDIR}${MANPREFIX}/man1/${NAME}-en.1
chmod 644 ${DESTDIR}${MANPREFIX}/man1/${NAME}-en.1
sed "s/VERSION/${VERSION}/g" < ${NAME}.conf.5 >\
${DESTDIR}${MANPREFIX}/man5/${NAME}.conf.5
chmod 644 ${DESTDIR}${MANPREFIX}/man5/${NAME}.conf.5
sed "s/VERSION/${VERSION}/g" < ${NAME}.conf-en.5 >\
${DESTDIR}${MANPREFIX}/man5/${NAME}.conf-en.5
chmod 644 ${DESTDIR}${MANPREFIX}/man5/${NAME}.conf-en.5
uninstall:
rm -f ${DESTDIR}${PREFIX}/bin/${NAME}
rm -rf ${DESTDIR}${PREFIX}/man/man1/${NAME}.1
rm -rf ${DESTDIR}${PREFIX}/man/man5/${NAME}.conf.5
rm -rf ${DESTDIR}${PREFIX}/bin/${NAME}
rm -rf ${DESTDIR}${MANPREFIX}/man1/${NAME}.1
rm -rf ${DESTDIR}${MANPREFIX}/man1/${NAME}-en.1
rm -rf ${DESTDIR}${MANPREFIX}/man5/${NAME}.conf.5
rm -rf ${DESTDIR}${MANPREFIX}/man5/${NAME}-en.conf.5
.PHONY: all clean dist man release install uninstall

ファイルの表示

@ -50,3 +50,10 @@ sudo apt install -y build-essential bmake git pciutils
bmake
sudo bmake install
```
### Fedora | Red Hat | CentOS | Rocky Linux
```sh
sudo dnf install bmake clang
bmake
sudo bmake install
```

23
farfetch-en.1 ノーマルファイル
ファイルの表示

@ -0,0 +1,23 @@
.TH FARFETCH 1 VERSION
.SH NAME
farfetch - system info
.br
.B farfetch
[-rs] [-l distro]
.SH DESCRIPTION
.PP
System Information
.TP
\fB\,-r\fR
Delete from cache and run (except Haiku)
.TP
\fB\,-s\fR
Small logo display
.TP
\fB\,-l\fR [\fI\,distro\fR]
Displaying different distribution logos (Linux and Illumos only)
.SH AUTHORS
.PP
TechnicalSuwako (Developer)
.br
Hatuhatu Taro (Developer)

ファイルの表示

@ -3,16 +3,21 @@
farfetch - system info
.br
.B farfetch
[-s]
[-rs] [-l distro]
.SH DESCRIPTION
.PP
システム情報
.TP
\fB\,s\fR
\fB\,-r\fR
キャッシュから削除して、実効(Haiku以外)
.TP
\fB\,-s\fR
小さいロゴの表示
.TP
\fB\,l\fR
\fB\,-l\fR [\fI\,distro\fR]
違うディストリビューションのロゴの表示(LinuxとIllumosのみ)
.SH AUTHORS
.PP
テクニカル諏訪子(開発者)
.br
ハツラツ太郎(開発者)

ファイルの表示

@ -1,14 +1,51 @@
show logo big
#hide logo
#show logo small
#show logo big custom
#show logo small custom
#show logo big crux
#show logo small alpine
show os
show host
show distro
show uptime
show recording
#hide recording
show libc
show packages
show resolution
#hide resolution
show wm
show shell
show cpu
show gpu
show memory
show storage
show storage all
#show storage /dev/sd0a
#show storage zroot and xroot
#show storage /dev/sda0, /dev/sda1 and /dev/sda2
#set color yellow # red|green|blue|yellow|magenta|white|grey|cyan
#set titlecolor magenta # red|green|blue|yellow|magenta|white|grey|cyan
#define custom big logo:
#[MAGENTA] ⢀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⣠⠾⠛⠶⣄⢀⣠⣤⠴⢦⡀⠀⠀⠀⠀ [RESET]
#[MAGENTA]⠀⠀⠀⢠⡿⠉⠉⠉⠛⠶⠶⠖⠒⠒⣾⠋⠀⢀⣀⣙⣯⡁⠀⠀⠀⣿⠀⠀⠀⠀ [RESET]
#[MAGENTA]⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⡏⠀⠀⢯⣼⠋⠉⠙⢶⠞⠛⠻⣆⠀⠀⠀ [RESET]
#[MAGENTA]⠀⠀⠀⢸⣧⠆⠀⠀⠀⠀⠀⠀⠀⠀⠻⣦⣤⡤⢿⡀⠀⢀⣼⣷⠀⠀⣽⠀⠀⠀ [RESET]
#[MAGENTA]⠀⠀⠀⣼⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⢏⡉⠁⣠⡾⣇⠀⠀⠀ [RESET]
#[MAGENTA]⠀⠀⢰⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠋⠉⠀⢻⡀⠀⠀ [RESET]
#[MAGENTA]⣀⣠⣼⣧⣤⠀⠀[WHITE]⠀⣀⡀[MAGENTA][CYAN]⣀⡀[MAGENTA]⠀⠀⠐⠖⢻⡟⠓⠒ [RESET]
#[MAGENTA]⠀⠀⠈⣷⣀⡀⠀[WHITE]⠘⠿⠇[MAGENTA]⠀⠀⠀⢀⣀⣀⠀⠀⠀⠀[CYAN]⠿⠟[MAGENTA]⠀⠀⠀⠲⣾⠦⢤⠀ [RESET]
#[MAGENTA]⠀⠀⠋⠙⣧⣀⡀⠀⠀⠀⠀⠀⠀⠘⠦⠼⠃⠀⠀⠀⠀⠀⠀⠀⢤⣼⣏⠀⠀⠀ [RESET]
#[MAGENTA]⠀⠀⢀⠴⠚⠻⢧⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⠞⠉⠉⠓⠀⠀ [RESET]
#[MAGENTA]⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠛⠶⠶⠶⣶⣤⣴⡶⠶⠶⠟⠛⠉⠀⠀⠀⠀⠀⠀⠀ [RESET]
#EOL
#define custom small logo:
#[WHITE] |\____/| [RESET]
#[WHITE] | | [RESET]
#[WHITE] | [GREY]0 0[WHITE] | [RESET]
#[WHITE] | [RED]ω[WHITE] | [RESET]
#[WHITE] \_____/ [RESET]
#EOL

82
farfetch.conf-en.5 ノーマルファイル
ファイルの表示

@ -0,0 +1,82 @@
.TH FARFETCH.CONF 5 VERSION
.SH NAME
.B farfetch.conf
.SH DESCRIPTION
.PP
To use it, run `cp /etc/farfetch.conf ~/.config`.
.br
This is not necessary for Haiku.
.SH GLOBAL CONFIGURATION
.TP
\fB\,hide\fR [\fI\,context\fR]
hide
.TP
\fB\,show\fR [\fI\,context\fR]
express
.TP
\fB\,set color\fR [\fI\,red|green|blue|yellow|magenta|white|grey|cyan\fR]
Change module color
.TP
\fB\,set titlecolor\fR [\fI\,red|green|blue|yellow|magenta|white|grey|cyan\fR]
Change title color
.TP
\fB\,define custom\fR [\fI\,big|small\fR] \fB,logo:\fR
Custom logo can be displayed until EOL
.br
You can also set the color, but it must end with "[RESET]".
.SH EXAMPLES
hide packages
show os
set color magenta
define custom big logo:
.br
[RED]⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠛⢉⢉⠉⠉⠻⣿⣿⣿⣿⣿⣿ [RESET]
.br
[RED]⣿⣿⣿⣿⣿⣿⣿⠟⠠⡰⣕⣗⣷⣧⣀⣅⠘⣿⣿⣿⣿⣿ [RESET]
.br
[RED]⣿⣿⣿⣿⣿⣿⠃⣠⣳⣟⣿⣿⣷⣿⡿⣜⠄⣿⣿⣿⣿⣿ [RESET]
.br
[RED]⣿⣿⣿⣿⡿⠁⠄⣳⢷⣿⣿⣿⣿⡿⣝⠖⠄⣿⣿⣿⣿⣿ [RESET]
.br
[CYAN]⣿⣿⣿⣿⠃⠄⢢⡹⣿⢷⣯⢿⢷⡫⣗⠍⢰⣿⣿⣿⣿⣿ [RESET]
.br
[CYAN]⣿⣿⣿⡏⢀⢄⠤⣁⠋⠿⣗⣟⡯⡏⢎⠁⢸⣿⣿⣿⣿⣿ [RESET]
.br
[CYAN]⣿⣿⣿⠄⢔⢕⣯⣿⣿⡲⡤⡄⡤⠄⡀⢠⣿⣿⣿⣿⣿⣿ [RESET]
.br
[CYAN]⣿⣿⠇⠠⡳⣯⣿⣿⣾⢵⣫⢎⢎⠆⢀⣿⣿⣿⣿⣿⣿⣿ [RESET]
.br
[GREEN]⣿⣿⠄⢨⣫⣿⣿⡿⣿⣻⢎⡗⡕⡅⢸⣿⣿⣿⣿⣿⣿⣿ [RESET]
.br
[GREEN]⣿⣿⠄⢜⢾⣾⣿⣿⣟⣗⢯⡪⡳⡀⢸⣿⣿⣿⣿⣿⣿⣿ [RESET]
.br
[GREEN]⣿⣿⠄⢸⢽⣿⣷⣿⣻⡮⡧⡳⡱⡁⢸⣿⣿⣿⣿⣿⣿⣿ [RESET]
.br
[GREEN]⣿⣿⡄⢨⣻⣽⣿⣟⣿⣞⣗⡽⡸⡐⢸⣿⣿⣿⣿⣿⣿⣿ [RESET]
.br
[YELLOW]⣿⣿⡇⢀⢗⣿⣿⣿⣿⡿⣞⡵⡣⣊⢸⣿⣿⣿⣿⣿⣿⣿ [RESET]
.br
[YELLOW]⣿⣿⣿⡀⡣⣗⣿⣿⣿⣿⣯⡯⡺⣼⠎⣿⣿⣿⣿⣿⣿⣿ [RESET]
.br
[YELLOW]⣿⣿⣿⣧⠐⡵⣻⣟⣯⣿⣷⣟⣝⢞⡿⢹⣿⣿⣿⣿⣿⣿ [RESET]
.br
[YELLOW]⣿⣿⣿⣿⡆⢘⡺⣽⢿⣻⣿⣗⡷⣹⢩⢃⢿⣿⣿⣿⣿⣿ [RESET]
.br
[MAGENTA]⣿⣿⣿⣿⣷⠄⠪⣯⣟⣿⢯⣿⣻⣜⢎⢆⠜⣿⣿⣿⣿⣿ [RESET]
.br
[MAGENTA]⣿⣿⣿⣿⣿⡆⠄⢣⣻⣽⣿⣿⣟⣾⡮⡺⡸⠸⣿⣿⣿⣿ [RESET]
.br
[MAGENTA]⣿⣿⡿⠛⠉⠁⠄⢕⡳⣽⡾⣿⢽⣯⡿⣮⢚⣅⠹⣿⣿⣿ [RESET]
.br
[MAGENTA]⡿⠋⠄⠄⠄⠄⢀⠒⠝⣞⢿⡿⣿⣽⢿⡽⣧⣳⡅⠌⠻⣿ [RESET]
.br
[GREY]⠁⠄⠄⠄⠄⠄⠐⡐⠱⡱⣻⡻⣝⣮⣟⣿⣻⣟⣻⡺⣊ [RESET]
.br
EOL
.SH AUTHORS
.PP
TechnicalSuwako (Developer)
.br
Hatuhatu Taro (Developer)

ファイルの表示

@ -7,9 +7,76 @@
.br
Haikuの場合は不要です。
.SH GLOBAL CONFIGURATION
\fB\,hide\fR [\fI\,context\fR]
.TP
\fB\,hide\fR [\fI\,context\fR]
隠す
.TP
\fB\,show\fR [\fI\,context\fR]
表示
.TP
\fB\,set color\fR [\fI\,red|green|blue|yellow|magenta|white|grey|cyan\fR]
モジュール色の変更
.TP
\fB\,set titlecolor\fR [\fI\,red|green|blue|yellow|magenta|white|grey|cyan\fR]
タイトル色の変更
.TP
\fB\,define custom\fR [\fI\,big|small\fR] \fB,logo:\fR
EOLまでカスタムロゴを表示出来る
.br
色の設置も可能ですが、「[RESET]」で終わる事が必須
.SH EXAMPLES
hide packages
show os
set color magenta
define custom big logo:
.br
[RED]⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠛⢉⢉⠉⠉⠻⣿⣿⣿⣿⣿⣿ [RESET]
.br
[RED]⣿⣿⣿⣿⣿⣿⣿⠟⠠⡰⣕⣗⣷⣧⣀⣅⠘⣿⣿⣿⣿⣿ [RESET]
.br
[RED]⣿⣿⣿⣿⣿⣿⠃⣠⣳⣟⣿⣿⣷⣿⡿⣜⠄⣿⣿⣿⣿⣿ [RESET]
.br
[RED]⣿⣿⣿⣿⡿⠁⠄⣳⢷⣿⣿⣿⣿⡿⣝⠖⠄⣿⣿⣿⣿⣿ [RESET]
.br
[CYAN]⣿⣿⣿⣿⠃⠄⢢⡹⣿⢷⣯⢿⢷⡫⣗⠍⢰⣿⣿⣿⣿⣿ [RESET]
.br
[CYAN]⣿⣿⣿⡏⢀⢄⠤⣁⠋⠿⣗⣟⡯⡏⢎⠁⢸⣿⣿⣿⣿⣿ [RESET]
.br
[CYAN]⣿⣿⣿⠄⢔⢕⣯⣿⣿⡲⡤⡄⡤⠄⡀⢠⣿⣿⣿⣿⣿⣿ [RESET]
.br
[CYAN]⣿⣿⠇⠠⡳⣯⣿⣿⣾⢵⣫⢎⢎⠆⢀⣿⣿⣿⣿⣿⣿⣿ [RESET]
.br
[GREEN]⣿⣿⠄⢨⣫⣿⣿⡿⣿⣻⢎⡗⡕⡅⢸⣿⣿⣿⣿⣿⣿⣿ [RESET]
.br
[GREEN]⣿⣿⠄⢜⢾⣾⣿⣿⣟⣗⢯⡪⡳⡀⢸⣿⣿⣿⣿⣿⣿⣿ [RESET]
.br
[GREEN]⣿⣿⠄⢸⢽⣿⣷⣿⣻⡮⡧⡳⡱⡁⢸⣿⣿⣿⣿⣿⣿⣿ [RESET]
.br
[GREEN]⣿⣿⡄⢨⣻⣽⣿⣟⣿⣞⣗⡽⡸⡐⢸⣿⣿⣿⣿⣿⣿⣿ [RESET]
.br
[YELLOW]⣿⣿⡇⢀⢗⣿⣿⣿⣿⡿⣞⡵⡣⣊⢸⣿⣿⣿⣿⣿⣿⣿ [RESET]
.br
[YELLOW]⣿⣿⣿⡀⡣⣗⣿⣿⣿⣿⣯⡯⡺⣼⠎⣿⣿⣿⣿⣿⣿⣿ [RESET]
.br
[YELLOW]⣿⣿⣿⣧⠐⡵⣻⣟⣯⣿⣷⣟⣝⢞⡿⢹⣿⣿⣿⣿⣿⣿ [RESET]
.br
[YELLOW]⣿⣿⣿⣿⡆⢘⡺⣽⢿⣻⣿⣗⡷⣹⢩⢃⢿⣿⣿⣿⣿⣿ [RESET]
.br
[MAGENTA]⣿⣿⣿⣿⣷⠄⠪⣯⣟⣿⢯⣿⣻⣜⢎⢆⠜⣿⣿⣿⣿⣿ [RESET]
.br
[MAGENTA]⣿⣿⣿⣿⣿⡆⠄⢣⣻⣽⣿⣿⣟⣾⡮⡺⡸⠸⣿⣿⣿⣿ [RESET]
.br
[MAGENTA]⣿⣿⡿⠛⠉⠁⠄⢕⡳⣽⡾⣿⢽⣯⡿⣮⢚⣅⠹⣿⣿⣿ [RESET]
.br
[MAGENTA]⡿⠋⠄⠄⠄⠄⢀⠒⠝⣞⢿⡿⣿⣽⢿⡽⣧⣳⡅⠌⠻⣿ [RESET]
.br
[GREY]⠁⠄⠄⠄⠄⠄⠐⡐⠱⡱⣻⡻⣝⣮⣟⣿⣻⣟⣻⡺⣊ [RESET]
.br
EOL
.SH AUTHORS
.PP
テクニカル諏訪子(開発者)
.br
ハツラツ太郎(開発者)

71
main.c
ファイルの表示

@ -25,13 +25,16 @@
#include "src/storage.h"
#include "src/config.h"
#include "src/common.h"
const char *sofname = "farfetch";
const char *version = "0.2.0";
const char *version = "0.3.0";
#if defined(__linux__) || defined(__sun)
const char *avalopt = "ls";
#else
const char *avalopt = "lrs";
#elif defined(__HAIKU__)
const char *avalopt = "s";
#else
const char *avalopt = "rs";
#endif
int opt;
@ -43,7 +46,7 @@ int iserr = 0;
void usage() {
#if defined(__linux__) || defined(__sun)
printf("%s-%s\nusage: %s [-s] [-l distro]\n", sofname, version, sofname);
printf("%s-%s\nusage: %s [-rs] [-l distro]\n", sofname, version, sofname);
#else
printf("%s-%s\nusage: %s [-%s]\n", sofname, version, sofname, avalopt);
#endif
@ -54,6 +57,13 @@ void flags(int opt) {
#if defined(__linux__) || defined(__sunos)
case 'l':
islogo = 1;
islogodistro = 0;
islogocustom = 0;
break;
#endif
#if !defined(__HAIKU__)
case 'r':
delete_cache();
break;
#endif
case 's':
@ -107,30 +117,24 @@ int main(int argc, char *argv[]) {
const char *titlecolor = MAGENTA;
size_t logosize = 11;
char *LOGO[] = {
" ⢀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⣠⠾⠛⠶⣄⢀⣠⣤⠴⢦⡀",
"⠀⠀⠀⢠⡿⠉⠉⠉⠛⠶⠶⠖⠒⠒⣾⠋⠀⢀⣀⣙⣯⡁⠀⠀⠀⣿⠀⠀⠀",
"⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⡏⠀⠀⢯⣼⠋⠉⠙⢶⠞⠛⠻⣆",
"⠀⠀⠀⢸⣧⠆⠀⠀⠀⠀⠀⠀⠀⠀⠻⣦⣤⡤⢿⡀⠀⢀⣼⣷⠀⠀⣽",
"⠀⠀⠀⣼⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⢏⡉⠁⣠⡾⣇⠀⠀⠀",
"⠀⠀⢰⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠋⠉⠀⢻⡀",
"⣀⣠⣼⣧⣤⠀⠀⠀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡀⠀⠀⠐⠖⢻⡟⠓⠒",
"⠀⠀⠈⣷⣀⡀⠀⠘⠿⠇⠀⠀⠀⢀⣀⣀⠀⠀⠀⠀⠿⠟⠀⠀⠀⠲⣾⠦⢤",
"⠀⠀⠋⠙⣧⣀⡀⠀⠀⠀⠀⠀⠀⠘⠦⠼⠃⠀⠀⠀⠀⠀⠀⠀⢤⣼⣏",
"⠀⠀⢀⠴⠚⠻⢧⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⠞⠉⠉⠓⠀⠀",
"⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠛⠶⠶⠶⣶⣤⣴⡶⠶⠶⠟⠛⠉⠀⠀⠀⠀⠀⠀⠀"
" ⢀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⣠⠾⠛⠶⣄⢀⣠⣤⠴⢦⡀ ",
"⠀⠀⠀⢠⡿⠉⠉⠉⠛⠶⠶⠖⠒⠒⣾⠋⠀⢀⣀⣙⣯⡁⠀⠀⠀⣿⠀⠀⠀ ",
"⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⡏⠀⠀⢯⣼⠋⠉⠙⢶⠞⠛⠻⣆ ",
"⠀⠀⠀⢸⣧⠆⠀⠀⠀⠀⠀⠀⠀⠀⠻⣦⣤⡤⢿⡀⠀⢀⣼⣷⠀⠀⣽ ",
"⠀⠀⠀⣼⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⢏⡉⠁⣠⡾⣇⠀⠀⠀ ",
"⠀⠀⢰⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠋⠉⠀⢻⡀ ",
"⣀⣠⣼⣧⣤⠀⠀⠀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡀⠀⠀⠐⠖⢻⡟⠓⠒ ",
"⠀⠀⠈⣷⣀⡀⠀⠘⠿⠇⠀⠀⠀⢀⣀⣀⠀⠀⠀⠀⠿⠟⠀⠀⠀⠲⣾⠦⢤ ",
"⠀⠀⠋⠙⣧⣀⡀⠀⠀⠀⠀⠀⠀⠘⠦⠼⠃⠀⠀⠀⠀⠀⠀⠀⢤⣼⣏ ",
"⠀⠀⢀⠴⠚⠻⢧⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⠞⠉⠉⠓⠀⠀ ",
"⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠛⠶⠶⠶⣶⣤⣴⡶⠶⠶⠟⠛⠉⠀⠀⠀⠀⠀⠀⠀ "
};
char *LOGO_SMALL[] = {
" ⢀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⣠⠾⠛⠶⣄⢀⣠⣤⠴⢦⡀⠀⠀⠀⠀",
"⠀⠀⠀⢠⡿⠉⠉⠉⠛⠶⠶⠖⠒⠒⣾⠋⠀⢀⣀⣙⣯⡁⠀⠀⠀⣿⠀⠀⠀⠀",
"⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⡏⠀⠀⢯⣼⠋⠉⠙⢶⠞⠛⠻⣆⠀⠀⠀",
"⠀⠀⠀⢸⣧⠆⠀⠀⠀⠀⠀⠀⠀⠀⠻⣦⣤⡤⢿⡀⠀⢀⣼⣷⠀⠀⣽⠀⠀⠀",
"⠀⠀⠀⣼⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⢏⡉⠁⣠⡾⣇⠀⠀⠀",
"⠀⠀⢰⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠋⠉⠀⢻⡀⠀⠀",
"⣀⣠⣼⣧⣤⠀⠀⠀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡀⠀⠀⠐⠖⢻⡟⠓⠒",
"⠀⠀⠈⣷⣀⡀⠀⠘⠿⠇⠀⠀⠀⢀⣀⣀⠀⠀⠀⠀⠿⠟⠀⠀⠀⠲⣾⠦⢤⠀",
"⠀⠀⠋⠙⣧⣀⡀⠀⠀⠀⠀⠀⠀⠘⠦⠼⠃⠀⠀⠀⠀⠀⠀⠀⢤⣼⣏⠀⠀⠀",
"⠀⠀⢀⠴⠚⠻⢧⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⠞⠉⠉⠓⠀⠀",
"⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠛⠶⠶⠶⣶⣤⣴⡶⠶⠶⠟⠛⠉⠀⠀⠀⠀⠀⠀⠀"
"|\____/| ",
"| | ",
"| 0 0 | ",
"| ω | ",
"\_____/ "
};
#endif
@ -169,10 +173,18 @@ int main(int argc, char *argv[]) {
if (islogo) {
logoname = argv[2];
getDistro(logoname);
} else if (islogodistro) {
logoname = distrostring;
getDistro(logoname);
free(distrostring);
}
#endif
if (issmall) {
bool smol = false;
if (issmall && !islogos) smol = true;
else if (!issmall && islogos) smol = true;
if (smol) {
size_t ne = sizeof(LOGO_SMALL) / sizeof(LOGO_SMALL[0]);
for (size_t i = 0; i < ne; i++) {
LOGO[i] = LOGO_SMALL[i];
@ -220,11 +232,10 @@ int main(int argc, char *argv[]) {
#endif
#if !defined(__HAIKU__)
const char *machine = display_host();
if (ishost) {
printf("%s ", LOGO[lc]);
printf("%s%s%s%s", color, "Host", reset, ": ");
display_host_model();
printf("\n");
printf("%sHost%s: %s\n", color, reset, machine);
lc++;
} else minsize--;
#endif

ファイルの表示

@ -1,8 +1,12 @@
#include "common.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include "common.h"
long long int run_command_lld(const char *command) {
char buf[128];
@ -58,3 +62,65 @@ const char *run_command_s(const char *command) {
return out;
}
#if !defined(__HAIKU__)
const char *from_cache(const char *file) {
struct stat st;
if (stat(file, &st) != 0) {
return NULL;
}
FILE *f = fopen(file, "r");
if (!f) {
return NULL;
}
char *cmd = (char *)malloc(128 * sizeof(char));
if (!cmd) {
fclose(f);
return NULL;
}
if (fgets(cmd, 128, f) == NULL) {
free(cmd);
fclose(f);
return NULL;
}
fclose(f);
cmd[strcspn(cmd, "\n")] = '\0';
return cmd;
}
int to_cache(const char *file, const char *res) {
char dir[256];
snprintf(dir, sizeof(dir), "%s", "/tmp/farfetch");
struct stat st;
if (stat(dir, &st) != 0) {
if (mkdir(dir, 0755) != 0 && errno != EEXIST) return -1;
}
FILE *f = fopen(file, "w");
if (!f) return -1;
fprintf(f, "%s", res);
fclose(f);
return 0;
}
void delete_cache() {
struct stat st;
if (stat("/tmp/farfetch/os", &st) == 0) remove("/tmp/farfetch/os");
if (stat("/tmp/farfetch/host", &st) == 0) remove("/tmp/farfetch/host");
#if defined(__linux__) || defined(__sunos)
if (stat("/tmp/farfetch/distro", &st) == 0) remove("/tmp/farfetch/distro");
#endif
if (stat("/tmp/farfetch/cpu", &st) == 0) remove("/tmp/farfetch/cpu");
if (stat("/tmp/farfetch/gpu", &st) == 0) remove("/tmp/farfetch/gpu");
}
#endif

ファイルの表示

@ -3,5 +3,10 @@
long long int run_command_lld(const char *command);
const char *run_command_s(const char *command);
#if !defined(__HAIKU__)
const char *from_cache(const char *file);
int to_cache(const char *file, const char *res);
void delete_cache();
#endif
#endif

ファイルの表示

@ -2,9 +2,36 @@
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <stdbool.h>
#include <ctype.h>
#include "config.h"
#include "logo/colors.h"
#if defined(__OpenBSD__)
#include "logo/openbsd.h"
#elif defined(__NetBSD__)
#include "logo/netbsd.h"
#elif defined(__FreeBSD__)
#include "logo/freebsd.h"
#elif defined(__linux__)
#include "logo/linux.h"
#include "distro.h"
#elif defined(__sun)
#include "logo/sunos.h"
#elif defined(__APPLE__)
#include "logo/macos.h"
#elif defined(__HAIKU__)
#include "logo/haiku.h"
#endif
bool islogob = true;
bool islogos = false;
bool islogod = true;
bool islogocustom = false;
#if defined(__linux__) || defined(__sunos)
bool islogodistro = false;
char *distrostring;
#endif
bool isos = true;
bool ishost = true;
#if defined(__linux__) || defined(__sunos)
@ -23,6 +50,85 @@ bool iscpu = true;
bool isgpu = true;
bool ismemory = true;
bool isstorage = true;
bool isbiglogo = false;
bool issmalllogo = false;
bool mkbiglogo = false;
bool mksmalllogo = false;
size_t biglogoi = 0;
size_t smalllogoi = 0;
const char *customcolor;
const char *customtitlecolor;
const char *customlogobig;
const char *customlogosmall;
void rmstr(char *str, const char *sub) {
char *pos;
size_t len = strlen(sub);
while ((pos = strstr(str, sub)) != NULL) {
memmove(pos, pos + len, strlen(pos + len) + 1);
}
}
const char *applycolor(const char *color) {
if (strncmp(color, "grey", 4) == 0) return GREY;
else if (strncmp(color, "red", 3) == 0) return RED;
else if (strncmp(color, "green", 5) == 0) return GREEN;
else if (strncmp(color, "yellow", 6) == 0) return YELLOW;
else if (strncmp(color, "blue", 4) == 0) return BLUE;
else if (strncmp(color, "magenta", 7) == 0) return MAGENTA;
else if (strncmp(color, "cyan", 4) == 0) return CYAN;
else if (strncmp(color, "white", 5) == 0) return WHITE;
return RESET;
}
char *colrep(const char *str, const char *old, const char *new) {
char *res;
int i, count = 0;
int nlen = strlen(new);
int olen = strlen(old);
for (i = 0; str[i] != '\0'; i++) {
if (strstr(&str[i], old) == &str[i]) {
count++;
i += olen - 1;
}
}
res = (char *)malloc(i + count * (nlen - olen) + 1);
if (!res) {
return NULL;
}
i = 0;
while (*str) {
if (strstr(str, old) == str) {
memcpy(&res[i], new, strlen(new));
i += nlen;
str += olen;
} else {
res[i++] = *str++;
}
}
res[i] = '\0';
return res;
}
bool containvocab(const char *line, const char *word) {
const char *p = line;
size_t len = strlen(word);
while ((p = strstr(p, word)) != NULL) {
if (
(p == line || !isalnum((unsigned char)p[-1])) &&
!isalnum((unsigned char)p[len])
) return true;
p += len;
}
return false;
}
void getconf() {
char *homedir = getenv("HOME");
@ -57,28 +163,132 @@ void getconf() {
return;
}
char line[20];
char line[256];
while (fgets(line, sizeof(line), file)) {
if (line[0] == '#' || line[0] == '\n') continue;
if (strstr(line, "hide ") != NULL) {
if (strstr(line, "os") != NULL) isos = false;
if (strstr(line, "host") != NULL) ishost = false;
if (containvocab(line, "logo")) islogod = false;
if (containvocab(line, "os")) isos = false;
if (containvocab(line, "host")) ishost = false;
#if defined(__linux__) || defined(__sunos)
if (strstr(line, "distro") != NULL) isdistro = false;
if (containvocab(line, "distro")) isdistro = false;
#endif
if (strstr(line, "uptime") != NULL) isuptime = false;
if (containvocab(line, "uptime")) isuptime = false;
#if defined (__OpenBSD__)
if (strstr(line, "recording") != NULL) isrecording = false;
if (containvocab(line, "recording")) isrecording = false;
#endif
if (strstr(line, "packages") != NULL) ispackages = false;
if (strstr(line, "libc") != NULL) islibc = false;
if (strstr(line, "resolution") != NULL) isresolution = false;
if (strstr(line, "wm") != NULL) iswm = false;
if (strstr(line, "shell") != NULL) isshell = false;
if (strstr(line, "cpu") != NULL) iscpu = false;
if (strstr(line, "gpu") != NULL) isgpu = false;
if (strstr(line, "memory") != NULL) ismemory = false;
if (strstr(line, "storage") != NULL) isstorage = false;
if (containvocab(line, "packages")) ispackages = false;
if (containvocab(line, "libc")) islibc = false;
if (containvocab(line, "resolution")) isresolution = false;
if (containvocab(line, "wm")) iswm = false;
if (containvocab(line, "shell")) isshell = false;
if (containvocab(line, "cpu")) iscpu = false;
if (containvocab(line, "gpu")) isgpu = false;
if (containvocab(line, "memory")) ismemory = false;
if (containvocab(line, "storage")) isstorage = false;
}
// 色
if (strstr(line, "set color") != NULL) {
char color[10];
sscanf(line, "set color %s", color);
customcolor = applycolor(color);
}
if (strstr(line, "set titlecolor") != NULL) {
char color[10];
sscanf(line, "set titlecolor %s", color);
customtitlecolor = applycolor(color);
}
// デフォルトは大きいロゴ
if (strstr(line, "show logo") != NULL) {
if (containvocab(line, "small")) {
islogob = false;
islogos = true;
} else {
islogob = true;
islogos = false;
}
if (containvocab(line, "custom")) {
islogocustom = true;
#if defined(__linux__) || defined(__sunos)
} else {
distrostring = strdup(line);
if (!distrostring) {
perror("メモリの役割に失敗");
return;
}
rmstr(distrostring, "show logo");
if (containvocab(line, "small")) rmstr(distrostring, "small");
else rmstr(distrostring, "big");
rmstr(distrostring, "\n");
rmstr(distrostring, " ");
if (is_distro(distrostring)) islogodistro = true;
else distrostring = NULL;
#endif
}
}
// カスタムロゴ
if (strstr(line, "define custom big logo:") != NULL) {
mkbiglogo = true;
}
if (strstr(line, "define custom small logo:") != NULL) {
mksmalllogo = true;
}
if (mkbiglogo && islogocustom && islogob) {
isbiglogo = true;
if (strstr(line, "define custom big logo:") != NULL) {
continue;
} else if (strstr(line, "EOL") != NULL) {
mkbiglogo = false;
} else if (biglogoi < logosize) {
LOGO[biglogoi] = strdup(line);
LOGO[biglogoi] = colrep(LOGO[biglogoi], "[GREY]", GREY);
LOGO[biglogoi] = colrep(LOGO[biglogoi], "[RED]", RED);
LOGO[biglogoi] = colrep(LOGO[biglogoi], "[GREEN]", GREEN);
LOGO[biglogoi] = colrep(LOGO[biglogoi], "[YELLOW]", YELLOW);
LOGO[biglogoi] = colrep(LOGO[biglogoi], "[BLUE]", BLUE);
LOGO[biglogoi] = colrep(LOGO[biglogoi], "[MAGENTA]", MAGENTA);
LOGO[biglogoi] = colrep(LOGO[biglogoi], "[CYAN]", CYAN);
LOGO[biglogoi] = colrep(LOGO[biglogoi], "[WHITE]", WHITE);
LOGO[biglogoi] = colrep(LOGO[biglogoi], "[RESET]", RESET);
size_t len = strlen(LOGO[biglogoi]);
if (len > 0 && LOGO[biglogoi][len - 1] == '\n') {
LOGO[biglogoi][len - 1] = '\0';
}
biglogoi++;
free(LOGO[biglogoi]);
}
}
if (mksmalllogo && islogocustom && islogos) {
issmalllogo = true;
if (strstr(line, "define custom small logo:") != NULL) {
continue;
} else if (strstr(line, "EOL") != NULL) {
mksmalllogo = false;
} else if (smalllogoi < MIN_SIZE) {
LOGO_SMALL[smalllogoi] = strdup(line);
LOGO_SMALL[smalllogoi] = colrep(LOGO_SMALL[smalllogoi], "[GREY]", GREY);
LOGO_SMALL[smalllogoi] = colrep(LOGO_SMALL[smalllogoi], "[RED]", RED);
LOGO_SMALL[smalllogoi] = colrep(LOGO_SMALL[smalllogoi], "[GREEN]", GREEN);
LOGO_SMALL[smalllogoi] = colrep(LOGO_SMALL[smalllogoi], "[YELLOW]", YELLOW);
LOGO_SMALL[smalllogoi] = colrep(LOGO_SMALL[smalllogoi], "[BLUE]", BLUE);
LOGO_SMALL[smalllogoi] = colrep(LOGO_SMALL[smalllogoi], "[MAGENTA]", MAGENTA);
LOGO_SMALL[smalllogoi] = colrep(LOGO_SMALL[smalllogoi], "[CYAN]", CYAN);
LOGO_SMALL[smalllogoi] = colrep(LOGO_SMALL[smalllogoi], "[WHITE]", WHITE);
LOGO_SMALL[smalllogoi] = colrep(LOGO_SMALL[smalllogoi], "[RESET]", RESET);
size_t len = strlen(LOGO_SMALL[smalllogoi]);
if (len > 0 && LOGO_SMALL[smalllogoi][len - 1] == '\n') {
LOGO_SMALL[smalllogoi][len - 1] = '\0';
}
smalllogoi++;
free(LOGO[smalllogoi]);
}
}
}

ファイルの表示

@ -2,7 +2,16 @@
#define CONFIG_H
#include <stdbool.h>
#include <unistd.h>
extern bool islogob;
extern bool islogos;
extern bool islogod;
extern bool islogocustom;
#if defined(__linux__) || defined(__sunos)
extern bool islogodistro;
extern char *distrostring;
#endif
extern bool isos;
extern bool ishost;
#if defined(__linux__) || defined(__sunos)
@ -21,6 +30,14 @@ extern bool iscpu;
extern bool isgpu;
extern bool ismemory;
extern bool isstorage;
extern bool isbiglogo;
extern bool issmalllogo;
extern size_t biglogoi;
extern size_t smalllogoi;
extern const char *customcolor;
extern const char *customtitlecolor;
extern const char *customlogobig;
extern const char *customlogosmall;
void getconf();

ファイルの表示

@ -1,38 +1,44 @@
#include "cpu.h"
#include "common.h"
#include <stdio.h>
#if defined(__linux__) || defined(__HAIKU__)
#include <stdlib.h>
#endif
const char *display_cpu() {
#if !defined(__HAIKU__)
const char *out = from_cache("/tmp/farfetch/cpu");
if (out) return out;
#else
const char *out = NULL;
#endif
char *cmd = NULL;
#if defined(__NetBSD__)
return run_command_s("sysctl -n machdep.cpu_brand | sed 's/(R)//' | "
"sed 's/(TM)//' | sed 's/CPU //' | sed 's/Processor//' && "
"echo \" (\" && sysctl -n hw.ncpu && echo \" core)\"");
cmd = malloc(256);
if (!cmd) return NULL;
snprintf(cmd, 256, "sysctl -n machdep.cpu_brand | sed 's/(R)//' | "
"sed 's/(TM)//' | sed 's/CPU //' | sed 's/Processor//' && "
"echo \" (\" && sysctl -n hw.ncpu && echo \" core)\"");
#elif defined(__FreeBSD__) || defined(__OpenBSD__)
return run_command_s("sysctl -n hw.model | sed 's/(R)//' | "
"sed 's/(TM)//' | sed 's/CPU //' | sed 's/ Processor//' && "
"echo \" (\" && sysctl -n hw.ncpu && echo \" core)\"");
cmd = malloc(1024);
if (!cmd) return NULL;
snprintf(cmd, 1024, "sysctl -n hw.model | sed 's/(R)//' | "
"sed 's/(TM)//' | sed 's/CPU //' | sed 's/ Processor//' && "
"echo \" (\" && sysctl -n hw.ncpu && echo \" core)\"");
#elif defined(__sun)
return run_command_s("psrinfo -pv | tail -1 | "
"sed 's/(r)//g; s/ CPU//; s/^ *//; s/ $//' | awk '{$1=$1};1' && "
"echo \" (\" && psrinfo -p && echo \" core)\"");
cmd = malloc(1024);
if (!cmd) return NULL;
snprintf(cmd, 1024, "psrinfo -pv | tail -1 | "
"sed 's/(r)//g; s/ CPU//; s/^ *//; s/ $//' | awk '{$1=$1};1' && "
"echo \" (\" && psrinfo -p && echo \" core)\"");
#elif defined(__linux__)
return run_command_s("cat /proc/cpuinfo | awk -F '\\\\s*: | @' "
"'/model name|Hardware|Processor|^cpu model|chip type|^cpu type/ { "
"cpu=$2; if ($1 == \"Hardware\") exit } END { print cpu }' | "
"sed 's/(R)//' | sed 's/(TM)//' | sed 's/CPU //' | sed 's/ Processor//' | "
"sed 's/ [0-9]-Core//' && echo \" @ \" && "
"if [ \"$(LC_ALL=C cat /sys/devices/system/cpu/cpu0/cpufreq/bios_limit 2>&1)\""
" != \"cat: /sys/devices/system/cpu/cpu0/cpufreq/bios_limit: "
"No such file or directory\" ]; then "
"cat /sys/devices/system/cpu/cpu0/cpufreq/bios_limit | "
"awk '{printf \"%.2f\", $1/1000000}'; else "
"cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq | "
"awk '{printf \"%.2f\", $1/1000000}'; fi && "
"echo \"GHz (\" && nproc && echo \" core)\"");
cmd = "cat /proc/cpuinfo | awk -F '\\\\s*: | @' "
"'/model name|Hardware|Processor|^cpu model|chip type|^cpu type/ { "
"cpu=$2; if ($1 == \"Hardware\") exit } END { print cpu }' | "
"sed 's/(R)//' | sed 's/(TM)//' | sed 's/CPU //' | sed 's/ Processor//' | "
"sed 's/ [0-9]-Core//' && echo \" @ \" && "
"cat /proc/cpuinfo | grep \"cpu MHz\" | sort -nr | head -1 | "
"sed 's/^.*: //' | awk '{printf \"%.2f\", $1/1000}' && "
"echo \"GHz (\" && nproc && echo \" core)\"";
#elif defined(__HAIKU__)
const char *cpuname = run_command_s("sysinfo | grep \"CPU #0:\" | "
"sed 's/CPU #0: \"'// | sed 's/\"//' | sed 's/(R)//' | sed 's/(TM)//' | "
@ -41,18 +47,31 @@ const char *display_cpu() {
"sed 's/^.*: //' | awk '{ printf \"%.2f\", $1 / 1000 }'");
long long int proc = run_command_lld("nproc");
char *cmd = (char *)malloc(128 * sizeof(char));
if (!cmd) {
return NULL;
}
cmd = (char *)malloc(128 * sizeof(char));
if (!cmd) return NULL;
snprintf(cmd, 128, "%s @ %sGHz (%lld core)", cpuname, freq, proc);
return cmd;
free((void *)cpuname);
free((void *)freq);
#elif defined(__APPLE__)
return run_command_s("sysctl -n machdep.cpu.brand_string | sed 's/(R)//' | "
"sed 's/(TM)//' | sed 's/CPU //' | sed 's/ Processor//' && "
"echo \" (\" && sysctl -n hw.logicalcpu_max && echo \" core)\"");
#endif
cmd = malloc(1024);
if (!cmd) return NULL;
snprintf(cmd, 1024, "sysctl -n machdep.cpu.brand_string | sed 's/(R)//' | "
"sed 's/(TM)//' | sed 's/CPU //' | sed 's/ Processor//' && "
"echo \" (\" && sysctl -n hw.logicalcpu_max && echo \" core)\"");
#else
return NULL;
#endif
if (!cmd) return NULL;
out = run_command_s(cmd);
#if !defined(__linux__)
free(cmd);
#endif
#if !defined(__HAIKU__)
to_cache("/tmp/farfetch/cpu", out);
#endif
return out;
}

ファイルの表示

@ -1,5 +1,6 @@
#if defined(__linux__) || defined(__sun)
#include "distro.h"
#include "common.h"
#include <stdio.h>
#include <stdlib.h>
@ -8,12 +9,49 @@
const char *distroname;
bool is_distro(const char *buf) {
#if defined(__sunos)
if (strncmp(buf, "openindiana") == 0) return 1;
else if (strncmp(buf, "omnios") == 0) return 1;
else if (strncmp(buf, "solaris") == 0) return 1;
#else
if (strncmp(buf, "alpine", sizeof("alpine")) == 0) return 1;
else if (strncmp(buf, "arch", sizeof("arch")) == 0) return 1;
else if (strncmp(buf, "arco", sizeof("arco")) == 0) return 1;
else if (strncmp(buf, "artix", sizeof("artix")) == 0) return 1;
else if (strncmp(buf, "centos", sizeof("centos")) == 0) return 1;
else if (strncmp(buf, "crux", sizeof("crux")) == 0) return 1;
else if (strncmp(buf, "debian", sizeof("debian")) == 0) return 1;
else if (strncmp(buf, "devuan", sizeof("devuan")) == 0) return 1;
else if (strncmp(buf, "fedora", sizeof("fedora")) == 0) return 1;
else if (strncmp(buf, "gentoo", sizeof("gentoo")) == 0) return 1;
else if (strncmp(buf, "hyperbola", sizeof("hyperbola")) == 0) return 1;
else if (strncmp(buf, "linuxmint", sizeof("linuxmint")) == 0) return 1;
else if (strncmp(buf, "manjaro", sizeof("manjaro")) == 0) return 1;
else if (strncmp(buf, "opensuse", sizeof("opensuse")) == 0) return 1;
else if (strncmp(buf, "parabola", sizeof("parabola")) == 0) return 1;
else if (strncmp(buf, "popos", sizeof("popos")) == 0) return 1;
else if (strncmp(buf, "postmarketos", sizeof("postmarketos")) == 0) return 1;
else if (strncmp(buf, "redhat", sizeof("redhat")) == 0) return 1;
else if (strncmp(buf, "rocky", sizeof("rocky")) == 0) return 1;
else if (strncmp(buf, "ubuntu", sizeof("ubuntu")) == 0) return 1;
else if (strncmp(buf, "void", sizeof("void")) == 0) return 1;
else if (strncmp(buf, "linux", sizeof("linux"))) return 1;
#endif
return 0;
}
const char *display_distro() {
char buf[1288];
char *out = NULL;
size_t outsize = 0;
const char *cmd = NULL;
const char *cmd = from_cache("/tmp/farfetch/distro");
if (cmd) {
return cmd;
}
if (access("/bedrock/etc/bedrock-release", F_OK) != -1) {
cmd = "cat /bedrock/etc/bedrock-release | grep '^PRETTY_NAME' | "
@ -31,8 +69,11 @@ const char *display_distro() {
cmd = "echo \"GoboLinux\" && cat /etc/GoboLinuxVersion | "
"grep '^PRETTY_NAME' | cut -d '=' -f2 | tr -d '\"'";
} else if (access("/etc/os-release", F_OK) != -1) {
cmd = "cat /etc/os-release | "
"grep '^PRETTY_NAME' | cut -d '=' -f2 | tr -d '\"'";
cmd = "if grep -q \"^PRETTY_NAME=\" /etc/os-release; then "
"grep '^PRETTY_NAME=' /etc/os-release | cut -d \"=\" -f2 | tr -d '\"'; "
"else "
"grep '^NAME=' /etc/os-release | cut -d \"=\" -f2 | tr -d '\"'; "
"fi";
} else if (access("/usr/lib/os-release", F_OK) != -1) {
cmd = "cat /usr/lib/os-release | "
"grep '^PRETTY_NAME' | cut -d '=' -f2 | tr -d '\"'";
@ -65,12 +106,12 @@ const char *display_distro() {
}
out = nout;
memccpy(out + outsize, buf, sizeof(buf), len);
outsize += len;
out[outsize] = '\0';
}
to_cache("/tmp/farfetch/distro", out);
pclose(p);
return out;
@ -78,25 +119,62 @@ const char *display_distro() {
void get_distro() {
const char *buf = display_distro();
if (!buf) {
#if defined(__sunos)
distroname = "solaris";
#else
distroname = "linux";
#endif
return;
}
if (strstr(buf, "Devuan") != NULL) distroname = "devuan";
else if (strstr(buf, "Void Linux") != NULL) distroname = "void";
else if (strstr(buf, "Debian") != NULL) distroname = "debian";
else if (strstr(buf, "Ubuntu") != NULL) distroname = "ubuntu";
if (strstr(buf, "Alpine") != NULL) distroname = "alpine";
else if (strstr(buf, "Arch Linux") != NULL) distroname = "arch";
else if (strstr(buf, "ArcoLinux") != NULL) distroname = "arco";
else if (strstr(buf, "Artix Linux") != NULL) distroname = "artix";
else if (strstr(buf, "Alpine") != NULL) distroname = "alpine";
else if (strstr(buf, "Manjaro") != NULL) distroname = "manjaro";
else if (strstr(buf, "Gentoo") != NULL) distroname = "gentoo";
else if (strstr(buf, "Fedora") != NULL) distroname = "fedora";
else if (strstr(buf, "Rocky") != NULL) distroname = "rocky";
else if (strstr(buf, "CentOS") != NULL) distroname = "centos";
else if (strstr(buf, "Red Hat") != NULL) distroname = "redhat";
else if (strstr(buf, "postmarketOS") != NULL) distroname = "postmarketos";
else if (strstr(buf, "Linux Mint") != NULL) distroname = "linuxmint";
else if (strstr(buf, "opensuse") != NULL) distroname = "opensuse";
else if (strstr(buf, "CRUX") != NULL) distroname = "crux";
else if (strstr(buf, "Debian") != NULL) distroname = "debian";
else if (strstr(buf, "Devuan") != NULL) distroname = "devuan";
else if (strstr(buf, "Fedora") != NULL) distroname = "fedora";
else if (strstr(buf, "Gentoo") != NULL) distroname = "gentoo";
else if (strstr(buf, "Hyperbola") != NULL) distroname = "hyperbola";
else if (strstr(buf, "Linux Mint") != NULL) distroname = "linuxmint";
else if (strstr(buf, "Manjaro") != NULL) distroname = "manjaro";
else if (strstr(buf, "OpenIndiana") != NULL) distroname = "openindiana";
else if (strstr(buf, "openSUSE") != NULL) distroname = "opensuse";
else if (strstr(buf, "OmniOS") != NULL) distroname = "omnios";
else if (strstr(buf, "Parabola") != NULL) distroname = "parabola";
else if (strstr(buf, "Pop!_OS") != NULL) distroname = "popos";
else if (strstr(buf, "postmarketOS") != NULL) distroname = "postmarketos";
else if (strstr(buf, "Red Hat") != NULL) distroname = "redhat";
else if (strstr(buf, "Rocky") != NULL) distroname = "rocky";
else if (strstr(buf, "Ubuntu") != NULL) distroname = "ubuntu";
else if (strstr(buf, "Void Linux") != NULL) distroname = "void";
#if defined(__sunos)
else distroname = "solaris";
#else
else distroname = "linux";
#endif
if (strncmp(distroname, "ubuntu", strlen("ubuntu")) == 0) {
const char *desktop = run_command_s("echo $XDG_CURRENT_DESKTOP");
if (strncmp(desktop, "KDE", strlen("KDE")) == 0) distroname = "kubuntu";
else if (strncmp(desktop, "XFCE", strlen("XFCE")) == 0) distroname = "xubuntu";
else if (strncmp(desktop, "LXQt", strlen("LXQt")) == 0) distroname = "lubuntu";
else if (strncmp(desktop, "MATE", strlen("MATE")) == 0) distroname = "ubuntumate";
else if (strncmp(desktop, "X-Cinnamon", strlen("X-Cinnamon")) == 0)
distroname = "ubuntucinnamon";
else if (strncmp(desktop, "Budgie:GNOME", strlen("Budgie:GNOME")) == 0)
distroname = "ubuntubudgie";
else if (strncmp(desktop, "Lomiri", strlen("Lomiri")) == 0)
distroname = "ubuntulomiri";
else if (strncmp(
desktop,
"Unity:Unity7:ubuntu",
strlen("Unity:Unity7:ubuntu")
) == 0)
distroname = "ubuntuunity";
}
}
#endif

ファイルの表示

@ -2,6 +2,9 @@
#ifndef DISTRO_H
#define DISTRO_H
#include <stdbool.h>
bool is_distro(const char *buf);
const char *display_distro();
void get_distro();

ファイルの表示

@ -1,9 +1,7 @@
#include "gpu.h"
#include "common.h"
#if defined(__HAIKU__)
#include <stdio.h>
#endif
#include <stdlib.h>
#if !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__FreeBSD__) &&\
!defined(__linux__) && !defined(__DragonFly__) && !defined(__APPLE__) &&\
@ -13,12 +11,21 @@
#if defined(__FreeBSD__) || defined(__Dragonfly__) || defined(__HAIKU__)
#include <string.h>
#include <stdlib.h>
#endif
const char *display_gpu() {
#if !defined(__HAIKU__)
const char *out = from_cache("/tmp/farfetch/gpu");
if (out) return out;
#else
const char *out = NULL;
#endif
char *cmd = NULL;
#if defined(__OpenBSD__) || defined(__NetBSD__)
return run_command_s("dmesg | "
cmd = malloc(2048);
if (!cmd) return NULL;
snprintf(cmd, 2048, "dmesg | "
"if [ \"$(dmesg | grep \"radeondrm.* at pci.*\")\" ]; "
"then grep -i \"radeondrm.* at pci.*\"; "
"elif [ \"$(dmesg | grep \"inteldrm.* at pci.*\")\" ]; "
@ -63,24 +70,33 @@ const char *display_gpu() {
}
free((void *)test);
return run_command_s("pciconf -lv | grep -B 4 -F \"VGA\" | "
"grep -F \"device\" | sed 's/^.* device//' | "
"sed \"s/^.* '//\" | sed \"s/'//\" | tail -1 | "
"sed 's/ Core Processor Integrated Graphics Controller//'");
cmd = malloc(256);
if (!cmd) return NULL;
snprintf(cmd, 256, "pciconf -lv | grep -B 4 -F \"VGA\" | "
"grep -F \"device\" | sed 's/^.* device//' | "
"sed \"s/^.* '//\" | sed \"s/'//\" | tail -1 | "
"sed 's/ Core Processor Integrated Graphics Controller//'");
#elif defined(__sun)
return run_command_s("prtconf -v | grep -A 30 \"value='display'\" | "
cmd = malloc(512);
if (!cmd) return NULL;
snprintf(cmd, 512, "prtconf -v | grep -A 30 \"value='display'\" | "
"grep -A 1 vendor-name | tail -1 | sed 's/^.*value=//' | sed \"s/'//g\" | "
"sed 's/ Corporation//' && echo \" \" && prtconf -v | "
"grep -A 30 \"value='display'\" | grep -A 1 device-name | tail -1 | "
"sed 's/^.*value=//' | sed \"s/'//g\"");
#elif defined(__linux__)
return run_command_s("lspci | grep VGA | sed 's/^.*: //' | "
cmd = malloc(256);
if (!cmd) return NULL;
snprintf(cmd, 256, "lspci | grep VGA | sed 's/^.*: //' | "
"sed 's/Corporation //' | sed 's/ (.*$//' | "
"sed 's/Advanced Micro Devices//' | "
"sed 's/, Inc. //' | sed 's/Navi [0-9]* //' | "
"sed 's/\\[//g' | sed 's/\\]//g'");
#elif defined(__APPLE__)
return run_command_s("system_profiler SPDisplaysDataType | "
cmd = malloc(128);
if (!cmd) return NULL;
snprintf(cmd, 128, "system_profiler SPDisplaysDataType | "
"awk -F': ' '/^ *Chipset Model:/ {printf $2 \", \"}'");
#elif defined(__HAIKU__)
const char *vendor = run_command_s("listdev | grep -A1 \"device Display\" | "
@ -91,12 +107,14 @@ const char *display_gpu() {
char *cmd = (char *)malloc(128 * sizeof(char));
if (!cmd) return NULL;
if (strncmp(vendor, device, strlen(device)) == 0)
if (strncmp(vendor, device, strlen(device)) == 0) {
snprintf(cmd, 128, "%s", device);
else
free((void *)device);
} else {
snprintf(cmd, 128, "%s %s", device, vendor);
return cmd;
free((void *)device);
free((void *)vendor);
}
#else
if (
access("/bin/glxinfo", F_OK) == -1 &&
@ -106,8 +124,20 @@ const char *display_gpu() {
access("/usr/X11R7/bin/glxinfo", F_OK) == -1 &&
access("/usr/pkg/bin/glxinfo", F_OK) == -1
) return NULL;
return run_command_s("glxinfo -B | grep -F 'OpenGL renderer string' | "
cmd = malloc(256);
if (!cmd) return NULL;
snprintf(cmd, 256, "glxinfo -B | grep -F 'OpenGL renderer string' | "
"sed 's/OpenGL renderer string: //' | sed 's/Mesa //' | "
"sed 's/DRI //' | sed 's/(R)//' | sed 's/(.*$//'");
#endif
if (!cmd) return NULL;
out = run_command_s(cmd);
free((void *)cmd);
#if !defined(__HAIKU__)
if (out) to_cache("/tmp/farfetch/gpu", out);
#endif
return out;
}

ファイルの表示

@ -1,4 +1,5 @@
#include "host.h"
#include "common.h"
#include <stdio.h>
#include <stdlib.h>
@ -8,141 +9,78 @@
#include <unistd.h>
#endif
const char *run_host_command(const char *command) {
char buf[64];
const char *display_host() {
#if !defined(__HAIKU__)
char *out = (char *)from_cache("/tmp/farfetch/host");
if (out) return out;
#else
char *out = NULL;
size_t outsize = 0;
FILE *p = popen(command, "r");
if (!p) {
fprintf(stderr, "ホストコマンドを実効に失敗: %s", command);
return NULL;
}
while (fgets(buf, sizeof(buf), p) != NULL) {
buf[strcspn(buf, "\n")] = '\0';
#if defined(__linux__)
if (
strstr(buf, "To be filled by O.E.M.") != NULL ||
strstr(buf, "To Be Filled By O.E.M.") != NULL ||
strstr(buf, "OEM") != NULL ||
strstr(buf, "Not Applicable") != NULL ||
strstr(buf, "System Product Name") != NULL ||
strstr(buf, "System Version") != NULL ||
strstr(buf, "Undefined") != NULL ||
strstr(buf, "Default string") != NULL ||
strstr(buf, "Not Specified") != NULL ||
strstr(buf, "Type1ProductConfigId") != NULL ||
strstr(buf, "INVALID") != NULL ||
strstr(buf, "All Series") != NULL
) {
return NULL;
}
#endif
const char *cmd = NULL;
size_t len = strlen(buf);
char *nout = realloc(out, outsize + len + 1);
if (nout == NULL) {
perror("メモリの役割に失敗");
free(out);
pclose(p);
return NULL;
}
out = nout;
memccpy(out + outsize, buf, sizeof(buf), len);
outsize += len;
out[outsize] = '\0';
}
pclose(p);
return out;
}
void display_host_model() {
#if defined(__OpenBSD__)
const char *cmd = run_host_command("sysctl -n hw.vendor && echo \" \" && "
"if [ \"$(sysctl -n hw.version 2>&1)\" != "
"\"sysctl: hw.version: value is not available\" ]; then "
"sysctl -n hw.version && echo \" \"; fi && "
"sysctl -n hw.product");
if (!cmd) return;
printf("%s", cmd);
free((void *)cmd);
cmd = "sysctl -n hw.vendor && echo \" \" && "
"if [ \"$(sysctl -n hw.version 2>&1)\" != "
"\"sysctl: hw.version: value is not available\" ]; then "
"sysctl -n hw.version && echo \" \"; fi && "
"sysctl -n hw.product";
#elif defined(__FreeBSD__)
const char *family = run_host_command("kenv | grep smbios.system.family | "
"sed 's/\"//g' | sed 's/smbios.system.family=//'");
if (strncmp(family, " ", strlen(family)) == 0) {
family = run_host_command("kenv | grep smbios.system.version | "
"sed 's/\"//g' | sed 's/smbios.system.version=//'");
}
const char *product = run_host_command("kenv | grep smbios.system.product | "
"sed 's/\"//g' | sed 's/smbios.system.product=//'");
const char *maker = run_host_command("kenv | grep smbios.system.maker | "
"sed 's/\"//g' | sed 's/smbios.system.maker=//'");
printf("%s %s %s", maker, family, product);
if (maker) free((void *)maker);
if (family) free((void *)family);
if (product) free((void *)product);
cmd = "kenv | grep smbios.system.family | sed 's/\"//g' | "
"sed 's/smbios.system.family=//' && "
"kenv | grep smbios.system.version | sed 's/\"//g' | "
"sed 's/smbios.system.version=//' && "
"kenv | grep smbios.system.product | sed 's/\"//g' | "
"sed 's/smbios.system.product=//' && "
"kenv | grep smbios.system.maker | sed 's/\"//g' | "
"sed 's/smbios.system.maker=//'";
#elif defined(__NetBSD__)
const char *cmd = run_host_command("sysctl -n machdep.dmi.system-vendor && "
"echo \" \" && sysctl -n machdep.dmi.system-version && "
"echo \" \" && sysctl -n machdep.dmi.system-product");
if (!cmd) return;
printf("%s", cmd);
free((void *)cmd);
cmd = "sysctl -n machdep.dmi.system-vendor && "
"echo \" \" && sysctl -n machdep.dmi.system-version && "
"echo \" \" && sysctl -n machdep.dmi.system-product";
#elif defined(__sun)
const char *cmd = run_host_command("smbios | grep \"Product\" | "
"sed 's/ Product: //' | awk '{$1=$1};1' | head -1");
if (!cmd) return;
printf("%s", cmd);
free((void *)cmd);
cmd = "smbios | grep \"Product\" | "
"sed 's/ Product: //' | awk '{$1=$1};1' | head -1";
#elif defined(__linux__)
const char *cmd1 = NULL;
const char *cmd2 = NULL;
const char *pre_cmd = NULL;
if (access("/system/app/", F_OK) != -1) {
cmd1 = "getprop ro.product.brand";
cmd2 = "getprop ro.product.model";
pre_cmd = "getprop ro.product.brand && echo \" \" && getprop ro.product.model";
} else if (
access("/sys/devices/virtual/dmi/id/product_name", F_OK) != -1 &&
access("/sys/devices/virtual/dmi/id/product_version", F_OK) != 1
) {
cmd1 = "cat /sys/devices/virtual/dmi/id/product_name";
cmd2 = "cat /sys/devices/virtual/dmi/id/product_version";
pre_cmd = "cat /sys/devices/virtual/dmi/id/product_name && echo \" \" && "
"cat /sys/devices/virtual/dmi/id/product_version";
} else if (access("/sys/firmware/devicetree/base/model", F_OK) != -1) {
cmd1 = "cat /sys/firmware/devicetree/base/model";
pre_cmd = "cat /sys/firmware/devicetree/base/model";
} else if (access("/tmp/sysinfo/model", F_OK) != 1) {
cmd1 = "cat /tmp/sysinfo/model";
}
if (!cmd1) {
printf("Unknown");
pre_cmd = "cat /tmp/sysinfo/model";
} else {
const char *cmd = run_host_command(cmd1);
if (!cmd) return;
printf("%s", cmd);
free((void *)cmd);
return "Unknown";
}
if (cmd2) {
const char *model = run_host_command(cmd2);
if (!model) return;
printf(" %s", model);
free((void *)model);
}
size_t cmdlen = 1024;
cmd = malloc(cmdlen);
if (!cmd) return "Unknown";
snprintf((char *)cmd, cmdlen, "%s | sed '/To be filled by O.E.M./d; "
"/To Be Filled By O.E.M./d; /OEM/d; /Not Applicable/d; "
"/System Product Name/d; /System Version/d; /Undefined/d; /Default string/d; "
"/Not Specified/d; /Type1ProductConfigId/d; /INVALID/d; "
"/All Series/d' ", pre_cmd);
#elif defined(__APPLE__)
const char *cmd = run_host_command("sysctl -n hw.model");
if (!cmd) return;
printf("%s", cmd);
free((void *)cmd);
// TODO: Hackingtoshユーザーさん、助けて〜
/* const char *kext = run_host_command("kextstat | grep -F -e \"FakeSMC\" " */
/* "-e \"VirtualSMC\""); */
/* if (!kext) return; */
/* printf(", %s", kext); */
/* free((void *)kext); */
cmd = "sysctl -n hw.model";
#endif
if (!cmd) return "Unknown";
out = (char *)run_command_s(cmd);
#if defined(__linux__)
free((void *)cmd);
#endif
#if !defined(__HAIKU__)
to_cache("/tmp/farfetch/host", out);
#endif
return out;
}

ファイルの表示

@ -1,6 +1,6 @@
#ifndef HOST_H
#define HOST_H
void display_host_model();
const char *display_host();
#endif

ファイルの表示

@ -1,5 +1,6 @@
#if defined(__FreeBSD__)
#include "freebsd.h"
#include "../config.h"
#include "../resolution.h"
#include "../wm.h"
@ -14,8 +15,10 @@ size_t logosize = 16;
int minsize = MIN_SIZE;
void getOS() {
color = RED;
titlecolor = RED;
if (!customcolor) color = RED;
else color = customcolor;
if (!customtitlecolor) titlecolor = RED;
else titlecolor = customtitlecolor;
const char *res = display_resolution();
if (!res) minsize--;
else free((void *)res);
@ -23,31 +26,55 @@ void getOS() {
if (!wm) minsize--;
else free((void *)wm);
LOGO[0] = WHITE "``` " RED "` " RESET;
LOGO[1] = WHITE " ` `.....---..." RED "....--.``` -/ " RESET;
LOGO[2] = WHITE " +o .--` " RED "/y:` +. " RESET;
LOGO[3] = WHITE " yo`:. " RED ":o `+- " RESET;
LOGO[4] = WHITE " y/ " RED "-/` -o/ " RESET;
LOGO[5] = WHITE " .- " RED "::/sy+:. " RESET;
LOGO[6] = WHITE " / " RED "`-- / " RESET;
LOGO[7] = WHITE " `: " RED ":` " RESET;
LOGO[8] = WHITE " `: " RED ":` " RESET;
LOGO[9] = WHITE " / " RED "/ " RESET;
LOGO[10] = WHITE " .- " RED "-. " RESET;
LOGO[11] = WHITE " -- " RED "-. " RESET;
LOGO[12] = WHITE " `:` " RED "`:` " RESET;
LOGO[13] = RED " .-- `--. " RESET;
LOGO[14] = RED " .---.....----. " RESET;
LOGO[15] = RED " " RESET;
if (!isbiglogo && !issmalllogo) {
for (int i = 0; i < LOGO_SIZE; i++) {
LOGO[i] = NULL;
LOGO_SMALL[i] = NULL;
}
}
LOGO_SMALL[0] = RED "/\\,-'''''-,/\\ " RESET;
LOGO_SMALL[1] = RED "\\_) (_/ " RESET;
LOGO_SMALL[2] = RED "| | " RESET;
LOGO_SMALL[3] = RED "| | " RESET;
LOGO_SMALL[4] = RED " ; ; " RESET;
LOGO_SMALL[5] = RED " '-_____-' " RESET;
for (int i = 6; i < minsize; i++) {
LOGO_SMALL[i] = RED " " RESET;
if (!isbiglogo) {
LOGO[0] = WHITE "``` " RED "` " RESET;
LOGO[1] = WHITE " ` `.....---..." RED "....--.``` -/ " RESET;
LOGO[2] = WHITE " +o .--` " RED "/y:` +. " RESET;
LOGO[3] = WHITE " yo`:. " RED ":o `+- " RESET;
LOGO[4] = WHITE " y/ " RED "-/` -o/ " RESET;
LOGO[5] = WHITE " .- " RED "::/sy+:. " RESET;
LOGO[6] = WHITE " / " RED "`-- / " RESET;
LOGO[7] = WHITE " `: " RED ":` " RESET;
LOGO[8] = WHITE " `: " RED ":` " RESET;
LOGO[9] = WHITE " / " RED "/ " RESET;
LOGO[10] = WHITE " .- " RED "-. " RESET;
LOGO[11] = WHITE " -- " RED "-. " RESET;
LOGO[12] = WHITE " `:` " RED "`:` " RESET;
LOGO[13] = RED " .-- `--. " RESET;
LOGO[14] = RED " .---.....----. " RESET;
LOGO[15] = RED " " RESET;
} else {
logosize = biglogoi;
if (biglogoi < (size_t)minsize) {
for (size_t i = biglogoi; i < (size_t)minsize; i++) {
LOGO[i] = WHITE " " RESET;
}
}
}
if (!issmalllogo) {
LOGO_SMALL[0] = RED "/\\,-'''''-,/\\ " RESET;
LOGO_SMALL[1] = RED "\\_) (_/ " RESET;
LOGO_SMALL[2] = RED "| | " RESET;
LOGO_SMALL[3] = RED "| | " RESET;
LOGO_SMALL[4] = RED " ; ; " RESET;
LOGO_SMALL[5] = RED " '-_____-' " RESET;
for (int i = 6; i < minsize; i++) {
LOGO_SMALL[i] = RED " " RESET;
}
} else {
if (smalllogoi < (size_t)minsize) {
for (size_t i = smalllogoi; i < (size_t)minsize; i++) {
LOGO_SMALL[i] = WHITE " " RESET;
}
}
}
}
#endif

ファイルの表示

@ -1,5 +1,6 @@
#if defined(__HAIKU__)
#include "haiku.h"
#include "../config.h"
#include "../resolution.h"
#include <string.h>
@ -13,42 +14,68 @@ size_t logosize = 20;
int minsize = MIN_SIZE;
void getOS() {
color = GREEN;
titlecolor = RED;
if (!customcolor) color = GREEN;
else color = customcolor;
if (!customtitlecolor) titlecolor = RED;
else titlecolor = customtitlecolor;
const char *res = display_resolution();
if (!res) minsize--;
else free((void *)res);
LOGO[0] = YELLOW " / " RESET;
LOGO[1] = YELLOW " // " RESET;
LOGO[2] = YELLOW " / \\ " RESET;
LOGO[3] = YELLOW " / - " RESET;
LOGO[4] = YELLOW " / \\ " RESET;
LOGO[5] = YELLOW " \\ \\ " RESET;
LOGO[6] = YELLOW " - / " RESET;
LOGO[7] = YELLOW "/ / " RESET;
LOGO[8] = YELLOW "| \\ " RESET;
LOGO[9] = YELLOW "| \\ " RESET;
LOGO[10] = YELLOW "\\ \\ " RESET;
LOGO[11] = YELLOW "- - " RESET;
LOGO[12] = YELLOW "\\ \\ " RESET;
LOGO[13] = YELLOW " \\ \\ " RESET;
LOGO[14] = YELLOW " \\ / " RESET;
LOGO[15] = YELLOW " \\ / " RESET;
LOGO[16] = YELLOW " \\ / " RESET;
LOGO[17] = YELLOW " | | " RESET;
LOGO[18] = YELLOW " | | " RESET;
LOGO[19] = YELLOW " |_| " RESET;
if (!isbiglogo && !issmalllogo) {
for (int i = 0; i < LOGO_SIZE; i++) {
LOGO[i] = NULL;
LOGO_SMALL[i] = NULL;
}
}
LOGO_SMALL[0] = YELLOW " / " RESET;
LOGO_SMALL[1] = YELLOW " / \\ " RESET;
LOGO_SMALL[2] = YELLOW "/ | " RESET;
LOGO_SMALL[3] = YELLOW "| | " RESET;
LOGO_SMALL[4] = YELLOW "\\ / " RESET;
LOGO_SMALL[5] = YELLOW " || " RESET;
LOGO_SMALL[6] = YELLOW " || " RESET;
for (int i = 7; i < minsize; i++) {
LOGO_SMALL[i] = YELLOW " " RESET;
if (!isbiglogo) {
LOGO[0] = YELLOW " / " RESET;
LOGO[1] = YELLOW " // " RESET;
LOGO[2] = YELLOW " / \\ " RESET;
LOGO[3] = YELLOW " / - " RESET;
LOGO[4] = YELLOW " / \\ " RESET;
LOGO[5] = YELLOW " \\ \\ " RESET;
LOGO[6] = YELLOW " - / " RESET;
LOGO[7] = YELLOW "/ / " RESET;
LOGO[8] = YELLOW "| \\ " RESET;
LOGO[9] = YELLOW "| \\ " RESET;
LOGO[10] = YELLOW "\\ \\ " RESET;
LOGO[11] = YELLOW "- - " RESET;
LOGO[12] = YELLOW "\\ \\ " RESET;
LOGO[13] = YELLOW " \\ \\ " RESET;
LOGO[14] = YELLOW " \\ / " RESET;
LOGO[15] = YELLOW " \\ / " RESET;
LOGO[16] = YELLOW " \\ / " RESET;
LOGO[17] = YELLOW " | | " RESET;
LOGO[18] = YELLOW " | | " RESET;
LOGO[19] = YELLOW " |_| " RESET;
} else {
logosize = biglogoi;
if (biglogoi < (size_t)minsize) {
for (size_t i = biglogoi; i < (size_t)minsize; i++) {
LOGO[i] = WHITE " " RESET;
}
}
}
if (!issmalllogo) {
LOGO_SMALL[0] = YELLOW " / " RESET;
LOGO_SMALL[1] = YELLOW " / \\ " RESET;
LOGO_SMALL[2] = YELLOW "/ | " RESET;
LOGO_SMALL[3] = YELLOW "| | " RESET;
LOGO_SMALL[4] = YELLOW "\\ / " RESET;
LOGO_SMALL[5] = YELLOW " || " RESET;
LOGO_SMALL[6] = YELLOW " || " RESET;
for (int i = 7; i < minsize; i++) {
LOGO_SMALL[i] = YELLOW " " RESET;
}
} else {
if (smalllogoi < (size_t)minsize) {
for (size_t i = smalllogoi; i < (size_t)minsize; i++) {
LOGO_SMALL[i] = WHITE " " RESET;
}
}
}
}
#endif

ファイル差分が大きすぎるため省略します 差分を読み込み

ファイルの表示

@ -1,6 +1,6 @@
#if defined(__APPLE__)
#include "macos.h"
#include "../resolution.h"
#include "../config.h"
#include "../packages.h"
#include <string.h>
@ -14,43 +14,59 @@ size_t logosize = 17;
int minsize = MIN_SIZE;
void getOS() {
color = YELLOW;
titlecolor = GREEN;
const char *res = display_resolution();
if (!res) minsize--;
else free((void *)res);
if (!customcolor) color = YELLOW;
else color = customcolor;
if (!customtitlecolor) titlecolor = GREEN;
else titlecolor = customtitlecolor;
const char *pac = display_packages();
if (!pac) minsize--;
else free((void *)pac);
LOGO[0] = GREEN " 'c. " RESET;
LOGO[1] = GREEN " ,xNMM. " RESET;
LOGO[2] = GREEN " .OMMMMo " RESET;
LOGO[3] = GREEN " OMMM0, " RESET;
LOGO[4] = GREEN " .;loddo:' loolloddol;. " RESET;
LOGO[5] = GREEN " cKMMMMMMMMMMNWMMMMMMMMMM0: " RESET;
LOGO[6] = YELLOW " .KMMMMMMMMMMMMMMMMMMMMMMMWd. " RESET;
LOGO[7] = YELLOW " XMMMMMMMMMMMMMMMMMMMMMMMX. " RESET;
LOGO[8] = RED ";MMMMMMMMMMMMMMMMMMMMMMMM: " RESET;
LOGO[9] = RED ":MMMMMMMMMMMMMMMMMMMMMMMM: " RESET;
LOGO[10] = RED ".MMMMMMMMMMMMMMMMMMMMMMMMX. " RESET;
LOGO[11] = RED " kMMMMMMMMMMMMMMMMMMMMMMMMWd. " RESET;
LOGO[12] = MAGENTA " .XMMMMMMMMMMMMMMMMMMMMMMMMMMk " RESET;
LOGO[13] = MAGENTA " .XMMMMMMMMMMMMMMMMMMMMMMMMK. " RESET;
LOGO[14] = BLUE " kMMMMMMMMMMMMMMMMMMMMMMd " RESET;
LOGO[15] = BLUE " ;KMMMMMMMWXXWMMMMMMMk. " RESET;
LOGO[16] = BLUE " .cooc,. .,coo:. " RESET;
if (!isbiglogo) {
LOGO[0] = GREEN " 'c. " RESET;
LOGO[1] = GREEN " ,xNMM. " RESET;
LOGO[2] = GREEN " .OMMMMo " RESET;
LOGO[3] = GREEN " OMMM0, " RESET;
LOGO[4] = GREEN " .;loddo:' loolloddol;. " RESET;
LOGO[5] = GREEN " cKMMMMMMMMMMNWMMMMMMMMMM0: " RESET;
LOGO[6] = YELLOW " .KMMMMMMMMMMMMMMMMMMMMMMMWd. " RESET;
LOGO[7] = YELLOW " XMMMMMMMMMMMMMMMMMMMMMMMX. " RESET;
LOGO[8] = RED ";MMMMMMMMMMMMMMMMMMMMMMMM: " RESET;
LOGO[9] = RED ":MMMMMMMMMMMMMMMMMMMMMMMM: " RESET;
LOGO[10] = RED ".MMMMMMMMMMMMMMMMMMMMMMMMX. " RESET;
LOGO[11] = RED " kMMMMMMMMMMMMMMMMMMMMMMMMWd. " RESET;
LOGO[12] = MAGENTA " .XMMMMMMMMMMMMMMMMMMMMMMMMMMk " RESET;
LOGO[13] = MAGENTA " .XMMMMMMMMMMMMMMMMMMMMMMMMK. " RESET;
LOGO[14] = BLUE " kMMMMMMMMMMMMMMMMMMMMMMd " RESET;
LOGO[15] = BLUE " ;KMMMMMMMWXXWMMMMMMMk. " RESET;
LOGO[16] = BLUE " .cooc,. .,coo:. " RESET;
} else {
logosize = biglogoi;
if (biglogoi < (size_t)minsize) {
for (size_t i = biglogoi; i < (size_t)minsize; i++) {
LOGO[i] = WHITE " " RESET;
}
}
}
LOGO_SMALL[0] = GREEN " .:' " RESET;
LOGO_SMALL[1] = GREEN " _ :'_ " RESET;
LOGO_SMALL[2] = YELLOW " .'`_`-'_``. " RESET;
LOGO_SMALL[3] = YELLOW ":________.-' " RESET;
LOGO_SMALL[4] = RED ":_______: " RESET;
LOGO_SMALL[5] = RED ":_______: " RESET;
LOGO_SMALL[6] = MAGENTA " :_______`-; " RESET;
LOGO_SMALL[7] = BLUE " `._.-._.' " RESET;
for (int i = 8; i < minsize; i++) {
LOGO_SMALL[i] = RED " " RESET;
if (!issmalllogo) {
LOGO_SMALL[0] = GREEN " .:' " RESET;
LOGO_SMALL[1] = GREEN " _ :'_ " RESET;
LOGO_SMALL[2] = YELLOW " .'`_`-'_``. " RESET;
LOGO_SMALL[3] = YELLOW ":________.-' " RESET;
LOGO_SMALL[4] = RED ":_______: " RESET;
LOGO_SMALL[5] = RED ":_______: " RESET;
LOGO_SMALL[6] = MAGENTA " :_______`-; " RESET;
LOGO_SMALL[7] = BLUE " `._.-._.' " RESET;
for (int i = 8; i < minsize; i++) {
LOGO_SMALL[i] = RED " " RESET;
}
} else {
if (smalllogoi < (size_t)minsize) {
for (size_t i = smalllogoi; i < (size_t)minsize; i++) {
LOGO_SMALL[i] = WHITE " " RESET;
}
}
}
}
#endif

ファイルの表示

@ -1,5 +1,6 @@
#if defined(__NetBSD__)
#include "netbsd.h"
#include "../config.h"
#include "../resolution.h"
#include "../wm.h"
@ -14,8 +15,10 @@ size_t logosize = 18;
int minsize = MIN_SIZE;
void getOS() {
color = MAGENTA;
titlecolor = MAGENTA;
if (!customcolor) color = MAGENTA;
else color = customcolor;
if (!customtitlecolor) titlecolor = MAGENTA;
else titlecolor = customtitlecolor;
const char *res = display_resolution();
if (!res) minsize--;
else free((void *)res);
@ -23,34 +26,51 @@ void getOS() {
if (!wm) minsize--;
else free((void *)wm);
LOGO[0] = MAGENTA " `-/oshdmNMNdhyo+:-` " RESET;
LOGO[1] = WHITE "y" MAGENTA "/s+:-`` `.-:+oydNMMMMNhs/-`` " RESET;
LOGO[2] = WHITE "-m+" MAGENTA "NMMMMMMMMMMMMMMMMMMMNdhmNMMMmdhs+/-` " RESET;
LOGO[3] = WHITE " -m+" MAGENTA "NMMMMMMMMMMMMMMMMMMMMmy+:` " RESET;
LOGO[4] = WHITE " -N/" MAGENTA "dMMMMMMMMMMMMMMMds:` " RESET;
LOGO[5] = WHITE " -N/" MAGENTA "hMMMMMMMMMmho:` " RESET;
LOGO[6] = WHITE " -N/" MAGENTA "-:/++/:.` " RESET;
LOGO[7] = WHITE " :M+ " RESET;
LOGO[8] = WHITE " :Mo " RESET;
LOGO[9] = WHITE " :Ms " RESET;
LOGO[10] = WHITE " :Ms " RESET;
LOGO[11] = WHITE " :Ms " RESET;
LOGO[12] = WHITE " :Ms " RESET;
LOGO[13] = WHITE " :Ms " RESET;
LOGO[14] = WHITE " :Ms " RESET;
LOGO[15] = WHITE " :Ms " RESET;
LOGO[16] = WHITE " :Ms " RESET;
LOGO[17] = WHITE " " RESET;
if (!isbiglogo) {
LOGO[0] = MAGENTA " `-/oshdmNMNdhyo+:-` " RESET;
LOGO[1] = WHITE "y" MAGENTA "/s+:-`` `.-:+oydNMMMMNhs/-`` " RESET;
LOGO[2] = WHITE "-m+" MAGENTA "NMMMMMMMMMMMMMMMMMMMNdhmNMMMmdhs+/-` " RESET;
LOGO[3] = WHITE " -m+" MAGENTA "NMMMMMMMMMMMMMMMMMMMMmy+:` " RESET;
LOGO[4] = WHITE " -N/" MAGENTA "dMMMMMMMMMMMMMMMds:` " RESET;
LOGO[5] = WHITE " -N/" MAGENTA "hMMMMMMMMMmho:` " RESET;
LOGO[6] = WHITE " -N/" MAGENTA "-:/++/:.` " RESET;
LOGO[7] = WHITE " :M+ " RESET;
LOGO[8] = WHITE " :Mo " RESET;
LOGO[9] = WHITE " :Ms " RESET;
LOGO[10] = WHITE " :Ms " RESET;
LOGO[11] = WHITE " :Ms " RESET;
LOGO[12] = WHITE " :Ms " RESET;
LOGO[13] = WHITE " :Ms " RESET;
LOGO[14] = WHITE " :Ms " RESET;
LOGO[15] = WHITE " :Ms " RESET;
LOGO[16] = WHITE " :Ms " RESET;
LOGO[17] = WHITE " " RESET;
} else {
logosize = biglogoi;
if (biglogoi < (size_t)minsize) {
for (size_t i = biglogoi; i < (size_t)minsize; i++) {
LOGO[i] = WHITE " " RESET;
}
}
}
LOGO_SMALL[0] = "\\\\" MAGENTA "\\`-______,----__ " RESET;
LOGO_SMALL[1] = " \\\\ " MAGENTA "__,---\\`_ " RESET;
LOGO_SMALL[2] = " \\\\ " MAGENTA "\\`.____ " RESET;
LOGO_SMALL[3] = " \\\\" MAGENTA "-______,----\\`- " RESET;
LOGO_SMALL[4] = " \\\\ " RESET;
LOGO_SMALL[5] = " \\\\ " RESET;
LOGO_SMALL[6] = " \\\\ " RESET;
for (int i = 7; i < minsize; i++) {
LOGO_SMALL[i] = MAGENTA " " RESET;
if (!issmalllogo) {
LOGO_SMALL[0] = "\\\\" MAGENTA "\\`-______,----__ " RESET;
LOGO_SMALL[1] = " \\\\ " MAGENTA "__,---\\`_ " RESET;
LOGO_SMALL[2] = " \\\\ " MAGENTA "\\`.____ " RESET;
LOGO_SMALL[3] = " \\\\" MAGENTA "-______,----\\`- " RESET;
LOGO_SMALL[4] = " \\\\ " RESET;
LOGO_SMALL[5] = " \\\\ " RESET;
LOGO_SMALL[6] = " \\\\ " RESET;
for (int i = 7; i < minsize; i++) {
LOGO_SMALL[i] = MAGENTA " " RESET;
}
} else {
if (smalllogoi < (size_t)minsize) {
for (size_t i = smalllogoi; i < (size_t)minsize; i++) {
LOGO_SMALL[i] = WHITE " " RESET;
}
}
}
}
#endif

ファイルの表示

@ -1,5 +1,6 @@
#if defined(__OpenBSD__)
#include "openbsd.h"
#include "../config.h"
#include "../resolution.h"
#include "../wm.h"
@ -14,8 +15,10 @@ size_t logosize = 23;
int minsize = MIN_SIZE;
void getOS() {
color = YELLOW;
titlecolor = YELLOW;
if (!customcolor) color = YELLOW;
else color = customcolor;
if (!customtitlecolor) titlecolor = YELLOW;
else titlecolor = customtitlecolor;
const char *res = display_resolution();
if (!res) minsize--;
else free((void *)res);
@ -23,45 +26,64 @@ void getOS() {
if (!wm) minsize--;
else free((void *)wm);
for (int i = 0; i < LOGO_SIZE; i++) {
LOGO[i] = NULL;
LOGO_SMALL[i] = NULL;
if (!isbiglogo && !issmalllogo) {
for (int i = 0; i < LOGO_SIZE; i++) {
LOGO[i] = NULL;
LOGO_SMALL[i] = NULL;
}
}
LOGO[0] = CYAN " _ " RESET;
LOGO[1] = CYAN " (_) " RESET;
LOGO[2] = YELLOW " | . " RESET;
LOGO[3] = YELLOW " . |L /| . " CYAN "_ " RESET;
LOGO[4] = YELLOW " _ . |\\ _| \\--+._/| . " CYAN " (_) " RESET;
LOGO[5] = YELLOW " / ||\\| Y J ) / |/| ./ " RESET;
LOGO[6] = YELLOW " J |)'( | ` F`.'/ " CYAN " _ " RESET;
LOGO[7] = YELLOW " -<| F __ .-< " CYAN " (_) " RESET;
LOGO[8] = YELLOW " | / .-'" CYAN "." YELLOW " `. /" CYAN "-. " YELLOW "L___ " RESET;
LOGO[9] = YELLOW " J \\ < " CYAN "\\ " YELLOW " | |" GREY " O" CYAN "\\" YELLOW "|.-' " CYAN " _ " RESET;
LOGO[10] = YELLOW " _J \\ .- \\" CYAN "/" GREY " O " CYAN "|" YELLOW" | \\ |F " CYAN " (_) " RESET;
LOGO[11] = YELLOW " '-F -<_. \\ .-' `-' L__ " RESET;
LOGO[12] = YELLOW "__J _ _. >-' )" RED "._." YELLOW " |-' " RESET;
LOGO[13] = YELLOW " `-|.' /_. " RED "\\_|" YELLOW " F " RESET;
LOGO[14] = YELLOW " /.- . _.< " RESET;
LOGO[15] = YELLOW " /' /.' .' `\\ " RESET;
LOGO[16] = YELLOW " /L /' |/ _.-'-\\ " RESET;
LOGO[17] = YELLOW " /'J ___.---'\\| " RESET;
LOGO[18] = YELLOW " |\\ .--' V | `. ` " RESET;
LOGO[19] = YELLOW " |/`. `-. `._) " RESET;
LOGO[20] = YELLOW " / .-.\\ " RESET;
LOGO[21] = YELLOW " \\ ( `\\ " RESET;
LOGO[22] = YELLOW " `.\\ " RESET;
LOGO[22] = YELLOW " " RESET;
if (!isbiglogo) {
LOGO[0] = CYAN " _ " RESET;
LOGO[1] = CYAN " (_) " RESET;
LOGO[2] = YELLOW " | . " RESET;
LOGO[3] = YELLOW " . |L /| . " CYAN "_ " RESET;
LOGO[4] = YELLOW " _ . |\\ _| \\--+._/| . " CYAN " (_) " RESET;
LOGO[5] = YELLOW " / ||\\| Y J ) / |/| ./ " RESET;
LOGO[6] = YELLOW " J |)'( | ` F`.'/ " CYAN " _ " RESET;
LOGO[7] = YELLOW " -<| F __ .-< " CYAN " (_) " RESET;
LOGO[8] = YELLOW " | / .-'" CYAN "." YELLOW " `. /" CYAN "-. " YELLOW "L___ " RESET;
LOGO[9] = YELLOW " J \\ < " CYAN "\\ " YELLOW " | |" GREY " O" CYAN "\\" YELLOW "|.-' " CYAN " _ " RESET;
LOGO[10] = YELLOW " _J \\ .- \\" CYAN "/" GREY " O " CYAN "|" YELLOW" | \\ |F " CYAN " (_) " RESET;
LOGO[11] = YELLOW " '-F -<_. \\ .-' `-' L__ " RESET;
LOGO[12] = YELLOW "__J _ _. >-' )" RED "._." YELLOW " |-' " RESET;
LOGO[13] = YELLOW " `-|.' /_. " RED "\\_|" YELLOW " F " RESET;
LOGO[14] = YELLOW " /.- . _.< " RESET;
LOGO[15] = YELLOW " /' /.' .' `\\ " RESET;
LOGO[16] = YELLOW " /L /' |/ _.-'-\\ " RESET;
LOGO[17] = YELLOW " /'J ___.---'\\| " RESET;
LOGO[18] = YELLOW " |\\ .--' V | `. ` " RESET;
LOGO[19] = YELLOW " |/`. `-. `._) " RESET;
LOGO[20] = YELLOW " / .-.\\ " RESET;
LOGO[21] = YELLOW " \\ ( `\\ " RESET;
LOGO[22] = YELLOW " `.\\ " RESET;
LOGO[22] = YELLOW " " RESET;
} else {
logosize = biglogoi;
if (biglogoi < (size_t)minsize) {
for (size_t i = biglogoi; i < (size_t)minsize; i++) {
LOGO[i] = WHITE " " RESET;
}
}
}
LOGO_SMALL[0] = YELLOW " _____ " RESET;
LOGO_SMALL[1] = YELLOW " \\- -/ " RESET;
LOGO_SMALL[2] = YELLOW " \\_/ \\ " RESET;
LOGO_SMALL[3] = YELLOW " | " RESET "O O" YELLOW" | " RESET;
LOGO_SMALL[4] = YELLOW " |_ < ) 3 ) " RESET;
LOGO_SMALL[5] = YELLOW " / \\ / " RESET;
LOGO_SMALL[6] = YELLOW " /-_____-\\ " RESET;
for (int i = 7; i < minsize; i++) {
LOGO_SMALL[i] = YELLOW " " RESET;
if (!issmalllogo) {
LOGO_SMALL[0] = YELLOW " _____ " RESET;
LOGO_SMALL[1] = YELLOW " \\- -/ " RESET;
LOGO_SMALL[2] = YELLOW " \\_/ \\ " RESET;
LOGO_SMALL[3] = YELLOW " | " WHITE "O O" YELLOW" | " RESET;
LOGO_SMALL[4] = YELLOW " |_ < ) 3 ) " RESET;
LOGO_SMALL[5] = YELLOW " / \\ / " RESET;
LOGO_SMALL[6] = YELLOW " /-_____-\\ " RESET;
for (int i = 7; i < minsize; i++) {
LOGO_SMALL[i] = YELLOW " " RESET;
}
} else {
if (smalllogoi < (size_t)minsize) {
for (size_t i = smalllogoi; i < (size_t)minsize; i++) {
LOGO_SMALL[i] = WHITE " " RESET;
}
}
}
}
#endif

ファイルの表示

@ -1,5 +1,6 @@
#if defined(__sun)
#include "sunos.h"
#include "../config.h"
#include "../resolution.h"
#include "../wm.h"
@ -33,57 +34,95 @@ void getDistro(const char *distroname) {
}
}
if (!isbiglogo && !issmalllogo) {
for (int i = 0; i < LOGO_SIZE; i++) {
LOGO[i] = NULL;
LOGO_SMALL[i] = NULL;
}
}
if (strncmp((char *)logoname, "omnios", strlen("omnios")) == 0) {
color = YELLOW;
titlecolor = GREY;
if (!customcolor) color = YELLOW;
else color = customcolor;
if (!customtitlecolor) titlecolor = GREY;
else titlecolor = customtitlecolor;
logosize = 13;
LOGO[0] = GREY " ###### " RESET;
LOGO[1] = GREY " ### ### " RESET;
LOGO[2] = GREY " ## ## " RESET;
LOGO[3] = GREY "## ## " RESET;
LOGO[4] = GREY "## " YELLOW "###### " RESET;
LOGO[5] = GREY " ## " YELLOW "### " GREY "## " YELLOW "### " RESET;
LOGO[6] = GREY " ### " YELLOW "## " GREY "### " YELLOW "## " RESET;
LOGO[7] = GREY " " YELLOW "##" GREY "#### " YELLOW "## " RESET;
LOGO[8] = YELLOW " ## ## " RESET;
LOGO[9] = YELLOW " ## ## " RESET;
LOGO[10] = YELLOW " ### ### " RESET;
LOGO[11] = YELLOW " ###### " RESET;
for (size_t i = 12; i < logosize; i++) {
LOGO[i] = YELLOW " " RESET;
if (!isbiglogo) {
LOGO[0] = GREY " ###### " RESET;
LOGO[1] = GREY " ### ### " RESET;
LOGO[2] = GREY " ## ## " RESET;
LOGO[3] = GREY "## ## " RESET;
LOGO[4] = GREY "## " YELLOW "###### " RESET;
LOGO[5] = GREY " ## " YELLOW "### " GREY "## " YELLOW "### " RESET;
LOGO[6] = GREY " ### " YELLOW "## " GREY "### " YELLOW "## " RESET;
LOGO[7] = GREY " " YELLOW "##" GREY "#### " YELLOW "## " RESET;
LOGO[8] = YELLOW " ## ## " RESET;
LOGO[9] = YELLOW " ## ## " RESET;
LOGO[10] = YELLOW " ### ### " RESET;
LOGO[11] = YELLOW " ###### " RESET;
for (size_t i = 12; i < logosize; i++) {
LOGO[i] = YELLOW " " RESET;
}
} else {
logosize = biglogoi;
if (biglogoi < (size_t)minsize) {
for (size_t i = biglogoi; i < (size_t)minsize; i++) {
LOGO[i] = WHITE " " RESET;
}
}
}
LOGO_SMALL[0] = GREY " __ " RESET;
LOGO_SMALL[1] = GREY " / \\ " RESET;
LOGO_SMALL[2] = GREY "| " YELLOW "__ " RESET;
LOGO_SMALL[3] = GREY " \\_" YELLOW "/" GREY "/ " YELLOW "\\ " RESET;
LOGO_SMALL[4] = YELLOW " | | " RESET;
LOGO_SMALL[5] = YELLOW " \\__/ " RESET;
for (int i = 6; i < minsize; i++) {
LOGO_SMALL[i] = YELLOW " " RESET;
if (!issmalllogo) {
LOGO_SMALL[0] = GREY " __ " RESET;
LOGO_SMALL[1] = GREY " / \\ " RESET;
LOGO_SMALL[2] = GREY "| " YELLOW "__ " RESET;
LOGO_SMALL[3] = GREY " \\_" YELLOW "/" GREY "/ " YELLOW "\\ " RESET;
LOGO_SMALL[4] = YELLOW " | | " RESET;
LOGO_SMALL[5] = YELLOW " \\__/ " RESET;
for (int i = 6; i < minsize; i++) {
LOGO_SMALL[i] = YELLOW " " RESET;
}
} else {
if (smalllogoi < (size_t)minsize) {
for (size_t i = smalllogoi; i < (size_t)minsize; i++) {
LOGO_SMALL[i] = WHITE " " RESET;
}
}
}
} else {
color = BLUE;
titlecolor = BLUE;
if (!customcolor) color = BLUE;
else color = customcolor;
if (!customtitlecolor) titlecolor = BLUE;
else titlecolor = customtitlecolor;
logosize = 17
LOGO[0] = WHITE " .sy/ " RESET;
LOGO[1] = WHITE " .yh+ " RESET;
LOGO[2] = WHITE " " RESET;
LOGO[3] = BLUE " " BLUE "-+syyyo+-" WHITE " /+. " RESET;
LOGO[4] = BLUE " " BLUE "+ddo/---/sdh/" WHITE " ym- " RESET;
LOGO[5] = BLUE " " BLUE "`hm+ `sms" WHITE " ym-```````.-. " RESET;
LOGO[6] = BLUE " " BLUE "sm+ sm/" WHITE " ym- +s " RESET;
LOGO[7] = BLUE " " BLUE "hm. /mo" WHITE " ym- /h " RESET;
LOGO[8] = BLUE " " BLUE "omo ym:" WHITE " ym- `os` " RESET;
LOGO[9] = BLUE " " BLUE "smo` .ym+" WHITE " ym- .os- " RESET;
LOGO[10] = WHITE " `` " BLUE ":ymy+///oyms-" WHITE " ym- .+s+. " RESET;
LOGO[11] = WHITE " ..` " BLUE "`:+oo+/-`" WHITE " -//oyo- " RESET;
LOGO[12] = WHITE " -:` .:oys/. " RESET;
LOGO[13] = WHITE "+- `./oyys/. " RESET;
LOGO[14] = WHITE "h+` `.-:+oyyyo/-` " RESET;
LOGO[15] = WHITE "`/ossssysso+/-.` " RESET;
LOGO[16] = WHITE " " RESET;
if (!isbiglogo) {
LOGO[0] = WHITE " .sy/ " RESET;
LOGO[1] = WHITE " .yh+ " RESET;
LOGO[2] = WHITE " " RESET;
LOGO[3] = BLUE " " BLUE "-+syyyo+-" WHITE " /+. " RESET;
LOGO[4] = BLUE " " BLUE "+ddo/---/sdh/" WHITE " ym- " RESET;
LOGO[5] = BLUE " " BLUE "`hm+ `sms" WHITE " ym-```````.-. " RESET;
LOGO[6] = BLUE " " BLUE "sm+ sm/" WHITE " ym- +s " RESET;
LOGO[7] = BLUE " " BLUE "hm. /mo" WHITE " ym- /h " RESET;
LOGO[8] = BLUE " " BLUE "omo ym:" WHITE " ym- `os` " RESET;
LOGO[9] = BLUE " " BLUE "smo` .ym+" WHITE " ym- .os- " RESET;
LOGO[10] = WHITE " `` " BLUE ":ymy+///oyms-" WHITE " ym- .+s+. " RESET;
LOGO[11] = WHITE " ..` " BLUE "`:+oo+/-`" WHITE " -//oyo- " RESET;
LOGO[12] = WHITE " -:` .:oys/. " RESET;
LOGO[13] = WHITE "+- `./oyys/. " RESET;
LOGO[14] = WHITE "h+` `.-:+oyyyo/-` " RESET;
LOGO[15] = WHITE "`/ossssysso+/-.` " RESET;
LOGO[16] = WHITE " " RESET;
} else {
logosize = biglogoi;
if (biglogoi < (size_t)minsize) {
for (size_t i = biglogoi; i < (size_t)minsize; i++) {
LOGO[i] = WHITE " " RESET;
}
}
}
}
}
#endif

ファイルの表示

@ -1,7 +1,74 @@
#include "os.h"
#include "common.h"
#include <stdio.h>
#include <stdlib.h>
const char *display_os() {
return run_command_s("uname -s && echo \" \" && uname -r && "
"echo \" \" && uname -m");
const char *osname = NULL;
const char *osversion = NULL;
const char *osarch = NULL;
char *cmd;
#if defined(__APPLE__)
if (!from_cache("/tmp/farfetch/os")) {
osname = run_command_s("sw_vers | grep \"ProductName\" | awk '{print $2}'");
osversion = run_command_s("sw_vers | grep \"ProductVersion\" | awk '{print $2}'");
osarch = run_command_s("uname -m");
cmd = (char *)malloc(128 * sizeof(char));
if (!cmd) {
perror("malloc");
free((void *)osname);
free((void *)osversion);
free((void *)osarch);
return NULL;
}
snprintf(cmd, 128, "%s %s %s", osname, osversion, osarch);
to_cache("/tmp/farfetch/os", cmd);
} else {
cmd = (char *)from_cache("/tmp/farfetch/os");
}
#elif defined(__HAIKU__)
osname = run_command_s("uname -s");
osversion = run_command_s("uname -r");
osarch = run_command_s("uname -m");
cmd = (char *)malloc(128 * sizeof(char));
if (!cmd) {
perror("malloc");
free((void *)osname);
free((void *)osversion);
free((void *)osarch);
return NULL;
}
snprintf(cmd, 128, "%s %s %s", osname, osversion, osarch);
#else
if (!from_cache("/tmp/farfetch/os")) {
osname = run_command_s("uname -s");
osversion = run_command_s("uname -r");
osarch = run_command_s("uname -m");
cmd = (char *)malloc(128 * sizeof(char));
if (!cmd) {
perror("malloc");
free((void *)osname);
free((void *)osversion);
free((void *)osarch);
return NULL;
}
snprintf(cmd, 128, "%s %s %s", osname, osversion, osarch);
to_cache("/tmp/farfetch/os", cmd);
} else {
cmd = (char *)from_cache("/tmp/farfetch/os");
}
#endif
free((void *)osname);
free((void *)osversion);
free((void *)osarch);
return cmd;
}

ファイルの表示

@ -20,11 +20,17 @@ const char *display_packages() {
return run_command_s("pkg list | wc -l | sed 's/ *//' && echo \" (pkg list)\"");
#elif defined(__linux__)
if (access("/bin/xbps-query", F_OK) != -1) {
return run_command_s("xbps-query -l | wc -l | sed \"s/ //g\" "
"&& echo \" (xbps-query)\"");
return run_command_s("xbps-query -l | wc -l | sed \"s/ //g\" && "
"echo \" (xbps-query)\"");
} else if (access("/usr/bin/dpkg-query", F_OK) != -1) {
return run_command_s("dpkg-query -f '.\n' -W | wc -l | sed \"s/ //g\" && "
"echo \" (dpkg-query)\"");
} else if (access("/usr/bin/pacman", F_OK) != -1) {
return run_command_s("pacman -Qq | wc -l | sed \"s/ //g\" && "
"echo \" (pacman)\"");
} else if (access("/usr/bin/rpm", F_OK) != -1) {
return run_command_s("rpm -qa | wc -l | sed \"s/ //g\" && "
"echo \" (rpm)\"");
}
return NULL;

ファイルの表示

@ -1,36 +1,96 @@
#include "resolution.h"
#include "common.h"
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
const char *display_resolution() {
#if defined(__HAIKU__)
return run_command_s("screenmode | sed 's/Resolution: //' | sed 's/,.*$//' | "
"sed 's/ /x/'");
#else
const char *display = run_command_s("echo $DISPLAY");
if (display == NULL || strlen(display) == 0) return NULL;
else free((void *)display);
const char *isexist = run_command_s("which xrandr");
if (
isexist == NULL ||
strlen(isexist) == 0 ||
strncmp(isexist, "xrandr not found", strlen("xrandr not found")) == 0 ||
strstr(isexist, "which: no xrandr in")
) {
if (isexist) free((void *)isexist);
return NULL;
}
free((void *)isexist);
const char *usingxrandr() {
return run_command_s("xrandr --nograb --current | "
"awk -F 'connected |\\\\+|\\\\(' '/ "
"connected.*[0-9]+x[0-9]+\\+/ && $2 {printf $2 "
"\", \"}' | sed 's/primary //' | "
"sed 's/,\\([^,]*\\)$/\\1/'");
}
const char *usingxwininfo() {
return run_command_s("xwininfo -root | awk '/Width/ {width=$2} /Height/ "
"{height=$2} END {printf \"%dx%d\\n\", width, height}'");
}
const char *usingxdpyinfo() {
return run_command_s("xdpyinfo | awk '/dimensions:/ {printf $2}'");
}
const char *usingdrm() {
return run_command_s("for dev in /sys/class/drm/card*-*/status; do "
"if grep -q \"connected\" \"$dev\"; then "
"dir=$(dirname \"$dev\"); "
"modefile=\"$dir/modes\"; "
"dis=$(echo \"$dir\" | sed -e 's/^.*drm\\///'); "
"if [ -f \"$modefile\" ]; then "
"mode=$(head -n 1 \"$modefile\"); "
"if [ -n \"$mode\" ]; then "
"echo \"$mode, \"; "
"fi "
"fi "
"fi "
"done | sed '$s/,//'");
}
const char *display_resolution() {
#if defined(__HAIKU__)
return run_command_s("screenmode | sed 's/Resolution: //' | sed 's/,.*$//' | "
"sed 's/ /x/'");
#elif defined(__APPLE__)
return run_command_s("system_profiler SPDisplaysDataType | grep Resolution | "
"sed 's/^.*: //' | sed 's/ Retina//' | sed 's/ //g'");
#else
if (access("/sys/class/drm", F_OK) == 0) {
return usingdrm();
}
const char *display = run_command_s("echo $DISPLAY");
if (display == NULL || strlen(display) == 0) return NULL;
else free((void *)display);
const char *isxrandr = run_command_s("which xrandr");
if (
isxrandr != NULL &&
strlen(isxrandr) != 0 &&
strncmp(isxrandr, "xrandr not found", strlen("xrandr not found")) != 0 &&
!strstr(isxrandr, "which: no xrandr in")
) {
free((void *)isxrandr);
return usingxrandr();
}
free((void *)isxrandr);
const char *isxwininfo = run_command_s("which xwininfo");
if (
isxwininfo != NULL &&
strlen(isxwininfo) != 0 &&
strncmp(isxwininfo, "xwininfo not found", strlen("xwininfo not found")) != 0 &&
!strstr(isxwininfo, "which: no xwininfo in")
) {
free((void *)isxwininfo);
return usingxwininfo();
}
free((void *)isxwininfo);
const char *isxdpyinfo = run_command_s("which xdpyinfo");
if (
isxdpyinfo != NULL &&
strlen(isxdpyinfo) != 0 &&
strncmp(isxdpyinfo, "xdpyinfo not found", strlen("xdpyinfo not found")) != 0 &&
!strstr(isxdpyinfo, "which: no xdpyinfo in")
) {
free((void *)isxdpyinfo);
return usingxdpyinfo();
}
free((void *)isxdpyinfo);
return NULL;
#endif
}

ファイルの表示

@ -6,5 +6,6 @@ const char *display_user_name() {
}
const char *display_user_host() {
return run_command_s("hostname");
return run_command_s("command -v hostname >/dev/null 2>&1 && hostname || "
"cat /etc/hostname");
}