コミットを比較
39 コミット
farfetch-0
...
master
作成者 | SHA1 | 日付 |
---|---|---|
守矢諏訪子 | fc2b3fa498 | |
守矢諏訪子 | 2376e7612a | |
守矢諏訪子 | a79b20b41f | |
守矢諏訪子 | 3db5f7c209 | |
守矢諏訪子 | 6cfc3ed172 | |
守矢諏訪子 | 356ef1ff4b | |
守矢諏訪子 | 06d09963b5 | |
守矢諏訪子 | 8e036db3f6 | |
守矢諏訪子 | 6575c53d9c | |
守矢諏訪子 | 22062d76c6 | |
守矢諏訪子 | feb4f93545 | |
守矢諏訪子 | 0170c12f9b | |
守矢諏訪子 | 608038ddad | |
守矢諏訪子 | e90392170c | |
守矢諏訪子 | 92f1fb0982 | |
守矢諏訪子 | f1d1323595 | |
守矢諏訪子 | cb9191123b | |
守矢諏訪子 | ae56f01588 | |
守矢諏訪子 | fe371f5f13 | |
守矢諏訪子 | 9ed1f6cf36 | |
守矢諏訪子 | 8d8a604c02 | |
守矢諏訪子 | 8bed0f368a | |
守矢諏訪子 | 7c8ea39b59 | |
守矢諏訪子 | a1c03d5c31 | |
守矢諏訪子 | d93928e032 | |
守矢諏訪子 | 2c424c0bcb | |
守矢諏訪子 | 0079202d8b | |
守矢諏訪子 | 5927aefd61 | |
守矢諏訪子 | cbd6c50beb | |
守矢諏訪子 | 2e6d8394ce | |
守矢諏訪子 | 6358db2074 | |
守矢諏訪子 | f6960d3f1f | |
守矢諏訪子 | 61f3304581 | |
守矢諏訪子 | eef3420bbb | |
守矢諏訪子 | 1bd16354f7 | |
守矢諏訪子 | 4e6d1d305a | |
守矢諏訪子 | 1ef76b5fdf | |
守矢諏訪子 | b8da1256e9 | |
守矢諏訪子 | 14e524766f |
17
CHANGELOG.md
17
CHANGELOG.md
|
@ -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
|
||||
|
|
42
Makefile
42
Makefile
|
@ -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
|
||||
```
|
||||
|
|
|
@ -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)
|
11
farfetch.1
11
farfetch.1
|
@ -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
|
||||
|
|
|
@ -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
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
|
||||
|
|
70
src/common.c
70
src/common.c
|
@ -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
|
||||
|
|
240
src/config.c
240
src/config.c
|
@ -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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
17
src/config.h
17
src/config.h
|
@ -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();
|
||||
|
||||
|
|
87
src/cpu.c
87
src/cpu.c
|
@ -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;
|
||||
}
|
||||
|
|
112
src/distro.c
112
src/distro.c
|
@ -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();
|
||||
|
||||
|
|
64
src/gpu.c
64
src/gpu.c
|
@ -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;
|
||||
}
|
||||
|
|
172
src/host.c
172
src/host.c
|
@ -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
|
||||
|
|
2048
src/logo/linux.c
2048
src/logo/linux.c
ファイル差分が大きすぎるため省略します
差分を読み込み
|
@ -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
|
||||
|
|
125
src/logo/sunos.c
125
src/logo/sunos.c
|
@ -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
|
||||
|
|
71
src/os.c
71
src/os.c
|
@ -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;
|
||||
|
|
104
src/resolution.c
104
src/resolution.c
|
@ -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");
|
||||
}
|
||||
|
|
読み込み中…
新しいイシューから参照