Compare commits

...

2812 Commits

Author SHA1 Message Date
Carter Li 74616c79f5 Merge pull request #1050 from fastfetch-cli/dev
Release: v2.17.0
2024-06-28 11:31:00 +08:00
Carter Li 0c1462898b TerminalShell / TerminalFont: fix CodeQL warnings 2024-06-28 10:50:37 +08:00
Carter Li b94a322dfc Release: v2.17.0 2024-06-28 10:34:42 +08:00
Carter Li adb6dc537c Doc: update readme & changelog 2024-06-28 10:33:18 +08:00
Carter Li debcc3ca7f Logo (Image): improve performance when image is cached 2024-06-28 10:28:43 +08:00
Carter Li 3d7d02b5c5 Logo (Image): support --logo-position right 2024-06-28 10:28:43 +08:00
Carter Li 3f0ae13505 JsonConfig: clarify the breaking change 2024-06-28 10:28:43 +08:00
李通洲 4370c0944b Format: trim white spaces after truncation 2024-06-27 23:20:31 +08:00
李通洲 a9df048d49 Logo (Image): support --logo-position right for iterm and kitty-direct 2024-06-27 20:49:56 +08:00
Carlos Eduardo 09782d67e5 QT: add qt[56]ct support 2024-06-27 17:55:48 +08:00
Carlos Eduardo 165aa93fd3 QT: import kvantum theme name 2024-06-27 17:55:48 +08:00
李通洲 d979f55c8e Modules: fix custom key not working if the key is formatted outside
Fix #1049
2024-06-27 17:51:57 +08:00
李通洲 4f261509a0 Logo (Builtin): support --logo-position right
Fix #1034
2024-06-27 17:51:16 +08:00
李通洲 6413656cea Logo: rename --logo-separate to --logo-position 2024-06-27 13:49:35 +08:00
Jack Nolddor a334b805fd CMake: Use Coordinated Universal Time rather than timezone-varying local date (#1046) 2024-06-26 21:08:47 +08:00
李通洲 f940ef0592 Doc: fix typo [ci skip] 2024-06-26 21:07:39 +08:00
Jack Nolddor 963b5c6c4e Doc: Make format description more clear at json_schema.json (#1045) [ci skip] 2024-06-26 20:17:09 +08:00
李通洲 4a74f69c96 Doc: clearify that we don't support truncate multi-byte chars [ci skip] 2024-06-26 16:24:06 +08:00
李通洲 18d36c5054 Format: support argument truncation
Fix #1043
2024-06-26 16:15:26 +08:00
李通洲 a4614ec412 IO (Windows): implement ffSuppressIO 2024-06-26 13:50:42 +08:00
李通洲 e257f876ae TerminalSize (Windows): make it work when stdin or stdout is redirected 2024-06-26 10:51:44 +08:00
李通洲 e9031171c0 Doc: update changelog [ci skip] 2024-06-26 10:14:03 +08:00
李通洲 47a9cf0450 IO: enable terminal query in --pipe mode 2024-06-26 10:01:36 +08:00
李通洲 1704dc62e0 Doc: add debian in README [ci skip] 2024-06-25 18:15:14 +08:00
李通洲 abf6c403d4 Fastfetch: add JSON config general.preRun 2024-06-25 16:15:35 +08:00
李通洲 0606cde061 TerminalFont (Linux): fix XTGETTCAP response is printed in console when query kitty term font 2024-06-25 16:10:54 +08:00
李通洲 0bc9149a23 IO: improve ffGetTerminalResponse 2024-06-25 16:09:19 +08:00
李通洲 071be4794f Builtin (Asahi): fix logo color 2024-06-25 10:03:19 +08:00
李通洲 b5e199d2b2 IO (Linux): make sure stdin and stdout are tty when querying terminal 2024-06-25 09:43:31 +08:00
李通洲 a210128592 OS (macOS): correctly set pretty name 2024-06-25 08:41:44 +08:00
李通洲 63a28cc8f4 CI (Windows): bundle amd_ags dlls 2024-06-24 16:57:10 +08:00
李通洲 a6c006221d GPU (AMD): fix use-after-free crashes
Ref: https://github.com/fastfetch-cli/fastfetch/issues/1032
2024-06-23 09:14:00 +08:00
李通洲 42b84161d9 GPU (Windows): don't assume revId is not 0 2024-06-23 08:57:06 +08:00
李通洲 88e075ad9d CMake: remove option ENABLE_PROPRIETARY_GPU_DRIVER_API 2024-06-22 22:03:28 +08:00
李通洲 e37ad26729 GPU (Nvidia): fix definition of nvmlMemory_v2 2024-06-22 21:52:20 +08:00
李通洲 b500e9c09b Terminal: add fast path of version and font detection for kitty
Ref: https://github.com/fastfetch-cli/fastfetch/discussions/1030#discussioncomment-9845233
2024-06-22 15:43:25 +08:00
李通洲 77fbfd3fbd GPU (Windows): detect GPU type with AMD driver
Ref: #1032
2024-06-22 08:10:52 +08:00
Carter Li 63cdc47d18 GPU (SunOS): fix detection 2024-06-21 23:29:08 +08:00
Carter Li edf24d9820 CPUCache: add detection by SMBIOS 2024-06-21 23:07:07 +08:00
李通洲 becd9b7f26 LM (Linux): fix invalid path
Fix #1031
2024-06-21 20:28:06 +08:00
李通洲 672604081a Doc: update json_schema [ci skip] 2024-06-21 10:49:29 +08:00
李通洲 3185969974 CMake (Windows): install libffwinrt.dll 2024-06-21 09:43:18 +08:00
李通洲 ddbafd1cca OpenCL: use the newest supported OpenCL version 2024-06-21 09:18:08 +08:00
李通洲 16d70eed03 GPU: report deviceId in JSON output 2024-06-21 08:57:08 +08:00
李通洲 bf15adf57a OpenCL (Linux): fix crashing on AlpineLinux 2024-06-21 08:45:21 +08:00
李通洲 dbd1f96353 OpenCL: don't use NULL as platform id 2024-06-20 19:44:08 +08:00
李通洲 8b3cff33da OpenCL: use strong typing 2024-06-20 15:54:08 +08:00
李通洲 146c9b2bc6 OpenCL: fix building when OpenCL is disabled 2024-06-20 15:34:09 +08:00
李通洲 3c7cb339e2 OpenCL: fix building on non-apple platforms 2024-06-20 15:14:52 +08:00
李通洲 6318668d0b GPU: support detect gpu devices with OpenCL 2024-06-20 15:14:52 +08:00
李通洲 6737896038 CMake: enable OpenCL detection on Android
doesn't work on my smartphone
2024-06-20 15:14:52 +08:00
李通洲 96fc1db85e OpenCL: detect GPU info 2024-06-20 15:14:52 +08:00
李通洲 03e6b47eda CMake: remove unused dependencies 2024-06-20 15:14:52 +08:00
李通洲 067396d3a0 CI (Windows): add missing opencl headers 2024-06-20 15:14:52 +08:00
Robin Candau a8c3979696 Add the missing '--users-myself-only' option in bash completions (#1027)
undefined
2024-06-19 15:35:40 +08:00
Carter Li 786b23ef52 Packaging: update debian stuff [ci skip] 2024-06-19 14:55:57 +08:00
Carter Li ca6e889a63 Merge pull request #1026 from fastfetch-cli/dev
Release: v2.16.0
2024-06-19 14:38:23 +08:00
李通洲 439ed07660 Doc: update readme; fix typo [ci skip] 2024-06-19 14:35:51 +08:00
李通洲 d435ef6a77 Release: v2.16.0 2024-06-19 14:07:12 +08:00
李通洲 e7e5e89207 Presets: add Inspired by [ci skip] 2024-06-19 13:54:39 +08:00
李通洲 eb1f378a6e Presets: add a new example 2024-06-19 13:48:53 +08:00
Carter Li e2ce06dda2 Doc: update changelog [ci skip] 2024-06-19 13:24:49 +08:00
Carter Li e9bc312b38 LocalIP: support MTU in localip-format 2024-06-19 10:58:05 +08:00
Carter Li 9351c48d57 OS (Windows): set idLike to Windows 2024-06-19 10:14:38 +08:00
Carter Li 07b3cf325b Logo (Builtin): update arch3 2024-06-19 09:59:26 +08:00
Princess-Sunset-Shimmer 616c99a05d Logo: Create arch3.txt (#1022)
the third /\rch logo
2024-06-19 09:55:51 +08:00
Carter Li e554ff6e4f SunOS: remove unused files [ci skip] 2024-06-19 09:55:10 +08:00
李通洲 f013a60cf5 CI: add SunOS 2024-06-18 23:00:06 +08:00
李通洲 bb1586e9a2 CMake (SunOS): enable more things 2024-06-18 22:10:22 +08:00
李通洲 edba2492e1 OS (SunOS): don't parse unstructured text 2024-06-18 22:06:40 +08:00
李通洲 57b3c3951e CPU (SunOS): remove trailing \0 2024-06-18 22:06:40 +08:00
李通洲 cd2a6e0906 GPU (SunOS): parse scanpci -v, which doesn't require root permission 2024-06-18 21:52:25 +08:00
Carter Li c180ddab28 SunOS: improve WM detection 2024-06-18 10:51:26 +08:00
Carter Li 77ab00a4f4 SunOS: support NetIO detection 2024-06-18 10:18:12 +08:00
李通洲 4e5c93315a OpenGL: print used ogl library 2024-06-17 23:55:32 +08:00
Carter Li 935bea962f SunOS: support DiskIO 2024-06-17 23:41:53 +08:00
Carter Li 1b29f5b3a5 SunOS: support CPUUsage detection 2024-06-17 22:51:40 +08:00
Carter Li d296e53213 CPUUsage (BSD): fix totalAll calculation 2024-06-17 22:51:02 +08:00
Carter Li 5926c259ed SunOS: support MTU & MAC addr detection 2024-06-17 22:29:18 +08:00
Carter Li 2a19067ce7 SunOS: detect default route, so that LocalIP module works 2024-06-17 21:30:56 +08:00
Carter Li 06aaf0f3fd SunOS: support disk detection; fix a small bug 2024-06-17 19:32:54 +08:00
Carter Li 1d6a48e49a SunOS: support swap & opengl detection 2024-06-17 16:43:52 +08:00
Carter Li 72d332772d SunOS: support memory usage detection 2024-06-17 15:52:45 +08:00
Carter Li 255c6a09ac CPU (SunOS): optimise ncpu detection 2024-06-17 15:49:59 +08:00
Carter Li 74a364e3f2 SunOS: support loadavg detection 2024-06-17 15:23:35 +08:00
Carter Li 76b8446d15 InitSystem (SunOS): fix crashes 2024-06-17 15:18:02 +08:00
Carter Li 94fb7eabfd SunOS: enable a lot of features 2024-06-17 15:13:26 +08:00
Carter Li 6473db86a3 SunOS: support shell & terminal detection 2024-06-17 14:47:47 +08:00
Carter Li 804c61b7c1 Platform (Linux): fix invalid call to realpath(3) 2024-06-17 14:47:47 +08:00
Carter Li 898bf1edd9 SunOS: support InitSystem 2024-06-17 14:47:47 +08:00
Carter Li 507caa7b49 Editor: detect version of pluma 2024-06-17 14:47:47 +08:00
Carter Li d05b6a25c3 SunOS: support GPU detection 2024-06-17 14:47:47 +08:00
李通洲 a11f99cce5 Android: fix build 2024-06-17 01:20:04 +08:00
Carter Li 1841e1a99d SunOS: support CPU & packages detection 2024-06-17 01:01:21 +08:00
Carter Li d727547b1c SunOS: make SMBIOS related modules work 2024-06-16 22:25:16 +08:00
Carter Li d35490aeef Fastfetch: make it compile on SunOS 2024-06-16 01:02:48 +08:00
李通洲 5539fecb99 LocalIP: detect MTU 2024-06-14 18:23:04 +08:00
Антон cff2a18466 Logo: Added logos (standard and small) for RedOS (#1015)
* Add logo files

* Add RedOS logos to `builtin.c`
2024-06-13 19:31:58 +08:00
Gabry 8a923835ad Logo: Add support for Manjaro ARM to logo detection (#1013) 2024-06-13 19:20:41 +08:00
李通洲 2bd507c890 Presets: add a new example [ci skip]
Ref: https://www.reddit.com/r/fastfetch/comments/1dditqj/how_can_i_config_fastfetch_like_this/
2024-06-12 22:46:11 +08:00
李通洲 19690656a2 Presets: update examples/20 2024-06-12 21:26:04 +08:00
李通洲 36dc3c7263 Loadavg: add option --loadavg-compact and --loadavg-percent-<color> 2024-06-12 21:26:04 +08:00
李通洲 b38eb705f9 Users: add config gen for myselfOnly 2024-06-12 20:48:41 +08:00
李通洲 0a899e1e80 DNS: add option --dns-show-type 2024-06-12 20:48:41 +08:00
李通洲 218c553841 Presets: dont show empty mac addrs 2024-06-12 17:22:44 +08:00
李通洲 e284fee4aa Presets: print DNS info in examples/20; optimise 2024-06-12 16:41:47 +08:00
李通洲 124823e643 DNS: print IPv4 first 2024-06-12 16:39:09 +08:00
李通洲 dafc4ed3fb DNS (Windows): add support
Currently reports IPv4 addrs only
2024-06-12 16:33:13 +08:00
李通洲 1c05e65bc0 DNS (Linux): parse /etc/resolv.conf directly 2024-06-12 15:52:09 +08:00
Carter Li e0910777af DNS: add new module 2024-06-12 15:52:09 +08:00
李通洲 df0fb93542 Media (macOS): optimise 2024-06-12 15:52:09 +08:00
李通洲 30135570c7 OS (macOS): add code name of Sequoia 2024-06-12 15:52:09 +08:00
Carter Li 20cef09c73 Presets: add a new example 2024-06-12 15:52:09 +08:00
Carter Li 5bb4dabaec Users: add new option --users-myself-only 2024-06-12 15:52:09 +08:00
Carter Li ebfcd7195e Fastfetch: fix display.bar.border{Left,Right} doesn't work in JSON config 2024-06-12 13:40:06 +08:00
李通洲 671f5e2cec Media (Windows): fix compiling for GCC 2024-06-11 19:48:25 +08:00
李通洲 cf4ed9d9dc Media (Windows): finalize Windows support 2024-06-11 16:41:57 +08:00
李通洲 c4751eb834 Media (Windows): build winrt stuff statically 2024-06-11 15:46:30 +08:00
李通洲 ff3ddc774e Media (Windows): detect with external DLL
For backup only
2024-06-11 15:24:33 +08:00
李通洲 9104db0d21 Builtin (Logo): add tuxdeo
Fix #1000
2024-06-09 11:42:44 +08:00
李通洲 7eb86b4e95 OS (Linux): don't priortitize lsb-release over os-release 2024-06-09 11:33:42 +08:00
李通洲 06fa6033f0 Sound (Linux): trim white spaces in device name
Fix #1005
2024-06-08 18:45:34 +08:00
李通洲 f058d70d89 Logo (Mauna): add new logo 2024-06-08 09:15:45 +08:00
李通洲 58f7d6fed4 CPUCache (Linux): report error if cache size is unavailable (Android) 2024-06-07 20:43:26 +08:00
李通洲 95f8eccebb CPUCache: silence warnings 2024-06-07 19:28:35 +08:00
李通洲 e1245fe2e5 CI: add riscv64 build 2024-06-07 15:56:36 +08:00
李通洲 4332b09c8c Presets: add one more example [ci skip]
Ref: https://github.com/fastfetch-cli/fastfetch/issues/728#issuecomment-2154162576
2024-06-07 15:07:22 +08:00
Carter Li 13b488a33c Packaging: update debian stuff [ci skip] 2024-06-07 13:55:00 +08:00
Carter Li 80fb41a5c8 Merge pull request #1001 from fastfetch-cli/dev
Release: v2.15.0
2024-06-07 03:42:06 +00:00
李通洲 8371153e79 CPUCache: silence CodeQL warnings 2024-06-07 11:18:03 +08:00
李通洲 df0608c774 SMBIOS: ignore more trashes 2024-06-07 11:06:47 +08:00
李通洲 9a6961a706 Release: v2.15.0 2024-06-07 10:43:04 +08:00
李通洲 dbe0c84c48 OS (Linux): don't display duplicate entries 2024-06-07 10:37:33 +08:00
Carter Li 91724c0170 OS (Linux): fix kubuntu detection
Ref: #1000
2024-06-07 10:18:31 +08:00
Carter Li 5df5bbf85b Global: better handling locales 2024-06-07 10:00:30 +08:00
Carter Li 896468195a Doc: update changelog 2024-06-07 09:08:31 +08:00
Carter Li b324e4f664 Global: only enable locale if necessary
Fix  #995
2024-06-07 08:59:58 +08:00
李通洲 550eeb850c Doc: update changelog [ci skip] 2024-06-06 20:24:59 +08:00
李通洲 43cb5f3d0c Presets: update examples [ci skip] 2024-06-06 20:22:46 +08:00
Dariqq 999f52b0b7 Packages (Linux): Improve speed of Guix package detection. (#999)
Instead of waiting for guix to parse the manifest file of a profile
parse it directly by counting "/gnu/store" entries and fitlering out duplicates.

The new implementation now also accounts for propagated-inputs of packages.

Co-authored-by: Carter Li <zhangsongcui3371@sina.com>
2024-06-06 10:06:56 +00:00
李通洲 eae73883db DE (Linux): correctly capitalize GNOME
Fix #997
2024-06-06 16:43:55 +08:00
Skye Chappelle 92ffaf77de Doc: update bug_report.md (#998)
A bunch of pedantic, silly changes to the bug report template.
2024-06-06 16:39:20 +08:00
李通洲 10f5fa1e7d Percentage: add --bar-border-{left|right}; remove --bar-border 2024-06-06 16:36:57 +08:00
李通洲 3f4c03b172 Presets: update 9.jsonc to show percent bars 2024-06-06 16:12:21 +08:00
李通洲 ce2280ae54 Presets: add more examples 2024-06-06 16:03:00 +08:00
李通洲 25cdd9969f Color: support {#keys} and {#title} in --<module>-format 2024-06-06 15:17:10 +08:00
李通洲 bf17854535 Presets: more examples 2024-06-06 11:00:47 +08:00
李通洲 8440142d75 InitSystem: fix memory leaks 2024-06-06 09:25:02 +08:00
李通洲 2e865ad511 Doc: update changelog 2024-06-05 19:22:27 +08:00
李通洲 51953e4818 Doc: update cpucache and initsystem 2024-06-05 19:15:25 +08:00
李通洲 10fd7d61ae CPUCache: support format output
Fix #992
2024-06-05 18:55:08 +08:00
李通洲 a4c7278f36 wip 2024-06-05 16:18:54 +08:00
李通洲 93792822c0 Shell: fix fastfetch is detected as shell when abused
Fix #994
2024-06-05 16:11:52 +08:00
李通洲 b308ded1e1 Global (Linux): silence some compiler warnings 2024-06-05 16:11:52 +08:00
Carter Li f2ff20d69c CPUCache (Linux): detect cache line size 2024-06-05 16:11:52 +08:00
李通洲 e8ddd33614 CPUCache (macOS): detect cache line size 2024-06-05 16:11:52 +08:00
李通洲 1e5a6b2eef CPUCache (FreeBSD): fix build 2024-06-05 15:45:26 +08:00
李通洲 84c2564c54 CPUCache (Windows): detect cache line size 2024-06-05 15:44:36 +08:00
李通洲 00f7334a3a CPUCache (macOS): add support 2024-06-05 14:35:25 +08:00
Carter Li df9144ea31 CpuCache: move to a new module; add linux impl 2024-06-05 14:35:25 +08:00
李通洲 f1eaeddfe1 CPU (Windows): detect CPU caches 2024-06-04 23:56:00 +08:00
李通洲 2c537c836c Colors: normalize bright colors
Fix #991
2024-06-04 16:42:58 +08:00
李通洲 cc1359b1c8 3rdparty (igcl): write our implementation 2024-06-04 16:32:50 +08:00
李通洲 d25470e312 3rdparty (mk_wcwidch): clarify it's MIT compatible 2024-06-04 16:32:35 +08:00
李通洲 899f176f21 Logo: fix while chars not visible in terminal of light theme 2024-06-04 14:23:30 +08:00
李通洲 2557b0033d Logo: use -l '?' to show a question mark as logo 2024-06-04 10:18:07 +08:00
李通洲 add3047d1a Presets: add examples/14 2024-06-03 16:37:47 +08:00
李通洲 5cc4379bdf Presets: add screenfetch 2024-06-03 16:35:22 +08:00
李通洲 5290dd0187 Global: fix building 2024-06-03 14:54:55 +08:00
李通洲 69181c063e Doc: update document of --format json 2024-06-03 14:49:31 +08:00
李通洲 0b75caaf96 Chore: strcasecmp => ffStrEqualsIgnCase 2024-06-03 14:17:01 +08:00
李通洲 d860ce528a Logo: code clean up 2024-06-03 14:15:45 +08:00
Carter Li 678e9471e5 Icons: make it possible to shorten the icons name 2024-06-03 11:05:01 +08:00
Carter Li 4328508e21 Theme: make it possible to shorten the theme name
Fix #724
2024-06-03 10:48:50 +08:00
Carter Li 96c70ffc8a Doc: document --format json 2024-06-03 08:42:28 +08:00
李通洲 6d71d3037f WM (macOS): assume wm plugins are daemon process
For reducing mis-detection
2024-05-31 14:54:43 +08:00
Maytham ba15324849 Remove shebangs from completions (#980)
Shebangs are only used for scripts that are intended to be executed, but
completions are meant to be sourced by the shell, and so shebangs are
not required.

I've also renamed the completions so that editors can continue to detect
the correct file format.
2024-05-30 21:37:05 +08:00
Maytham 231c277555 Add ability to skip installing license with INSTALL_LICENSE option (#981)
This is useful for Debian, where the package already includes copyright
information and therefore installing the license into
/usr/share/licenses is not needed.

Upstream support for an option to disable installing the license is much
better than patching it on the packaging side (which needs to be
continuously updated).
2024-05-30 21:36:57 +08:00
Carter Li c3e5222bcd Merge pull request #978 from fastfetch-cli/dev
Release: v2.14.0
2024-05-30 02:54:50 +00:00
李通洲 c0c76292cb Release: v2.14.0 2024-05-30 10:20:22 +08:00
李通洲 49840a8f70 Vulkan: print reason on error
Ref: #976
2024-05-30 10:13:19 +08:00
李通洲 44257b7ede Shell: don't try to get arg1 if python was executed without extra args 2024-05-30 09:58:06 +08:00
李通洲 d7e9094297 Shell (macOS): better xonsh detection
Fix #977
2024-05-30 09:31:25 +08:00
李通洲 1863bde916 InitSystem: better systemd version detection 2024-05-30 08:45:14 +08:00
李通洲 7c1b6c6a10 CI: test initsystem 2024-05-29 19:13:04 +08:00
李通洲 7e8b204644 InitSystem: resolve real path of exe path 2024-05-29 19:12:43 +08:00
李通洲 e8dc500f24 Processing (Linux): return errors more actively
fix assertion errors
2024-05-29 16:24:18 +08:00
李通洲 bb11cff700 InitSystem: detect version 2024-05-29 14:36:28 +08:00
李通洲 90690ba315 InitSystem: add new module
Fix #974
2024-05-29 11:14:39 +08:00
李通洲 3811bb1be4 TerminalShell: move process info query logic into common place 2024-05-28 23:43:15 +08:00
李通洲 1f3d18cdbc Doc: document --color-separator 2024-05-28 19:13:01 +08:00
李通洲 3ae2047364 Doc: update changelog 2024-05-28 19:12:08 +08:00
Carter Li 66ba5d0a5f Doc: document named placeholders 2024-05-28 16:34:11 +08:00
Carter Li 983e5c680f Display: add option --color-separator 2024-05-28 16:13:06 +08:00
Carter Li 745865d66a Presets: convert hard coded ANSI escape code to formatting placeholders 2024-05-28 16:10:24 +08:00
Carter Li 8bdca1b1a8 Formatting: small optimizations 2024-05-28 15:38:45 +08:00
Carter Li 5172a13b15 Global: fix outputColor doesn't work if module keys are disabled 2024-05-28 15:37:00 +08:00
Carter Li 3ba899261f Util: add ffCharIsDigit and use it 2024-05-28 15:34:59 +08:00
Carter Li 5fa18a8a1c Custom: detect & convert color placeholders ({#xxx}) 2024-05-28 14:23:19 +08:00
Carter Li 81e0af8999 Format: support named color placeholders 2024-05-28 14:03:51 +08:00
Carter Li a14a73b259 Doc: update changelog 2024-05-28 10:25:41 +08:00
Carter Li c8451cab52 Global: support for named format arguments
Fix #796
2024-05-28 10:23:29 +08:00
Dariqq 965777323e Packages (Linux): Add Guix package manager. (#972)
- Add 3 new count results: guixHome, guixSystem and guixUser.
- Add initial detection logic based on neofetch.
- Add a guixAll variable as sum of all guix results.
- Add options to disable guix detection.
2024-05-28 08:50:18 +08:00
Carter Li ad709c4153 README: update screenshot [ci skip] 2024-05-27 10:25:37 +08:00
李通洲 0869bfaeed Doc: update changelog [ci skip] 2024-05-27 09:40:58 +08:00
李通洲 dee208f3e3 Chore: remove unnecessary files [ci skip] 2024-05-27 08:49:47 +08:00
李通洲 7e1c426e34 README: add more installation methods [ci skip] 2024-05-26 10:16:32 +08:00
Carter Li 0ae2d389da CMake: we support FreeBSD only, not OpenBSD nor NetBSD 2024-05-26 10:16:32 +08:00
Anonyzard 20b433f40a Logo: Cereus Linux (#968)
* Logo: Add Cereus Linux

* Update cereus.txt

---------

Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
2024-05-26 09:39:44 +08:00
李通洲 152f5d3fa6 Revert "OS (Linux): remove special handling of Loc-OS"
This reverts commit 5ec272acff.
2024-05-26 09:38:35 +08:00
李通洲 b030bd6751 README: add example of FIGlet text logo [ci skip] 2024-05-25 15:22:28 +08:00
李通洲 e0d5a9024a Logo (File / Data): apply default color palettes 2024-05-25 14:36:20 +08:00
李通洲 f83a31e0a6 Presets: update examples/7.jsonc to fix archlinux compatibility 2024-05-25 09:54:42 +08:00
李通洲 099e2b5f8f Editor (Windows): support editor version detection 2024-05-24 23:50:19 +08:00
lucsansag 374997b599 Board: fix typo (#965) 2024-05-24 19:50:26 +08:00
李通洲 f938f5e03b CMake: remove useless code 2024-05-24 16:44:15 +08:00
李通洲 d7098e728d CMake: set link library dirs 2024-05-24 15:48:18 +08:00
Carter Li 5302a82444 Fastfetch: disable dlsym function call if dlopen is disabled 2024-05-24 15:30:35 +08:00
Carter Li 64a3573c49 Packaging: update debian stuff 2024-05-24 14:44:15 +08:00
Carter Li 3d48de8c98 CMake: be able to build as a dynamic linked binary 2024-05-24 14:40:14 +08:00
李通洲 4b33e1b691 Terminal (Windows): don't try to detect terminals in MSYS shell
May fix CI hanging
2024-05-24 11:07:52 +08:00
李通洲 6326405c26 Percentage: support monochrome bar type
Fix #961
2024-05-24 10:19:58 +08:00
李通洲 b25e8c2721 Fastfetch: list available presets in exe path
For better winget support
2024-05-24 09:18:48 +08:00
李通洲 81318f45bb Fastfetch: don't detect .conf in --list-config-paths 2024-05-24 09:09:12 +08:00
Carter Li 2f6cabb839 Library: prepare for static linking 2024-05-23 16:35:16 +08:00
李通洲 4fd65ad0b8 CI: try fixing musl build 2024-05-23 13:31:53 +08:00
李通洲 6ecb383a6a Editor: remove unused functions 2024-05-23 09:00:16 +08:00
Carter Li 1b3977fc47 Merge pull request #958 from fastfetch-cli/dev
Release v2.13.2
2024-05-22 12:12:15 +00:00
李通洲 f00969cb81 Editor: fix path detection not working on Android 2024-05-22 18:38:25 +08:00
李通洲 b3e79477a6 EDITOR: always print exe in JSON results 2024-05-22 16:40:37 +08:00
李通洲 82c7f27ae7 Release: v2.13.2 2024-05-22 16:32:35 +08:00
李通洲 624a4956fc CI: test more functions 2024-05-22 16:32:35 +08:00
李通洲 30a5dd52b1 Editor: add new module
Fix #430
2024-05-22 16:32:27 +08:00
李通洲 92136370bb CI: add bootmgr 2024-05-22 16:09:09 +08:00
李通洲 d196b8079e GPU (Linux): don't query DRM drivers for driver version
Fix #956
2024-05-22 13:37:50 +08:00
李通洲 a3dbac7dfc Completion (Fish): fix compatibility for old python versions 2024-05-22 10:34:07 +08:00
李通洲 59c853fb01 GPU: write & use our own simplified nvml header 2024-05-21 22:31:36 +08:00
李通洲 5ec272acff OS (Linux): remove special handling of Loc-OS
Unless a proper reason is provided
2024-05-21 18:53:31 +08:00
CuerdOS c72fdab301 Logo (Builtin): Added CuerdOS support (#954)
* Added CuerdOS support

* Update os_linux.c

* Update os_linux.c

---------

Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
2024-05-21 18:51:48 +08:00
李通洲 183f12d8b5 Presets: fix bad nerd icons 2024-05-21 15:47:37 +08:00
Carter Li 395810cd79 DisplayServer (Wayland): don't display eDP-1-unknown 2024-05-21 14:25:09 +08:00
Carter Li 36cf5856b5 Merge pull request #952 from fastfetch-cli/dev
Release: v2.13.1
2024-05-21 01:42:10 +00:00
李通洲 01d1336cf0 CPU (FreeBSD): remove unused variables 2024-05-21 09:28:21 +08:00
李通洲 28f2e9ea96 Release: v2.13.1 2024-05-21 09:24:53 +08:00
Carter Li 2d4e7f10c4 CPU: add option --show-pe-core-count 2024-05-21 09:21:03 +08:00
Carter Li aa1a5b8c36 CPU: fix CPU frequency not displayed if bios_limit doesn't exist
Regression of 264b6794f3
2024-05-21 08:44:49 +08:00
Carter Li 43bdb68cbf Merge pull request #949 from fastfetch-cli/dev
Release: v2.13.0
2024-05-20 13:28:45 +00:00
李通洲 8b43e331e3 GPU (Linux): silence compiler warnings 2024-05-20 21:07:28 +08:00
李通洲 302716fa61 GPU: silence compiler warnings 2024-05-20 20:43:24 +08:00
李通洲 188b6aba10 Release: v2.13.0 2024-05-20 20:40:25 +08:00
李通洲 7af9cab688 CI: try fixing Win32 build 2024-05-20 19:37:14 +08:00
李通洲 714b88c638 Packages (Linux): try fixing nix-user detection
Fix #937
2024-05-20 19:14:32 +08:00
李通洲 d9f1db10aa Completions (Fish): disable enum value suggestion 2024-05-20 19:05:38 +08:00
李通洲 bb10e1c9a3 Doc: update help message of --gpu-detection-method 2024-05-20 19:04:57 +08:00
李通洲 264b6794f3 CPU (Linux): detect bios limited frequency and print it by default
To match neofetch's behavior

Fix #947
2024-05-20 18:35:10 +08:00
Carter Li a8b734c877 GPU: change option --gpu-force-vulkan to --gpu-detection-method 2024-05-20 16:46:04 +08:00
Carter Li 10ca77610e GPU (Linux): detect GPU core count and freq for asahi linux 2024-05-20 15:32:13 +08:00
Carter Li c2eaea3665 Logo (Builtin): fix KDE neon
Fix #948
2024-05-20 15:31:18 +08:00
Carter Li 1619f0ab6c GPU (Linux): fix memory leaks 2024-05-20 11:00:51 +08:00
李通洲 aba211221b Doc: update README [ci skip] 2024-05-19 23:07:10 +08:00
李通洲 81485baadb CPU: better compatibility for Intel CPUs 2024-05-19 22:18:07 +08:00
李通洲 1b4fc38330 GPU (Linux): detect drm driver version 2024-05-19 22:18:06 +08:00
李通洲 3571d9277d CPU (Linux): take --cpu-freq-ndigits into account in --cpu-format 2024-05-19 22:18:06 +08:00
李通洲 e9b535d277 GPU (Linux): improve perf 2024-05-19 22:18:06 +08:00
李通洲 09ffd32144 GPU (Linux): improve Intel GPU detection code 2024-05-19 22:18:06 +08:00
Sergey Fedorov 27aa5c0343 opencl.c: unbreak build on macOS with no OpenCL support (#940)
Fixes: https://github.com/fastfetch-cli/fastfetch/issues/939
2024-05-19 21:51:46 +08:00
Sergey Fedorov 1d95f9b224 CMakeLists: unbreak build with GCC on macOS (#941) 2024-05-19 21:46:34 +08:00
李通洲 4f1cb779ab OS (Linux): fix BUILD_ID not parsed 2024-05-19 11:12:38 +08:00
Shu Niu 758ddae344 macOS: Add support for old MacOS version (#936)
* Add support for old MacOS version,  fix-1.

* Add support for old MacOS version,  fix-2.

* Add support for old MacOS version with fixing metal gpu api.

* Update disk_bsd.c

* Update disk_bsd.c

* Update gpu_apple.m

* Update monitor_apple.m

* Update os_apple.m

* Update wifi_apple.m

* Update camera_apple.m

* Update camera_apple.m

---------

Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
2024-05-19 09:31:08 +08:00
李通洲 14969b31d0 CPU (Windows): fix silly mistake 2024-05-18 20:53:11 +08:00
李通洲 d88e2eeb36 CPU (macOS): fix compiling 2024-05-18 19:57:24 +08:00
李通洲 7946e69a66 CPU: print core count for different core types 2024-05-18 18:08:38 +08:00
Carter Li 15766f5266 Disk (BSD): dont set createTime if stat fails to detect it 2024-05-18 13:38:07 +08:00
Carter Li ed02845c40 OS (Linux): better code name detection 2024-05-18 13:11:22 +08:00
Carter Li 4ffa0ffcb7 Disk (FreeBSD): ensure createTime is inited 2024-05-18 13:09:37 +08:00
Carter Li c04c040713 Wifi (FreeBSD): fix bssid & status detection 2024-05-18 11:58:35 +08:00
Matheus Castello c763896b49 Logo (builtin): Fix TorizonCore logo colors (#934)
You can verify the colors of the logo from https://www.torizon.io/

Signed-off-by: Matheus Castello <matheus.castello@toradex.com>
2024-05-18 11:57:21 +08:00
李通洲 e9a44f71b2 Bootmgr (Android): fix compiling 2024-05-18 11:08:21 +08:00
李通洲 5078c8d910 Revert "GPU (Windows): try removing limitation"
This reverts commit eda9496479.
2024-05-18 10:39:51 +08:00
李通洲 f9e0efb7ee Smbios: improve SMBIOS data reading code 2024-05-18 10:35:17 +08:00
Carter Li 926390508e CPU (FreeBSD): fix core count detection 2024-05-18 16:43:33 +08:00
Carter Li 45446c1c1d Bootmgr (FreeBSD): silence compiler warnings 2024-05-18 16:41:30 +08:00
Carter Li b79c47cac9 CPU (BSD): fix max freq detection 2024-05-18 01:50:21 +08:00
Carter Li fd16e69464 CPU (macOS): fix core count detection 2024-05-18 01:46:56 +08:00
李通洲 92abf3e063 TerminalShell (Linux): ignore valgrind 2024-05-18 00:34:08 +08:00
Carter Li 90a242a4aa CPU (BSD): detect max / min frequency; detect core count of different core types 2024-05-18 00:34:08 +08:00
furretpaws 1118c57d8f Logo (Builtin): Added "Furreto Linux" support (#927)
* added furreto

* fixed

* fix i think

* Update furreto.txt

Remove left padding and empty lines. Replace `${cN}` with `$N`

* Update builtin.c

---------

Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
2024-05-18 00:28:34 +08:00
李通洲 eda9496479 GPU (Windows): try removing limitation 2024-05-17 21:42:11 +08:00
李通洲 0b94ff5adb CPU (Windows): detect core count of different core types 2024-05-17 21:31:24 +08:00
李通洲 62bf3ec021 Util (Windows): add nt.h and use it 2024-05-17 21:30:47 +08:00
李通洲 ab2268a927 CPU (macOS): detect core count for different core types 2024-05-17 16:47:26 +08:00
Carter Li 1421627a47 CPU (Linux): detect core count for different core types 2024-05-17 08:35:22 +00:00
李通洲 02e5232bda TerminalShell: ignore clifm
Ref: https://github.com/leo-arch/clifm/issues/289
2024-05-17 13:57:07 +08:00
李通洲 289d03cfb2 Kernel (Windows): detect old release code name for Windows 10 2024-05-17 10:34:04 +08:00
李通洲 965ab1abc4 Packages: don't break existing config 2024-05-17 09:28:17 +08:00
Anonyzard 06b2ff9a08 Add Loc-OS Linux support (#926)
* Logo (Builtin): add Loc-OS

* Packages (Linux): add lpkg and lpkgbuild detection
2024-05-17 09:19:26 +08:00
李通洲 b4a6606faf Doc: update FAQ [ci skip] 2024-05-16 23:47:25 +08:00
李通洲 def758580f Doc: update FAQ [ci skip] 2024-05-16 23:34:40 +08:00
李通洲 5ea2b2ecc9 Doc: update FAQ [ci skip] 2024-05-16 23:26:07 +08:00
李通洲 b3886c6c47 Doc: update FAQ section [ci skip] 2024-05-16 21:58:43 +08:00
李通洲 bc76220a5b Doc: update JSON schema [ci skip] 2024-05-16 18:48:27 +08:00
李通洲 60fa7946f5 Logo (Builtin): fix build 2024-05-16 18:30:40 +08:00
SpoinkOSDevs b6a703bd56 Logo (builtin): Add SpoinkOS Logo [FIXED!] (#925)
* Update builtin.c

* Create spoinkos.txt

* Fix coding style

* Remove left padding

---------

Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
2024-05-16 16:44:01 +08:00
李通洲 462c3b0e06 Bios / Bootmgr: update descriptions 2024-05-16 16:37:57 +08:00
李通洲 72138dbde5 Bootmgr (macOS): add support 2024-05-16 16:27:37 +08:00
李通洲 b2ea5d8f3e Bootmgr: reuse shared code 2024-05-16 13:24:34 +08:00
Carter Li 49080c5361 Bootmgr (FreeBSD): add support
Requires root permission
2024-05-16 11:01:11 +08:00
李通洲 445dd94b53 Bootmgr: add new module 2024-05-15 21:49:15 +08:00
李通洲 7c03fc1550 Bios: move bootmgr detection to a new module 2024-05-15 21:40:18 +08:00
李通洲 06a8f12d6a Bios (Windows): detect secure boot state & boot manager
Boot manager detection requires Administrator privilege to work
2024-05-15 20:39:22 +08:00
Carter Li 8c7edf4d2d Bios (Linux): detect boot manager & secure boot 2024-05-15 19:00:26 +08:00
李通洲 85b4679373 Logo: fix Manjaro Linux
Fix #921
2024-05-14 22:04:37 +08:00
Carter Li 215029ea27 Merge pull request #919 from fastfetch-cli/dev
Release: v2.12.0
2024-05-14 15:53:45 +08:00
李通洲 533f54fb73 Doc: update changelog [ci skip] 2024-05-14 15:20:22 +08:00
李通洲 a6212c5b01 PhysicalMemory: add Ramaxel vendor id support 2024-05-14 14:11:12 +08:00
李通洲 ba76b18367 Fastfetch: remove support of flag based config 2024-05-14 14:08:54 +08:00
李通洲 4290efb49d Release: v2.12.0 2024-05-14 10:48:21 +08:00
李通洲 30b85fc169 JsonConfig: report row and column on JSON parsing errors 2024-05-14 10:47:20 +08:00
李通洲 dc94ac8d0c Doc: update json_schema 2024-05-14 10:25:29 +08:00
李通洲 1d9e612262 Presets: update [ci skip] 2024-05-14 09:11:27 +08:00
李通洲 be1791e386 LocalIP: add option --localip-show-all-ips 2024-05-13 23:33:06 +08:00
李通洲 3b8c2d6ee6 Logo (Builtin): add Quirinux 2024-05-13 22:27:35 +08:00
Null-Ping c661e55053 PhysicalMemory: Fix ram vendor names from ids. (#917)
Change 0x0198 from HyperX to Kingston to match https://www.jedec.org/standards-documents/docs/jep-106ab. (The standard does not contain an entry for HyperX at all).
Remove the ambiguous 0x1315 - according to the standard, it belongs to Tioga Technologies and not Crucial.
Rename Hynix to SK Hynix to match the standard.
2024-05-13 22:20:27 +08:00
李通洲 56403bab5c PhysicalMemory: try converting vendor ID to name 2024-05-13 20:29:46 +08:00
李通洲 caef317ade GPU: a tiny optimization 2024-05-13 19:33:31 +08:00
李通洲 131e01f35b Presets: add archey
Ref: https://github.com/HorlogeSkynet/archey4
2024-05-13 16:45:14 +08:00
李通洲 c8e3c6882a Kernel: print kernel name in default format 2024-05-13 16:41:00 +08:00
李通洲 c985bdbbfd Logo: add macOS3 2024-05-13 15:50:10 +08:00
李通洲 b80eb47ecd PhysicalMemory: better Linux compatibility 2024-05-13 15:08:27 +08:00
Carter Li 68942c1d3f PhysicalMemory (FreeBSD): fix EFAULT errors 2024-05-13 11:06:05 +08:00
李通洲 b36b74448f Doc: update changelog 2024-05-12 20:24:56 +08:00
李通洲 217bb6657e PhysicalMemory: fix output format 2024-05-12 20:17:57 +08:00
李通洲 df2862996b PhysicalMemory: detect ecc & bank locator 2024-05-12 19:55:04 +08:00
李通洲 df6ab6427e PhysicalMemory: improve default output format; detect part number 2024-05-12 19:15:03 +08:00
李通洲 82d848727c Logo (Builtin): fix alternate logo doesn't work with type builtin
Fix #914
2024-05-12 18:32:05 +08:00
李通洲 d0d6323b1f PhysicalMemory (FreeBSD): add support 2024-05-12 18:32:05 +08:00
李通洲 6439921f85 Smbios (Windows): check if getting SMBIOS data succeeds 2024-05-11 18:07:56 +08:00
李通洲 d28907ee9d PhysicalMemory (Linux): add support
Note: this module requires root permission to work in Linux
2024-05-11 18:05:30 +08:00
李通洲 41f0971570 PhysicalMemory: ignore trash values 2024-05-11 15:12:28 +08:00
李通洲 ab0bd79bb8 PhysicalMemory: add module to ci.jsonc and all.jsonc 2024-05-11 15:05:43 +08:00
李通洲 07747aa819 PhysicalMemory (macOS): add support 2024-05-11 15:05:43 +08:00
李通洲 68efcdd0dd PhysicalMemory: add new module 2024-05-11 15:05:43 +08:00
李通洲 fef3100fd7 Smbios: add struct layout check 2024-05-11 15:05:43 +08:00
Bernhard M. Wiedemann 08a940bfd4 Logo: Add the openSUSE Slowroll distribution (#913) 2024-05-11 15:03:13 +08:00
李通洲 d6a99c631e Image: support specifying --logo-width only for --kitty-direct and --iterm
Fix: #836

Ref: https://github.com/kovidgoyal/kitty/issues/7424
2024-05-10 14:30:00 +08:00
李通洲 3d4077c2d0 Config: support more color prefixes 2024-05-10 13:39:06 +08:00
djinnalexio ce6b595421 🔧 JsonConfig: add missing brightness properties 2024-05-10 11:13:47 +08:00
djinnalexio 7d8c085254 🔧 JsonConfig: add dim colors to validation 2024-05-10 11:13:47 +08:00
Souma ec0af17fb5 Terminal (macOS): fix compatibility with (*term) (#909)
Ignore <shell> (<char>term).
This is because Fig(<shell> (figterm)) migrated to CodeWhisperer(<shell> (cwterm)) and CodeWhisperer renamed to Q(<shell> (qterm)).
Future changes will all be ignored by this change.
Related: #676
2024-05-09 19:39:17 +08:00
李通洲 2accfbc894 Networking (Windows): fix compiling 2024-05-09 16:35:51 +08:00
李通洲 01d2fa1228 Doc: update changelog (ci skip) 2024-05-09 16:32:10 +08:00
李通洲 f16843d60f Doc: update changelog 2024-05-09 16:27:24 +08:00
李通洲 acc77ebddd PublicIP: add option --publicip-ipv6 2024-05-09 15:54:49 +08:00
李通洲 7eb145fb7f Presets: add loadavg to all.jsonc and ci.jsonc 2024-05-09 09:56:34 +08:00
Carter Li 34a6eb13c6 Loadavg (BSD): add missing headers 2024-05-09 09:51:41 +08:00
李通洲 0f5e746fe2 Loadavg: add option --loadavg-ndigits 2024-05-09 09:40:53 +08:00
李通洲 b62ad16aa6 Loadavg (BSD): use sysctl 2024-05-09 09:20:18 +08:00
李通洲 f79498e4b5 PublicIP / Weather: clarify error messages
Fix #907
2024-05-09 08:49:25 +08:00
李通洲 31c433b353 Display: rename --temperature-* to --temp-* as stated in help messages
Fix #908
2024-05-09 08:46:59 +08:00
李通洲 852c6abf2e Loadavg (Android): fix compiling 2024-05-08 21:54:13 +08:00
Quinten Van Damme df3fa6f8a8 Logo: Fix dahliaOS detection (#906) 2024-05-08 19:30:25 +08:00
李通洲 738daa1c77 Loadavg: new module 2024-05-08 18:34:34 +08:00
李通洲 4204cfc500 Doc: update help message for --module-output-color 2024-05-08 16:17:05 +08:00
李通洲 9cb08d115a Separator: add --separator-output-color 2024-05-08 16:11:16 +08:00
李通洲 459f159b1b Fastfetch: revert to module color after printing custom colors 2024-05-08 15:25:59 +08:00
李通洲 2880536513 Fastfetch: support --module-ouput-color (WIP) 2024-05-08 15:01:57 +08:00
李通洲 64cb1bfdfd Doc: remove duplicated entry 2024-05-08 14:33:00 +08:00
李通洲 b80c30ace3 Doc: default --hide-cursor to false 2024-05-08 11:06:38 +08:00
李通洲 19b8849bfc Fastfetch: remove the long deprecated flag --set & `-set-keyless 2024-05-08 11:06:03 +08:00
Carter Li 8f457f047c TerminalFont (Linux): searching for font config in st binary 2024-05-08 09:54:33 +08:00
Carter Li 299bc7468f Terminal (Linux): fix exePath detection 2024-05-08 09:54:33 +08:00
Carter Li c213b0769b Merge remote-tracking branch 'origin/master' into dev 2024-05-07 09:34:02 +08:00
AcatXIo 260c883d07 Presets: Update hardware.jsonc (#899)
Update hardware.jsonc preset, fix logo being forced to arch, add more hardware information.
2024-05-07 08:54:36 +08:00
Carter Li da0db042fa Merge pull request #897 from fastfetch-cli/dev
Release: 2.11.5
2024-05-07 00:41:44 +08:00
李通洲 ae5732e2a8 Release: v2.11.5 2024-05-07 00:38:08 +08:00
李通洲 1f05a33807 Logo (Builtin): temp fix for openmandriva logo detection
Fix #896
2024-05-07 00:19:07 +08:00
李通洲 f090951abc Doc: remove --os-file completely 2024-05-06 22:48:46 +08:00
Carter Li 855fd6edee Merge pull request #890 from fastfetch-cli/dev
Release v2.11.4
2024-05-06 20:06:58 +08:00
李通洲 d4bd4401a8 Release: v2.11.4 2024-05-06 19:45:45 +08:00
李通洲 689feb39a4 OS (Linux): don't detect debian version on debian derived distros 2024-05-06 18:42:19 +08:00
Carter Li 0f64e2830a OS (Linux): detect pve & armbian 2024-05-06 16:46:27 +08:00
Carter Li 3e24cdc752 CMake: add option CUSTOM_OS_RELEASE_PATH
And remove `--os-file`
2024-05-06 16:25:08 +08:00
李通洲 dc9c285a0b Doc: update README
Who cares how people install a package...

Close #883
2024-05-06 15:56:46 +08:00
李通洲 1d03c9c85e Logo (Builtin): add armbian
Fix #842
2024-05-06 15:22:43 +08:00
李通洲 4eae11df64 Presets: fix neofetch 2024-05-06 15:09:12 +08:00
李通洲 eba13d5485 JsonConfig: fix setting size.ndigits doesn't work
Silly copy & paste error
2024-05-06 15:08:58 +08:00
apocelipes 16b875ef5a Fastfetch: fix memory leaks when passing informative options
Informative options (e.g. "--help", "--list-module") make fastfetch
exit before calling ffDestroyInstance. Using "atexit" to avoid this
kind of leak.
2024-05-06 14:40:27 +08:00
李通洲 366138e1bd CI: try fixing Linux armv7 2024-05-06 14:08:29 +08:00
李通洲 7fe18a5b7c CI: build armv7 package using ubuntu22.04
Hopefully make it usable on RaspberryPi

Fix #884
2024-05-06 09:33:58 +08:00
李通洲 39cd8cfb4c Camera: fix deprecation warning for macOS 14.0 hopefully
Fix #860
2024-05-06 09:25:06 +08:00
李通洲 8b441c85e5 Logo (Builtin): update ubuntu 2024-05-05 23:31:23 +08:00
李通洲 f66e901c44 Presets: remove unsupported format placeholders 2024-05-05 22:12:33 +08:00
李通洲 3815823a20 CMake: enforce glibc version 2024-05-05 21:29:49 +08:00
李通洲 33ff4870dc Fastfetch: enable pipe mode if $NO_COLOR is set 2024-05-05 20:16:43 +08:00
李通洲 479731f076 Custom: don't print ANSI escape code in pipe mode 2024-05-05 20:14:24 +08:00
李通洲 d2f3f47457 Colors: print non-colored blocks in pipe mode 2024-05-05 20:14:24 +08:00
李通洲 5ea89ecba5 Fastfetch: print non-colored logo in pipe mode 2024-05-05 20:14:23 +08:00
Carter Li 865f57bd76 Revert "FFstrbuf: avoid redundant checks (#881)" (#882)
This reverts commit e98e2a3d52.
2024-05-05 18:46:22 +08:00
Nour1248 e98e2a3d52 FFstrbuf: avoid redundant checks (#881) 2024-05-05 18:40:59 +08:00
Carter Li 6bb748869e Terminal (macOS): fix Apple Terminal detection
Fix #878
2024-05-05 13:36:14 +08:00
李通洲 654721b8c5 Doc: remove (kind of) outdated information
Fix #867
2024-05-05 08:39:51 +08:00
Carter Li 0542eac1b9 Doc: metion ANSI 256 colors
Fix #869
2024-05-05 07:33:32 +08:00
apocelipes b9faf8d77f fastfetch: fix #868 (#871)
Fix #868.
2024-05-05 07:10:51 +08:00
Carter Li 61f848146a Merge pull request #862 from fastfetch-cli/dev
Release: v2.11.3
2024-05-04 20:47:54 +08:00
李通洲 4175dfdc3a Doc: update changelog (ci skip) 2024-05-04 20:27:26 +08:00
李通洲 861d9006d7 Release: v2.11.3 2024-05-04 20:11:30 +08:00
李通洲 7ba07bd2e0 Logo (Image): partially revert 71cba24
Images in SSH session and tmux do work for me

Fix #861
2024-05-04 19:43:41 +08:00
李通洲 9fee36a286 Logo (Image): ensure line ending is printed when printing errors 2024-05-04 19:14:45 +08:00
李通洲 2fc9230b29 Disk (Windows): use sub thread to check accessiblity of remote volumes. 2024-05-04 15:15:00 +08:00
李通洲 5fb1286e15 Battery (Windows): simplify code 2024-05-04 12:11:42 +08:00
李通洲 a4cace4765 CMake: add CUSTOM_AMDGPU_IDS_PATH 2024-05-04 10:06:49 +08:00
李通洲 c6d2467a83 Merge remote-tracking branch 'upstream/master' into dev 2024-05-04 10:06:40 +08:00
AxeldeWater db0d38202e Update README.md again for same reason different location (#857)
Oversaw a place where it wasn't updated either
2024-05-04 07:13:38 +08:00
AxeldeWater 9fbb23b135 Update README.md about installing fastfetch on Debian/Ubuntu (#856)
Apparently the file naming standard was changed over time but this was not updated in the README
2024-05-04 00:00:44 +08:00
李通洲 3a990e495b PhysicalDisk: fix temp output in custom formation
I hate `void *`
2024-05-03 20:48:51 +08:00
李通洲 648530ee8f PhysicalDisk: fix doubled output in custom formation
Fix #852
2024-05-03 20:42:39 +08:00
Carter Li b12a59cdaf Merge pull request #851 from fastfetch-cli/dev
Release: v2.11.2
2024-05-03 14:36:04 +08:00
李通洲 83c1fe26e6 Doc: update changelog 2024-05-03 14:14:13 +08:00
李通洲 217f98a36c Global: tidy json result formats 2024-05-03 13:56:19 +08:00
李通洲 1011e21ba8 Processing: trim \r on Windows 2024-05-03 13:46:28 +08:00
李通洲 08c6a6e4cb OS (macOS): don't print build id
Remove special handling
2024-05-03 13:20:23 +08:00
李通洲 5e9fcaf7ca OS (Linux): don't use rolling as os version 2024-05-03 13:09:14 +08:00
李通洲 8b838cef61 OS (Linux): fix name detection for MX
Fix #847
2024-05-03 12:57:51 +08:00
李通洲 22d9d8e196 OS (Linux): fix OS detection for MX Linux (2nd attempt)
Ref: #847
2024-05-03 11:28:59 +08:00
李通洲 a789b8330a Doc: update logo_request.md 2024-05-03 10:10:13 +08:00
李通洲 903ecf37f7 Chore: silience some warnings 2024-05-03 10:07:16 +08:00
李通洲 c4a876f6aa OS (Linux): Prioritize lsb-release over os-release
Fix #847
2024-05-03 10:00:18 +08:00
李通洲 82285ebeb4 Release: 2.11.2 2024-05-03 10:00:18 +08:00
李通洲 36dadcdc7f Logo (Builtin): add MX2 & fix mx distro detection
Fix: #847
2024-05-03 09:11:59 +08:00
李通洲 030c05429a Logo (Builtin): add missing FF_LOGO_LINE_TYPE_SMALL_BIT flags 2024-05-03 09:11:59 +08:00
李通洲 a462a12370 Logo (Builtin): fix distro name of DraugerOS 2024-05-03 09:11:59 +08:00
李通洲 b386365d95 Logo (Builtin): fix ascii file name 2024-05-03 09:11:59 +08:00
李通洲 158db9d7c7 Logo (Builtin): add KernelOS
Fix #848
2024-05-03 09:11:59 +08:00
李通洲 407bfa8c95 Shell: don't try detecting version of raw sh shell
Fix #849
2024-05-03 09:11:59 +08:00
李通洲 1449290e9e GPU (Linux): check NULL returned by opendir
Fix #845
2024-05-03 09:11:59 +08:00
李通洲 4c0ea7354d Logo (Image): only print error if --show-error is specified 2024-05-03 09:11:59 +08:00
李通洲 71cba2451a Logo: disable image logos in ssh and tmux sessions 2024-05-03 01:10:04 +08:00
李通洲 ef3b5df048 Doc: update man page 2024-05-03 01:10:04 +08:00
Juan 3e98034e55 Packages (Linux): check xdg state home for nix user packages (#844)
Check $XDG_STATE_HOME/nix/profile if ~/.nix-profile is not found as addressed in #837.

Fix #837
2024-05-02 22:55:50 +08:00
李通洲 1c89101522 Doc: update changelog 2024-05-02 20:45:46 +08:00
Carter Li 757e6271ff Merge pull request #840 from fastfetch-cli/dev
Release: v2.11.1
2024-05-02 20:23:35 +08:00
李通洲 c5c846aa22 CI: try build for Linux armv7 2024-05-02 20:03:40 +08:00
李通洲 23a59a15ec Release: v2.11.1 2024-05-02 19:48:17 +08:00
李通洲 4798c619d0 Battery (Android): fix uninitialized variables
Fix #760 and #838
2024-05-02 19:29:13 +08:00
李通洲 023e767237 Shell (Windows): ignore hyfetch 2024-05-02 16:27:13 +08:00
李通洲 688d9b00ab Shell (Linux): don't detect hyfetch as shell 2024-05-02 15:19:43 +08:00
李通洲 c2fe2f70dc DisplayServer (Linux): silence compiler warnings 2024-05-02 15:19:43 +08:00
李通洲 3430c10ec2 Doc: clarify --disk-folders overrides other disk options 2024-05-02 14:09:56 +08:00
李通洲 9afcc00201 Disk (Windows): don't rely on env vars 2024-05-01 19:32:15 +08:00
李通洲 cd783d1267 Presets: add a new example 2024-05-01 16:00:31 +08:00
李通洲 81480532e2 Custom: make --custom-format optional 2024-05-01 15:54:30 +08:00
李通洲 982e8a0117 Disk (Windows): make / an alias of C:\ for --disk-folders 2024-05-01 15:52:38 +08:00
李通洲 8af88a3376 Doc: fix incorrect man page
Fix #828
2024-05-01 11:55:26 +08:00
Val V 9ed2f13c78 Packages (Linux): Extended Source Mage support (#825)
* Extended Source Mage support

* Fix packages format args num

* Correct spelling
2024-05-01 11:25:04 +08:00
李通洲 d7ea774d71 CI: fix release script 2024-04-30 21:42:31 +08:00
Carter Li a4b9784c48 Merge pull request #823 from fastfetch-cli/dev
Release v2.11.0
2024-04-30 20:40:40 +08:00
Carter Li 3fe2d8091a Release: v2.11.0 2024-04-30 19:43:26 +08:00
Carter Li 78c903c403 Camera (macOS): fix building on old xcode 2024-04-30 19:22:45 +08:00
Carter Li c42711ee26 Camera (macOS): try silence system deprecation warnings 2024-04-30 18:56:45 +08:00
李通洲 367264e549 Disk: only detect folders that specified by --disk-folders
Can be used to improve performance by ignoring network disks
2024-04-30 15:42:44 +08:00
李通洲 36a0c273f9 Processing: suggest increasing --processing-timeout when child process timeouts 2024-04-30 14:52:47 +08:00
李通洲 418106c485 Revert "Disk: init variables"
This reverts commit 0576d4ca26.
2024-04-30 14:46:54 +08:00
李通洲 1058e876a7 Revert "Disk (Windows): add --disk-ignore-remote"
This reverts commit c71b04ba93.
2024-04-30 14:46:26 +08:00
李通洲 8721cc1ab5 CPU (Windows): silence compiler warnings 2024-04-30 14:43:12 +08:00
李通洲 e12642e0b9 Fastfetch: make config in jsonc overridable
Fix #821
2024-04-30 09:16:59 +08:00
李通洲 315bbb3020 GPU (Linux): constantly use *_vis_* 2024-04-30 09:16:59 +08:00
李通洲 0576d4ca26 Disk: init variables 2024-04-29 23:33:18 +08:00
李通洲 c309dbb844 Doc: update bug report template 2024-04-29 23:30:55 +08:00
李通洲 c71b04ba93 Disk (Windows): add --disk-ignore-remote 2024-04-29 23:28:20 +08:00
Carter Li f3417b1b05 Merge pull request #818 from fastfetch-cli/dev
Release: v2.10.3
2024-04-29 22:49:37 +08:00
李通洲 c597b7ec3a Release: v2.10.3 2024-04-29 21:47:39 +08:00
李通洲 8b4586b914 Packages: update help messages 2024-04-29 21:47:39 +08:00
李通洲 b65a0e2543 GPU (Linux): fix copy & paste error 2024-04-29 20:43:19 +08:00
李通洲 6e15a44168 GPU (Linux): ignore . when enumerating directories 2024-04-29 20:28:50 +08:00
李通洲 6bd3d2c434 GPU (Linux): greatly improve detection for AMD cards
Completely untested
2024-04-29 20:05:50 +08:00
李通洲 29644ef904 GPU (Linux): disable vmem detection
Ref #816
2024-04-29 13:27:57 +08:00
李通洲 39dfcb6f10 Packages (Linux): optimise nix detection code 2024-04-29 10:04:20 +08:00
Juan Llamas 882b17834c Packages (nix): use hash to cache count and process count manually (#817) 2024-04-29 09:59:05 +08:00
李通洲 bdd2908e6a Doc: update changelog 2024-04-28 10:46:08 +08:00
李通洲 d4a402f4dd Common: slience compiler warnings 2024-04-28 10:34:28 +08:00
李通洲 115b293ff5 CPU (Windows): fix silly bug... 2024-04-27 23:27:16 +08:00
李通洲 6831c095ec TerminalShell (Linux): actually fix #814 2024-04-27 23:12:45 +08:00
李通洲 81fb146869 CPU (Windows): detect max CPU freq with CPUID instruction
Note this only works when Hyper-V is not enabled

Ultimately fixes #800 #812 #815
2024-04-27 23:07:12 +08:00
李通洲 35b54fd064 Separator: add fast path for ascii strings 2024-04-27 17:30:42 +08:00
李通洲 866e65749e Init: tweaks 2024-04-27 16:36:33 +08:00
李通洲 e157b9a51f TerminalShell (Linux): fix nixos wrapped process name
Fix #814
2024-04-27 16:31:39 +08:00
李通洲 74c89cc03f Wifi (Linux): try fixing #811 2024-04-26 19:26:58 +08:00
李通洲 229c6674a4 CMake: fix #810 2024-04-25 15:48:39 +08:00
李通洲 ab8ad7ffc0 Fastfetch: default hideCursor to false
It doesn't make much difference but make user's terminal unusable if fastfetch is not exited correctly
2024-04-25 14:18:25 +08:00
Carter Li 6805cb16fb Packages: support printing total number of nix / flatpak / brew packages
Ref: https://github.com/fastfetch-cli/fastfetch/issues/436#issuecomment-2075469683
2024-04-25 09:16:12 +08:00
Carter Li e596d76430 Display (Linux): don't use *-unknown as name 2024-04-25 09:08:21 +08:00
李通洲 de4afb6507 CI: test with no dependencies installed 2024-04-24 19:40:31 +08:00
李通洲 beb5f479d9 CI: build Linux binaries with Ubuntu 20.04 again...
Ref: #808
2024-04-24 19:03:44 +08:00
李通洲 e660e61027 Swap (Windows): fix x86-32 (v2) 2024-04-24 11:04:03 +08:00
halperyon e3cdecdb14 bedrock version (#809) 2024-04-24 07:45:45 +08:00
李通洲 40320e5efa Swap (Windows): fix detection in i686 build 2024-04-23 23:29:26 +08:00
李通洲 c2fd057126 CI (macOS): revert back to macos 12 before we know what was happening 2024-04-23 22:51:22 +08:00
李通洲 ea1ef0f347 JsonSchema: add missing modules 2024-04-23 22:51:22 +08:00
Guiorgy 04456d9807 allow generation of either deb or rpm package only (#807) 2024-04-23 19:05:55 +08:00
李通洲 18240524dc DisplayServer (Linux): basic support for ukui 2024-04-23 15:32:49 +08:00
Carter Li 42b7d567a1 Merge pull request #806 from fastfetch-cli/dev
Release: v2.10.2
2024-04-23 13:46:23 +08:00
李通洲 2790493cba Release: v2.10.2 2024-04-23 13:43:16 +08:00
李通洲 8eabc49e12 DisplayServer (Linux): fix silly bug that detect x11 as wayland
Fix #805
2024-04-23 13:39:49 +08:00
Carter Li 3252812699 Merge pull request #803 from fastfetch-cli/dev
Release v2.10.1
2024-04-22 23:49:18 +08:00
李通洲 3fa308386f Release: v2.10.1 2024-04-22 23:44:21 +08:00
李通洲 84ee7cef7c DE (Linux): silence warnings 2024-04-22 23:38:43 +08:00
Carter Li 57f6aff2de Merge pull request #802 from ceamac/fix/dbus
fix/dbus
2024-04-22 23:33:51 +08:00
Viorel d745d7afef Fix build with ENABLE_DBUS=OFF 2024-04-22 18:23:27 +03:00
Carter Li 510a1f57f8 Merge pull request #801 from fastfetch-cli/dev
Release: v2.10.0
2024-04-22 22:34:25 +08:00
李通洲 a1c9b24755 Release: v2.10.0 2024-04-22 21:22:50 +08:00
李通洲 75e6f48dfd Doc: update changelog 2024-04-22 19:44:16 +08:00
李通洲 ed7b12e733 DisplayServer (Linux): fix compiling for old wayland version 2024-04-22 19:24:48 +08:00
李通洲 9c56839c97 DisplayServer (Linux): fix crash 2024-04-22 19:06:13 +08:00
李通洲 6647980ce3 DisplayServer (Linux): refactor & support wlroots protocol 2024-04-22 16:41:30 +08:00
李通洲 80f8b086ca Doc: update changelog 2024-04-21 20:13:22 +08:00
李通洲 8c2dd1aeac IO: don't print ANSI escape codes in --pipe mode 2024-04-21 20:12:42 +08:00
李通洲 ae3c6f1e63 GPU: detect max freq instead of current freq 2024-04-21 19:37:30 +08:00
李通洲 7cc381339c 3rdparty: update 2024-04-21 19:37:30 +08:00
李通洲 aa58a0999d CPU (Windows): try detecting invalid data in SMBIOS
Work around #800
2024-04-21 17:59:14 +08:00
李通洲 4580f3fd54 Disk (Linux): hide drivers folder in WSL 2024-04-21 17:35:47 +08:00
李通洲 6c0c4fa2cf Host (Linux): improve performance of WSL version detection 2024-04-21 17:28:40 +08:00
李通洲 526324be38 Terminal (FreeBSD): implement kitty version fast path for FreeBSD 2024-04-19 15:19:46 +08:00
李通洲 efb0f335e1 Chore: silence compiler warnings 2024-04-19 08:48:22 +08:00
李通洲 9b23ce94ab Chore: oops... 2024-04-18 23:34:27 +08:00
李通洲 47000f2aaf GPU (Linux): fix freq detection
oops...
2024-04-18 23:20:58 +08:00
李通洲 cb3ca73f60 Doc: update changelog 2024-04-18 22:55:04 +08:00
李通洲 fd0b35f21a Display: add option --ts-version to hide terminal and shell version 2024-04-18 22:53:31 +08:00
李通洲 0e7dda4043 Shell: remove unused vars 2024-04-18 22:38:22 +08:00
李通洲 5f7b9d2473 GPU (Linux): bring back pciDetectGPUs 2024-04-18 21:00:47 +08:00
Carter Li f8cbe4c008 GPU (Linux): improve detection performance of Apple Silicon 2024-04-18 19:58:38 +08:00
Carter Li 41df915f29 Terminal (Linux): make fast path of kitty version detection actually work 2024-04-18 15:22:13 +08:00
Carter Li ef440a015d Display (Linux): don't display (null) 2024-04-18 15:18:37 +08:00
李通洲 180cbce3a2 Doc: update changelog 2024-04-18 14:16:08 +08:00
李通洲 64ec76f5a6 Display (Linux): detect refresh rate for DRM method 2024-04-18 04:28:38 +00:00
李通洲 9860fb67d4 TerminalShell (Linux): if /bin/sh is set to default shell, use it
Fix #798
2024-04-18 09:22:08 +08:00
李通洲 08cbba1d9d Terminal (Linux): optimise kitty version detection 2024-04-18 08:53:53 +08:00
李通洲 095149a4e9 TerminalShell (Windows): fix compiling 2024-04-17 23:18:32 +08:00
李通洲 a561a96a5f Display (Linux): wlr-randr for hyprland
which support reporting fractional scale factors
2024-04-17 22:16:19 +08:00
李通洲 073d6a9337 DE (Linux): improve kde version detection performance
KDE6 uses wayland only
2024-04-17 21:02:32 +08:00
李通洲 6851c9cc1a DE (Linux): tag gnome-shell --version a slow operation 2024-04-17 20:58:49 +08:00
李通洲 2862f466f3 Terminal (Linux): improve performance of kitty version detection 2024-04-17 20:28:13 +08:00
李通洲 5e3fdc6c33 DE (Linux): better Gnome version detection 2024-04-17 19:00:45 +08:00
李通洲 03fe5803de common/properties: we don't use threads any more 2024-04-17 19:00:06 +08:00
Carter Li 6d36ec55c5 GPU (Linux): try detecting vmem with gpu kernel module 2024-04-17 14:32:11 +08:00
李通洲 f098cdbf69 CI: update artifact name for musl builds 2024-04-16 22:58:06 +08:00
李通洲 07d3fe3044 CI: add musl build 2024-04-16 22:29:01 +08:00
Carter Li 636b6fc43d Packaging: update debian stuff 2024-04-16 16:34:18 +08:00
李通洲 ccfba6786c README: metion linuxbrew 2024-04-16 16:24:30 +08:00
李通洲 7c2c631807 README: remove AUR as it's very outdated 2024-04-16 16:19:53 +08:00
Carter Li 6769410753 Merge pull request #794 from fastfetch-cli/dev
Release: v2.9.2
2024-04-16 10:45:39 +08:00
李通洲 40b9af6c36 Release: v2.9.2 2024-04-16 10:16:31 +08:00
李通洲 e63dfdd8b1 Packages: fix parsing of JSON config; fix wording of json_schema 2024-04-16 10:16:31 +08:00
李通洲 a6639d7211 JsonSchema: don't generate error at custom options 2024-04-16 09:55:21 +08:00
李通洲 3e251f602a Packages: fix parsing of option --packages-disabled 2024-04-16 09:50:24 +08:00
李通洲 ec25ca9fc7 Shell: ignore time 2024-04-15 20:01:40 +08:00
李通洲 396d20f2da Presets: fix compatibility of newer nerd fonts
Fix #792
2024-04-14 22:51:49 +08:00
李通洲 49181fd0bf Doc: update changelog 2024-04-14 18:03:34 +08:00
李通洲 5eb1dbe7bf Logo (Builtin): add openSUSE MicroOS
Fix #789
2024-04-14 18:02:59 +08:00
Anjia Wang 690e988cab Logo: fix logo color of AOSC OS (#791)
Resolve issue: https://github.com/fastfetch-cli/fastfetch/issues/790
2024-04-13 16:44:46 +08:00
Ulices fd41770d6e Fix: bad LainOS logo (#788)
- No need to scape '\'
- Replace a tab with spaces
2024-04-13 08:09:51 +08:00
李通洲 fb26cb1394 Disk (Android): fix build
Android does support `statx`, but it requires targeting newer ANDROID_API version to be available
2024-04-11 19:49:57 +08:00
李通洲 4e4efa67e6 Doc: update issue templates 2024-04-11 14:47:00 +08:00
李通洲 0dfb1b6bb1 Doc: add code of conduct 2024-04-11 14:10:25 +08:00
李通洲 bcbca38b1e Terminal: tidy 2024-04-10 10:11:31 +08:00
李通洲 3f0ccf802c Presets: fix #786 [ci skip] 2024-04-09 22:51:16 +08:00
李通洲 691cb4ac24 Global: use time string when generating JSON result 2024-04-09 20:47:06 +08:00
李通洲 282939f548 Disk (Windows): detect create time 2024-04-09 20:47:06 +08:00
李通洲 6f35b2f382 Disk (Linux): detect create time 2024-04-09 20:47:06 +08:00
李通洲 6700f63091 Disk (macOS): detect create time 2024-04-09 15:15:33 +08:00
李通洲 5c37ebec70 Doc: update changelog 2024-04-09 09:05:10 +08:00
李通洲 28a419d252 fastfetch: always provide trailing new line when generating JSON output 2024-04-09 09:01:28 +08:00
李通洲 95128ee95f 3rdparty (yyjson): upgrade to 0.9.0
To make use of `YYJSON_WRITE_NEWLINE_AT_END`
2024-04-09 08:58:04 +08:00
李通洲 c94180b3d2 Terminal (Windows): ignore far.exe
Ref: https://github.com/fastfetch-cli/fastfetch/issues/784#issuecomment-2043052512
2024-04-08 23:37:53 +08:00
李通洲 12ca1a0cf7 TerminalFont (Windows): better portable mode detection of Windows Terminal
`.portable` can be a folder.

Fix #784
2024-04-08 22:29:24 +08:00
apocelipes 67564dfa2c Platform: fix a memory leak (#782) 2024-04-08 09:10:03 +08:00
Carter Li a1e79a9522 Merge pull request #779 from fastfetch-cli/dev
Release v2.9.1
2024-04-07 20:49:37 +08:00
李通洲 e16f8ef349 Release: v2.9.1 2024-04-07 20:47:19 +08:00
李通洲 fd1a2072b3 Cursor: tidy 2024-04-07 20:44:17 +08:00
李通洲 aa45e70910 Revert "fastfetch: add the missing new-line in config files (#772)"
Fix #778

This reverts commit 4430b7145e.
2024-04-07 20:41:01 +08:00
李通洲 5374feb24b Cursor (Linux): support hyprcursor detection
Fix: #776
2024-04-07 20:09:35 +08:00
李通洲 12ac0ac7a9 Cursor: tidy 2024-04-07 20:09:05 +08:00
李通洲 3d78666ed3 Doc: update changelog
weston-terminal font detection was not pushed in v2.9.0
2024-04-06 17:37:31 +08:00
Carter Li dd2cc116bd TerminalFont (Linux): support weston-terminal 2024-04-06 16:56:17 +08:00
Carter Li ba2636dc1a Merge pull request #775 from fastfetch-cli/dev
Release: v2.9.0
2024-04-04 12:24:44 +08:00
李通洲 69589f1ad5 Release: v2.9.0 2024-04-04 12:22:52 +08:00
Carter Li 39da11de8e LocalIP (BSD): fix build 2024-04-04 19:42:33 +08:00
李通洲 8b7a4daeda TerminalFont: use system mono font if no config file is find 2024-04-04 11:09:28 +08:00
李通洲 82af7a5b52 Doc: update changelog 2024-04-04 10:52:42 +08:00
李通洲 a2d99695fd LocalIP: add new option localip-show-prefix-len 2024-04-04 10:42:44 +08:00
李通洲 3a2786a89f LocalIP: support network prefix detection for IPv6 2024-04-04 10:19:01 +08:00
李通洲 a6cb30d6c8 LocalIP: print all IPs if multiple IPs are assigned to the same interface 2024-04-04 10:09:06 +08:00
李通洲 de6b1f9542 LocalIP (Linux): fix network prefix detection when the value is greater than 24 2024-04-04 10:08:26 +08:00
李通洲 77431671bb Packages (Linux): add am support
Fix: #771
2024-04-03 21:08:55 +08:00
apocelipes 4430b7145e fastfetch: add the missing new-line in config files (#772) 2024-04-03 20:02:38 +08:00
kojq 898859cc7a Flashfetch: add the skipped "host" option from "Flashfetch: simplify implementation" (#770) 2024-04-02 22:36:20 +08:00
李通洲 43b96df112 Version: detect apple clang 2024-04-02 14:28:25 +08:00
李通洲 bb97893bd0 Doc: update changelog 2024-03-29 14:36:11 +08:00
李通洲 9b21ec6e1f Terminal (Linux): support weston-terminal version detection 2024-03-28 13:46:11 +08:00
李通洲 ffac354368 Terminal (Linux): support Lxterminal version detection 2024-03-26 19:28:07 +08:00
李通洲 a9aab51764 Doc: update changelog [ci skip] 2024-03-26 09:06:23 +08:00
Carter Li 4d1fc9ceb1 Packaging: update debian stuff 2024-03-25 15:04:24 +08:00
Carter Li e897a98153 Merge pull request #765 from fastfetch-cli/dev
Release v2.8.10
2024-03-25 14:22:43 +08:00
李通洲 0a8056d835 TerminalShell (Windows): adjustments
1. Don't pretty print CMD
2. Print conhost as Windows Console
2024-03-25 14:10:08 +08:00
李通洲 9681e176b3 Terminal (Windows): don't use wininit as terminal 2024-03-25 11:12:30 +08:00
李通洲 1f8be43881 Disk (Windows): use MS-DOS device name as mountFrom result, instead of useless GUID volume name 2024-03-25 10:09:35 +08:00
李通洲 30813551be Release: v2.8.10 2024-03-25 09:17:03 +08:00
李通洲 beb564f374 CI: try fixing Windows build 2024-03-25 09:17:03 +08:00
李通洲 5c97c012a9 Font (Linux): try fixing style detection 2024-03-24 18:32:50 +08:00
Carter Li 50da7cabd6 GPU (Apple): always use metal to detect vmem 2024-03-23 17:34:09 +08:00
李通洲 a6528cdfd6 Chore: simpify gitignore [ci skip]
And make scc happy
2024-03-22 10:09:58 +08:00
李通洲 588201fe46 Windows: update version.rc 2024-03-21 16:26:56 +08:00
李通洲 6184b5ee96 Doc: update changelog 2024-03-21 11:04:53 +08:00
李通洲 5e7baa9d0a PublicIP: error out if non-http protocol is specified 2024-03-21 11:01:23 +08:00
李通洲 79ae650c58 Networking: avoid short recv 2024-03-21 10:42:25 +08:00
李通洲 44107f289e Network (Windows): fix compiling 2024-03-20 16:09:17 +08:00
李通洲 75927a87b2 Networking: add timeout support for TCP connecting 2024-03-20 15:04:29 +08:00
李通洲 85da30ccf5 Networking: report detailed error messages; support --thread false for debugging 2024-03-20 13:54:27 +08:00
李通洲 f73c3b85c2 Doc: update changelog 2024-03-19 21:18:25 +08:00
李通洲 66bef2fc19 Network: trim trailing white spaces 2024-03-19 21:18:25 +08:00
李通洲 7c5eb021ee Terminal (Linux): ignore chezmoi
Fix #762
2024-03-18 09:03:10 +08:00
李通洲 f902e3b3d8 CPU (Android): don't detect manufactor of Qualcomm as ARM 2024-03-17 19:19:33 +08:00
李通洲 553124ab5b Presets: a new example
Ref: #761
2024-03-16 22:25:35 +08:00
李通洲 6c6d93370d Logo: fix colors of arco linux
Fix #759
2024-03-15 20:32:29 +08:00
Carter Li 55ae3a7dbd CPU (FreeBSD): don't display 0.00 GHz 2024-03-15 11:15:23 +08:00
Carter Li 586874080f Packaging: update debian stuff 2024-03-15 10:51:53 +08:00
Carter Li d5b91a8983 Merge pull request #758 from fastfetch-cli/dev
Release: v2.8.9
2024-03-15 09:50:54 +08:00
李通洲 72fee13112 Release: v2.8.9 2024-03-15 09:21:13 +08:00
李通洲 20ae897f39 fastfetch: remove unused #includes 2024-03-15 08:37:58 +08:00
李通洲 6f756d103f Doc: update changelog 2024-03-14 20:43:17 +08:00
李通洲 c9dd858ce3 CPU (Linux): bing cpuMHz back
It's used in WSL
2024-03-14 20:40:40 +08:00
李通洲 2e201eaaf7 CPU: bring min frequency back & code optimizations 2024-03-14 19:24:03 +08:00
李通洲 7c54dcba69 CPU (Linux): fix detection when .../base_frequency doesn't exist 2024-03-14 10:32:34 +08:00
李通洲 a107395707 Logo (Chafa): fix blurry result when specifying both width and height
Who knows why it was coded like that

Fix #757
2024-03-14 10:18:17 +08:00
李通洲 8a9fe22855 Logo: fix proxmox
Fix #756
2024-03-13 23:58:40 +08:00
李通洲 7e04e23528 CPU: rename min frequency to base frequency 2024-03-13 23:42:59 +08:00
李通洲 8d779f68f3 CPU: detect base frequency 2024-03-13 23:41:11 +08:00
李通洲 98ba08c1a0 CI (macOS): fix build 2024-03-13 10:37:45 +08:00
李通洲 a1499b82f8 Doc: update changelog 2024-03-13 08:44:09 +08:00
李通洲 c6c866d78a Host (Apple): add MacBook Air 2024 2024-03-12 18:27:02 +08:00
李通洲 7a6999bd20 Fastfetch: print final new line in --format json 2024-03-09 12:07:07 +08:00
李通洲 1084cf3523 Terminal (Linux): actually ignore SessionLeader 2024-03-09 11:52:31 +08:00
Carter Li ed5f2a3968 Chore: update screenshots 2024-03-08 15:58:47 +08:00
Carter Li 17e1d4b72d Package: update debian stuff 2024-03-08 10:03:31 +08:00
Carter Li 912f6c4f3c Merge pull request #752 from fastfetch-cli/dev
Release: v2.8.8
2024-03-08 09:54:06 +08:00
李通洲 77d71b5fef Doc: update changelog 2024-03-08 09:36:35 +08:00
Carter Li 6938a73a8a Users (Linux): fix detection of client ip 2024-03-08 09:17:40 +08:00
李通洲 cee9df189d Release: v2.8.8 2024-03-08 08:40:40 +08:00
李通洲 2a125e226b Terminal (Linux): ignore SessionLeader
I don't know why it's there, but let's ignore it for now
2024-03-07 22:38:03 +08:00
李通洲 4a7e60ef57 CPU (Linux): don't crash if /sys/devices/system/cpu/cpufreq/ doesn't exist
Ref: #750
2024-03-07 21:31:23 +08:00
李通洲 0a6140346e DisplayServer (Linux): fix old libdrm version compatibility
Ref: #748
2024-03-07 19:20:56 +08:00
Carter Li 01862ebc04 Display (Linux): fix width being detected as height when using libdrm 2024-03-07 14:39:13 +08:00
李通洲 3185299214 Doc: update changelog 2024-03-07 14:00:57 +08:00
李通洲 5b6ebe4f11 Doc: update README 2024-03-07 13:56:40 +08:00
李通洲 6274ef591b Vulkan: try fixing old vulkan-header library compatibility
Ref: #748
2024-03-07 13:34:31 +08:00
李通洲 7acdaebee4 Printing: merge ffPrintError and ffPrintErrorString 2024-03-07 11:10:18 +08:00
李通洲 6dcfb6b88f Fastfetch: fully resolve the format arg num issue
Ref: #749
2024-03-07 10:47:28 +08:00
李通洲 064972aecd Disk: fix segfault with --help disk-format
Fix #749
2024-03-07 09:04:22 +08:00
李通洲 b9dbb66bd7 fastfetch: revert changes of FASTFETCH_DATATEXT_STRUCTURE
Also add comments
2024-03-04 13:47:17 +08:00
李通洲 a01792c06c Doc: rename help.txt to help_footer.txt 2024-03-04 10:22:29 +08:00
李通洲 d707a67f89 Merge remote-tracking branch 'origin/master' into dev 2024-03-04 09:14:11 +08:00
李通洲 5d8aa11d81 Fastfetch: small performace optimization 2024-03-04 08:50:38 +08:00
李通洲 a87463fc09 Doc: fix truncated texts 2024-03-04 08:50:38 +08:00
李通洲 d0a4a012c4 Completions (Fish): fix old version compatibility
Fix #744
2024-03-03 18:48:05 +08:00
Carter Li 6a82d73fe9 Merge pull request #743 from fastfetch-cli/dev
Release: v2.8.7
2024-03-02 19:14:35 +08:00
李通洲 7504484f21 Release: v2.8.7 2024-03-02 18:46:48 +08:00
李通洲 d497853af5 Doc: update changelog 2024-03-02 18:45:48 +08:00
李通洲 c2f815f5ba Uptime (Android): fix implementation
Regression of 41fed1da5f
2024-03-02 18:37:32 +08:00
李通洲 4bd4ec2897 Terminal (Linux): detect zellij version 2024-03-02 18:32:31 +08:00
Adam Thiede fc685e9aa0 fix postmarketos logos (#742) 2024-03-01 23:54:47 +08:00
李通洲 14d3bd89a7 Brightness (Linux): fix ddcutil 2.1 compatibility 2024-03-01 22:07:54 +08:00
李通洲 c3970154d6 GPU (Linux): fix memleaks 2024-03-01 11:07:16 +08:00
李通洲 66aee54401 CMake: add more debug flags 2024-03-01 10:27:25 +08:00
Carter Li 979f7d19b1 CPU (Linux): fix max / min frequency detection for multi policy systems 2024-02-29 10:20:50 +08:00
Carter Li f238138711 Packaging: update debian stuff 2024-02-28 10:03:26 +08:00
李通洲 6c88981b05 JsonSchema: disallow additional properties 2024-02-28 09:17:29 +08:00
Carter Li c935527e6f Merge pull request #740 from fastfetch-cli/dev
Release: v2.8.6
2024-02-28 00:04:20 +08:00
李通洲 04915945f5 Doc: update changelog 2024-02-27 23:42:36 +08:00
李通洲 153df44282 TerminalFont (Linux): support warp terminal 2024-02-27 23:40:42 +08:00
李通洲 22012556f8 Terminal (Linux): support warp version detection 2024-02-27 23:35:07 +08:00
李通洲 d0b03c380b CI: build for FreeBSD aarch64 too 2024-02-27 22:29:00 +08:00
Carter Li de2cd79632 Merge pull request #739 from fastfetch-cli/dev
Release: v2.8.6
2024-02-27 22:05:53 +08:00
李通洲 cc40ef42f0 Release: v2.8.6 2024-02-27 21:28:01 +08:00
李通洲 ba45073e04 CI: fix windows build 2024-02-27 19:20:13 +08:00
李通洲 a3c3f3829d Shell (Linux): always detect tty id 2024-02-27 16:35:47 +08:00
李通洲 79b7b15b46 Terminal: detect tty name
Fix #738
2024-02-27 16:19:42 +08:00
李通洲 111f7111b2 GPU (Linux): Support specifying custom pci.ids path for Linux 2024-02-27 15:29:19 +08:00
李通洲 5147651bcb Temps: rename display.temperature to display.temp 2024-02-27 13:11:39 +08:00
李通洲 ba60d9059f Temps: support color range customization 2024-02-27 11:00:43 +08:00
李通洲 8f205b8c30 Percent: rename FFPercentConfig to FFColorRangeConfig 2024-02-27 08:32:31 +08:00
李通洲 e046787aec Terminal: better tmux version detection 2024-02-26 23:33:30 +08:00
李通洲 743eebaa6b CMake (macOS): force dlopen searching for /usr/local/lib 2024-02-26 13:35:11 +08:00
李通洲 609caad02f Global: use FASTFETCH_TARGET_DIR_USR where applicable 2024-02-26 13:30:09 +08:00
李通洲 a0c47204bb Temp: Display: support better temperature value formatting
Fix #737
2024-02-26 11:09:00 +08:00
李通洲 1c87693867 Percent: tidy 2024-02-26 10:23:00 +08:00
李通洲 42b756e703 GPU (Linux): revert show sub-device if available 2024-02-24 12:52:22 +08:00
Carter Li d317997396 Merge pull request #735 from fastfetch-cli/dev
Release: v2.8.5
2024-02-23 20:36:52 +08:00
李通洲 91dac1563b Release: v2.8.5 2024-02-23 20:34:39 +08:00
李通洲 73cfae97d2 DiskIO / NetIO: fix uninitialized variables 2024-02-23 20:30:54 +08:00
李通洲 78a606c1e1 Doc: update ubuntu ppa 2024-02-23 16:34:23 +08:00
Carter Li f258e484d9 Packaging: update debian stuff 2024-02-23 16:17:57 +08:00
Carter Li ea162fd452 Merge pull request #734 from fastfetch-cli/dev
Release: v2.8.4
2024-02-23 16:09:51 +08:00
李通洲 b80391b183 Release: v2.8.4 2024-02-23 15:56:12 +08:00
李通洲 4c7a9e4394 Doc: update changelog 2024-02-23 10:01:05 +08:00
李通洲 4b747f70a4 Disk (Linux): ensure only physical devices are detected
Ref: https://github.com/fastfetch-cli/fastfetch/issues/731#issuecomment-1955814211
2024-02-23 09:29:39 +08:00
李通洲 5fb4b6dc04 Display: --display-compact-type support *-with-refresh-rate
Ref: https://github.com/fastfetch-cli/fastfetch/discussions/732
2024-02-22 18:45:57 +08:00
李通洲 5e7cfe2976 Display: add option --display-order 2024-02-22 10:47:13 +08:00
李通洲 77db2d84a3 FFstrbuf: remove ffStrbufCompAlphabetically 2024-02-22 10:38:33 +08:00
李通洲 15bb5bfb24 Packages: add ability to disable specified package manager
Fix #729
2024-02-22 10:03:38 +08:00
李通洲 4e9ee9aa03 Package: code cleanup 2024-02-21 15:40:04 +08:00
李通洲 6a0c7ca788 Disk (Linux): try fixing multidevice bcachefs filesystem compatibility
Ref: #731
2024-02-21 09:05:26 +08:00
李通洲 90e99bcf69 Doc: fix invalid commands 2024-02-21 09:05:26 +08:00
Lenny0939 5b20a86d53 Fix mistake in README.md (#730)
Sudo is not necessary to use nix-shell, and puts you in a shell as root which is not ideal
2024-02-20 18:42:59 -06:00
李通洲 6ad1262f4a NetIO: add option --netio-detect-total 2024-02-20 14:44:55 +08:00
李通洲 e0297e1dd1 DiskIO: add option --diskio-detect-total 2024-02-20 14:43:50 +08:00
李通洲 937611aa29 Colors: support JSON config generation 2024-02-15 22:05:34 +08:00
李通洲 eda38e16db Colors: don't print extra empty lines 2024-02-15 21:55:33 +08:00
李通洲 2731756c39 Platform (Windows): small optimization 2024-02-15 20:29:57 +08:00
李通洲 853ca0f608 Platform (Windows): don't assume x86 as i686 2024-02-15 20:29:34 +08:00
李通洲 17f4a6e055 Colors: support block related settings
Fix #721
2024-02-14 22:09:12 +08:00
李通洲 925dc6f681 TerminalFont (Windows): support portable Windows Terminal settings
Fix #720
2024-02-13 19:49:49 +08:00
李通洲 706527eab4 Github: update ISSUE_TEMPLATE 2024-02-13 19:19:29 +08:00
李通洲 3a96ade423 CPU (Linux): don't segfault if we fail to find Vendor ID in lscpu
Fix #718
2024-02-13 19:08:44 +08:00
李通洲 da9c928286 CMake: make artifact file names consistant
Fix #719
2024-02-13 19:02:03 +08:00
Carter Li 30d3d00900 Merge pull request #717 from fastfetch-cli/dev
Release v2.8.3
2024-02-12 10:59:30 +08:00
李通洲 99fce80d0d CI: fix windows artifacts generation 2024-02-12 10:46:57 +08:00
Herby Gillot a5a28e30a0 README: add MacPorts install info (#716)
Add info on installing `fastfetch` on macOS via MacPorts: https://ports.macports.org/port/fastfetch/
2024-02-12 10:43:23 +08:00
李通洲 7fe39353df Release: v2.8.3 2024-02-12 10:28:29 +08:00
李通洲 a3576b3154 CI: release file name without version
Fix #714
2024-02-12 10:28:29 +08:00
AlbydS c5d0d84001 Add installation instructions for even more Linux distributions (#715)
Added Alpine (now with the right command), ALT Linux and Arch AUR to the installation instructions.
2024-02-12 10:20:10 +08:00
李通洲 467ed54a3b GPU (Linux): lazy load pci.ids 2024-02-12 10:12:34 +08:00
Carter 7ea8882843 GPU (FreeBSD): detect correct AMD card names 2024-02-12 18:09:11 +08:00
李通洲 f4cb3bb33f GPU (Linux): use amdgpu.ids 2024-02-12 00:43:06 +08:00
李通洲 330eb9fa21 GPU: show sub-device if available
Try fixing #713
2024-02-11 23:01:14 +08:00
李通洲 1006f513f5 Release: v2.8.2 2024-02-10 14:38:47 +08:00
李通洲 652c4b2e82 CI: don't upload old artifacts 2024-02-10 14:37:27 +08:00
李通洲 3c618a8cd0 Merge remote-tracking branch 'upstream/master' into dev 2024-02-10 14:14:09 +08:00
李通洲 b5821de793 Release: v2.8.1 2024-02-10 14:02:22 +08:00
李通洲 dec604691c CMake: try fixing packaging name conflicting 2024-02-10 13:59:34 +08:00
Carter Li 72baa6cca9 Merge pull request #712 from fastfetch-cli/dev
Release v2.8.0
2024-02-10 12:02:58 +08:00
李通洲 34b023a74f Release: 2.8.0 (ci skip)
For Luna New Year!
2024-02-10 10:32:14 +08:00
李通洲 8249a8ed6a Doc: update changelog 2024-02-09 00:10:29 +08:00
李通洲 7e1ac5e24a Terminal (Windows): code cleanup 2024-02-08 23:15:58 +08:00
李通洲 55c72a8bb3 Camera (Windows): fix Windows Server Core compatibility 2024-02-08 19:14:09 +08:00
Carter Li b602bb20c2 Battery (Linux): print the same format of battery status as other platforms 2024-02-08 14:10:51 +08:00
Carter Li 46ed24275f Battery (FreeBSD): fix typos 2024-02-08 13:59:02 +08:00
Carter Li 71db83f806 PowerAdapter (Linux): don't print not connected either
To align result to macOS
2024-02-08 13:51:30 +08:00
李通洲 0746afa0c2 PowerAdapter (macOS): don't show not connected if no power adapter is detected 2024-02-08 10:53:58 +08:00
李通洲 805c384819 Battery (macOS): don't show an empty battery if no battery is detected 2024-02-08 10:37:06 +08:00
Carter Li 9e4c0e318c Chore: add dpkg related stuff 2024-02-07 14:39:19 +08:00
李通洲 51eaac2fd7 Doc: update changelog 2024-02-06 09:54:33 +08:00
李通洲 92c3df82e6 Logo (Builtin): add PikaOS
Ref: https://github.com/hykilpikonna/hyfetch/pull/231
2024-02-06 09:30:24 +08:00
李通洲 7f238a701e Logo (Builtin): add tatra
Ref: https://github.com/dylanaraps/neofetch/pull/2439
2024-02-06 09:25:44 +08:00
李通洲 72236f62ad Logo (Builtin): add z/OS
Ref: https://github.com/dylanaraps/neofetch/pull/2436
2024-02-06 09:03:01 +08:00
李通洲 51b0c43d76 Platform (Windows): use %USERNAME% if available 2024-02-05 20:01:19 +08:00
李通洲 79e2007d30 Revert "Platform (Linux): use $HOSTNAME if available"
$HOSTNAME doesn't seem to be a standard variable

This reverts commit 02eb604ceb.
2024-02-05 20:01:18 +08:00
李通洲 02eb604ceb Platform (Linux): use $HOSTNAME if available
Ref: #710
2024-02-05 18:23:21 +08:00
李通洲 ce6b2b85f7 Locale (Linux): use environment variable if available
In some machine `setlocale(LC_MESSAGES, NULL)` returns `C` for some reason.
2024-02-05 16:25:12 +08:00
李通洲 48d1980061 CI: build linux old 2024-02-05 14:32:17 +08:00
李通洲 40fae5c5f1 Camera (Android): add empty color space result 2024-02-04 19:07:47 +08:00
李通洲 e296ee1040 CI (Linux): bump version of linux runners
Drop support of Debian 11
2024-02-04 15:48:58 +08:00
李通洲 199e71553d CI: run camera module 2024-02-04 15:14:18 +08:00
李通洲 13fa218e5a Camera: adjust output format 2024-02-04 14:17:18 +08:00
李通洲 eed5efabea Camera (Windows): detect color space 2024-02-04 14:17:18 +08:00
李通洲 d2315e967e Camera (macOS): detect color space 2024-02-04 14:17:18 +08:00
Carter Li cbe3c70480 Camera (Linux): add property colorspace 2024-02-04 14:17:18 +08:00
李通洲 c918226909 Fastfetch: print videodev2 in --list-features 2024-02-04 09:56:22 +08:00
李通洲 18472660ae CI (FreeBSD): remove unused depenencies 2024-02-04 09:27:04 +08:00
李通洲 458c2ccd01 Camera (FreeBSD): enable support
Requires build dependency `v4l_compat`
2024-02-04 09:26:19 +08:00
李通洲 7bb9efcebb Camera (Android): init support 2024-02-02 23:22:40 +08:00
李通洲 8a42dfd68d Camera: tidy; add module to all.jsonc 2024-02-02 22:43:01 +08:00
李通洲 3edd8a6740 Camera (Linux): init support 2024-02-02 22:14:25 +08:00
李通洲 cba22b7155 Camera (Windows): init support 2024-02-02 20:36:22 +08:00
李通洲 246ad6d288 Sound (Windows): tidy 2024-02-02 20:36:22 +08:00
李通洲 295e119810 Camera (macOS): new module 2024-02-02 20:36:22 +08:00
李通洲 cfe22f9524 Terminal (Linux): try fixing #707 (v2) 2024-02-01 17:56:40 +08:00
李通洲 de2c1d7786 CI: unify artifacts name (v2) 2024-02-01 16:00:33 +08:00
李通洲 7d74339aa0 CI: build in parallel 2024-02-01 15:43:56 +08:00
李通洲 7589e962c2 CI: unify artifact names 2024-02-01 15:25:05 +08:00
李通洲 9a189694f9 CI: silence more warnings 2024-02-01 15:24:07 +08:00
李通洲 4069fbfe7b CI: upgrade codeql-action 2024-02-01 15:02:37 +08:00
李通洲 7ccd886909 CI: build aarch64 binaries 2024-02-01 14:29:28 +08:00
李通洲 42957356b2 GPU: remove libpci related stuff 2024-02-01 13:38:15 +08:00
李通洲 9038cd32b2 Terminal (Linux): don't assume blackbox is build for flatpak 2024-02-01 09:14:06 +08:00
李通洲 128c3bfea6 TerminalShell (Linux): try supporting blackbox
Fix #707
2024-02-01 09:02:49 +08:00
李通洲 60ed822f6a GPU (Linux): fix detection in some cases 2024-01-31 18:58:48 +08:00
Carter Li 527ec1bc61 Logo (Builtin): add asahi2; make asahi logo actually work 2024-01-31 16:47:22 +08:00
Carter Li cbf203901b CPU (Linux): code refactor 2024-01-31 14:36:00 +08:00
Carter Li cf6f3dbe0c CI (Windows): fix build 2024-01-31 13:35:57 +08:00
Carter Li ab625497ce CPU (Linux): code refactor 2024-01-31 13:28:18 +08:00
Yussef Dalton 83532b68dd CPU (Linux): use marketing name on Asahi Linux 2024-01-31 11:02:41 +08:00
Carter Li cd2a1495b8 GPU (FreeBSD): use ffGPUParsePciIds 2024-01-31 10:39:09 +08:00
Carter Li b01d2bdd8c GPU (Linux): rewrite; drop libpci dependency 2024-01-31 10:20:49 +08:00
Carter Li 736d5316cc Merge pull request #705 from fastfetch-cli/dev
Release v2.7.1
2024-01-30 19:25:55 +08:00
李通洲 efe42a2c7d GPU: fix a copy-paste error 2024-01-30 18:54:26 +08:00
李通洲 ee07755139 Release: v2.7.1 2024-01-30 18:45:56 +08:00
李通洲 3d924eeadd Merge remote-tracking branch 'upstream/master' into dev 2024-01-30 18:27:24 +08:00
李通洲 aaa091f23b Terminal (Linux): fix segfault 2024-01-30 15:22:26 +08:00
李通洲 53cd1e5378 DateTime: print timezone info; simplify code 2024-01-29 22:01:54 +08:00
李通洲 3747683f0d GPU: add vendor code of QTI & MTK 2024-01-29 21:49:42 +08:00
李通洲 59c1e3d8c5 Platform: detect real path of exe path 2024-01-28 10:45:21 +08:00
Carter Li 1206f6d2ba Merge pull request #701 from fastfetch-cli/dev
Release v2.7.0
2024-01-26 11:06:32 +08:00
李通洲 9aad3e339a CMake: remove unused deps 2024-01-26 10:44:20 +08:00
李通洲 ef9221f305 CI: generate sha512sums [no ci] 2024-01-26 10:41:31 +08:00
李通洲 391a3a0430 Release: v2.7.0
Bump minor version because of rewriting the FreeBSD GPU detection code
2024-01-26 10:23:44 +08:00
李通洲 6b0314f14b Platform: fix exe path detection 2024-01-26 10:19:21 +08:00
李通洲 8e316eb080 Release: v2.6.4 2024-01-26 10:10:11 +08:00
李通洲 999f2170fe Terminal: ignore sshd 2024-01-26 09:53:12 +08:00
李通洲 0282b884cc OpenCL: fix possible segfaults
Found in Alpine Linux
2024-01-26 09:38:08 +08:00
李通洲 ef7e6d0a6a GPU (WSL): fix uninitialized variables 2024-01-26 09:20:58 +08:00
李通洲 77253a8d81 GPU (FreeBSD): better name detection 2024-01-26 09:20:58 +08:00
Carter Li 2041272f5f GPU (Linux): simpify code 2024-01-25 18:32:40 +08:00
Carter Li d2a41bdfe1 GPU (FreeBSD): drop pciutils dep 2024-01-25 10:33:06 +08:00
Carter Li 025a708ecb Shell: remove trailing \0 in JSON output 2024-01-25 10:33:06 +08:00
John Mertz 4e2c124442 ASCII logos for fedora immutable variants (#700)
Container Linux is also deprecated and continued as Fedora CoreOS
2024-01-23 23:38:41 -06:00
李通洲 79ba9d7a68 TerminalShell (Linux): fix segfault 2024-01-23 18:51:00 +08:00
李通洲 ee60ec3530 TerminalShell: don't detect sh as a terminal 2024-01-23 16:38:43 +08:00
李通洲 9d7cbb0fe3 Revert "3rdparty: use a newer wcwidch implementation"
Unwanted change

This reverts commit 28ea765f19.
2024-01-23 14:42:00 +08:00
李通洲 0b98a14977 Fastfetch: don't expand envs in --config
Since it can only be used in command line
2024-01-23 13:14:53 +08:00
李通洲 8f51763374 Linux: allow command substitution when expanding paths
Ref: https://github.com/fastfetch-cli/fastfetch/discussions/698
2024-01-23 13:13:30 +08:00
李通洲 28ea765f19 3rdparty: use a newer wcwidch implementation 2024-01-23 10:19:02 +08:00
李通洲 5378d05bfb Doc: update changelog 2024-01-22 19:33:27 +08:00
李通洲 bbf04f0d40 Doc: add TerminalTheme 2024-01-22 18:50:11 +08:00
李通洲 ec6195133b TerminalTheme: add new module 2024-01-22 16:40:27 +08:00
李通洲 fa8c99601c TerminalSize: tidy 2024-01-22 14:34:19 +08:00
李通洲 a5d5de90f8 Terminal (Linux): support screen version detection 2024-01-22 14:33:55 +08:00
李通洲 994fd359a5 Terminal (Linux): fix kgx version detection 2024-01-22 11:10:40 +08:00
李通洲 a9a5790cba TerminalShell (Linux): improve terminal detection by env 2024-01-22 11:10:40 +08:00
李通洲 31b3fe403a Wifi (Linux): remove trailing \n
Fix #697
2024-01-22 11:10:30 +08:00
李通洲 14b74fe51d Doc: update issue template 2024-01-22 09:10:03 +08:00
Carter Li 35a5a03cd7 Merge pull request #696 from fastfetch-cli/dev
Release v2.6.3
2024-01-21 23:04:15 +08:00
李通洲 f927b8ea87 Release: v2.6.3 2024-01-21 23:01:49 +08:00
李通洲 ebefcec3e2 Bluetooth: fix result printing 2024-01-21 23:00:38 +08:00
Carter Li c151bf0b37 Merge pull request #695 from fastfetch-cli/dev
Release v2.6.2
2024-01-21 17:54:12 +08:00
李通洲 a767104b96 TerminalShell (Windows): more variable initialization fixes 2024-01-21 17:52:03 +08:00
Carter Li 18fced9b2e Merge pull request #694 from fastfetch-cli/dev
Release 2.6.2
2024-01-21 17:46:02 +08:00
李通洲 713ef0ce34 Release: v2.6.2 2024-01-21 17:41:34 +08:00
李通洲 5b2db02bc1 CI: Fix building for GCC in Windows 2024-01-21 17:39:31 +08:00
Carter Li 0f69dc5980 Merge pull request #692 from fastfetch-cli/dev
Release 2.6.1
2024-01-20 22:34:06 +08:00
李通洲 6af57ff5b6 Doc: update changelog 2024-01-20 22:20:28 +08:00
Carter Li 7d7789565b PowerAdapter (macOS): improve detection for Intel macbook 2024-01-20 21:46:57 +08:00
Carter Li 0eb76e9636 Battery (macOS): improve manufacture info detection 2024-01-20 21:38:24 +08:00
李通洲 8b1ee64a3e GPU (macOS): fix gpu type detection 2024-01-20 20:57:33 +08:00
李通洲 b0acf168bf Doc: update changelog 2024-01-20 20:14:56 +08:00
李通洲 7ddc207574 Percentage: add options --percent-color-* 2024-01-20 20:06:42 +08:00
李通洲 d1a791b333 Global: make threshold of percentage colors configurable
Fix #689
2024-01-20 18:40:12 +08:00
李通洲 62ca495155 Percentage: prepare to make threshold configurable 2024-01-20 14:10:56 +08:00
李通洲 e7974a7cea Percentage: refactor function names 2024-01-20 13:49:04 +08:00
李通洲 24cb83dd18 Bluetooth / Gamepad / Sound: support percentage number formatting 2024-01-20 13:48:42 +08:00
李通洲 da5c44b3d0 Percentage: simplify usage of ffAppendPercentBar 2024-01-20 13:27:55 +08:00
李通洲 bd71aa931f Global: rename common/bar to common/percent 2024-01-20 11:28:38 +08:00
李通洲 4d1f242e1d Terminal (Windows): tidy 2024-01-19 22:23:32 +08:00
李通洲 d810245d55 Doc: update changelog 2024-01-19 21:54:44 +08:00
李通洲 06181ec433 Terminal (Windows): default default terminal to conhost 2024-01-19 21:54:44 +08:00
李通洲 8404ae034f Locale: improve detection
Linux: always use `setlocale`, fix #688
Windows: don't append `UTF-8`
2024-01-19 21:15:05 +08:00
李通洲 8e7d465333 Fastfetch: create sub folders when writing config file
Fix #690
2024-01-19 21:01:02 +08:00
李通洲 87813b3306 Shell: detect associated TTY 2024-01-19 16:43:08 +08:00
李通洲 9610a1ab23 TerminalShell (Windows): simplify nested shell detection by looking up GUI objects 2024-01-19 15:00:10 +08:00
李通洲 5f14781970 TerminalShell (Windows): set exePath 2024-01-19 14:40:07 +08:00
Carter Li 356488be0c TerminalShell (FreeBSD): detect real exe path 2024-01-19 14:40:07 +08:00
Carter Li e013c87890 TerminalShell (Linux): detect real exe path 2024-01-19 14:40:07 +08:00
李通洲 7d78d92a92 TerminalShell (macOS): detect full exe path 2024-01-19 14:40:07 +08:00
李通洲 06af39835a Terminal: don't use login as terminal process; set ppid 2024-01-19 14:40:07 +08:00
Carter Li eee8fb78d2 Shell (FreeBSD): detect arg0 instead of exe path 2024-01-19 14:40:07 +08:00
Carter Li 413f91260d Processes (FreeBSD): don't count sub-threads as processes 2024-01-19 14:40:07 +08:00
李通洲 a44daa04d6 Shell (Windows): better support xonsh detection 2024-01-18 18:08:08 +08:00
李通洲 d6cb405afe Release: v2.6.1 2024-01-18 15:31:36 +08:00
李通洲 b2a853cb6e Doc: update changelog 2024-01-18 15:28:49 +08:00
李通洲 0168f2e9a8 Shell: improve xonsh version detection 2024-01-18 15:27:31 +08:00
李通洲 3992d85eb6 CPU (Linux): show vendor if no model name available 2024-01-18 15:16:46 +08:00
李通洲 5096180e92 CPU (Linux): don't access out-of-bound memory 2024-01-18 15:06:47 +08:00
李通洲 947d2ff0a9 Processing (Linux): return error when command is not found 2024-01-18 14:54:14 +08:00
李通洲 1e4f174415 Shell (macOS): improve handling of xonsh 2024-01-18 14:07:29 +08:00
李通洲 2808b1a653 TerminalShell: improve xonsh version detection 2024-01-17 23:45:39 +08:00
李通洲 c749f214e0 Global: silence warnings when building in 32bit environments 2024-01-17 23:12:55 +08:00
Carter Li d0d9831d41 Merge pull request #686 from fastfetch-cli/dev
Release v2.6.0
2024-01-17 15:20:56 +08:00
李通洲 b3945e277c Global: review code 2024-01-17 15:06:52 +08:00
李通洲 9f77851176 JsonSchema: make it a valid json document 2024-01-17 14:08:31 +08:00
李通洲 963eaa5395 Release: v2.6.0 2024-01-17 14:02:07 +08:00
李通洲 07dfe57386 Doc: update changelog 2024-01-17 14:00:55 +08:00
Carter Li a3c0085e2b Sound: tidy 2024-01-17 13:31:34 +08:00
Carter Li c8f28e4c79 Sound (FreeBSD): don't use mixer.h
It's only supported in FreeBSD 14 and later
2024-01-17 10:22:56 +08:00
Carter Li 861eea5899 Sound (FreeBSD): new impl; drop pulseaudio dep 2024-01-16 17:40:41 +08:00
李通洲 1227799a38 Vulkan: print platformApi in JSON format 2024-01-15 18:14:40 +08:00
李通洲 35d1497053 Doc: update changelog 2024-01-15 15:48:39 +08:00
李通洲 ea3734f004 Locale (Windows): fix typo 2024-01-15 15:48:32 +08:00
李通洲 5d35dade60 DisplayServer (Windows): don't detect unknown display type as external 2024-01-15 15:22:33 +08:00
李通洲 0c844fc342 FFstrbuf: don't crash with ffStrbufInitStatic(&buf, NULL) 2024-01-15 15:22:33 +08:00
李通洲 c1ed0a4e91 Locale (Windows): print standard format 2024-01-15 15:22:33 +08:00
李通洲 e1af6fc0fe Locale: display only LC_MESSAGES if available, which is used by gettext 2024-01-15 14:27:29 +08:00
李通洲 c1d41a36bb CMake: fix build in macOS with -DENABLE_SYSTEM_YYJSON 2024-01-15 14:21:23 +08:00
李通洲 958bde228b Doc: fix typo 2024-01-15 13:30:18 +08:00
李通洲 6655c446ba Revert "Image: silence compiler warnings"
This reverts commit afa0a7dac8.
2024-01-15 13:15:43 +08:00
李通洲 43657e8fd6 Doc: update changelog 2024-01-15 11:29:29 +08:00
李通洲 38f216291e CMake: use system <yyjson.h> in fastfetch.c and flashfetch.c too
Fix #684
2024-01-15 11:22:42 +08:00
Carter Li 01de158bba Vulkan: print instance version if no vulkan drivers found 2024-01-15 10:33:55 +08:00
李通洲 5a34b8d01f Vulkan: error out if no results detected 2024-01-15 09:39:03 +08:00
李通洲 afa0a7dac8 Image: silence compiler warnings 2024-01-15 09:13:14 +08:00
李通洲 974ee2ab0d TerminalShell: fix wezterm name pretty printing 2024-01-14 17:26:54 +08:00
李通洲 ab1e3db665 Shell (Linux): detect ash version 2024-01-13 23:39:17 +08:00
李通洲 95b64622c4 Terminal (Linux): fix detection 2024-01-13 23:39:17 +08:00
李通洲 d3c7529c45 Processing (Windows): don't use CreateEventW 2024-01-13 13:38:53 +08:00
李通洲 89db425a03 Gamepad (Windows): use nonblocking read to get battery information 2024-01-13 13:33:29 +08:00
apocelipes 269ad36df5 refactor(TerminalShell): changing recursion into loops 2024-01-12 23:56:04 +08:00
李通洲 22cdb1247f TerminalShell: tidy; use case senstive string comparation where meaningful 2024-01-12 21:21:42 +08:00
李通洲 905ed76ddd TerminalShell: split terminal and shell detection code further 2024-01-12 20:58:45 +08:00
李通洲 6da57d64c3 TerminalShell: split terminal detection and shell detection 2024-01-12 16:44:19 +08:00
李通洲 37e0a7b03f stringUtils: tidy 2024-01-11 16:27:53 +08:00
李通洲 0c65cdc1f5 GPU (macOS): detect memory usage 2024-01-11 10:11:50 +08:00
李通洲 653e689f18 GPU (macOS): tidy 2024-01-11 09:55:13 +08:00
李通洲 a8aaf605b1 Doc: update changelog 2024-01-10 19:04:47 +08:00
李通洲 5f638a67ed Battery: rename manufacturerDate to manufactureDate 2024-01-10 19:03:58 +08:00
李通洲 0645f559af Monitor: detect serial number and manufacture date 2024-01-10 19:01:54 +08:00
李通洲 f5a57ab747 Doc: update changelog 2024-01-10 14:48:47 +08:00
李通洲 92e05f7e38 Chassis: don't print useless version 2024-01-10 14:44:14 +08:00
李通洲 8ba031b761 Brightness (FreeBSD): don't print empty () 2024-01-10 14:22:56 +08:00
李通洲 fdb68669f4 Battery (macOS): support manufacture date detection 2024-01-10 13:26:54 +08:00
李通洲 12155e029b Battery (Linux): support manufacture date detection 2024-01-09 23:08:19 +08:00
李通洲 7926b74917 Battery: detect manufacturer date 2024-01-09 22:58:32 +08:00
Carter Li 61af59fc00 Battery (Linux): fix temperature detection 2024-01-09 16:34:04 +08:00
李通洲 bc52613410 Gamepad: rename identifier to serial number 2024-01-09 15:53:42 +08:00
李通洲 f84bb1ebe2 Smbios: silence compiler warnings 2024-01-09 15:46:19 +08:00
李通洲 a160bc8de5 Gamepad (macOS): detect manufacturer 2024-01-09 15:28:03 +08:00
Carter Li cb599c6f2a Display (FreeBSD): support resolution detection in console 2024-01-08 16:03:07 +08:00
Carter Li 5693700c16 Bios (FreeBSD): fix boot type detection on some weird platforms 2024-01-08 16:02:52 +08:00
Carter Li e8c067ff3d Wifi (Linux): don't print invalid information 2024-01-08 11:32:39 +08:00
Carter Li 80cc4e3f4a Host (Linux): detect serial number for Asahi Linux 2024-01-08 11:19:35 +08:00
李通洲 8e78fadbeb Gamepad: don't provide device names of XBox compatible controllers 2024-01-08 10:38:40 +08:00
李通洲 1215eb06ca Gamepad (Windows): support battery detection of NS Pro 2024-01-07 19:07:15 +08:00
李通洲 2aa899d83c Gamepad (Linux): support battery level detection of NS Pro controller 2024-01-07 17:59:50 +08:00
李通洲 cf096eb101 Gamepad (Windows): detect serial number and battery (PS4 controller) 2024-01-06 23:43:35 +08:00
李通洲 5b4a26393d Gamepad (Linux): detect battery capacity 2024-01-06 20:40:20 +08:00
李通洲 2ba878cbab Monitor (Linux): fix detection with Nvidia drivers
NVIDIA DRM driver reports `enabled` to be `disabled`
2024-01-06 19:12:36 +08:00
李通洲 0af40ab6a3 Settings (FreeBSD): don't append trailing \0 2024-01-06 18:47:16 +08:00
李通洲 b9777bec77 Chassis: detect serial number 2024-01-06 18:35:10 +08:00
李通洲 8801921d02 Smbios: trim spaces 2024-01-06 18:33:57 +08:00
李通洲 c0c32456e8 Board: detect serial number 2024-01-06 18:12:51 +08:00
李通洲 640fa146c1 CPU (Windows): only use smbios to detect maximum speed
Because some virtual machines report invalid information
2024-01-06 18:00:59 +08:00
李通洲 de91429e1a CI: fix build 2024-01-06 17:11:39 +08:00
李通洲 1621484c96 CPU (Windows): don't report 30GHz in VMware 2024-01-06 17:11:26 +08:00
李通洲 d8297d296e CPU (Windows): use ThreadCount if GetLogicalProcessorInformationEx() fails 2024-01-06 17:11:26 +08:00
李通洲 48bb82c8fb Board (Windows): use SMBIOS result 2024-01-06 17:11:26 +08:00
李通洲 c1c7f7b93f Bios (Windows): use SMBIOS result 2024-01-06 17:11:26 +08:00
李通洲 1d35811253 Windows: make SMBIOS data a singleton 2024-01-06 17:11:26 +08:00
李通洲 fe0b43d92d CPU (Windows): detect the actual maximum frequency 2024-01-06 17:11:26 +08:00
李通洲 446fe907d2 Smbios: add comments, tidy 2024-01-06 17:11:26 +08:00
李通洲 d578f1006c Host / Chassis (Windows): remove options --*-use-wmi 2024-01-06 17:11:26 +08:00
李通洲 33f3199383 Host / Chassis (Windows): parse SMBIOS data directly 2024-01-06 17:11:25 +08:00
李通洲 21f3875c4f Host (Windows): detect serial number and UUID 2024-01-06 17:11:25 +08:00
李通洲 6bcd75835e Host: rename properties 2024-01-05 20:38:29 +08:00
李通洲 24cec76251 Host (Linux): detect serial number and uuid 2024-01-05 16:33:52 +08:00
李通洲 f8ac56691f Host (FreeBSD): detect serial number and uuid 2024-01-05 16:32:34 +08:00
李通洲 810112cb26 Host (macOS): detect serial number and uuid 2024-01-05 16:29:38 +08:00
李通洲 2340c2afd7 Board (macOS): print internal name instead of model indentifier
and actually detect the vendor
2024-01-05 16:24:43 +08:00
李通洲 b6c8649cbf macOS: improve IO service related code generally 2024-01-05 15:00:50 +08:00
李通洲 92a6b01133 Brightness (Apple): code optimise and fix mem leaks 2024-01-05 13:20:47 +08:00
李通洲 396112e8ea PowerAdapter: simplify implementation and support serial number detection 2024-01-05 11:01:32 +08:00
李通洲 5eacd0bb8e Battery (Apple): use less hard coded strings 2024-01-05 11:01:32 +08:00
李通洲 ea3ea196aa Battery (Linux): simplify temp detection 2024-01-05 11:01:32 +08:00
李通洲 0e6be69eb8 GPU (Linux): try detect GPU type 2024-01-04 18:50:38 +08:00
李通洲 d69e19377e Doc: update changelog 2024-01-04 16:31:41 +08:00
李通洲 f4f466d4ba Battery: print serial number 2024-01-04 16:21:19 +08:00
李通洲 10b2fe13bd Battery (Windows): detect serial number 2024-01-04 16:20:48 +08:00
李通洲 b5dc4f59f1 Battery (macOS): detect serial number 2024-01-04 16:04:34 +08:00
李通洲 7c0b743c61 Merge remote-tracking branch 'origin/master' into dev 2024-01-04 15:33:16 +08:00
李通洲 6bd909c89d Doc: update changelog 2024-01-04 15:27:31 +08:00
李通洲 1fef41241a Presets: fix formatation 2024-01-04 15:27:31 +08:00
Carter Li 5c75e271ef PowerAdapter (Linux): add support 2024-01-04 15:16:51 +08:00
Carter Li b6b1993f62 Battery (Linux): code refactor, support serial number detection 2024-01-04 15:16:51 +08:00
Carter Li cd0109c382 Battery (Linux): remove option --battery-dir
It was added in c5c3cecb93 but there was no comment or issues linked to indicate why it was necessary.

`/sys/class/power_supply` is standardized in <https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-power>. I don't I want to support non-standard platform unless proper reason is given
2024-01-04 14:18:33 +08:00
Carter Li 6698283430 GPU: fix vendor detection for asahi 2024-01-04 10:29:02 +08:00
李通洲 83ce3e4554 Wallpaper (macOS): support Sonoma 2024-01-03 10:15:56 +08:00
李通洲 ff0f91dc3c macOS: fix mem leaks 2024-01-03 10:12:48 +08:00
李通洲 ab028964bf GPU (WSL): add missing FF_USE_PROPRIETARY_GPU_DRIVER_API macro guards 2024-01-02 18:47:06 +08:00
李通洲 21353b8256 CMake (GPU): change ENABLE_NVIDIA_GPU to ENABLE_PROPRIETARY_GPU_DRIVER_API 2024-01-02 10:49:03 +08:00
Viorel 0a1de91a29 Add option for NVIDIA GPU support 2024-01-01 22:18:03 +08:00
Carter Li b80da99fac Merge pull request #677 from fastfetch-cli/dev
Release: v2.5.0
2024-01-01 11:52:51 +08:00
李通洲 a95a80aa93 README: remove invalid info 2024-01-01 10:50:04 +08:00
AlbydS 553338b2bc Add more Linux distributions to installation guide
I added Alpine Linux, NixOS and openSUSE to the installation guide.
2024-01-01 10:29:57 +08:00
李通洲 a56c092a78 Release: v2.5.0
Happy new year!
2023-12-31 18:44:32 +08:00
李通洲 3f553b3266 Doc: update changelog 2023-12-31 18:43:44 +08:00
Souma cae4b1c657 chore(terminalshell_linux.c): Ignore cwterm as well as figterm
Since CodeWhisperer overrides the terminal environment.
2023-12-31 18:19:04 +08:00
李通洲 bb489f9af3 Common: get rid of detection/internal.h 2023-12-30 18:13:54 +08:00
李通洲 275b53c6c0 Vulkan: don't print software renderers 2023-12-30 18:12:21 +08:00
李通洲 adae31304d Media (macOS): tidy 2023-12-30 14:21:52 +08:00
李通洲 db6d5d7fd6 Windows: get rid of InitOnceExecuteOnce 2023-12-30 14:19:25 +08:00
Carter Li bce96cf3f0 Doc: update changelog 2023-12-29 23:35:47 +08:00
Carter Li 0707902532 PhysicalDisk (Apple): trim strings 2023-12-29 23:33:16 +08:00
李通洲 ef1d102e05 GPU (Windows): clean up vendor name 2023-12-29 23:13:44 +08:00
李通洲 c1f511c8f2 GPU: detect supported platform graphic API version 2023-12-29 23:13:44 +08:00
李通洲 0284f6bfd1 Font: tidy 2023-12-28 15:42:07 +08:00
李通洲 6d50f1efdd Doc: update changelog 2023-12-28 15:12:20 +08:00
李通洲 4066c0d9e8 PhysicalDisk (Windows): improve stability 2023-12-28 14:50:39 +08:00
李通洲 150e9fc650 PhysicalDisk: prettify interconnect type 2023-12-28 13:47:21 +08:00
李通洲 36bce8fb0e PhysicalDisk (macOS): fix a possible segfault 2023-12-28 13:41:40 +08:00
Carter Li e5e70c1d92 PhysicalDisk (Linux): prettify interconnect type 2023-12-28 10:31:28 +08:00
Carter Li 12065bcfb0 PhysicalDisk (Linux): display nvme namespace id if needed 2023-12-28 10:28:21 +08:00
Carter Li 73a30da7bc Disk (FreeBSD): detect partition name 2023-12-27 16:26:58 +08:00
Carter Li 01fb491289 PhysicalDisk (FreeBSD): detect NVMe connect type 2023-12-27 15:32:17 +08:00
李通洲 6c4a4bfe13 Disk (macOS): support name detection of iso volumes 2023-12-27 14:15:50 +08:00
Carter Li 62647c3cb9 PhysicalDisk (FreeBSD): add comments 2023-12-27 11:14:15 +08:00
Carter Li 42694042f5 PhysicalDisk (FreeBSD): fix read-only type detection 2023-12-27 11:03:01 +08:00
李通洲 d5997b9f29 Doc: document --physicaldisk-temp 2023-12-27 10:16:33 +08:00
李通洲 969a67ed0f PhysicalDisk (macOS): detect temp 2023-12-27 10:00:29 +08:00
李通洲 54bd4346ec Temps (macOS): rename functions 2023-12-27 08:46:49 +08:00
李通洲 17d6f84850 Temps (macOS): update sensors of M2X 2023-12-27 08:45:02 +08:00
李通洲 0972eb6986 PhysicalDisk: detect temp 2023-12-26 19:57:24 +08:00
李通洲 0ee892f2de Disk (Linux): simplify impl of detecting partition removable 2023-12-26 18:58:05 +08:00
Carter Li b1f54ab7a2 Battery (Linux): fix temp detection for asahi 2023-12-26 16:44:13 +08:00
Carter Li 5a372882fa Battery (Linux): tidy 2023-12-26 16:44:13 +08:00
李通洲 16d34b6933 Doc: update changelog 2023-12-26 15:50:48 +08:00
李通洲 f319a80dc5 CPU (Linux): if we failed to detect the number of physical cores, assume all logical cores are physical 2023-12-26 13:40:41 +08:00
李通洲 60f5cc9079 CPU (Linux): don't print - 2023-12-26 13:34:58 +08:00
Carter Li dd3b3f22ba CPU (Linux): detect multi cpu models by lscpu
Supports asahi linux
2023-12-26 11:20:40 +08:00
Carter Li e672e40f8b GPU: detect devices by OpenGL
which works for asahi linux
2023-12-26 11:19:33 +08:00
李通洲 91089a7fe9 PhysicalDisk (Windows): init variables 2023-12-25 20:02:41 +08:00
李通洲 677f39420b PhysicalDisk: print product revision 2023-12-25 18:33:39 +08:00
李通洲 f2da8305c7 PhysicalDisk (Windows): detect revision 2023-12-25 18:22:04 +08:00
李通洲 060082885b PhysicalDisk: rename firmwareRev to revision 2023-12-25 18:21:23 +08:00
李通洲 3134a04b5c PhysicalDisk (Linux): don't append diskseq 2023-12-25 18:12:02 +08:00
李通洲 d3bcef61da PhysicalDisk (macOS): detect firmware revision 2023-12-25 16:40:59 +08:00
Carter Li b2cabd2af7 PhysicalDisk (Linux): detect firmware revision 2023-12-25 16:32:34 +08:00
Carter Li 5e85864ab0 PhysicalDisk (FreeBSD): detect read-only 2023-12-25 14:49:49 +08:00
李通洲 cb68dccd0e GPU (AMD): fix a silly bug 2023-12-25 14:47:12 +08:00
李通洲 3b6d5468da PhysicalDisk (macOS): detect read-only 2023-12-25 14:47:12 +08:00
李通洲 350388295d Doc: fix --help messages 2023-12-25 14:47:12 +08:00
apocelipes e7aa6c3757 fix(Battery): fix overflow and uninitializations of battery cycle counts 2023-12-25 06:45:47 +00:00
李通洲 c100e0dff7 PhysicalDisk (Windows): detect CDROMs; detect read-only 2023-12-24 23:27:57 +08:00
李通洲 02999ae4bf PhysicalDisk (Linux): detect readonly 2023-12-24 22:34:45 +08:00
李通洲 b5a01400e9 PhysicalDisk (Linux): detect more interconnect type 2023-12-24 22:31:36 +08:00
李通洲 ef8bd63075 PhysicalDisk (Linux): remove trailing spaces 2023-12-24 21:33:57 +08:00
李通洲 58e8403e16 Disk (Linux): be more careful to detect external type 2023-12-24 20:53:11 +08:00
李通洲 34b0bbac26 PhysicalDisk (Linux): be more careful to detect connection type 2023-12-24 20:52:05 +08:00
李通洲 97c6966939 Disk (Linux): detect subvolume first
Fix #674
2023-12-24 20:32:43 +08:00
李通洲 be38182ab2 Disk (WSL): fix Windows volume detection 2023-12-24 19:42:10 +08:00
李通洲 d2d4ee89d8 GPU (WSL): fix gpu temp detection for nvidia cards 2023-12-24 19:41:20 +08:00
apocelipes 113b1b8fc2 fix: fix trailing space 2023-12-23 02:55:14 +00:00
Carter Li cf98e6f5a1 Global: remove unexpected trailing line endings
Ref: https://github.com/fastfetch-cli/fastfetch/pull/671#issuecomment-1867777472
2023-12-23 00:19:50 +08:00
apocelipes e85a4b9ff5 refactor(IO): clean up ffAppendFDBuffer
for 2 reasons:

- Simplify the Code.
- ffAppendFDBuffer can't make assumptions about how the read data will
  be processed, so the trim calls are inappropriate.
2023-12-22 11:49:57 +00:00
FilippoULIVO b7935aa238 Update README.md 2023-12-22 11:06:00 +00:00
李通洲 a13520c5ff 3rdparty: remove unused types in amd_ags and make it complies in C
Ref: https://github.com/GPUOpen-LibrariesAndSDKs/AGS_SDK/issues/48
2023-12-21 19:20:35 +08:00
李通洲 dfb0eecf86 3rdparty: add amd_ags 2023-12-21 18:52:38 +08:00
李通洲 c5695542b2 CI: generate sha256sum for source tarballs
Ref: https://github.com/ncipollo/release-action/issues/400
2023-12-21 10:31:25 +08:00
李通洲 a1d81b4964 fastfetch: fix compiler warnings 2023-12-21 09:52:20 +08:00
李通洲 72ed11ec9e 3rdparty: oops 2023-12-20 22:23:02 +08:00
李通洲 1c5179d3b0 GPU (Intel): actually detect real time clock frequency 2023-12-20 22:19:15 +08:00
李通洲 adc506d2b3 GPU: fix clock frequency detection and overall tidy 2023-12-20 19:13:00 +08:00
apocelipes b2236cc046 refactor(TerminalFont): use ffSearchUserConfigFile 2023-12-20 10:28:51 +00:00
apocelipes 3040bc38cb refactor(WMTheme): use ffSearchUserConfigFile 2023-12-20 10:28:51 +00:00
apocelipes b9368ac20d feature(IO): support searching user's config file from configDirs 2023-12-20 10:28:51 +00:00
Carter Li a4f5a9af03 Brightness (Linux): show meaningfull name on asahi 2023-12-20 16:44:30 +08:00
李通洲 f8be6322df GPU: rename use-nvml to driver-specific
Because we are supporting drivers other than NVML
2023-12-20 15:32:55 +08:00
李通洲 4a1bbb6a03 GPU: huge improvement of driver specific detection code 2023-12-20 14:45:27 +08:00
李通洲 961e9a6a5f GPU (Windows): detection with intel driver (WIP) 2023-12-20 00:49:56 +08:00
李通洲 2f4b210f33 CI: generate sha256sum 2023-12-19 18:48:38 +08:00
李通洲 456a58c8f5 fastfetch: default preset names to .jsonc
Fix #666
2023-12-19 18:48:38 +08:00
李通洲 b8b15c5170 Wifi (macOS): support most auth types 2023-12-19 18:48:38 +08:00
apocelipes 61485cb133 refactor(WMTheme): clean up detectOpenbox
Simplify the code and implement stricter checking of xml contents.
2023-12-19 08:31:57 +00:00
Carter Li 5ede47fede Merge pull request #665 from fastfetch-cli/dev
Release v2.4.0
2023-12-18 23:02:03 +00:00
李通洲 d84ae91f59 Release: v2.4.0 2023-12-18 23:55:11 +08:00
apocelipes 70160d324f fix(DiskIO, PhysicalDisk): fix readlink 2023-12-18 14:31:05 +00:00
李通洲 600f6c7f24 Image: don't dlclose(imageMagick)
Fix: #552
2023-12-18 21:25:15 +08:00
李通洲 11b1b97567 IO: only retry when open() error is ENOENT / ERROR_PATH_NOT_FOUND
Close: #663
2023-12-18 21:08:29 +08:00
李通洲 4ae0c43c6f IO: remove support of FF_PATHTYPE_LINK 2023-12-18 20:49:32 +08:00
李通洲 e89d475a3b Presets: remove flag based config files 2023-12-18 16:13:45 +08:00
李通洲 4f3cd46f96 Presets: rename all flag based files to *.conf 2023-12-18 16:09:24 +08:00
李通洲 c076f5ae98 Github: update issue templates 2023-12-18 16:04:56 +08:00
李通洲 064d7d3c3a Doc: update changelog 2023-12-18 15:58:01 +08:00
李通洲 9937eeab1d Logo (Builtin): add EshanizedOS 2023-12-18 15:57:35 +08:00
李通洲 e8326306f8 Doc: add module physical disk 2023-12-18 15:53:15 +08:00
李通洲 89bc7eb015 DiskIO: move device info detected in PhysicalDisk module 2023-12-18 15:12:52 +08:00
李通洲 3cd81ec3ad PhysicalDisk: add new module 2023-12-18 15:12:52 +08:00
李通洲 0f497a53ad DiskIO (macOS): detect serial number and removable 2023-12-18 09:57:19 +08:00
Carter Li 569883a1a1 DiskIO (FreeBSD): detect disk serial number 2023-12-18 09:01:33 +08:00
李通洲 04a41cbd6b DiskIO (Windows): don't use registry 2023-12-17 21:49:54 +08:00
李通洲 4e4246a46a DiskIO (Windows): fix segfault and memleak 2023-12-17 19:40:24 +08:00
李通洲 c3a28064f6 DiskIO: tidy 2023-12-17 19:29:45 +08:00
李通洲 ce9f9ed7ed Windows: try fixing --no-buffer 2023-12-17 19:04:49 +08:00
李通洲 fb8c7d6e4a DiskIO: add property removable 2023-12-17 18:40:41 +08:00
李通洲 70f39e641c DiskIO (Windows): improve device name detection 2023-12-17 18:24:01 +08:00
李通洲 1dbd8474c2 DiskIO (Linux): fix serial number detection 2023-12-17 17:27:38 +08:00
李通洲 e7c787159a DiskIO: print serial number in json format
Always init serial property
2023-12-17 13:51:17 +08:00
李通洲 9339a0fb4e DiskIO (Windows): detect serial number 2023-12-17 13:43:52 +08:00
Carter Li b692b759c7 DiskIO (Linux): detect interconnect more aggressively 2023-12-17 12:52:34 +08:00
李通洲 529f94c64a DiskIO (Linux): better handling virtual devices 2023-12-17 12:21:12 +08:00
李通洲 e071a1eeb2 Disk (Linux): improve removable type detection 2023-12-17 12:13:28 +08:00
李通洲 3400e40e47 DiskIO (Linux): detect device serial number 2023-12-17 11:48:59 +08:00
李通洲 d32125e988 DiskIO (Linux): improve device name detection 2023-12-17 11:47:05 +08:00
李通洲 b3484088e9 FFPlatform (Linux): tidy 2023-12-17 11:46:28 +08:00
Carter Li f91a8aea4d DiskIO (Linux): improve detection
1. Ignore `dm-*`
2. Add devices that don't have disk ids
3. Fix  device size detection
2023-12-17 10:39:25 +08:00
Carter Li 335022e034 SMBIOS: ignore more meaningless values 2023-12-17 09:10:11 +08:00
Carter Li 8fa073b1e4 DisplayServer (Linux): test for status instead of enabled 2023-12-17 01:00:37 +08:00
李通洲 10e1753c03 DisplayServer (Linux): better handling abnormal situations
Try fix #660
2023-12-17 00:41:59 +08:00
李通洲 224a6a9881 TerminalShell: code cleanup 2023-12-15 14:29:51 +08:00
李通洲 e804dfc49e Memory (macOS): align algo of memory usage counting to stats
Which seems to print the same result of neofetch
2023-12-14 16:13:05 +08:00
李通洲 8048101eca Doc: fix documentation of --ds-force-drm 2023-12-14 16:13:05 +08:00
Horst G. Burkhardt 833727f333 remove unnecessary escaping for Adelie logo 2023-12-14 15:15:52 +08:00
李通洲 8ed5d30b3e Wifi (Windows): use less magic numbers 2023-12-13 19:33:20 +08:00
Carter Li f62cdff924 README: add start history 2023-12-13 02:56:13 -06:00
Carter Li 25a792743b WMDE: tidy 2023-12-12 18:22:20 +08:00
Carter Li b63e6a3053 DE (Linux): add support for CDE
Fix #658
2023-12-12 18:20:02 +08:00
李通洲 a565dcfb9e Doc: update changelog
Fix: #655
2023-12-12 10:12:12 +08:00
Carter Li 453f4757ed DE (FreeBSD): support detection with processes 2023-12-12 10:10:08 +08:00
李通洲 0555fb97e8 TerminalShell (Linux): tidy 2023-12-12 09:51:09 +08:00
李通洲 663d568927 DE (Linux): fix xfce4 version detection 2023-12-11 16:36:12 +08:00
李通洲 165c213ed0 FFstrbuf: don't crash with ffStrbufAppendNC(&str, 0, 'c') 2023-12-11 15:21:16 +08:00
李通洲 a28dc8a9bf DisplayServer (Linux): support --ds-force-drm sysfs-only 2023-12-11 13:25:58 +08:00
李通洲 f20b6d4387 Temps (macOS): support Apple M3 2023-12-08 16:10:10 +08:00
李通洲 4925222dab CI: run basic modules only in FreeBSD 2023-12-08 10:58:11 +08:00
李通洲 77cc0c61d7 Doc: update changelog 2023-12-08 10:28:03 +08:00
李通洲 a19888bb33 CI: don't run cpuusage in FreeBSD, which seems to have issues when running in VM 2023-12-08 10:28:03 +08:00
李通洲 40aa4a60d6 Packages: improve performance of pkg and rpm detection 2023-12-08 09:49:17 +08:00
Carter Li c4824b2b5d Merge pull request #654 from fastfetch-cli/dev
Release v2.3.4
2023-12-08 00:10:31 +08:00
李通洲 dcbda6c0d5 Release: v2.3.4 2023-12-08 00:04:38 +08:00
李通洲 91e4e94aaa CMake: fix --help doesn't work when building without python3 2023-12-07 23:51:56 +08:00
apocelipes 1504e26e38 optimize(Packages): optimize reading large files
Using less syscalls and processing data in memory
makes getNumStringsImpl ~300% faster.

The code is much simpler.
2023-12-07 20:32:14 +08:00
李通洲 a9c5c2892c Memory (Linux): Use MemAvailable if available 2023-12-07 16:30:10 +08:00
Carter Li 923997f0a2 Merge pull request #651 from fastfetch-cli/dev
Release v2.3.3
2023-12-07 09:39:07 +08:00
李通洲 0182e32f00 Release: v2.3.3 2023-12-07 09:33:26 +08:00
李通洲 bd40205427 Help: fix json text loading 2023-12-06 23:55:34 +08:00
Carter Li 30b9f95b49 Merge pull request #649 from fastfetch-cli/dev
Release v2.3.2
2023-12-06 11:20:24 +08:00
李通洲 74b9fd01ff CI (macOS): try fixing compiling 2023-12-06 11:06:52 +08:00
李通洲 03f4ffb9d7 Release: v2.3.2 2023-12-06 10:48:06 +08:00
李通洲 a00cb2aede CMake: install fish completion script 2023-12-06 10:38:55 +08:00
李通洲 6799076fa6 Logo (Builtin): fix compiling 2023-12-06 10:30:56 +08:00
李通洲 573a315d61 Help: tweaks 2023-12-06 10:29:28 +08:00
李通洲 0cd6cb841d Completion (Fish): fix fastfetch detection 2023-12-06 10:29:28 +08:00
xray_os af94cf4d0d fixing the name of my distro 2023-12-06 08:51:29 +08:00
Carter Li ac76107940 Merge pull request #647 from fastfetch-cli/dev
Release v2.3.1
2023-12-05 20:52:37 +08:00
李通洲 c25fe53251 Merge remote-tracking branch 'upstream/master' into dev 2023-12-05 20:50:10 +08:00
李通洲 4137b3829a Release v2.3.1 2023-12-05 20:48:09 +08:00
Viorel 0bb08049bf Fix man page install location 2023-12-05 20:41:20 +08:00
Carter Li 293576f6d6 Merge pull request #645 from fastfetch-cli/dev
Release 2.3.0
2023-12-05 18:45:02 +08:00
李通洲 0bc725c5f6 Release: v2.3.0 2023-12-05 15:56:10 +08:00
李通洲 c1c735001c Doc: update readme and changelog 2023-12-05 15:55:41 +08:00
李通洲 e350cce99e Logo: fix building on Windows 2023-12-04 20:32:46 +08:00
apocelipes 1c24cb3ebb refactor: simplify parsing 2023-12-04 19:47:34 +08:00
apocelipes 0662af17f4 fix(TerminalShell): fix reading procfs files 2023-12-04 19:47:34 +08:00
apocelipes 9fee532cb6 fix(CPUUsage): fix reading procfs files and simplify data parsing 2023-12-04 19:47:34 +08:00
apocelipes 57f88d2167 fix(Uptime): fix reading procfs files and simplify data parsing 2023-12-04 19:47:34 +08:00
apocelipes ed879ee53c fix(Swap): fix reading procfs files and simplify data parsing 2023-12-04 19:47:34 +08:00
apocelipes 6eae425679 fix(Memory): fix reading procfs files and simplify data parsing
Files in procfs are always changed by kernel.

It means if we read the data with more than one read syscall,
we could get an incorrect data which was broken by kernel.

A typical case about this problem was reported by psutil in
https://github.com/giampaolo/psutil/issues/2050

Using an big buffer let read reads the whole file can fix this.
psutil uses a 32K buffer while procps-ng uses a 8K buffer, i think a 8K buffer is enough.
2023-12-04 19:47:34 +08:00
李通洲 182c90b22c CI: fix macOS (2nd try) 2023-12-04 19:12:58 +08:00
李通洲 2c2e0582a9 CI: try fixing macOS 2023-12-04 16:31:38 +08:00
李通洲 4216d40696 Doc: update changelog 2023-12-04 16:08:22 +08:00
李通洲 af6f395ba3 DiskIO: increase number of format args for disk size 2023-12-04 16:08:04 +08:00
李通洲 3fda6e425a Global: never leak fd to child processes 2023-12-04 15:14:40 +08:00
李通洲 82581aa9e4 Processing: increase buffer size 2023-12-04 15:10:58 +08:00
李通洲 6bd515fed4 Packages (macOS): rename port to macports 2023-12-04 15:07:13 +08:00
李通洲 20970c6b71 CMake: silence compiler warnings 2023-12-04 15:00:25 +08:00
李通洲 532007267c Logo (Builtin): add Ironclad 2023-12-04 14:55:10 +08:00
李通洲 87a4758497 Logo (Builtin): update parch 2023-12-04 14:49:43 +08:00
李通洲 6a9cce62ab Logo (Builtin): add Adelie 2023-12-04 14:47:28 +08:00
李通洲 2816ea3797 Readme: update badge links (v2) 2023-12-04 14:40:35 +08:00
李通洲 5144081971 Readme: update badge links 2023-12-04 14:39:03 +08:00
李通洲 ccfe961a1f DiskIO (FreeBSD): support disk name, size and physical type detection 2023-12-04 13:54:26 +08:00
李通洲 97211df285 DiskIO (macOS): detect disk size 2023-12-04 08:59:41 +08:00
apocelipes 4868517d53 optimize(IO): reduce memory usage during reading data from files to FFstrbufs
Avoid unnecessary calls of ffStrbufEnsureFree and only allocate
necessary memory.

In most cases, this will save 30% ~ 50% of memory used by ffAppendFDBuffer.
2023-12-03 19:57:49 +08:00
李通洲 2979bfe4ca DiskIO: detect physical drive size 2023-12-03 19:02:29 +08:00
李通洲 42fd1a9cd7 DisplayServer (FreeBSD): enable libdrm support 2023-12-03 12:10:52 +08:00
李通洲 36298b8e93 Swap (FreeBSD): fix impl 2023-12-01 23:23:29 +08:00
李通洲 7168cc2ef2 Completions (Fish): reduce external dependencies 2023-12-01 16:01:14 +08:00
apocelipes c398dc6c07 fix(Cursor): fix a memory leak detected by valgrind 2023-12-01 15:49:48 +08:00
李通洲 390801aee7 DisplayServer: fix build on FreeBSD 2023-11-30 20:25:23 +08:00
李通洲 e3f5563f8d DisplayServer (Linux): fix build for Ubuntu 20.04 (v2) 2023-11-30 20:05:51 +08:00
李通洲 4a54b20c68 DisplayServer (Linux): fix compiling on Ubuntu 20.04 2023-11-30 16:42:56 +08:00
李通洲 ea3d904bfe DisplayServer (Linux): improve performance for X11
Try fixing #634
2023-11-30 16:31:35 +08:00
李通洲 67f4b991d7 DisplayServer (Linux): use libdrm
Which correctly detects current mode ( instead of preferred mode ) and
supports refresh rate
2023-11-30 10:47:03 +08:00
apocelipes 53922779ba fix(Common): fixes for ffProcessAppendOutput
- Use pipe2 on Linux and BSDs, which can set all flags through a single syscall.
- macOS/darwin does not support pipe2, add a wrapper for it.
- Close pipes when fork() failed. These fds should be closed when
  the function returns.
- Set O_CLOEXEC at pipes, the exec() family of functions will close
  this fds automatically.
- Use _exit instead of exit. Exit calls the callbacks registered by atexit
  and flushes the stdio's buffer, which can lead to some unexpected behavior,
  especially after an exec syscall failure.
- Fix timeout.
- Not use non-blocking IO. because we only wait for one file, and cannot
  do other things during waiting.
2023-11-30 10:10:40 +08:00
apocelipes 1431cdcc83 fix(Terminal): make fastfetch works under ltrace and perf
Fastfetch incorrectly displays the terminal name as
"ltrace" or "perf" when debugging itself with ltrace and perf.

minor fix: remove duplicated ffStrbufClear since getShellVersion
already called it.
2023-11-28 23:22:51 +08:00
李通洲 968a43cb29 Monitor (Linux): don't report disabled monitors 2023-11-28 16:11:32 +08:00
李通洲 0c522bdc10 Display (Linux): don't report disabled displays when using DRM
Ref: #634
2023-11-28 07:59:28 +00:00
李通洲 5db3c903e5 Host (macOS): fix build 2023-11-28 15:05:10 +08:00
李通洲 91c23c533a Host (macOS): add general method to query product name 2023-11-28 13:36:19 +08:00
李通洲 00721630ce Board (Apple): use machine model indentifier as motherboard name 2023-11-28 13:36:19 +08:00
李通洲 167b130011 Uptime (Linux): fix maybe uninitialized variable errors 2023-11-27 20:52:14 +08:00
Sunderland93 aca502e9a0 Add TileOS logo 2023-11-27 19:17:00 +08:00
apocelipes 36f18d0961 optimize(IO): speed up createSubfolders
Avoiding unnecessary ffStrbufAppendC calls to speed up createSubfolders.

Now it finds and adds a subdirectory at a time instead of just appending a char.
2023-11-27 19:16:05 +08:00
李通洲 e67a6856ce Completion (Fish): use fastfetch --help-raw 2023-11-27 15:37:01 +08:00
李通洲 3a0b132001 TerminalFont: support alacritty.toml
Fix #631
2023-11-27 10:12:22 +08:00
李通洲 f63f31db0a Memory (Linux): fix compiler warnings 2023-11-25 19:40:36 +08:00
李通洲 96d60184d5 Memory (Linux): try improving performance 2023-11-24 10:12:34 +08:00
李通洲 919bd8231e Swap (Linux): don't use syscall
Fix #620
2023-11-24 10:12:22 +08:00
李通洲 41fed1da5f Uptime (Linux): don't use syscall
Fix #620
2023-11-24 10:12:10 +08:00
李通洲 a846780382 py 2023-11-22 16:36:05 +08:00
李通洲 c10d7a8233 Help: small fixes 2023-11-22 15:36:48 +08:00
李通洲 cdcc976cd3 Help: small improvements 2023-11-22 09:32:38 +08:00
李通洲 b52e812c2c Help: support --help-raw 2023-11-22 09:14:27 +08:00
李通洲 aa45945b57 Logo (Builtin): add Peropesis 2023-11-22 09:10:44 +08:00
李通洲 eea6e81276 Logo (Builtin): add XrayOS
Ref: https://github.com/dylanaraps/neofetch/pull/2413
2023-11-22 09:07:00 +08:00
李通洲 0bac93093b Help: fix typo 2023-11-21 21:39:10 +08:00
李通洲 7bcb015a06 Help: print command specific help message 2023-11-21 16:39:38 +08:00
李通洲 02bdcd355c Help: minify JSON string 2023-11-21 15:11:49 +08:00
李通洲 fa90e01bc5 Helo: correctly display italic text 2023-11-20 22:51:01 +08:00
李通洲 1dec514129 Help: fix colors 2023-11-20 22:04:03 +08:00
李通洲 f81d09bddc Help: fix typo 2023-11-20 18:28:12 +08:00
李通洲 03916b6a1d Help: convert to parsable JSON format 2023-11-20 16:37:59 +08:00
李通洲 5338583c48 Logo (Chafa): accept enum strings instead of numbers 2023-11-20 14:27:48 +08:00
李通洲 6c492882a3 Doc: fix some bugs 2023-11-20 14:27:03 +08:00
李通洲 98c7c7ed4f Completions (Bash): remove unsupported flags 2023-11-20 14:26:15 +08:00
李通洲 a7a96a8954 Fastfetch: remove config-system & config-user 2023-11-19 11:15:06 +08:00
Carter Li 1a5044add9 Merge pull request #626 from mame98/spellcheck
Spellchecking
2023-11-19 00:13:36 +08:00
Marius Messerschmidt 7befd71069 Config: remove misspelled 'integrated' 2023-11-18 16:46:08 +01:00
Marius Messerschmidt 3d44a1befe Spelling: add new entries to .codespellrc 2023-11-18 15:52:28 +01:00
Marius Messerschmidt 57e734e628 Spelling: fix typo in Manpage 2023-11-18 15:48:02 +01:00
Marius Messerschmidt 3eadd332bb Workflows: add spellcheck job 2023-11-18 15:47:22 +01:00
Marius Messerschmidt 825db4fead Spelling: add .codespellrc 2023-11-18 15:47:22 +01:00
Marius Messerschmidt ad5be0f0c2 Spelling: fix spelling of files in remaining files 2023-11-18 15:47:22 +01:00
Marius Messerschmidt 6d22a76946 Spelling: fix spelling of files in src/modules/ 2023-11-18 15:47:22 +01:00
Marius Messerschmidt 40e977be31 Spelling: fix spelling of files in src/detection/ 2023-11-18 15:47:22 +01:00
Marius Messerschmidt 29d93d5c67 Spelling: fix spelling of files in src/common 2023-11-18 15:47:22 +01:00
Marius Messerschmidt 9b2c59936f Spelling: fix spelling of help files 2023-11-18 15:47:22 +01:00
Marius Messerschmidt bb02ba0b2e Spelling: fix spelling of CMakeLists.txt 2023-11-18 15:47:22 +01:00
Marius Messerschmidt 0987f68409 Spelling: fix spelling in top-level documentation files 2023-11-18 15:47:22 +01:00
Marius Messerschmidt 647403fc30 Add manpage (#625)
* Manpage: add initial manpage template

* CMake: integrate manpage installation to CMake

* Manpage: add details about JSONC based config files

* Manpage: minor cleanups

* Manpage: fix --print-structure

* Manpage: fix --structure

* help: change load-config -> config

* Manpage: remove legacy config file description

* Manpage: remove --print-config- commands

* help: remove --print-config- commands

* Manpage: change migrate-config to gen-config

* Manpage: add -h as shortcut for help

* Manpage: escaped all '-'
2023-11-18 22:18:08 +08:00
Carter Li 854a7cfeba Merge pull request #624 from mame98/cleanup
Minor cleanups reported by clang-tidy
2023-11-18 21:05:21 +08:00
Marius Messerschmidt f78f6ceb54 fixup! ClangTidy: avoid reserved identifier names 2023-11-18 12:31:57 +01:00
Marius Messerschmidt 975081aa27 ClangTidy: make pid pointer const 2023-11-18 12:31:57 +01:00
Marius Messerschmidt b0d3e7ef9e ClangTidy: avoid implicit widening of multiplication result 2023-11-18 12:31:57 +01:00
Marius Messerschmidt 6fe0eb5677 ClangTidy: avoid different parameter names for same function 2023-11-18 12:31:57 +01:00
Marius Messerschmidt 42c03b2383 ClangTidy: avoid reserved identifier names 2023-11-18 12:31:57 +01:00
Marius Messerschmidt b1319b34e7 ClangTidy: remove duplicated includes 2023-11-18 12:31:57 +01:00
Marius Messerschmidt 5162b4fdec ClangTidy: add missing unsigned specifier 2023-11-18 12:31:57 +01:00
Marius Messerschmidt 42f647378a ClangTidy: remove redundant expression 2023-11-18 12:31:57 +01:00
李通洲 97b3938dd5 Doc: update changelog
Fix: #623
2023-11-18 16:41:40 +08:00
李通洲 2e46b5932e Terminal (Windows): ignore the shell warpper servercoreshell 2023-11-18 16:38:01 +08:00
李通洲 4510ef7e1c Shell (Windows): tidy 2023-11-18 16:24:23 +08:00
李通洲 36bf978dc1 Bluetooth (Windows): remove hard dep of bthprops
Also fix resource leaks and better error message

Ref: https://github.com/fastfetch-cli/fastfetch/issues/623#issuecomment-1815682290
2023-11-18 16:09:54 +08:00
李通洲 7f999dfaaf OpenGL (Windows): remove hard dep of opengl32
Ref: https://github.com/fastfetch-cli/fastfetch/issues/623#issuecomment-1815682290
2023-11-18 15:40:09 +08:00
李通洲 6f6a68f7e5 Brightness (Windows): remove hard dep of dxva2
Ref: https://github.com/fastfetch-cli/fastfetch/issues/623#issuecomment-1815682290
2023-11-18 15:25:47 +08:00
Marius Messerschmidt 960bbfef59 ClangTidy: fix misplaced cast 2023-11-17 22:18:19 +01:00
李通洲 cabd5899f7 Doc: update help.txt 2023-11-17 15:39:25 +08:00
李通洲 730c0d1c92 Fastfetch: print module description for --list-modules 2023-11-17 14:12:57 +08:00
李通洲 ce6041938a CI: fix build 2023-11-16 18:49:27 +08:00
李通洲 998193b014 Fastfetch: support -c none; remove --load-user-config 2023-11-16 16:41:08 +08:00
李通洲 f8ba138b8d Completion: tidy 2023-11-16 14:21:24 +08:00
李通洲 3f9462d7c8 Package (macOS): try supporting nix 2023-11-16 10:04:17 +08:00
李通洲 413984963e TerminalShell: support oils and elvish 2023-11-15 16:30:46 +08:00
李通洲 5aab0e2dd9 Completion (Fish): built-in logos auto-completion 2023-11-15 16:21:07 +08:00
李通洲 1ba5e6e8f7 Doc: better document for logo types 2023-11-15 10:38:32 +08:00
李通洲 2a53b012ea Completion (Fish): clean up 2023-11-14 16:36:08 +08:00
李通洲 5d44efbf62 Colors: don't use background color
It causes some weird behavior on some old terminals.

Ref: https://www.reddit.com/r/HomeServer/comments/16ys32a/guess_the_power_consumption_of_ryzen57600x/
2023-11-14 10:01:29 +08:00
李通洲 6ad83af2b5 Host: clean up 2023-11-14 09:59:15 +08:00
李通洲 fceb19affe Fastfetch: change the order of loading config files 2023-11-14 09:58:42 +08:00
李通洲 ee7d3d471e Completions (Fish): inital support 2023-11-13 22:44:58 +08:00
李通洲 8e9c571293 Flashfetch: simplify implementation 2023-11-13 16:36:25 +08:00
李通洲 a44b8264af Fastfetch: remove the old function of --gen-config
The file `config_user.txt` has not been maintained for long. Let's remove it.
2023-11-13 10:32:45 +08:00
李通洲 84a5a4033e Fastfetch: parse some switches in advance 2023-11-13 10:32:45 +08:00
李通洲 f2fc92dbf7 Brightness (Linux): better ddcutil 2.x compatibility 2023-11-12 10:47:04 +08:00
李通洲 2af338f425 CI (Linux): build with ddcutil and remove unused deps 2023-11-09 14:24:49 +08:00
李通洲 41aaaa3429 Global: silence compiler warnings 2023-11-09 13:46:45 +08:00
李通洲 f9597eba39 Global: remove #ifndef FF_INCLUDED_* guards 2023-11-09 13:46:45 +08:00
Mohammed Keyvanzadeh b4cd47cbc4 src: end va_list before returning (#618)
Explicitly end the `va_list` before returning in the `ffStrbufSetF()`
function as `va_list`s are not ended implicitly.
2023-11-08 20:16:44 +08:00
Carter Li 22de71efeb Merge pull request #617 from fastfetch-cli/dev
Release v2.2.3
2023-11-08 12:33:16 +08:00
李通洲 ac654ff346 Host (macOS): update the latest models 2023-11-08 10:43:17 +08:00
李通洲 df2fdf05e6 Release v2.2.3 2023-11-08 10:14:31 +08:00
李通洲 788307e98d Doc: update changelog 2023-11-08 09:11:16 +08:00
李通洲 f93341ac61 TerminalShell: fix terminal name detection on NixOS
oops. No one report that...
2023-11-08 09:02:52 +08:00
李通洲 3e0d97db2e Platform: detect system page size 2023-11-08 00:10:16 +08:00
李通洲 864e707224 LocalIP (Android): don't set --default-route-only to true by default on Android
As we can't detect default route on that platform
2023-11-07 20:17:08 +08:00
李通洲 c42b68404f Logo (Image): try improving performace of base64 encoding 2023-11-07 19:04:16 +08:00
Carter Li 18374467e6 Merge pull request #615 from fastfetch-cli/dev
Release v2.2.2
2023-11-07 10:02:19 +08:00
李通洲 499e6c85a0 Battery (Windows): slilence compiler warnings 2023-11-07 09:59:00 +08:00
李通洲 0610faf1be Release v2.2.2 2023-11-07 09:47:37 +08:00
李通洲 778c6f0513 Doc: update changelog 2023-11-07 09:03:01 +08:00
李通洲 c55ba2685f Battery (macOS): add status Discharging to be consistant with other platforms 2023-11-07 08:56:07 +08:00
李通洲 aae66aa966 Logo (Image): fix spelling of --preserve-aspect-ratio
Fix #614
2023-11-07 08:49:22 +08:00
李通洲 a95b60167c Doc: fix typo in README
Fix #613
2023-11-07 08:37:29 +08:00
李通洲 f5b987dba9 Battery (Windows): detect cycle count 2023-11-06 19:40:40 +08:00
李通洲 f8eabdd8a6 Battry (Linux): try detecting cycle count and temperature 2023-11-06 19:08:17 +08:00
李通洲 5ab2c3456d Battery (Apple): better detection 2023-11-06 16:42:16 +08:00
李通洲 97d9ffd193 Bios: detect firmware type 2023-11-06 15:29:55 +08:00
李通洲 fa86bb1f0b CI (FreeBSD): update action version 2023-11-06 10:24:06 +08:00
李通洲 5b9c5ebb5a CI (Win64): improve speed 2023-11-06 10:11:51 +08:00
李通洲 56b03a93c5 CI (Linux): build with imagemagick7 2023-11-06 10:05:01 +08:00
李通洲 3b319f0a1e Global: add missing changes 2023-11-05 13:25:54 +08:00
李通洲 c3352d6d28 CI: always update dependencies explicitly
Fix macOS build
2023-11-05 13:25:13 +08:00
李通洲 f8426384d8 CI: print verbose logs when building 2023-11-05 13:02:48 +08:00
李通洲 8791281b48 CI: try fixing macOS build 2023-11-05 10:38:43 +08:00
李通洲 76ec8aff2e Doc: update changelog 2023-11-05 10:16:48 +08:00
李通洲 7660b0a091 Global: defaults percentType to 9 ( colored number ) 2023-11-05 10:11:53 +08:00
李通洲 7a8e484634 Global: prints LocalIp by default
Fix #611
2023-11-05 10:11:40 +08:00
李通洲 ed01272b91 LocalIP: detect netmask 2023-11-05 09:42:28 +08:00
Viorel 1c660caa85 Fix unitialized variables (#609)
Compiling with gcc 13 and -O3 -flto -Werror=uninitialized found two
possibly unitialized variables.

See also: https://bugs.gentoo.org/916722
2023-11-03 23:03:14 +08:00
李通洲 c241ead1d5 Logo (Builtin): update nixos_small, add nixos_old_small
Fix #608
2023-11-02 23:22:48 +08:00
Carter Li 168d96a182 Merge pull request #607 from fastfetch-cli/dev
Release v2.2.1
2023-11-02 15:34:16 +08:00
李通洲 2075761282 fastfetch: --help honors --pipe 2023-11-02 14:44:18 +08:00
李通洲 d59de1f158 Release v2.2.1 2023-11-02 14:35:16 +08:00
李通洲 d64716ab74 fastfetch: pretty printing --help 2023-11-02 14:11:06 +08:00
李通洲 0ffbb8c364 Doc: update help messages 2023-11-02 14:11:06 +08:00
李通洲 c29960abf2 Presets: fix regression #606 2023-11-02 09:32:58 +08:00
Carter Li 315cb24046 Merge pull request #604 from fastfetch-cli/dev
Fix CI of FreeBSD
2023-11-01 16:06:10 +08:00
李通洲 4cabc5684b CPUUsage: don't count NaN values 2023-11-01 15:55:13 +08:00
李通洲 256c9be19b CPUUsage: skip NaN when summarizing values 2023-11-01 15:49:51 +08:00
李通洲 1b3d713e50 CPUUsage: always print something 2023-11-01 15:36:13 +08:00
李通洲 6e816fca6e CPUUsage: don't hang on weird host
Try fixing CI of FreeBSD
2023-11-01 15:26:24 +08:00
李通洲 5a699af610 OS (macOS): improve performance 2023-11-01 15:24:52 +08:00
Carter Li 390119c592 Merge pull request #603 from fastfetch-cli/dev
Release v2.2.0
2023-11-01 14:04:08 +08:00
李通洲 11d7eec4db Revert "FreeBSD: debug"
This reverts commit 6508ccfc0d.
2023-11-01 12:22:28 +08:00
李通洲 f59be1faf2 Release v2.2.0 2023-11-01 11:29:03 +08:00
李通洲 7bc4c63eb4 Migration: don't overwrite existing files 2023-11-01 11:28:08 +08:00
李通洲 4bf9f524d9 Logo (Builtin): add Interix 2023-11-01 11:16:16 +08:00
李通洲 6508ccfc0d FreeBSD: debug 2023-11-01 09:52:15 +08:00
李通洲 d0a8d3cdc4 TerminalFont (Linux): early return 2023-11-01 09:42:52 +08:00
李通洲 494cc1493e TerminalFont (Linux): support xfce4-terminal 1.1.0+
Fixes #602
2023-11-01 09:40:49 +08:00
李通洲 761c649817 TerminalShell: better support for environment running with su 2023-11-01 08:55:00 +08:00
李通洲 a2f576f3e5 GPU (WSL): support nvml too 2023-11-01 00:10:24 +08:00
李通洲 3b9b03a086 FreeBSD: fix build 2023-10-31 23:45:38 +08:00
李通洲 ab51a209d7 CI: try fixing FreeBSD build 2023-10-31 22:53:06 +08:00
李通洲 38ac339011 WM: support WindowBlinds detection 2023-10-31 22:40:44 +08:00
李通洲 b4777fe73a Windows: silence compiler warnings 2023-10-31 22:40:44 +08:00
李通洲 b6e759f3a2 LocalIP / NetIO: make defaultRouteOnly defaults to true 2023-10-31 19:53:25 +08:00
李通洲 9ddefbc1a2 Doc: update README 2023-10-31 16:32:57 +08:00
李通洲 a16851f5de JsonConfig: update json schema; change most title to description 2023-10-31 15:47:55 +08:00
李通洲 8fe291d161 Doc: remove information of flag based configuration 2023-10-31 15:47:23 +08:00
李通洲 9ac50fc42f GPU: add more vendors 2023-10-31 15:11:22 +08:00
李通洲 c6e5221826 CMake: build with ASAN conditionally 2023-10-31 14:57:32 +08:00
李通洲 5b2006cd06 Global: get rid of locks
Psychological burden NO MORE
2023-10-31 14:42:45 +08:00
李通洲 d3f673dc6f Init: remove separate thread of displayserver and qt/gtk stuff detection
These threads are detached. If the main thread exits before the sub threads end, fastfetch may crash in various ways.

It barely benefits performance. `hyperfine` shows completely no difference between `--thread` enabled and disabled. Let's get rid of it.
2023-10-31 14:32:30 +08:00
李通洲 b99f444234 Global: remove --allow-slow-operations 2023-10-31 14:10:21 +08:00
李通洲 c504096181 Processing (Linux): fix hanging if a child process prints to both stdout and stderr 2023-10-31 14:06:08 +08:00
李通洲 c9ef47271a Brightness: fix flag --brightness-ddcci-sleep 2023-10-31 10:09:31 +08:00
李通洲 fc3891c913 DE: implement --de-slow-version-detection 2023-10-31 10:07:41 +08:00
李通洲 cd07354b6f Doc: update changelog and other docs 2023-10-31 09:50:54 +08:00
kojq fd5aeb2052 Update structure.txt (#600)
add swap information as default
2023-10-30 20:27:10 -05:00
李通洲 b1b583721a Logo (Builtin): add MainsailOS
Ref: https://github.com/dylanaraps/neofetch/pull/2407
2023-10-31 09:15:15 +08:00
李通洲 4c3372a886 Logo (Builtin): fix phyOS 2023-10-31 08:51:56 +08:00
李通洲 cf66679323 DE: move version detection code to separate files 2023-10-30 22:46:38 +08:00
李通洲 55b41144db WM: add flag --wm-detect-plugin 2023-10-30 16:34:35 +08:00
李通洲 ae34208247 Battery (Windows): add flag --battery-use-setup-api 2023-10-30 14:49:00 +08:00
李通洲 b462006280 Chassis (Windows): add flag --chassis-use-wmi 2023-10-30 14:31:19 +08:00
李通洲 485bcbf054 GPU: add flag --gpu-use-nvml 2023-10-30 13:46:51 +08:00
李通洲 2e30a57889 TerminalFont: always use kitten to detect kitty term fonts 2023-10-30 11:05:43 +08:00
李通洲 b439d9c203 Doc: we use Apple80211 instead of IO80211 2023-10-30 09:21:01 +08:00
李通洲 08a717f5f7 JsonConfig: more friendly error message 2023-10-30 09:14:13 +08:00
李通洲 3a84a1a5fa Packages (Windows): add option --packages-winget 2023-10-29 19:37:31 +08:00
李通洲 627d5fc659 JsonConfig: restructure some keys 2023-10-29 00:17:24 +08:00
李通洲 25849dc4bb Migration (Logo): fix --logo-color-num (v2) 2023-10-28 23:39:15 +08:00
李通洲 63032cd840 Doc: update help.txt 2023-10-28 23:02:28 +08:00
李通洲 2414246de9 Migration (Logo): fix --logo-color-num 2023-10-28 21:52:28 +08:00
李通洲 c52353b4b8 Vulkan: remove used GPU memory detection, which is unreliable
Ref: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_memory_budget.html#_description
2023-10-28 20:25:39 +08:00
李通洲 799628c083 GPU: guard nvml related code behind --allow-slow-operations 2023-10-28 17:23:49 +08:00
李通洲 38d5791d57 GPU: support memory, core count detection 2023-10-28 13:56:43 +08:00
李通洲 9d664e2b61 GPU (Linux): support driver version detection 2023-10-28 13:11:04 +08:00
李通洲 2eb21e3521 TerminalFont: fix memleaks 2023-10-28 13:00:45 +08:00
李通洲 bfe1265c44 Logo (Builtin): add azos
Ref: https://github.com/dylanaraps/neofetch/pull/2339
2023-10-27 22:57:16 +08:00
李通洲 dd3109cd89 GPU: better nvidia GPU temp detection 2023-10-27 21:16:03 +08:00
Carter Li 130d5a5202 Sound (macOS): fix no sound devices detected error on old macOS version 2023-10-27 17:35:28 +08:00
Carter Li cda4c62e9e macOS: fix building on old macOS version 2023-10-27 16:59:10 +08:00
李通洲 df245f32ec FFlist: add FF_LIST_GET
this macro can be safer to use than `ffListGet` because it detects wrong type convertion
2023-10-27 12:02:01 +08:00
李通洲 04409f4381 Wifi (macOS): better (or worse) support of security detection 2023-10-27 12:02:01 +08:00
李通洲 155e4a5b80 Doc: update doc for --migrate-config 2023-10-27 00:00:48 +08:00
李通洲 59a9209621 GPU: support Nvidia GPU temp detection 2023-10-27 00:00:19 +08:00
李通洲 cd5e14a834 LM (Linux): tidy 2023-10-26 23:27:40 +08:00
李通洲 e707cf8464 Migration: deprecate --gen-config conf 2023-10-26 16:34:38 +08:00
李通洲 8bdd410e97 Migration: support specifying config file path 2023-10-26 16:22:05 +08:00
李通洲 f45654620f Global: code refactor 2023-10-26 15:39:28 +08:00
李通洲 72d138f8c4 Migration (Modules): only generate objects when necessary 2023-10-26 14:28:47 +08:00
李通洲 6a0df7ae49 Migration: simplify json result 2023-10-26 14:06:47 +08:00
李通洲 23def0a1c7 Options (Library): add definitions only when used on the platform 2023-10-26 13:55:26 +08:00
李通洲 3236ef075d Migration (Library): support library options 2023-10-26 13:55:26 +08:00
李通洲 d00b301904 Migration (General): support general options 2023-10-26 13:55:26 +08:00
李通洲 6c82686283 Migration (Display): support display options 2023-10-26 13:55:21 +08:00
李通洲 399e2235d4 Options (Display): split code 2023-10-26 10:26:15 +08:00
李通洲 bd898e4006 Wifi (macOS): additional fix of Sonoma compatibility 2023-10-26 09:50:51 +08:00
李通洲 2c49dcceaf Options (Library): split code 2023-10-25 16:24:24 +08:00
李通洲 3c5b002414 Options (Modules): split code 2023-10-25 15:38:46 +08:00
李通洲 ca37206a49 Options (Logo): renaming symbols 2023-10-25 15:31:13 +08:00
李通洲 8a939e981c Options (General): symbol renaming to prevent from possible naming conflicts 2023-10-25 14:43:15 +08:00
李通洲 bed1b4cf0f Global: move general options to a new separate folder 2023-10-25 13:39:13 +08:00
李通洲 04c3a4ccf7 Logo: move logo options related code to a new folder 2023-10-25 10:44:34 +08:00
李通洲 f50368a949 Migration: support logo 2023-10-25 10:18:07 +08:00
李通洲 4e018dbf26 JsonConfig: code refactor 2023-10-25 09:13:04 +08:00
李通洲 fa02217ff4 Doc: update changelog 2023-10-25 09:03:44 +08:00
Martin Valba 22080d36b0 Add Evolinx distro banner (#596)
* Add Evolinx banner

* Removed accidental local bad save
2023-10-24 22:23:33 +08:00
westpain 3303f4e1ce Add cycledream logo (#595) 2023-10-24 21:15:56 +08:00
李通洲 11d03ad59e TerminalFont: support st 2023-10-24 16:48:22 +08:00
李通洲 504f1533c2 Terminal: support st version detection 2023-10-24 15:57:40 +08:00
李通洲 bf1d1cbac5 Terminal: support urxvt version detection 2023-10-24 15:56:43 +08:00
李通洲 94119d1674 OpenGL (Linux): fix build 2023-10-24 15:17:27 +08:00
李通洲 f4a263df01 Migration: finish modules support 2023-10-24 14:41:29 +08:00
李通洲 533231825c Terminal (Linux): detect tmux: server as tmux 2023-10-24 10:20:41 +08:00
李通洲 40e2787d94 Revert "Terminal (Linux): better support for tmux"
This reverts commit 281af9c86f.
2023-10-24 10:09:43 +08:00
李通洲 281af9c86f Terminal (Linux): better support for tmux 2023-10-23 23:38:18 +08:00
matoro fc0db8c291 Host (Linux): devicetree path for OBP hosts (#591)
At least SPARC devices have their model name in this devicetree node
and do not have a "model" node.  Possibly also POWER Macs, do not have
one to test though.
2023-10-23 23:37:37 +08:00
李通洲 48d2dbad34 Battery (Linux): fix build 2023-10-23 18:42:40 +08:00
李通洲 be2af8aeaf Migration: support bluetooth and board 2023-10-23 16:34:33 +08:00
李通洲 a7621a7301 Break: remove redundant code 2023-10-23 16:33:25 +08:00
李通洲 ec87790e4f Global: init support for JSON config file migration (WIP) 2023-10-23 16:17:07 +08:00
李通洲 44632e9bf6 Global: don't expose internal functions 2023-10-23 13:32:40 +08:00
李通洲 824ada49b6 Global: :%s/generateJson/generateJsonResult/g 2023-10-23 13:32:39 +08:00
李通洲 e7938216ba Global: :%s/ffGenerate\w+Json/$0Result/g 2023-10-23 13:32:39 +08:00
matoro 40d6d0b7b5 CPU (Linux): quirks for MIPS platforms (#590)
CPU name is in "cpu model" field on MIPS.  Also, /proc/cpuinfo contains
an "isa" field, but rather than being a single string like RISC-V it is
instead a space-separated list of every ISA flavor that the chip is
compatible with.  Since these are mostly incremental, just make the
cpuISA value set to the last one.

Before:
```
$ fastfetch --structure "cpu" --logo none
CPU: mips1 mips2 mips3 mips4 mips5 mips32r1 mips32r2 mips64r1 mips64r2 (16)
```

After:
```
$ fastfetch --structure "cpu" --logo none
CPU: Cavium Octeon II V0.10 mips64r2 (16)
```
2023-10-22 22:09:43 -05:00
李通洲 3f4d4c8eea GPU: add more vendors 2023-10-21 17:36:13 +08:00
李通洲 e2fe94d4e4 DisplayServer (Android): tidy 2023-10-21 15:44:38 +08:00
李通洲 debb5d8ad1 Display: don't print display type twice 2023-10-21 15:44:08 +08:00
李通洲 f61794ea70 GPU (Windows): better GPU memory and type detection 2023-10-18 10:52:29 +08:00
李通洲 d15a977431 Logo (Builtin): add Black Mesa
Fix #586
2023-10-17 23:46:38 +08:00
Carter Li ef5268f78d Merge pull request #584 from fastfetch-cli/dev
Release v2.1.2
2023-10-15 04:09:03 -05:00
李通洲 7362808d5d Brightness (Linux): fix compatibility for ddcutil 2.0
3rd try
2023-10-15 13:46:58 +08:00
李通洲 27cfec68ed Brightness (Linux): fix compatibility for ddcutil 2.0 2023-10-15 12:27:38 +08:00
李通洲 ea85f40682 Release v2.1.2 2023-10-15 10:52:05 +08:00
李通洲 0cc38c20be CPUUsage (FreeBSD): silence compiler warnings 2023-10-15 10:52:05 +08:00
李通洲 d29931a91a Brightness (Linux): fix compatibility for ddcutil 2.0
Ref: https://github.com/fastfetch-cli/fastfetch/issues/576#issuecomment-1763184172
2023-10-15 10:52:05 +08:00
李通洲 17c007348b Icons (Windows): fix detection 2023-10-14 21:55:55 +08:00
Carter Li 33953a0d18 Merge pull request #583 from fastfetch-cli/dev
Release v2.1.1
2023-10-14 06:08:00 -05:00
李通洲 98e8e599a6 Release v2.1.1 2023-10-14 18:24:58 +08:00
李通洲 5e19838713 Doc: update changelog 2023-10-14 18:19:10 +08:00
李通洲 501803c873 Logo (Builtin): add Xenia
https://github.com/hykilpikonna/hyfetch/issues/197
2023-10-14 18:15:04 +08:00
李通洲 e9c2a43de1 Brightness: add --brightness-ddcci-sleep to set the sleep times (in ms) when sending DDC/CI requests
Fix #580
2023-10-14 10:04:08 +08:00
李通洲 af94596202 Revert "Brightness (Linux): allow specifying busno for ddcutil"
This doesn't seem to improve much performance, but increase code
complexity a lot

This reverts commit 42e87b498c.
2023-10-14 09:35:40 +08:00
李通洲 42e87b498c Brightness (Linux): allow specifying busno for ddcutil
Ref: #580
2023-10-14 01:38:02 +08:00
李通洲 839ff311de Wifi (macOS): work around #581 2023-10-13 16:47:45 +08:00
李通洲 ebab281471 Processes (Linux): fix implementation
`sysinfo.procs` reports number of all running threads, instead of processes
2023-10-11 21:10:47 +08:00
李通洲 582788645d Doc: add information about how to make Termux API actually work 2023-10-11 16:32:20 +08:00
李通洲 643fed7d1c Doc: metion bug #581 2023-10-11 16:31:47 +08:00
李通洲 076324e60e Wifi (macOS): remove undesired code 2023-10-11 15:23:21 +08:00
李通洲 1fe92738d8 macOS: embed Info.plist 2023-10-11 15:17:14 +08:00
李通洲 e319be19de Wifi (macOS): print <unknown ssid> when we can't get SSID
SSID is not available after Sonoma. According to the doc: SSID information is not available unless Location Services is enabled and the user has authorized the calling app to use location services.
2023-10-11 14:48:48 +08:00
李通洲 ab8448ee47 DiskIO (Windows): fix device name detection 2023-10-10 21:51:15 +08:00
李通洲 5493f418ed Users: fix crashing on Windows; rename tty to more common name sessionName 2023-10-10 20:21:11 +08:00
李通洲 4e75fa958d Logo (Builtin): add EndeavourSmall
Ref: https://github.com/dylanaraps/neofetch/pull/2391
2023-10-10 19:21:05 +08:00
李通洲 0847432dd9 CPUUsage: rename cpuusage-display-type to separate 2023-10-10 19:02:42 +08:00
李通洲 e297144fe2 CPUUsage: fix multi core data detection 2023-10-10 18:46:59 +08:00
李通洲 42cf88be9d CPUUsage: support display value per core 2023-10-10 16:24:44 +08:00
李通洲 6b008ed93b CPUUsage (FreeBSD): count cpu cores separately 2023-10-10 13:56:19 +08:00
李通洲 c96d21c7c0 CPUUsage (Linux): count cpu cores separately 2023-10-10 13:41:08 +08:00
李通洲 2feb53149a Revert "CpuUsage (apple): simplify implementation"
This reverts commit cabd36d078.
2023-10-10 13:41:08 +08:00
李通洲 e7df94495c Temp (FreeBSD): improve CPU temp detection 2023-10-10 13:41:08 +08:00
李通洲 42f6d029b0 Doc: update JSON schema; make it more IDE friendly 2023-10-09 20:27:40 +08:00
李通洲 ccbb252466 DiskIO: update doc and json schema 2023-10-09 19:24:25 +08:00
李通洲 d16bdb30b9 DiskIO: update formatting help messages; update json keys 2023-10-09 16:40:47 +08:00
李通洲 8fa6aee571 Disk: move physicalType to module DiskIO
Physical type applies to physical disks, not partitions
2023-10-09 16:32:31 +08:00
李通洲 4194e56912 DiskIO (Windows): better name detection for Github Action 2023-10-09 15:39:34 +08:00
李通洲 a0343d6bf7 CI: run --format json 2023-10-09 14:56:28 +08:00
李通洲 44b417deca DiskIO (FreeBSD): skip /dev/pass* 2023-10-09 14:26:51 +08:00
李通洲 5ccd196ae4 DiskIO: print devPath 2023-10-09 14:24:29 +08:00
李通洲 b76d6e9faa DiskIO (FreeBSD): add support 2023-10-09 14:20:40 +08:00
李通洲 2d2e0ddc6d Libc (FreeBSD): detect FBSD version 2023-10-09 13:28:30 +08:00
李通洲 430da1578d Libc (macOS): detect libSystem version 2023-10-09 10:43:58 +08:00
李通洲 1188db9475 CMake: simplify musl version detection 2023-10-09 10:43:40 +08:00
李通洲 685676bd0f CMake: don't hardcode system arch 2023-10-09 09:05:11 +08:00
李通洲 fa46dce0e1 CMake: detect uclibc and musl version 2023-10-08 21:03:10 +08:00
李通洲 2e60f34cd8 DiskIO: add to presets/all 2023-10-08 21:02:48 +08:00
李通洲 dc50e24a29 Doc: update changelog and readme 2023-10-08 21:02:31 +08:00
Jami Kettunen 1f23e93951 Logo: add Chimera Linux
Ref: https://github.com/chimera-linux/cports/blob/master/contrib/neofetch/patches/chimera.patch
2023-10-08 19:26:11 +08:00
李通洲 8df6409cb1 DiskIO (Windows): better device name detection 2023-10-08 16:46:53 +08:00
李通洲 5c5c66d960 DiskIO: fix segfault... 2023-10-08 16:38:50 +08:00
李通洲 0b0e286b9c DiskIO: support --diskio-name-prefix 2023-10-08 16:30:09 +08:00
李通洲 b2130477ae DiskIO (macOS): add support 2023-10-08 16:29:53 +08:00
李通洲 085d0924db Brightness (Linux): try improving compatibility of ddcutil 2.0
ddcutil 2.0 increases SONAME version to `libddcutil.so.5`. More testing needed

Ref: #576
2023-10-08 10:34:01 +08:00
李通洲 78249bf4f7 CPU: add new option --cpu-freq-ndigits
Fix #578
2023-10-08 10:10:06 +08:00
李通洲 4c9d9f6223 TerminalFont (Linux): fix typo 2023-10-08 09:56:45 +08:00
李通洲 d7649d9f8f DiskIO: fix building 2023-10-08 09:51:51 +08:00
李通洲 49e2acd15e Printing: fix --help *-format 2023-10-08 09:51:51 +08:00
李通洲 e4a6bf17e4 Terminal: support kgx (gnome console)
Fix #577
2023-10-08 09:51:32 +08:00
李通洲 276e22f6b0 DiskIO: init module 2023-10-07 23:56:15 +08:00
李通洲 b1d63e03d8 NetIO: fix --help netio-format 2023-10-07 22:58:50 +08:00
李通洲 55f0f75c95 Packages (Linux): print opkg in JSON format 2023-10-07 17:26:57 +08:00
李通洲 fe4eb564e1 NetIO: add missing #pragma once 2023-10-07 16:12:37 +08:00
李通洲 90ea096ca3 macOS: don't keep variable matchDict 2023-10-07 15:51:05 +08:00
李通洲 3077f885d8 Sound (macOS): ignore input devices 2023-10-07 15:45:14 +08:00
李通洲 41551ef200 Sound: fix typo 2023-10-07 15:15:39 +08:00
李通洲 4c96d0453e TerminalShell (Linux): add ash as a known shell 2023-10-07 15:15:24 +08:00
李通洲 d7ef7bc078 Doc: update changelog 2023-10-07 15:14:16 +08:00
李通洲 c77a758741 Packages (Linux): support opkg
Fix #574
2023-10-07 14:02:16 +08:00
李通洲 12208b2c7c Global: improve support of --help *-format
Also fix some bugs found when refactoring
2023-10-07 13:40:40 +08:00
李通洲 23d2cc3fdc Version: print libc version used when compiling 2023-10-05 22:23:22 +08:00
Md Rasel Hossain 1dfa0315db Fix several --help command related issues (#572)
* Help: fix wrong output for irrelevant commands

* Help: fix `module-format` related issues

* Help: remove unnecessary code
2023-10-05 19:59:24 +08:00
李通洲 f78f97a726 Revert "DisplayServer (Linux): add debug log for #568"
This reverts commit 1a4eb25194.
2023-10-04 16:28:54 +08:00
Carter Li 9972c61bbe Sound (macOS): support non-controllable devices 2023-10-04 14:59:13 +08:00
Carter Li 8795d99f79 Brightness: add DDC/CI support for Intel
Doesn't work for me. Need more testing
2023-10-04 14:41:06 +08:00
Carter Li f8aafb7ce4 Monitor (macOS): better intel platform support 2023-10-04 00:30:35 +08:00
Carter Li 27581d92b5 Disk (macOS): detect physical type 2023-10-04 00:30:35 +08:00
Carter Li 4a89b92185 Disk: allow custiomize disk key with mountFrom 2023-10-04 00:30:35 +08:00
李通洲 1a4eb25194 DisplayServer (Linux): add debug log for #568 2023-10-04 00:30:35 +08:00
李通洲 3eb9acea2e Doc: update changelog 2023-10-03 17:04:08 +08:00
李通洲 be860064c5 Users (Windows): fix crashing caused by uninitialized strings 2023-10-03 17:01:57 +08:00
李通洲 1985552636 Disk (Windows): fix crashing on Windows 7 VM 2023-10-03 16:50:57 +08:00
李通洲 985264d485 Fastfetch: add Directx Headers to --list-features 2023-10-02 23:19:44 +08:00
Carter Li e3c69c4569 Merge pull request #571 from fastfetch-cli/dev
Release v2.1.0
2023-10-02 19:23:07 +08:00
李通洲 45f523adb8 Release v2.1.0 2023-10-02 18:03:10 +08:00
李通洲 f7cc4fb4b1 Doc: update changelog 2023-10-02 18:00:30 +08:00
Alxhr0 ddec13be29 Fix Slackware 2023-10-01 22:37:18 +08:00
李通洲 74ac023cb0 Logo (Builtin): support Oracle Linux Server
Fix #569
2023-10-01 20:52:05 +08:00
李通洲 7f75d42ec8 Logo (Builtin): tidy 2023-10-01 20:50:10 +08:00
李通洲 e53acf42ec Disk (Linux): detect physical type 2023-09-30 20:32:14 +08:00
李通洲 18233a27c5 Disk (Windows): detect disk physical type 2023-09-30 15:00:59 +08:00
李通洲 9857f48bb9 OS (Linux): actually display debian .x version
Also display code name on Linux
2023-09-28 23:40:03 +08:00
李通洲 289976372f Shell: improve nu version detection performance 2023-09-27 20:05:55 +08:00
李通洲 72d2ce4b43 Logo: add LainOS
Ref: https://github.com/dylanaraps/neofetch/pull/2382
2023-09-27 15:52:52 +08:00
李通洲 eb0faec74a NetIO (Android): fix building
Doesn't work because `/sys` is unaccessable on Android
2023-09-27 15:34:53 +08:00
李通洲 767f99cffa CPU (Linux): only try lscpu on Linux
Since `lscpu` is a program of `util-linux`
2023-09-27 15:11:05 +08:00
李通洲 7caa8d4618 CPU (Linux): try detecting CPU name using lscpu
Fix #567
2023-09-27 15:05:26 +08:00
李通洲 88c12486bf Processing (Linux): always set LANG to C before executing child process 2023-09-27 15:02:55 +08:00
李通洲 8b357c27b4 Logo (Builtin): add Amazon LInux
Fix #566
2023-09-27 11:06:09 +08:00
李通洲 a7a8f2f461 NetIO (BSD): fix compiling 2023-09-27 10:48:54 +08:00
李通洲 5e5c0b4a58 NetIO: improve performance 2023-09-27 10:31:35 +08:00
李通洲 154657b455 NetUsage: rename to NetIO 2023-09-27 00:06:11 +08:00
李通洲 3866f27448 NetUsage (BSD): fix compiling 2023-09-26 23:58:05 +08:00
李通洲 b4f29918ed NetUsage: finish docs 2023-09-26 23:18:19 +08:00
李通洲 b29b78b321 NetUsage: finish module 2023-09-26 23:00:31 +08:00
李通洲 917b049030 LocalIP: cache default route value 2023-09-26 21:49:01 +08:00
李通洲 4843dedb4d LocalIp: filter --localip-default-route-only inside detection code 2023-09-26 20:57:02 +08:00
李通洲 69373906ca Windows: pre-basic msvc support 2023-09-26 20:13:32 +08:00
李通洲 24a6efa227 NetUsage: finish first working version 2023-09-26 19:54:19 +08:00
李通洲 9004d9e05c NetUsage (BSD): add detection support 2023-09-26 12:04:19 +08:00
李通洲 fa4fccd426 NetUsage (Windows): add detection support 2023-09-26 11:20:26 +08:00
李通洲 57bd741d96 NetUsage (Linux): new module (WIP) 2023-09-26 11:20:26 +08:00
李通洲 50c8809d51 LocalIp (Linux): add ioCounter detection 2023-09-26 09:52:10 +08:00
李通洲 e4c1ec916b FFstrbuf: change ffStrbufToUInt16 to more general function ffStrbufToUInt 2023-09-26 09:52:10 +08:00
李通洲 a4bc07cba5 LocalIp (Windows): add ioCounter detection 2023-09-26 09:52:10 +08:00
李通洲 40e542852f CMake: disable ASan on macOS
Ref: https://stackoverflow.com/questions/64126942/malloc-nano-zone-abandoned-due-to-inability-to-preallocate-reserved-vm-space
2023-09-26 09:14:39 +08:00
李通洲 bde2d67f25 CMake: disable UBSan 2023-09-26 08:58:16 +08:00
李通洲 6d1bde17c8 Wifi (macOS): silence compiler warnings 2023-09-25 16:11:00 +08:00
李通洲 ad0c2aa2e9 Version: detect compiler and compile time 2023-09-24 23:07:03 +08:00
李通洲 ddbd198864 Doc: update changelog 2023-09-24 22:21:18 +08:00
李通洲 3e768ddfd4 OS (Linux): detect detailed debian version
Ref: https://github.com/dylanaraps/neofetch/issues/2381
2023-09-24 21:50:12 +08:00
李通洲 6ccf8856b9 Bluetooth (Windows): fix mac address detection 2023-09-24 21:16:54 +08:00
李通洲 1caaa69deb Platform: fix memleaks 2023-09-23 11:58:46 +08:00
李通洲 5aa2798e42 Kernel (Windows): detect service pack version 2023-09-23 11:51:37 +08:00
李通洲 597daddf2a Fastfetch: add -c as a shortcut of --load-config 2023-09-23 09:56:34 +08:00
李通洲 ff1c3d9888 Doc: update changelog 2023-09-23 09:56:34 +08:00
李通洲 cc6cdb96fb Networking: support timeout on Linux 2023-09-23 09:56:34 +08:00
李通洲 db5619541a Init (Windows): actually disable stdout buffer with --no-buffer 2023-09-22 15:06:02 +08:00
李通洲 d94fc32f45 Colors: support --colors-key 2023-09-22 15:05:27 +08:00
李通洲 34723bba89 Colors: don't parse --colors-* as --color * 2023-09-22 15:05:27 +08:00
李通洲 a0efbd20a1 Title: make this module formattable 2023-09-22 15:05:27 +08:00
李通洲 4d86c53e81 Custom: code cleanup 2023-09-22 14:57:04 +08:00
李通洲 560c2acb88 Global: add --module-key " " as a magic case for hiding keys 2023-09-21 16:17:23 +08:00
李通洲 592de4c8f2 CI: print dependencies 2023-09-21 16:11:04 +08:00
李通洲 8cbe3f6453 GPU (Linux): add full GPU detection support in WSL
With DX12 API ;)
2023-09-21 15:47:03 +08:00
李通洲 ec8ee1a509 TerminalFont: fix compiler warnings 2023-09-21 15:47:03 +08:00
李通洲 30ae8a2f96 Packages (Linux): fix dpkg package number detection 2023-09-20 16:17:02 +08:00
李通洲 5337e5cead Packages (Linux): fix snap package number detection on systems other than Ubuntu
Fixes 562
2023-09-20 16:03:35 +08:00
李通洲 576fcd7d3d Display: print display type 2023-09-20 16:03:35 +08:00
李通洲 64615e635f Doc: update changelog 2023-09-20 10:16:18 +08:00
李通洲 38c22bf771 Disk (FreeBSD): hide /boot like what linux does 2023-09-20 10:16:18 +08:00
李通洲 064f624eab macOS: fix compiler warnings on latest xcode 2023-09-19 14:43:55 +08:00
李通洲 26e5790a78 Brightness: report more detailed values 2023-09-19 13:25:50 +08:00
李通洲 48cecd0ad1 CPU: update JSON format structure 2023-09-19 10:50:52 +08:00
李通洲 69e57e52ab Disk (Android): fix detection on Android 2023-09-18 23:03:14 +08:00
李通洲 dbd6e45aba Disk (Android): fix build 2023-09-18 22:25:15 +08:00
李通洲 3714dfdca7 Presets: new example 2023-09-18 20:51:09 +08:00
李通洲 06b1051a7e Global: don't trim custom strings
It can be useful to align separators
2023-09-18 20:46:30 +08:00
李通洲 8edb7d3833 Logo: fix Windows 11_small 2023-09-18 20:45:23 +08:00
李通洲 8a14cbae0c JSON: don't print the non-standand NaN 2023-09-18 20:12:33 +08:00
李通洲 7f727086af Disk: move filesystem outside of files (JSON format) 2023-09-18 20:01:41 +08:00
李通洲 7cd79d34bb Presets: remove devinfo and verbose 2023-09-18 14:19:19 +08:00
李通洲 939165d4cf Platform: align logic of getting host name to neofetch
Fixes: #561
2023-09-18 13:56:32 +08:00
李通洲 b4f063e1da Disk (Linux): detect external disk more accurately 2023-09-18 10:06:14 +08:00
李通洲 bdc79a2995 Doc: update changelog 2023-09-18 00:15:15 +08:00
李通洲 2bb78af1a7 Disk (Linux): detect USB devices as external volumes only
Fixes #559
2023-09-18 00:14:05 +08:00
李通洲 d8e4575157 Disk (Linux): fix ZFS subvolume detection 2023-09-17 22:28:03 +08:00
李通洲 b54e182c0f Disk (Windows): detect volume name 2023-09-17 20:41:07 +08:00
李通洲 fe89e71200 Disk (Linux): try fixing zpool detection
Ref: #559
2023-09-17 20:08:46 +08:00
xbt573 fb69d56297 Arguments: handle --lib-pulse properly 2023-09-17 02:13:48 -04:00
李通洲 6c1b39ae60 Shell (FreeBSD): remove trailing \0 2023-09-16 20:46:49 +08:00
李通洲 2082e01555 Theme: support JSON format (2) 2023-09-16 20:36:28 +08:00
李通洲 24a9231ad0 Kernel (Windows): remove trailing \0 2023-09-15 20:58:57 +08:00
李通洲 3c7903cc14 JsonSchema: add processingTimeout 2023-09-15 19:06:32 +08:00
李通洲 b721f9020e Logo (Builtin): improve performance on Windows 2023-09-15 11:07:47 +08:00
李通洲 bd02e5c632 Logo: code refactor 2023-09-15 10:53:09 +08:00
李通洲 0d5cf52f08 FFstrbuf: add ffStrbufAppendNC 2023-09-15 10:35:12 +08:00
李通洲 f97cddf2da JSON: support --stat for flag based configurations 2023-09-14 15:53:44 +08:00
李通洲 49f42cd003 Doc: update changelog 2023-09-14 15:29:15 +08:00
李通洲 0d7dc2d692 Logo (Ubuntu): changed the edges of the Ubuntu logo to make it rounder
Ref: https://github.com/dylanaraps/neofetch/pull/2378
2023-09-14 15:28:33 +08:00
xbt573 2039bed70d Logo (Builtin): add Elbrus 2023-09-14 01:20:40 -04:00
李通洲 9535b6a8bf PublicIP: fix missing new line 2023-09-14 08:55:33 +08:00
李通洲 df945e824b Deps: upgrade yyjson 2023-09-14 08:38:59 +08:00
李通洲 237c6f1c9e Processes / LocalIP: try increasing stability 2023-09-13 23:41:26 +08:00
李通洲 61131073f2 Global: silence compiler warnings 2023-09-13 22:46:11 +08:00
李通洲 013abe2b3e Weather: support JSON format 2023-09-13 18:38:02 +08:00
李通洲 63c29b10fe Weather: code refactor 2023-09-13 18:31:22 +08:00
李通洲 f5ad07a87b PublicIP: support JSON format 2023-09-13 17:56:50 +08:00
李通洲 28d40d9037 Global: fix some memleaks 2023-09-13 17:42:22 +08:00
李通洲 b3bdf494ab PublicIP: code refactor 2023-09-13 17:41:48 +08:00
李通洲 8d914ace33 Doc: update changelog 2023-09-13 17:36:39 +08:00
李通洲 58f234638b Users: make --users-compact false by default 2023-09-13 17:36:39 +08:00
李通洲 7dfc0d8e60 Shell: don't detect user shell 2023-09-13 17:36:39 +08:00
李通洲 2963e3bd93 Terminal: don't print shell information in Terminal module 2023-09-13 17:36:39 +08:00
李通洲 3dfa99c232 WMTheme: support JSON format 2023-09-13 14:25:00 +08:00
李通洲 804463a470 WM: support JSON format 2023-09-13 14:22:04 +08:00
李通洲 77466ba6f5 GPU: tidy 2023-09-13 14:07:14 +08:00
李通洲 3a8819d42b Wifi: support JSON format 2023-09-13 14:01:15 +08:00
李通洲 9765885fe6 Wallpaper: support JSON format 2023-09-13 13:39:56 +08:00
李通洲 16b01a06e0 Vulkan: support JSON format 2023-09-13 09:53:25 +08:00
李通洲 c400261a11 Deps: update yyjson 2023-09-13 09:42:34 +08:00
李通洲 9b72971dc9 Uptime (FreeBSD): fix building 2023-09-13 08:49:10 +08:00
李通洲 4449173b3d Version: support JSON config 2023-09-12 20:36:00 +08:00
李通洲 10a249d3a8 Title: support JSON support 2023-09-12 20:31:19 +08:00
李通洲 e91d011c8c Theme: support JSON format 2023-09-12 20:23:58 +08:00
李通洲 4124c12bac TerminalSize: support JSON format 2023-09-12 16:17:17 +08:00
李通洲 a927f4a04d DateTime: code refactor using ffTimeGetNow 2023-09-12 16:15:57 +08:00
李通洲 f3ec60a061 Uptime: add ffTimeGetNow() and use it 2023-09-12 14:55:33 +08:00
李通洲 2251086c0f TerminalFont: support JSON format 2023-09-12 11:18:05 +08:00
李通洲 9447f1ca80 Terminal: support JSON format 2023-09-12 09:49:36 +08:00
李通洲 f13b771317 Sound: support JSON format 2023-09-12 09:37:24 +08:00
李通洲 257439477e CI: update deps 2023-09-12 09:12:28 +08:00
李通洲 c702865332 Presets: add a new example
Ref: https://github.com/fastfetch-cli/fastfetch/discussions/556
2023-09-11 23:03:03 +08:00
李通洲 e2abe31fc1 Monitor: fix memleaks 2023-09-10 18:39:45 +08:00
李通洲 82c300f7f6 Logo (Builtin): add Afterglow
https://github.com/hykilpikonna/hyfetch/pull/
2023-09-08 21:22:00 +08:00
李通洲 94eb3b89e8 Logo (Builtin): use first color as title color
As what neofetch does
2023-09-08 21:22:00 +08:00
李通洲 f662cc0aa2 Logo (Builtin): update AOSC OS
Ref: https://github.com/hykilpikonna/hyfetch/pull/185
2023-09-08 21:21:33 +08:00
李通洲 1526930e54 Logo (Builtin): update EvolutionOS
Ref: #555
2023-09-08 21:06:37 +08:00
李通洲 1cdc99f327 JSON format: fix some memleaks 2023-09-08 20:25:41 +08:00
李通洲 d97b16950c Shell: JSON format support 2023-09-08 20:02:59 +08:00
李通洲 aff4a57092 Processes: JSON format support 2023-09-08 15:47:37 +08:00
李通洲 826aa2e46d Packages: support JSON format 2023-09-08 15:44:44 +08:00
李通洲 2c59a05dff Users: JSON format support 2023-09-08 15:31:58 +08:00
李通洲 aafd773fe7 Uptime: JSON format support 2023-09-08 15:31:58 +08:00
李通洲 4356974c5b Image: fix separated image printing 2023-09-08 15:31:58 +08:00
李通洲 7f1e2d2f03 Packages (Windows): support winget packages count
Guarded behind `--allow-slow-operations`
2023-09-08 15:25:22 +08:00
李通洲 cde2ba2c18 Uptime: detect boot time 2023-09-08 14:17:34 +08:00
李通洲 a093ca2001 Users: add more detailed information 2023-09-08 10:11:57 +08:00
李通洲 fe9fcd603b CPU (Windows): fix possible memory errors 2023-09-08 10:11:57 +08:00
李通洲 d8b2151143 CPU (macOS): support Apple Silicon frequency detection 2023-09-08 10:11:56 +08:00
李通洲 904c9eb3c4 CPU (macOS): code refactor 2023-09-08 10:11:31 +08:00
李通洲 598dfd2b02 Disk (Apple): use getattrlist to detect volume name
No functional changes
2023-09-08 10:11:29 +08:00
李通洲 77d388ce1d Disk (BSD): use getfsstat instead of getmntinfo for thread safety 2023-09-07 15:47:49 +08:00
李通洲 9eb35d3967 OS: JSON format support 2023-09-07 09:36:04 +08:00
李通洲 34902db21c OpenGL: JSON format support 2023-09-07 09:28:04 +08:00
李通洲 cdaf5e9281 OpenCL: JSON format support 2023-09-07 09:20:52 +08:00
李通洲 98833b4d74 Monitor: add JSON support 2023-09-06 16:33:51 +08:00
李通洲 f995d8d806 PowerAdapter: rename PowerAdapterResult to FFPowerAdapterResult 2023-09-06 16:27:02 +08:00
李通洲 eb4636b947 PowerAdapter: JSON format support 2023-09-06 16:23:57 +08:00
李通洲 a7c6e1165c Swap: JSON format support 2023-09-06 16:01:10 +08:00
李通洲 8bb88d1806 Memory: JSON format support 2023-09-06 15:59:56 +08:00
李通洲 849ff95116 Player: JSON format support 2023-09-06 15:53:52 +08:00
李通洲 dc29271987 Media: add JSON format support 2023-09-06 15:48:39 +08:00
李通洲 623c5d8eb9 LocalIP: add JSON format support 2023-09-05 16:31:54 +08:00
李通洲 e0ce520e0a Locale: add JSON format support 2023-09-05 16:25:08 +08:00
李通洲 f9cd032a5f LM: add JSON format support 2023-09-05 16:22:37 +08:00
李通洲 39b21f95b7 Kernel: add JSON format support 2023-09-05 16:10:28 +08:00
李通洲 dfbfb88a45 Icons: add JSON formatting support 2023-09-05 16:10:28 +08:00
李通洲 971a69ad1b Host: add JSON formatting support 2023-09-05 15:57:18 +08:00
李通洲 fddf6ddf1e CPU: don't use NaN in JSON 2023-09-05 15:51:09 +08:00
李通洲 81c625e7c9 GPU: add JSON printing support 2023-09-05 15:49:22 +08:00
李通洲 97293ddee1 Gamepad: add JSON printing support 2023-09-05 15:29:46 +08:00
李通洲 21f36b564f Font: add JSON printing support 2023-09-05 15:29:46 +08:00
李通洲 34e2b0f89c Display: add JSON printing support 2023-09-05 15:29:46 +08:00
李通洲 d5ca6aa462 Disk: add JSON printing support 2023-09-05 15:29:46 +08:00
李通洲 639ad436a0 Global: code refactor 2023-09-05 15:29:46 +08:00
李通洲 76fce2c5a9 DE: add JSON printing support 2023-09-05 15:29:46 +08:00
李通洲 632718e1d0 DateTime: support JSON printing 2023-09-05 15:29:46 +08:00
李通洲 a4fababb71 Cursor: add JSON format support 2023-09-05 15:29:46 +08:00
李通洲 ac8741d57d CPUUsage: add JSON printing support 2023-09-05 15:29:46 +08:00
李通洲 28e412b79d CPU: add JSON printing support 2023-09-05 15:29:46 +08:00
李通洲 01aa9b9516 Command: add JSON printing support 2023-09-05 15:29:46 +08:00
李通洲 acd353b8b3 Chassis: add Json printing support 2023-09-05 15:29:46 +08:00
李通洲 c5d8d976f6 Brightness: add Json printing support 2023-09-05 15:29:46 +08:00
李通洲 3d44514b24 Board: support Json printing 2023-09-05 15:29:46 +08:00
李通洲 fb3fb1bf99 Bluetooth: rename FFBluetoothDevice to FFBluetoothResult 2023-09-05 15:29:46 +08:00
李通洲 757e5f8174 Bluetooth: support Json printing 2023-09-05 15:29:46 +08:00
李通洲 3669f2aee4 Battery: rename BatteryResult to FFBatteryResult 2023-09-05 15:29:46 +08:00
李通洲 14f26879de Global: init --format json support (#527) 2023-09-05 15:29:46 +08:00
李通洲 2f46a77ff2 TerminalFont: better kitty font detection 2023-09-04 19:19:55 +08:00
李通洲 10853fdf35 Doc: add note for image protocol support of Android 2023-09-03 22:51:28 +08:00
李通洲 591fd558e1 Logo: fix --logo-padding for --logo-separate 2023-09-03 22:39:09 +08:00
李通洲 b863e65ea3 OpenGL: silence warnings 2023-09-03 22:21:53 +08:00
李通洲 fc61f64630 Logo: add --logo-separate true 2023-09-03 22:20:11 +08:00
李通洲 3483673ef7 Terminal (Android): fix termux detection 2023-09-03 20:57:23 +08:00
李通洲 9e839d3b8b Logo: simplify code 2023-09-03 19:55:57 +08:00
李通洲 33f121d7fb JsonSchema: fix the name of property defaultRouteOnly 2023-09-03 19:01:52 +08:00
李通洲 9500ca8f83 Logo: fix poll() timeout or failed error when image is very large
Fix #554
2023-09-03 17:50:20 +08:00
李通洲 4dfbc0f909 Logo: try fixing #553 2023-09-02 22:32:34 +08:00
李通洲 effb685fba Logo: try improving performance for image-raw 2023-09-02 10:08:08 -04:00
李通洲 3692e49e9b TerminalShell: correctly set PATH_MAX on Linux 2023-09-02 10:05:30 -04:00
李通洲 04d56d9b6a IO: fix short read when reading from pipe 2023-09-02 10:04:57 -04:00
李通洲 34417ae692 TerminalFont: support contour 2023-09-02 08:11:21 -04:00
李通洲 67d04a746e Terminal: support contour version detection 2023-09-02 07:40:23 -04:00
李通洲 552e0f84aa Doc: update changelog 2023-09-02 00:47:05 -04:00
李通洲 3e880fedf7 Logo: support kitty-direct / iterm without specifying logo width / height
Fixes #550
2023-09-02 00:46:39 -04:00
李通洲 e5c4a6ed2c Logo (Builtin): update EvolutionOS
Closes #551
2023-09-01 23:29:23 -04:00
李通洲 0bda7d80c2 Doc: update README for image logo on Windows 2023-08-30 22:21:29 +08:00
李通洲 7cb86df48d Logo: improve performance on Windows for iterm protocol 2023-08-30 22:17:51 +08:00
李通洲 21e5df2826 Global: replace cpu-usage to cpuusage 2023-08-29 17:47:20 +08:00
李通洲 a5ee51e156 Global: use FF_LIST_AUTO_DESTROY 2023-08-29 10:49:22 +08:00
李通洲 bddcb4772c DE (FreeBSD): add fast path for xfce4 version detection 2023-08-29 10:47:24 +08:00
Carter Li a3f13bdca9 Merge pull request #545 from fastfetch-cli/dev
Release v2.0.5
2023-08-26 20:31:27 +08:00
李通洲 55444b9c4e Release v2.0.5 2023-08-26 08:16:06 -04:00
李通洲 2f14d7742e Display (Linux): fix memleaks 2023-08-26 05:52:06 -04:00
李通洲 0534882f4e Cursor: Don't print 0px 2023-08-26 05:43:15 -04:00
李通洲 ce2f2f4416 Doc: update changelog 2023-08-26 05:31:00 -04:00
李通洲 5259aeb039 Display: fix segfault when using libxrandr
Fix #544
2023-08-26 05:28:21 -04:00
李通洲 e51999edd1 Doc: update changelog 2023-08-26 13:43:33 +08:00
李通洲 2f96c847b9 Disk: print Read-only 2023-08-26 13:43:33 +08:00
李通洲 32d6436027 Disk: add --disk-show-readonly 2023-08-26 13:43:33 +08:00
李通洲 7358326a13 Disk: add --disk-use-available
fix #543
2023-08-26 13:43:13 +08:00
李通洲 434a879538 Disk: rename FFDiskType to FFDiskVolumeType 2023-08-26 13:40:40 +08:00
Carter Li 745a8dda65 Merge pull request #540 from fastfetch-cli/dev
Release v2.0.4
2023-08-25 15:41:50 +08:00
李通洲 c40086615f Release v2.0.4 2023-08-25 15:05:39 +08:00
李通洲 fe3d38e542 Logo: trait - as an alias for /dev/stdin
which can be useful where `/dev/stdin` is not available, eg. on Windows
2023-08-25 11:03:37 +08:00
李通洲 f19a3b5549 Logo: fix --file-raw doesn't work
Fix #539
Ref https://github.com/hykilpikonna/hyfetch/issues/173
2023-08-25 11:01:48 +08:00
李通洲 eb308e1861 Memory (BSD): fix building on 32-bit FreeBSD
fix #538
2023-08-25 08:47:16 +08:00
Carter Li 9a4e7874d6 Merge pull request #536 from fastfetch-cli/dev
Release 2.0.3
2023-08-24 19:12:52 +08:00
李通洲 d78e528527 CI: generate 7z archive 2023-08-24 16:18:10 +08:00
李通洲 81f0e4d583 cI: really bundle presets 2023-08-24 15:13:25 +08:00
李通洲 1d9f462071 Release: 2.0.3 2023-08-24 14:43:19 +08:00
李通洲 047dca3849 CI: include presets (Windows) 2023-08-24 14:42:47 +08:00
李通洲 1f7c6ab70c Fastfetch: add --config 2023-08-24 14:36:32 +08:00
李通洲 1c49ae5324 Fastfetch: try $exePath/presets with --load-config 2023-08-24 14:29:35 +08:00
李通洲 2e82f8294f Doc: document --precent-ndigits 2023-08-24 14:21:08 +08:00
李通洲 b2ead8735b Platform (Unix): add exePath 2023-08-24 14:20:48 +08:00
李通洲 5e9166847d Platform (Windows): add exePath 2023-08-24 13:47:25 +08:00
李通洲 28c01599d5 Platform: add $EXE_PATH/../share to dataDir
Support loading presets when fastfetch is installed in a special path. eg. `/opt/homebrew/bin/`
2023-08-24 11:14:51 +08:00
李通洲 ce47a82fb5 Doc: update changelog 2023-08-24 10:46:38 +08:00
李通洲 f1b047c32b Display: use FFDisplayOptions 2023-08-24 09:55:40 +08:00
李通洲 bc6ed4f4a2 OpenGL: use FFOpenGLOptions in detection code 2023-08-24 09:55:00 +08:00
李通洲 b1ac31f590 Global: add option --percent-ndigits 2023-08-24 09:35:17 +08:00
李通洲 326d83f25b Global: fix percent formatting for --*-format
fix #535
2023-08-24 09:12:24 +08:00
李通洲 7218164088 Doc: add more badges in README 2023-08-24 08:36:53 +08:00
Ian Manske 6f970c36e3 Fix typo in config parsing for --color-title 2023-08-24 08:32:56 +08:00
Carter Li eea4150dbd Merge pull request #532 from fastfetch-cli/dev
Release v2.0.2
2023-08-22 05:26:33 -04:00
李通洲 afa736c37d Release v2.0.2 2023-08-22 16:17:05 +08:00
李通洲 643e632368 CMake: try fixing CI on FreeBSD 2023-08-22 16:14:24 +08:00
Carter Li ffe354ab07 Merge pull request #531 from fastfetch-cli/dev
Release v2.0.2
2023-08-22 03:57:27 -04:00
李通洲 f77090070c Image: code cleanup; no functional change 2023-08-22 15:32:19 +08:00
李通洲 fd5d2c84e8 Logo (Builtin): add Tuxedo OS 2023-08-21 22:46:50 +08:00
李通洲 ef6af84ea1 Fastfetch: fix presets not detected by file name (#529) 2023-08-21 22:14:44 +08:00
李通洲 f64bf73279 Windows: fix compiling for GCC 2023-08-21 20:28:27 +08:00
Carter Li 157be8443d Merge pull request #526 from fastfetch-cli/dev
Release v2.0.1 (stable)
2023-08-20 22:35:09 -04:00
李通洲 154e15e88f Release: v2.0.1 2023-08-21 10:05:41 +08:00
李通洲 159122eb98 Brightness (macOS): silence compiler warnings 2023-08-21 09:38:20 +08:00
李通洲 7b6e157a4d Doc: update bug_report.md 2023-08-21 09:26:07 +08:00
李通洲 c6eff111cc Fastfetch: refactor printVersion() 2023-08-21 09:22:03 +08:00
李通洲 f23384725f Version: add new module 2023-08-21 09:19:16 +08:00
李通洲 970863e7df Global: simplify code of module matching 2023-08-20 21:35:38 +08:00
李通洲 0b473e3bff Fastfetch: refactor the code of --list-modules 2023-08-20 20:51:55 +08:00
李通洲 5a43adb62b Doc: update changelog 2023-08-20 00:09:48 +08:00
李通洲 1a4a949dfe Logo (Builtin): add aerOS 2023-08-20 00:04:52 +08:00
李通洲 069c20be40 Brightness: don't make DDC/CI a slow operation 2023-08-19 02:16:04 -04:00
李通洲 c7f0172b25 CMake: Add option ENABLE_SYSTEM_YYJSON
Fix: #525
2023-08-19 11:11:50 +08:00
李通洲 125759dc75 Terminal: correctly detecting version and font on NixOS 2023-08-19 10:02:07 +08:00
李通洲 f0a10fcc6d Disk (BSD): improve disk type detection 2023-08-18 20:57:54 +08:00
李通洲 c70b9cb84e Revert "Disk (BSD): try detecting disk label"
Doesn't work

This reverts commit 55b9e274b6.
2023-08-18 21:21:34 +08:00
李通洲 5ebdd9a989 Logo (Builtin): add MOS
Ref: https://github.com/dylanaraps/neofetch/pull/2364
2023-08-18 13:44:48 +08:00
李通洲 77e0d9dba1 JsonConfig: prepare for module weather and public ip 2023-08-18 13:38:32 +08:00
李通洲 55b9e274b6 Disk (BSD): try detecting disk label 2023-08-18 09:52:21 +08:00
李通洲 67fe1e66b5 Windows: fix build 2023-08-17 17:15:30 +08:00
李通洲 ea2a26bd57 Battery (Linux): fix build 2023-08-17 16:13:54 +08:00
李通洲 55b279ab09 JsonConfig: remove useless checks 2023-08-17 16:10:05 +08:00
李通洲 e5e4c8bf88 Fastfetch: refactor command line option parsing code
1. improve performance
2. remove `-c`
3. rename `--recache` to `--logo-recache`, and remove `-r`
2023-08-17 16:10:05 +08:00
李通洲 c888254f70 Modules: major code refactor
Also fix some bugs found when refactoring
2023-08-17 16:10:02 +08:00
李通洲 75323d64f8 Chore: fix typo 2023-08-16 16:51:54 +08:00
李通洲 a0c4f2febd Global: support --bar-width 2023-08-16 16:51:41 +08:00
李通洲 4b714c7057 Doc: update changelog 2023-08-16 14:52:20 +08:00
李通洲 559bca4223 Global: add --bar-char-elapsed, --bar-char-total and --bar-border options 2023-08-16 14:41:56 +08:00
李通洲 8ed28673a9 Global: support --module-key-width per module 2023-08-16 13:21:15 +08:00
李通洲 ed9639c66b Disk (Linux): replace all \\x20 to real charactors in disk label 2023-08-15 21:11:52 +08:00
李通洲 98b9ef74cf Disk (Linux): fix label detection 2023-08-15 21:11:52 +08:00
李通洲 e6be90614a fastfetch: support --key-width 2023-08-15 21:11:52 +08:00
李通洲 20c2cdf7ba Monitor (Linux): fix EDID file reading
Its file length is always 0
2023-08-15 19:20:21 +08:00
李通洲 c70787bde9 Fastfetch: tidy 2023-08-15 16:52:35 +08:00
李通洲 8835f66b8c Fastfetch: unescape strings only when parsing .conf files
So that `NO_CONFIG=1 ./fastfetch --os-key \\\\ -s os -l none` prints `\\: *`
2023-08-15 16:41:04 +08:00
李通洲 2b2ebe0823 Logo (Builtin): update venom; add venom_small 2023-08-15 15:24:31 +08:00
李通洲 3ff3feb0e1 EdidHelper: silence compiler warnings 2023-08-14 20:48:37 +08:00
李通洲 ee4bc2302a Chore: move mk_wcwidch to 3rdparty folder 2023-08-14 20:48:37 +08:00
李通洲 cd4a512291 Chore: embed yyjson source code
Ref: https://github.com/fastfetch-cli/fastfetch/discussions/523
2023-08-14 20:48:37 +08:00
Carter Li f6d4282a4f Merge pull request #522 from fastfetch-cli/dev
README: document `libandroid-wordexp` dependency
2023-08-14 11:01:23 +08:00
李通洲 a85da5401d README: document libandroid-wordexp dependency 2023-08-14 11:00:21 +08:00
Carter Li e19242d9f3 Merge pull request #521 from fastfetch-cli/dev
Fix the `<wordexp.h>` not found compiler error on Android
2023-08-14 10:58:00 +08:00
李通洲 86dffe751f Android: prefer static linking to libandroid-wordexp.a 2023-08-14 10:51:54 +08:00
李通洲 02adbb462a Android: link to libandroid-wordexp if available
Ref: https://github.com/termux/termux-packages/tree/master/packages/libandroid-wordexp
2023-08-14 10:33:11 +08:00
李通洲 65d25446fe Users: use __has_include 2023-08-14 10:05:43 +08:00
李通洲 b39c84f81e IO (Android): fix compiler errors if wordexp is not available 2023-08-14 10:03:53 +08:00
Carter Li 0291f35030 Merge pull request #520 from fastfetch-cli/dev
Release v2.0.0 (beta)
2023-08-14 09:45:57 +08:00
李通洲 550011c5f1 Release: v2.0.0 2023-08-14 09:24:33 +08:00
李通洲 1adbe9ee92 Doc: update builtin logo list 2023-08-14 09:19:33 +08:00
George Vlahavas 9bc1ec9f36 Add Slackel logo 2023-08-14 08:42:38 +08:00
李通洲 658598f43a --logo-source / --load-config: support path with env variables (*nix) 2023-08-13 10:59:50 +08:00
李通洲 290e721ee1 --logo-source / --load-config: support path with env variables (Windows) 2023-08-13 10:18:16 +08:00
李通洲 a34980e339 util/mallocHelper: add missing #include guards 2023-08-13 09:58:00 +08:00
李通洲 0b5631471a Logo: don't segfault if --logo-source starts with non-alpha charactors
Ref: #518
2023-08-13 09:23:37 +08:00
李通洲 082038f5fa Windows: silence compiler warnings 2023-08-13 09:22:04 +08:00
李通洲 1f265c5d5c Doc: update changelog 2023-08-12 10:09:36 +08:00
李通洲 a87a0470ca Fastfetch: fix #517
1. Fix specifying `--set-keyless` with the same key second time won't override the value set before
2. Fix specifying `--color` second time won't clear the value set before
2023-08-12 10:04:02 +08:00
李通洲 97b779aefb Monitor (Linux): try detecting HDR support 2023-08-12 00:27:05 +08:00
李通洲 46b0c6e76b Monitor (Windows): code refactor 2023-08-12 00:07:24 +08:00
李通洲 519f3bfd50 Monitor (macOS): test HDR support for external monitors 2023-08-11 22:04:26 +08:00
李通洲 045d7052d1 Monitor (macOS): fix building 2023-08-11 19:37:23 +08:00
李通洲 d05cbc0af0 Monitor (macOS): detect HDR support 2023-08-11 16:45:16 +08:00
李通洲 28d95c9f45 WM (macOS): don't print Core Graphics 2023-08-11 15:56:02 +08:00
李通洲 5a4de8b428 Doc: fix typo 2023-08-11 15:46:34 +08:00
李通洲 b847fcac8b Doc: document the incompatibility between fastfetch and p10k-instant-prompt 2023-08-11 15:43:45 +08:00
李通洲 126034f33e WM (macOS): detect if WindowServer is running 2023-08-11 14:56:17 +08:00
李通洲 ff685a52b4 Monitor (macOS): tidy 2023-08-11 14:29:24 +08:00
李通洲 8493c99146 README: update builtin logo list 2023-08-11 11:01:07 +08:00
李通洲 9177bc2b9b Display (Linux): don't use unknown as the display name 2023-08-11 10:58:54 +08:00
李通洲 d84bf00ca0 Logo (Builtin) remove OpenSuseTumbleweed2 2023-08-11 09:12:59 +08:00
李通洲 d1a92f8cf9 Display (Linux): retreive EDID monitor name 2023-08-10 20:59:54 +08:00
李通洲 8d7318c024 Display (Linux): don't assume DP-* are external monitors 2023-08-10 20:58:52 +08:00
李通洲 978e578e7a Display (Linux): fix memleaks 2023-08-10 19:04:09 +08:00
李通洲 3c817ecf6d Fastfetch: silence compiler warnings 2023-08-10 19:03:49 +08:00
李通洲 add33186a8 Fastfetch: improve performance of --structure parsing 2023-08-10 16:55:49 +08:00
李通洲 75ba116146 Logo (Builtin): don't match alternate logos 2023-08-10 16:21:42 +08:00
李通洲 0f8d757950 Logo (Builtin): improve searching performance 2023-08-10 16:21:42 +08:00
李通洲 8151848a5a Logo (Builtin): more 2023-08-10 13:49:05 +08:00
李通洲 f478b5bfb3 Monitor: add to presets/all 2023-08-10 11:11:44 +08:00
李通洲 77f79dc5d7 Doc: update changelog, metion libm usage 2023-08-10 11:08:16 +08:00
李通洲 e0c59b9395 Brightness (Linux): try detect monitor name 2023-08-10 10:39:48 +08:00
李通洲 b4ad245212 Monitor (Linux): detect monitor name 2023-08-10 10:16:05 +08:00
李通洲 3bd4694a52 Display (Linux): detect monitor name when using DRM 2023-08-10 10:12:25 +08:00
李通洲 2f2856eacb Display (Linux): detect monitor name for wayland 2023-08-10 09:58:31 +08:00
李通洲 33dc097c3f DisplayServer (Linux): get EDID 2023-08-10 09:35:00 +08:00
李通洲 3bab3eddfc EdidHelper: use vendor / model id if model name is not set in EDID 2023-08-10 08:41:28 +08:00
李通洲 fada8113c1 DisplayServer (Linux): get EDID (WIP) 2023-08-09 21:56:40 +08:00
李通洲 e7487e24ae DisplayServer (Linux): better rotation detection for X11 2023-08-09 21:11:03 +08:00
李通洲 7965107347 PhysicalDisplay: rename module to Monitor 2023-08-09 16:31:24 +08:00
李通洲 d8e221517b Brightness: fix --brightness-format 2023-08-09 16:30:14 +08:00
李通洲 4b57e4261e PhysicalDisplay: calculate ppi 2023-08-09 16:30:14 +08:00
李通洲 6c156ebba4 PhysicalDisplay (Linux): using sqrt requires linking with libm 2023-08-09 16:07:01 +08:00
李通洲 921f3e3c34 PhysicalDisplay: fix typo 2023-08-09 13:27:52 +08:00
李通洲 44d02b3bfc PhycialDisplay: only print physical sizes if detected successfully 2023-08-09 11:20:18 +08:00
李通洲 008c9a597e PhycialDisplay: detect phycial size 2023-08-09 11:20:18 +08:00
李通洲 abae204ab8 PhycialDisplay: tidy 2023-08-09 10:34:53 +08:00
李通洲 1d1ce83567 PhycialDisplay (macOS): add support 2023-08-09 10:11:24 +08:00
李通洲 bb0279bae1 NativeResolution: rename module to PhycialDisplay 2023-08-09 10:00:57 +08:00
李通洲 3acbe84570 Brightness (macOS): code refactor 2023-08-09 09:00:29 +08:00
李通洲 7598e57704 NativeResolution (Windows): add support 2023-08-08 23:19:22 +08:00
李通洲 5c603145ab Battery (Windows): tidy 2023-08-08 23:18:41 +08:00
李通洲 c28ced9dcb NativeResolution (Linux): add support 2023-08-08 20:23:26 +08:00
李通洲 a58db92ab8 NativeResolution: init code 2023-08-08 20:18:24 +08:00
shivanandvp 38044acf75 Logo(Builtin): Fix RebornOS 2023-08-08 18:55:24 +08:00
李通洲 4bef1274c8 Logo: add Panwah 2023-08-08 15:37:14 +08:00
李通洲 e7f05258fb Logo: add Ubuntu Unity 2023-08-08 09:38:24 +08:00
李通洲 cebc5cd77a Wifi (Linux): support signal quality detection with ioctl
Also don't show 802.11 as protocol
2023-08-08 00:37:03 +08:00
李通洲 6071c1b09d JsonConfig: support generate default config file with --gen-config 2023-08-07 14:17:06 +08:00
李通洲 cc1a35e379 Logo: more 2023-08-07 13:30:14 +08:00
李通洲 2c71568448 Weather: document --weather-location 2023-08-07 10:32:16 +08:00
李通洲 74233ac0cb Temps (macOS): code refactors 2023-08-07 10:19:08 +08:00
李通洲 f1d4611a7d Temps (macOS): adjust CPU and GPU sensors for m2 apple silicon
Ref: https://github.com/exelban/stats/commit/14e29c4d60229c363cca9c9d25c30c87b7870830
2023-08-07 10:16:10 +08:00
李通洲 eef8040ea9 TerminalFont: Fix #510
3rd try
2023-08-06 09:25:09 +08:00
李通洲 97f3860d1e TerminalFont: Fix #510
2rd try
2023-08-05 23:08:47 +08:00
李通洲 16aedae843 TerminalFont: detect .kitty-wrapped as kitty
Fixes #510
2023-08-05 20:33:45 +08:00
李通洲 a971f6d933 Revert "Memory / Swap (Windows): simplify implementation"
Doesn't work at all

This reverts commit 0c2edd4064.
2023-08-05 11:40:38 +08:00
李通洲 0c2edd4064 Memory / Swap (Windows): simplify implementation 2023-08-05 00:29:04 +08:00
李通洲 819c78e74c Fastfetch: add option --bright-color 2023-08-04 16:05:25 +08:00
李通洲 f2b3418482 Logo (Builtin): fix Tails and TeArch 2023-08-04 15:08:15 +08:00
李通洲 c1b75c0e4d Doc: update changelog 2023-08-04 14:53:22 +08:00
李通洲 f42fb5365f Logo (Builtin): more 2023-08-04 14:42:02 +08:00
李通洲 1d1dc56ec1 Logo (Builtin): more
81 left
2023-08-04 10:32:07 +08:00
b1n4ry fa13906e47 Fix typo in config_user.txt
...weather to hide... -> ...whether to hide...
2023-08-03 19:49:19 +08:00
李通洲 26bb2dc998 Logo: more
146 left
2023-08-03 16:40:39 +08:00
李通洲 f659595066 Logo (Builtin): more
170 left, sigh
2023-08-03 15:32:16 +08:00
李通洲 7d347a9b46 Logo (Builtin): use meaningful macros
instead of raw color codes
2023-08-03 14:30:53 +08:00
李通洲 34e2af4c4b Logo: refactor logo initial code 2023-08-03 13:49:33 +08:00
李通洲 897d1e7a11 Windows (Terminal): don't detect wsl as terminal 2023-08-02 21:18:17 +08:00
李通洲 e4a99b2d6d Logo: more 2023-08-02 16:47:32 +08:00
李通洲 c0317e2086 Logo: more 2023-08-02 16:12:15 +08:00
李通洲 04ede28dbe Logo: add more logos 2023-08-02 15:18:40 +08:00
李通洲 9686467886 Logo: add elementary and mx 2023-08-01 23:49:22 +08:00
李通洲 0c86e458ce Wifi (Linux): don't make iw a slow operation 2023-08-01 23:19:49 +08:00
李通洲 5137b7d646 Revert "IO: only suppress IO in release mode"
This reverts commit f1ec86a371.
2023-08-01 16:20:00 +08:00
李通洲 df374f8234 Revert "DisplayServer (Linux): try fixing #505"
This reverts commit aa49877610.
2023-08-01 16:19:58 +08:00
李通洲 172b3b2968 Disk (BSD): fix bytesUsed calculation
Follow up of #508
2023-08-01 16:11:58 +08:00
xzl 81f7861147 Disk(Linux): fix byteUsed not correctly in ext4 2023-08-01 16:06:26 +08:00
李通洲 f1ec86a371 IO: only suppress IO in release mode
It can be annoy when printing debug messages
2023-08-01 15:16:58 +08:00
李通洲 aa49877610 DisplayServer (Linux): try fixing #505 2023-08-01 15:16:58 +08:00
李通洲 5562bc6264 Command (Linux): use /bin/sh as the default shell 2023-08-01 10:23:36 +08:00
李通洲 a986edbffb Logo: add Proxmox
Fixes #507
2023-08-01 09:38:47 +08:00
李通洲 674618930d DisplayServer: add option --ds-force-drm
Fixes #505
2023-07-31 23:11:39 +08:00
李通洲 9e64e66254 TerminalShell: don't detect *.sh as shell or terminal
Fixes #366
2023-07-31 22:34:10 +08:00
李通洲 ca31f67c82 Host (Linux): display WSL distro name 2023-07-31 20:29:57 +08:00
李通洲 fd8794e6c8 Disk (Linux): support hyperlink in WSL 2023-07-31 20:29:33 +08:00
李通洲 b4d1c97d2c Separator: support Unicode / double width separator string
Fixes #504
2023-07-31 16:22:56 +08:00
李通洲 f906d02720 Title (Windows): remove the trailing white space of user name on WIndows 7 2023-07-30 12:38:47 +08:00
李通洲 6e7652e5be Terminal: support yakuake 2023-07-30 11:32:44 +08:00
李通洲 4f54eab672 LM (Linux): fix gdm version detection on Ubuntu 2023-07-30 00:36:47 +08:00
李通洲 b3f8798f73 Logo: add Ubuntu Budgie and Ubuntu Gnome 2023-07-29 23:10:14 +08:00
李通洲 893f45e6b1 Logo: add Orchid 2023-07-29 23:03:10 +08:00
李通洲 2a39fd35a3 Logo: add Garuda Dragon 2023-07-29 22:43:16 +08:00
李通洲 0bc8ccd870 Doc: update changelog for newly added logos 2023-07-29 22:14:21 +08:00
李通洲 2fa7f1157f Logos: move logo lines to seperated plain text files 2023-07-29 22:14:21 +08:00
李通洲 90bf6cbe44 Logo: remove old .txt 2023-07-29 21:56:41 +08:00
李通洲 09f73235aa FFstrbuf: add ffStrbufUpperCase and ffStrbufLowerCase 2023-07-29 21:18:26 +08:00
李通洲 c78c18d63a Logo: generate logo_builtin.h with CMake 2023-07-29 20:47:02 +08:00
李通洲 5291d1a190 Logo: add more ASCII logos 2023-07-28 16:50:15 +08:00
李通洲 124a49098e Logo: add Windows 95; refactor code
From https://github.com/dylanaraps/neofetch/pull/2346/files
2023-07-28 14:26:16 +08:00
李通洲 340f2b2374 Doc: update changelog 2023-07-27 23:09:10 +08:00
李通洲 a2b00cbf9e Bios (Android): add support 2023-07-27 22:50:19 +08:00
李通洲 7abf91aa7f Host (Android): better host detection 2023-07-27 22:43:47 +08:00
李通洲 be93714fd3 Display (Android): add support for Xiaomi devices 2023-07-27 22:43:47 +08:00
李通洲 7147029c96 Board (Android): add support 2023-07-27 22:43:47 +08:00
李通洲 92b1d74d12 CPU (Android): better CPU name detection
at least for Xiaomi
2023-07-27 20:46:11 +08:00
李通洲 5fcf5b7f64 CPU (Linux): tidy 2023-07-27 16:16:09 +08:00
李通洲 af2c6a832e Fastfetch: add new option --temperature-unit 2023-07-27 15:58:49 +08:00
李通洲 c9741d1662 Parsing: simplify code 2023-07-27 15:17:54 +08:00
李通洲 de3cb1f855 Logo: fix kitty-direct 2023-07-26 21:44:01 +08:00
李通洲 8cbeb709f9 TerminalSize: add new module 2023-07-26 18:18:27 +08:00
李通洲 2f0d0a5a02 CMake: build universal binaries for macOS 2023-07-26 09:19:12 +08:00
李通洲 841be619ba Global: use ffStrbufInitStatic 2023-07-25 17:35:09 +08:00
李通洲 309d1d2130 FFstrbuf: add ffStrbufCreateStatic 2023-07-25 17:35:09 +08:00
李通洲 e685a00a4b FFstrbuf: remove ffStrbufRemoveStringsV; rename ffStrbufRemoveStringsA to ffStrbufRemoveStrings 2023-07-25 17:35:09 +08:00
李通洲 62cfd27ac0 Logo: fix WezTerm compatibility with kitty-direct 2023-07-24 22:56:40 +08:00
李通洲 fc6acd1e3f Logo: fix --logo-padding-top for kitty-direct 2023-07-24 21:58:37 +08:00
李通洲 2aa637ecc8 Processing (Linux): don't return on POLLHUP
In case child process finishs too fast
2023-07-24 21:30:41 +08:00
李通洲 e8d075907f CMake: show progress when fetching deps 2023-07-23 19:32:44 +08:00
李通洲 5220144ad8 DE: fix detection for ghostbsd 2023-07-23 19:30:51 +08:00
李通洲 4202e618db Brightness: improve performance 2023-07-23 13:15:22 +08:00
李通洲 30791e14bd Presets: add a new example 2023-07-21 16:42:10 +08:00
李通洲 9af5c36e16 Doc: update JSON schema 2023-07-21 16:41:53 +08:00
李通洲 1feb3915a0 Brightness (macOS): fix detecting with ddc/ci 2023-07-21 15:31:46 +08:00
李通洲 48a22db969 Doc: update changelog 2023-07-21 10:04:38 +08:00
李通洲 76f3090e2a Doc: update JSON schema 2023-07-21 09:46:53 +08:00
Tom Briden 250d3c349e Add paludis (exherbo) package count 2023-07-21 00:19:36 +08:00
Tom Briden d33ef3173d Add Exherbo logo 2023-07-21 00:19:36 +08:00
李通洲 493824113b Shell: support ksh version detection 2023-07-20 16:11:02 +08:00
李通洲 d13e72b815 Processing: always trim white spaces 2023-07-20 16:10:13 +08:00
李通洲 e9ec7d3597 Title: add option --title-color-user, --title-color-at and --title-color-host 2023-07-20 11:21:12 +08:00
李通洲 00a5f1bf3f Title: fix option --title-fqdn doesn't work 2023-07-20 11:15:19 +08:00
李通洲 d3ff245e1b Logo (Builtin): add linux_small 2023-07-20 10:30:32 +08:00
李通洲 a0cfbe74c4 CMake: print message before fetching yyjson 2023-07-20 10:19:40 +08:00
李通洲 9de7a78f43 JsonConfig: don't disable --show-errors when setting --stat false 2023-07-19 15:44:40 +08:00
李通洲 e55da74c5c Doc: update changelog 2023-07-19 15:44:40 +08:00
李通洲 e25eed5896 Weather: add option --weather-location 2023-07-19 15:44:40 +08:00
李通洲 3c5c2d2ca8 Battery (Android): support detection with dumpsys 2023-07-19 15:44:40 +08:00
李通洲 396cec8033 Wifi (Android): use yyjson to parse JSON string 2023-07-19 15:44:40 +08:00
李通洲 8ef2bb788f Battery (Android): use yyjson to parse JSON string 2023-07-19 15:44:40 +08:00
李通洲 7d91e7b7b4 Display (Android): support detection in adb 2023-07-19 15:44:40 +08:00
李通洲 e48a7aa92f LocalIP (Android): tidy 2023-07-19 15:44:40 +08:00
李通洲 f1ebcd7c31 Logo: add kitty-direct protocol 2023-07-18 21:18:14 +08:00
李通洲 1dc0ee183c LocalIP (Android): fix crashing 2023-07-17 23:40:59 +08:00
李通洲 59dc2f82e3 LocalIP (Linux): fix build on Android 2023-07-17 23:03:56 +08:00
李通洲 f34d51b911 LocalIP: add option --localip-default-route-only 2023-07-17 18:32:13 +08:00
李通洲 1e57c4c088 LocalIP (Windows): detect default route 2023-07-17 18:12:45 +08:00
李通洲 68f71c5421 LocalIP (macOS): detect default route 2023-07-17 18:12:45 +08:00
李通洲 44faa3aa84 LocalIP (Linux): test default route 2023-07-17 10:41:53 +08:00
李通洲 a5c838e4a0 Disk: print mount points as links 2023-07-16 23:06:53 +08:00
李通洲 80007233fa Disk (Linux): fix #479 2023-07-16 23:06:53 +08:00
李通洲 c79120b99c TerminalFont (macOS): detect non-ascii font of iTerm 2023-07-16 20:55:22 +08:00
李通洲 eea70020c3 Terminal (macOS): fix compatibility with Fig 2023-07-16 20:39:55 +08:00
李通洲 c1d5a3eb1c Terminal (Windows): unified handling of ConEmu 2023-07-16 19:47:17 +08:00
李通洲 6f0b4c0ce6 Cursor (Windows): fix Win7 compatibility 2023-07-16 19:22:58 +08:00
李通洲 a77553409b Processing (Windows): try fixing Win7 compatiblity 2023-07-16 19:22:58 +08:00
李通洲 7705237f10 Terminal (Windows): better terminal detection when running shell directly in Windows Explorer 2023-07-16 19:22:58 +08:00
李通洲 e4b3d7e6cf Terminal (Windows): don't detect Windows Terminal as conhost 2023-07-16 19:22:58 +08:00
李通洲 ddc55d70a7 Terminal (Linux): don't assume conhost in WSL 2023-07-16 19:22:58 +08:00
李通洲 64ea1af991 Processing: always trim trailing new lines 2023-07-15 15:46:19 +08:00
李通洲 1ddecf4cdb Brightness (Linux): work around #499 2023-07-15 13:30:10 +08:00
李通洲 f6101a6629 Doc: update changelog 2023-07-15 11:31:14 +08:00
李通洲 426aae1ab6 PublicIP: print location 2023-07-15 11:24:12 +08:00
李通洲 a9466654b2 Processing (macOS): fix compiling 2023-07-15 08:25:57 +08:00
李通洲 55e0f8e5dd Linux (Bluetooth): silence warnings 2023-07-15 08:25:06 +08:00
李通洲 87ebdef8df Processing (Linux): don't leave zombie processes 2023-07-15 00:33:38 +08:00
李通洲 872b108e52 DisplayServer (Linux): fix heap-buffer-overflow reading 2023-07-14 11:19:16 +08:00
李通洲 d3d121a965 Brightness (Linux): use display model name as a fallback if we fail to match the display with edid 2023-07-14 11:16:05 +08:00
李通洲 da4ec98f47 Wifi (Linux): fix false errors when built without libnm support 2023-07-13 07:46:40 +00:00
李通洲 c9735984e9 DE (Linux): revert bc7d84fea2
Ref: #495
2023-07-13 07:32:31 +00:00
李通洲 67d3910fd3 LM (Linux): fix LightDM version detection 2023-07-13 11:19:23 +08:00
李通洲 ad627e0e0a GPU (Linux): disable GPU memory size detection with libpci by default
Ref: #495, #497
2023-07-13 10:03:44 +08:00
Piotr Kubaj 63fbaa146c CPU: properly detect CPU on POWER
Excerpt for a thread from /proc/cpuinfo:
processor       : 0
cpu             : POWER9, altivec supported
clock           : 3800.000000MHz
revision        : 2.2 (pvr 004e 1202)

Without this patch, the following is printed for a CPU:
CPU: CPU (64) @ 3.8 GHz

With it, there is:
CPU: POWER9, altivec supported (64) @ 3.8 GHz
2023-07-12 19:54:09 +08:00
李通洲 dfefb802d0 Processing (Linux): always poll before read 2023-07-11 20:28:59 +08:00
李通洲 11adefd839 Processing (Windows): fix hanging when executing cygwin processes 2023-07-11 19:45:16 +08:00
李通洲 992fd6e5ad Processing (Windows): properly implement timed reading 2023-07-11 16:00:58 +08:00
李通洲 ced2347829 Processing (Linux): fix potential hang when reading large buffer
`write` in child process blocks when the pipe is full. However because we are `waitpid`ing, we don't read the pipe, so that the pipe is never free. Therefore `write` in child process blocks forever and `waitpid` hangs.

Fix #493
2023-07-11 11:13:13 +08:00
李通洲 7dae59ee92 Processing: add --processing-timeout 2023-07-10 22:20:30 +08:00
李通洲 d53b584ba2 Processing (Windows): support timeout 2023-07-10 21:02:13 +08:00
李通洲 9c9ba2f1a1 CI (Linux): fix build on musl 2023-07-10 18:10:59 +08:00
李通洲 c1b2ebc66e CI: fix compiling errors 2023-07-10 18:04:21 +08:00
李通洲 301e6153e1 WM/DE (Linux): revert 2486e68fe3 because it seems to cause too many issues
Ref: #495 #489 #481#480
2023-07-10 18:02:40 +08:00
李通洲 7bd0780f1a Fastfetch: make --size-max-prefix accept enum values. 2023-07-10 17:30:08 +08:00
李通洲 ad9103c767 Processing (Linux): support timeout 2023-07-10 17:12:18 +08:00
李通洲 9719c17d19 LM (Linux): detect sshd version 2023-07-10 17:11:27 +08:00
李通洲 e611ce5733 Processing (Linux): don't hang on waitpid(2) 2023-07-10 15:26:10 +08:00
李通洲 856d732e13 Global: add option --size-ndigits and --size-max-prefix 2023-07-10 15:25:45 +08:00
李通洲 d5f0ccae88 LM (Linux): try fixing LightDM version detection 2023-07-10 09:39:24 +08:00
李通洲 e99b45a24b TerminalFont (Linux): support xterm 2023-07-09 22:30:12 +08:00
李通洲 cad89fccd1 Terminal: detect xterm terminal version 2023-07-09 22:15:03 +08:00
李通洲 98079f583c Brightness (macOS): fix crashing when no external display connected 2023-07-09 19:32:38 +08:00
李通洲 da6dafe49a CI (Linux): ddcutil is not available on Ubuntu 20.04; disable it 2023-07-09 17:36:36 +08:00
李通洲 d0ce6aabb6 Brightness (Linux): detect brightness of external monitors with DDC/CI 2023-07-09 17:22:04 +08:00
李通洲 300d06ffcd Fastfetch: don't hide cursor in DEBUG mode 2023-07-09 16:56:12 +08:00
李通洲 f1667357f5 LM (Linux): fix compiling 2023-07-09 00:36:29 +08:00
李通洲 30afe7e86b Brightness (macOS): detect brightness of external monitors with DDC/CI 2023-07-08 23:56:44 +08:00
李通洲 faf6d139d1 Brightness (Windows): detect brightness of external monitors with DDC/CI 2023-07-08 23:54:46 +08:00
李通洲 55c516a14b DisplayServer: prepare for DDC/CI 2023-07-08 10:06:04 +08:00
李通洲 713a62b383 Logo: fix segfault with fastfetch -l 2023-07-08 09:18:19 +08:00
李通洲 11cd795425 LM (Linux): detection LightDM version 2023-07-08 09:18:19 +08:00
李通洲 09d843d47f CMake: don't install global config file
No one use it. Note we just don't install the default config file with
`make install`; `/etc/fastfetch/config.conf` is still looked at runtime.

Fix #491
2023-07-08 09:30:13 +08:00
李通洲 53569d5a66 Terminal: support Cockpit version detection 2023-07-07 09:40:04 +08:00
李通洲 b9f192682c Doc: update changelog 2023-07-06 23:26:45 +08:00
李通洲 e7db3cd7fe Logo: support builtin small logo
Also improve performance of builtin logo finding

Assume you are running macOS

* default -> macos
* `-l small` -> macos_small
* `--logo-type small` -> macos_small
* `-l macos` -> macos
* `-l macos --logo-type small` -> macos_small
* `-l macos_small` -> macos_small
* `-l macos_small --logo-type small` -> error, because Logo `macos_small_small` doesn't exist
2023-07-06 23:16:05 +08:00
李通洲 71ed353fde Logo (Builtin): make Windows 11 small colorable 2023-07-06 15:49:41 +08:00
李通洲 36950a9539 Presets: update examples 2023-07-06 15:43:53 +08:00
李通洲 dad5457700 Presets: more examples 2023-07-06 09:06:35 +08:00
李通洲 0e5932fbc1 Presets: print more information 2023-07-05 16:03:46 +08:00
李通洲 341b2ef62d Presets: don't use module Date and Time 2023-07-05 15:53:45 +08:00
李通洲 5e9f850fe1 Title: fix typo fdqn -> fqdn; support standard module args 2023-07-05 15:47:47 +08:00
李通洲 7bd9e1e750 LocalIP: fix --compact 2023-07-05 15:06:34 +08:00
李通洲 03442022ed Disk: fix --disk-folders printing duplicated paths 2023-07-05 14:33:17 +08:00
李通洲 763890053b JsonConfig: implement --load-config for JSON config file 2023-07-05 14:21:35 +08:00
李通洲 d9f5c4d894 Merge branch 'master' into dev 2023-07-05 10:07:41 +08:00
李通洲 92588e1159 Fastfetch: fix memory leaks 2023-07-05 10:05:24 +08:00
李通洲 3245b8a453 Merge branch 'master' into dev 2023-07-05 09:55:09 +08:00
李通洲 948a480859 Release: v1.12.2 2023-07-05 09:44:44 +08:00
李通洲 ee90d886ab Packages (Linux): print pkgtool package count in custom module format mode 2023-07-05 09:43:52 +08:00
李通洲 f74c643a84 Host (macOS): fix incorrect Host on M2 Mac Studio with M2 Max CPU (#490) 2023-07-05 09:39:16 +08:00
李通洲 03efbe5f6a TerminalShell (Windows): fix #488 2023-07-05 09:39:16 +08:00
李通洲 085479a923 Shell (Windows): fallback shell version detection to file version 2023-07-05 09:39:16 +08:00
李通洲 482b15c62e Packages (Linux): try detecting pkgtool
fix #486
2023-07-05 09:18:00 +08:00
李通洲 1f5da2736e Terminal (Linux): support terminator version detection 2023-07-05 09:12:37 +08:00
李通洲 55234ff1f3 Doc: add CI badge 2023-07-05 09:12:29 +08:00
李通洲 3b799756dd DE (Linux): fix #489 2023-07-05 09:07:55 +08:00
李通洲 2a20338885 Host (macOS): fix incorrect Host on M2 Mac Studio with M2 Max CPU (#490) 2023-07-05 08:44:47 +08:00
李通洲 65dabd392e TerminalShell (Windows): fix #488 2023-07-04 18:32:02 +08:00
李通洲 41cef6274c Shell (Windows): fallback shell version detection to file version 2023-07-04 18:00:50 +08:00
李通洲 c6416b5ccb Host (Windows): cleanup useless smbios values 2023-07-04 17:53:28 +08:00
李通洲 107b3dc1e3 Pckages (Linux): fix pkgtool detection
Ref: https://github.com/fastfetch-cli/fastfetch/issues/486#issuecomment-1618808002
2023-07-04 00:16:48 +08:00
李通洲 bd3bf9b623 Fastfetch: add --set and --set-keyless back, but instead deprecate them
Removing them seems to break too many users' configurations. Let's
remove them later.
2023-07-03 23:57:33 +08:00
李通洲 cf91981d49 Packages (Linux): try detecting pkgtool
fix #486
2023-07-03 23:21:14 +08:00
李通洲 be5a782598 Terminal (Linux): support terminator version detection 2023-07-03 18:19:41 +08:00
李通洲 b294f45a22 Doc: add CI badge 2023-07-03 15:38:25 +08:00
李通洲 2491956fff Merge branch 'master' into dev 2023-07-03 15:35:05 +08:00
李通洲 ebbadbed4f Bios (macOS): fix compiling error on Apple Slicon 2023-07-03 15:31:33 +08:00
李通洲 c3f39b0d9e Merge remote-tracking branch 'origin/master' into dev 2023-07-03 09:18:41 +08:00
Linus Dierheimer e7474bda1f Adapt to new repository url 2023-07-02 17:04:46 +08:00
李通洲 fa8bfd08f9 Release: v1.12.0 2023-07-02 13:58:11 +08:00
李通洲 11827d64be TerminalShell: fix compiling on macOS 2023-07-02 13:54:31 +08:00
李通洲 47ac01c8e1 Global: fix compiling 2023-07-02 11:10:12 +08:00
李通洲 23c8937362 fix(Shell): fix shell version printing 2023-07-02 11:04:38 +08:00
李通洲 ad3b7762a3 GPU: fix #484 2023-07-02 11:04:38 +08:00
李通洲 b6c5f49650 GPU (Windows): more strict check 2023-07-02 11:04:38 +08:00
李通洲 5b6416e13c CMake (Windows): remove an unused dependency 2023-07-02 11:04:38 +08:00
李通洲 9d4ec4ca65 Bios (macOS): support bios date detection 2023-07-02 11:04:38 +08:00
李通洲 4652002e8c FFPlatform: fix ffPlatformPathAddEnv on Windows 2023-07-02 11:04:38 +08:00
李通洲 2729d72c68 GPU (macOS): remove an unused #include 2023-07-02 11:04:38 +08:00
Carter Li c18bcd316d GPU (macOS): fix typo 2023-07-02 11:04:38 +08:00
Carter Li 8fd30e814a GPU (macOS): fix vendor detection for Intel GPU 2023-07-02 11:04:38 +08:00
李通洲 b1b637fe2f OS (Windows): code refactor; fix common/library.h usage for C++ 2023-07-02 11:04:38 +08:00
李通洲 86806b64a2 CI (FreeBSD): build with libpulse support 2023-07-02 11:04:38 +08:00
Carter Li 96a8548c59 DisplayServer: dirty hack for #477 2023-07-02 11:04:38 +08:00
Carter Li c7becf82bd DisplayServer (Wayland): warn if some properties of wl_output_listener are not supported 2023-07-02 11:04:38 +08:00
李通洲 2d80085d6e Logo (Windows): make Windows logos colorable 2023-07-02 11:04:38 +08:00
Carter Li e63669bea3 Logo: more BSD logos 2023-07-02 11:04:38 +08:00
Carter Li 9568eb8dd3 TerminalFont (FreeBSD): fix gnome-terminal font detection 2023-07-02 11:04:38 +08:00
Carter Li a63925483c Terminal (Linux): print gnome-terminal-server as gnome-terminal 2023-07-02 11:04:38 +08:00
Carter Li 67689f9229 Terminal (FreeBSD): fix Gnome Terminal version detetion on FreeBSD 2023-07-02 11:04:38 +08:00
李通洲 161f86eb45 DisplayServer (Linux): add fast path of kde version detection for Fedora 2023-07-02 11:04:38 +08:00
李通洲 1994219531 DisplayServer (Linux): mark plasmashell --version as slow operation
It costs more than 1 sec some time
2023-07-02 11:04:38 +08:00
李通洲 2ec0353423 Disk (Android): actually detect something 2023-07-02 10:35:33 +08:00
Carter Li 8088905721 Host (macOS): update newest product name data 2023-07-02 10:34:33 +08:00
Carter Li ec049fd490 Fastfetch: set pipe=true automatically if stdout is not a tty 2023-07-02 10:34:12 +08:00
李通洲 033cced5a9 CMake (Windows): silence compiler warnings 2023-07-02 10:32:25 +08:00
李通洲 a059c55f05 Memory (FreeBSD): count cached memory as free memory
As what neofetch did
2023-07-02 10:30:21 +08:00
李通洲 0b00b5ffe0 FreeBSD (CPU): fix temperature detection 2023-07-02 10:29:16 +08:00
李通洲 6e7a6174ba Disk (Linux): don't detect WSL drives as subvolumes 2023-07-02 10:27:36 +08:00
李通洲 07eddf9772 GPU (Linux): always initialize variables 2023-07-02 10:26:32 +08:00
李通洲 c451a377c9 CMake: make some serious warnings as errors 2023-07-02 10:25:41 +08:00
Linus Dierheimer e5de3a90c6 Remove debug statement 2023-07-02 10:24:40 +08:00
Linus Dierheimer 7aecf385e2 Include limits.h when needed
Fixes #472
2023-07-02 10:24:22 +08:00
李通洲 1de049bdf5 Wallpaper (Linux): support Cinnamon 2023-07-02 10:23:00 +08:00
李通洲 55b8c0947b Wallpaper (Linux): support MATE 2023-07-02 10:22:50 +08:00
李通洲 51ba806e6d TerminalFont (Linux): support MATE Terminal 2023-07-02 10:21:51 +08:00
李通洲 ae2855d123 Terminal (Linux): support MATE terminal version detection 2023-07-02 10:21:39 +08:00
李通洲 9000432b52 Wallpaper (Linux): fix xfce wallpaper detection on my laptop 2023-07-02 10:21:28 +08:00
李通洲 618e5f01df Wallpaper (Linux): support lxqt 2023-07-02 10:21:19 +08:00
李通洲 0486ad8da7 TerminalFont (Linux): support QTerminal 2023-07-02 10:21:00 +08:00
李通洲 d23831465a Terminal: support qterminal version detection 2023-07-02 10:20:24 +08:00
李通洲 6ba95d7017 Wallpaper (Linux): support KDE 2023-07-02 10:20:00 +08:00
李通洲 6acfc1b715 DE: fix KDE version detection on Fedora 2023-07-02 10:18:18 +08:00
李通洲 af2e9a9a78 Logo: fix paddingLeft doesn't work when paddingTop is set 2023-07-02 10:17:12 +08:00
李通洲 af33627c4c DisplayServer: fix typos. 2023-07-02 10:13:46 +08:00
李通洲 b8a9b74978 GPU: fix #484 2023-07-01 20:27:04 +08:00
李通洲 e2cef238ec Revert "GPU (Windows): add debug logs for #484"
This reverts commit 1f799d16c9.
2023-07-01 20:10:32 +08:00
李通洲 1f799d16c9 GPU (Windows): add debug logs for #484 2023-07-01 15:06:47 +08:00
李通洲 1c62a07099 GPU (Windows): more strict check 2023-07-01 14:47:14 +08:00
李通洲 ac07ae739b LM (Linux): support version detection 2023-07-01 14:20:34 +08:00
李通洲 cf62e61001 CMake (Windows): remove an unused dependency 2023-06-30 16:34:19 +08:00
李通洲 b4049c195c fix(DE): fix KDE detection (#481) 2023-06-30 16:33:02 +08:00
李通洲 6528f076fa Bios (macOS): support bios date detection 2023-06-29 11:26:35 +08:00
李通洲 651b33082d Bios (macOS): fix bios version detection 2023-06-29 11:16:07 +08:00
李通洲 0f8ebd2269 Bios: rename biosRelease to release 2023-06-29 10:46:41 +08:00
李通洲 13f58f5f1b FFPlatform: only add a path to data dirs if the path exits 2023-06-29 10:39:49 +08:00
李通洲 4c7036a2ce FFPlatform: fix ffPlatformPathAddEnv on Windows 2023-06-29 09:43:00 +08:00
李通洲 ecfe4287aa JsonConfig: set showErrors=true implicitly if stat is enabled 2023-06-28 11:09:39 +08:00
李通洲 fd4ed07449 Logo: simplify ffLogoPrintRemaining 2023-06-28 10:56:53 +08:00
李通洲 0e97df08c2 GPU (macOS): remove an unused #include 2023-06-28 09:39:48 +08:00
Carter Li 98985e9a27 GPU (macOS): fix typo 2023-06-25 23:40:20 +08:00
Carter Li c6c6b2a0a6 GPU (macOS): fix vendor detection for Intel GPU 2023-06-25 23:35:51 +08:00
Carter Li c5b5c0d9fd JsonSchema: fix copy-paste errors 2023-06-25 22:59:02 +08:00
李通洲 f0844d7636 JsonConfig: support "logo": null and "logo": "/path/to/logo" 2023-06-25 21:22:44 +08:00
李通洲 9021c6ee82 JsonConfig: fix compiler warnings 2023-06-25 21:12:27 +08:00
李通洲 773c5b04c7 Presets: convert some .conf files to .jsonc files 2023-06-25 21:04:32 +08:00
李通洲 ab3290d9cb WMI (Windows): add --wmi-timeout option 2023-06-25 14:33:13 +08:00
李通洲 c4c490663b WMI (Windows): code refactor 2023-06-25 14:16:49 +08:00
李通洲 8fc31c700f OS (Windows): code refactor; fix common/library.h usage for C++ 2023-06-25 14:14:42 +08:00
李通洲 dfc9b15dce Chassis (Windows): support get information from WMI 2023-06-24 23:58:57 +08:00
李通洲 59bcf5206d GPU: print GPU type by default 2023-06-24 13:51:01 +00:00
李通洲 9ab5ed9a86 GPU (Linux): detect memory; fix type detection
The GPU type detection is based on memory size.
For accurate results, use `--gpu-force-vulkan`
2023-06-24 13:51:01 +00:00
李通洲 b84720c040 Bluetooth: improvements
1. fix memleaks
2. fix `show-disconnected` option parsing
3. print `[disconnected]` for disconnected device
2023-06-24 17:28:05 +08:00
Carter Li 726ed35f61 Doc: update issue template 2023-06-24 17:28:05 +08:00
Carter Li 82ed8c8cfd Global: fix --*-format keys 2023-06-24 17:28:05 +08:00
Carter Li 75e29726e2 Brightness (FreeBSD): add support
I hope someone can test it
2023-06-24 17:28:05 +08:00
Carter Li 296eaa592c Battery (FreeBSD): tidy 2023-06-24 17:28:05 +08:00
李通洲 40a487d7ed CI (FreeBSD): build with libpulse support 2023-06-24 17:28:05 +08:00
李通洲 d0f093c567 Global: make FFinstance instance a global variable
As discussed in https://github.com/fastfetch-cli/fastfetch/discussions/473
2023-06-24 17:28:05 +08:00
Linus Dierheimer 48b01c9665 Don't catch polkit-gnome and gnome-keyring
Fixes #480
2023-06-24 10:07:50 +02:00
Carter Li 6b96ad4b71 Doc: update issue template 2023-06-23 07:16:19 +00:00
Carter Li cff95e66be DisplayServer: dirty hack for #477 2023-06-23 06:07:22 +00:00
Carter Li 20f8b8558d DisplayServer (Wayland): warn if some properties of wl_output_listener are not supported 2023-06-23 05:36:57 +00:00
李通洲 fc587ecffa Chassis (Windows): add detectWithWmi to detect chassis version and chassis vendor 2023-06-23 11:41:22 +08:00
李通洲 466477429d Bios: code refactor 2023-06-22 22:35:09 +08:00
李通洲 e4e5560b75 Board: code refactor 2023-06-22 22:32:14 +08:00
李通洲 a35d1a32ea Chassis: code refactor 2023-06-22 19:05:13 +08:00
Carter Li 376cb4a1eb Global: SMBIOS related code cleanup 2023-06-22 10:45:43 +00:00
李通洲 0e4da16d9e Chassis (Linux): convert chassis type number to display string 2023-06-22 17:44:20 +08:00
李通洲 5394d6da8a Chassis (Windows): add basic support 2023-06-22 17:32:01 +08:00
李通洲 291c43dd31 Bios: print as ${version} (${release})
As biosRelease looks more like a version on my laptop
2023-06-22 16:55:11 +08:00
李通洲 3c414abc8f Display: don't print (null) 2023-06-22 15:12:49 +08:00
李通洲 e261bf8be0 Host (WSL): make WSL version the product version 2023-06-22 14:58:07 +08:00
李通洲 1ad204e0a1 Logo (Windows): make Windows logos colorable 2023-06-22 14:53:15 +08:00
李通洲 9794c4b78f CI: fix build 2023-06-22 13:14:38 +08:00
Carter Li dbda2f84bc Wallpaper: print filename only 2023-06-22 12:44:59 +08:00
Carter Li 85597e4d46 CPU (FreeBSD): actually support temp detection 2023-06-22 04:06:08 +00:00
Carter Li f7059783dc Logo: more BSD logos 2023-06-22 03:07:18 +00:00
Carter Li d50d77f528 TerminalFont (FreeBSD): fix gnome-terminal font detection 2023-06-22 02:12:59 +00:00
Carter Li 26978b7d48 Terminal (Linux): print gnome-terminal-server as gnome-terminal 2023-06-22 02:05:40 +00:00
Carter Li d6879219e7 Disk (FreeBSD): hide /compat/linux/* 2023-06-22 01:56:23 +00:00
Carter Li be8782231b Terminal (FreeBSD): fix Gnome Terminal version detetion on FreeBSD 2023-06-22 01:38:25 +00:00
李通洲 66126d8e7c LM: silense warnings 2023-06-22 00:04:16 +08:00
李通洲 9ddec1d9aa JsonConfig: update json_schema, and move it to doc. Move logo.md to Github wiki 2023-06-22 00:03:42 +08:00
李通洲 5b5527f4c9 JsonConfig: allow JSON files without "modules" key 2023-06-21 16:34:54 +08:00
李通洲 151753cb2f LM: support systems without $XDG_SESSION_ID being set 2023-06-21 16:07:35 +08:00
李通洲 1c65c75dba LM: init variables
Don't know why it didn't crash before
2023-06-20 23:43:56 +08:00
李通洲 68feaa2800 LM: new module 2023-06-20 23:01:18 +08:00
李通洲 a88f603e6d DisplayServer (Linux): add fast path of kde version detection for Fedora 2023-06-20 18:31:44 +08:00
李通洲 113848c578 DisplayServer (Linux): mark plasmashell --version as slow operation
It costs more than 1 sec some time
2023-06-20 18:27:29 +08:00
李通洲 9d6e1eb47d Display (DRM): detect display name
Also fix crashes...
2023-06-20 18:12:12 +08:00
李通洲 1716489396 Display: always show display name 2023-06-20 17:28:10 +08:00
李通洲 baebbb61eb DisplayServer (Wayland): detect name using wl_output_listener::name
Which matches X11 and module Brightness
2023-06-20 17:27:43 +08:00
李通洲 54f6b6a9c9 Display: remove --detect-name 2023-06-20 15:54:57 +08:00
李通洲 a53d74e483 Colors: FFColorssymbol -> FFColorsSymbol 2023-06-20 15:23:38 +08:00
李通洲 bd71bfd9f3 Colors: add --colors-padding-left 2023-06-20 15:14:06 +08:00
李通洲 9369122017 Board: silense compiler warnings 2023-06-20 14:46:15 +08:00
李通洲 31dbd4b941 JsonConfig: update json_schema.jsonc
Turn all module types to lower case
2023-06-20 14:45:58 +08:00
李通洲 4905d5aded Wifi (Windows): remove --lib-wlanapi
It's not used
2023-06-20 14:14:11 +08:00
李通洲 ce864b88df Fastfetch: don't print modules in config.jsonc if --structure is specified
Good for testing
2023-06-20 09:29:58 +08:00
李通洲 054093025e Disk (Android): actually detect something 2023-06-19 21:40:01 +08:00
李通洲 2ff4daef20 Board: simplify code 2023-06-19 21:27:47 +08:00
李通洲 9bd8a788c8 Chassis: print version; don't print N/A 2023-06-19 21:20:18 +08:00
李通洲 eef3afabb7 Board: print version; don't print N/A 2023-06-19 21:20:18 +08:00
李通洲 9f5dc24bf6 Bios: print version; don't print N/A 2023-06-19 21:20:18 +08:00
Linus Dierheimer bc7d84fea2 WM/DE: Linux: Use strcasestr to catch more processes 2023-06-19 14:40:42 +02:00
李通洲 16d2fd7f9b Disk: don't display file system if it's not set 2023-06-19 17:11:57 +08:00
李通洲 baa8992322 Global: refactor strcmp() == 0 to ffStrEquals() 2023-06-19 17:11:57 +08:00
李通洲 da76c6efbe Global: refactor strncmp to ffStrStartsWith 2023-06-19 17:11:57 +08:00
李通洲 805fb13b13 Global: refactor strcasecmp() == 0 to ffStrEqualsIgnCase()
to prevent me from forgetting to write `== 0`
2023-06-19 15:21:49 +08:00
Carter Li 463838a198 JsonConfig: update JSON schema 2023-06-18 14:38:39 +08:00
Carter Li 6a44242795 Host (macOS): update newest product name data 2023-06-18 14:16:06 +08:00
Carter Li 3670238f04 Doc: update changelog for FreeBSD support 2023-06-18 14:04:04 +08:00
Carter Li ba45229db0 Colors: support --colors-symbol 2023-06-18 14:03:29 +08:00
Carter Li 35e57741d3 Global: document --<module>-key-color 2023-06-18 12:58:27 +08:00
Carter Li afe8d00936 Users: revert 9b9d03947d 2023-06-18 12:51:58 +08:00
Carter Li fbbd549db2 Fastfetch: set pipe=true automatically if stdout is not a tty 2023-06-18 12:49:53 +08:00
Carter Li 36a2fee9d5 Global: support --*-key-color 2023-06-18 12:32:47 +08:00
Carter Li 2998b1f02e Chore: remove --*-error-format 2023-06-18 11:14:50 +08:00
Carter Li ea1e1b245d Chore: update issue template 2023-06-18 10:50:34 +08:00
Sophie L b8d01755a0 chore: typo/grammar fixes (#478) 2023-06-18 09:57:35 +08:00
Carter Li d508dc69dc JsonConfig: update JSON schema 2023-06-18 02:07:34 +08:00
Carter Li 594765658a JsonConfig: update json_schema 2023-06-17 22:37:33 +08:00
Carter Li 4bde3afe8a OpenGL: change option key type to library
To avoid conflict with JSON config `type`
2023-06-17 22:33:41 +08:00
Carter Li a994d398d9 Disk: fix key name of showUnknown 2023-06-17 22:07:31 +08:00
Carter Li 6bb5f9d1ab Bluetooth: fix key name of showDisconnected 2023-06-17 21:43:41 +08:00
Carter Li 184a6de1e9 JsonConfig: always use ffStrbufSet* to set config properties 2023-06-17 21:08:50 +08:00
Carter Li d1dc04020a Fastfetch: print error messages when failed to parse JSON config file 2023-06-17 20:39:08 +08:00
李通洲 64bdb59683 Display: print * for primary monitors
Also `FF_FORMAT_ARG_VALUE_BOOL` was removed, which makes usages of `FF_FORMAT_ARG_VALUE_*` inconsistant
2023-06-17 19:17:10 +08:00
李通洲 5678019204 CPU (Windows): fix detection bug 2023-06-17 19:17:10 +08:00
李通洲 40ae2fb1da Display (Windows): detect primary monitor 2023-06-17 19:17:10 +08:00
CarterLi 30dd291d3d Gamepad (FreeBSD): fix detection 2023-06-17 19:17:10 +08:00
李通洲 98a7ea5a10 CMake (Windows): silence compiler warnings 2023-06-17 19:17:10 +08:00
李通洲 05c41ffd89 Bios: code refactor 2023-06-17 19:17:10 +08:00
李通洲 5483cb9143 Chassis: refactor 2023-06-16 23:27:21 +08:00
李通洲 4360450ac6 Display (Linux): detect primary display 2023-06-16 23:27:21 +08:00
李通洲 eea02ffb80 Display (macOS): detect primary display 2023-06-16 23:27:21 +08:00
李通洲 59ec3ca697 Display (X11): detect rotation and name 2023-06-16 23:27:21 +08:00
李通洲 2647d04da3 Android: fix compiling 2023-06-16 09:18:07 +08:00
李通洲 46de2ec047 TerminalFont: fix more memleaks 2023-06-16 09:15:50 +08:00
Linus Dierheimer 2486e68fe3 Less strictly wm name matching
Fixes #475
2023-06-15 19:11:04 +02:00
Carter 2896ea0437 Wifi (FreeBSD): add dirty support 2023-06-15 15:55:02 +00:00
Carter 7d28409f8d Presets: fix keys in verbose 2023-06-15 14:53:31 +00:00
Carter 592354b449 Gamepad (FreeBSD): add support 2023-06-15 14:22:47 +00:00
Carter 0685c7afd6 OpenGL (FreeBSD): remove possible error messages 2023-06-15 13:13:07 +00:00
Carter 9c66732593 Battery (FreeBSD): truly support FreeBSD 2023-06-15 13:13:07 +00:00
李通洲 464768a460 Memory (FreeBSD): count cached memory as free memory
As what neofetch did
2023-06-15 13:13:07 +00:00
李通洲 10a39b88d7 Chassis (FreeBSD): add support 2023-06-15 14:10:39 +08:00
李通洲 b5da203571 Board (FreeBSD): add support 2023-06-15 13:49:18 +08:00
李通洲 2e22b5f601 Host (FreeBSD): actually support 2023-06-15 13:42:03 +08:00
李通洲 16181b7272 Bios (FreeBSD): code refactor 2023-06-15 13:42:03 +08:00
李通洲 a18073f5de FreeBSD (CPU): fix temperature detection 2023-06-15 09:35:47 +08:00
李通洲 3c8688345f Disk: change removable to external; print filesystem by default 2023-06-15 00:30:27 +08:00
李通洲 05a8bd7f74 Disk (Linux): don't detect WSL drives as subvolumes 2023-06-14 22:41:40 +08:00
李通洲 592ff603ca CMake: don't install yyjson
Fix #474
2023-06-14 17:36:39 +08:00
李通洲 257a97ed55 JsonConfig: add JSON schema definition file (WIP) 2023-06-14 16:18:24 +08:00
李通洲 b87997caa2 Logo: parse chafa options as enum 2023-06-14 16:17:38 +08:00
李通洲 be40894bbd DisplayServer: fix typos. 2023-06-13 22:03:29 +08:00
李通洲 679622bac0 Packages: don't use singleton 2023-06-13 21:38:06 +08:00
李通洲 92d234fb3e Display (Linux): try fixing musl 2023-06-13 18:29:17 +08:00
李通洲 9cb5375f30 GPU (Linux): always initialize variables 2023-06-13 11:12:31 +08:00
李通洲 043c41dfc7 Fastfetch: add --no-buffer option 2023-06-13 11:08:49 +08:00
李通洲 17b6ff1a6d TerminalFont: always init terminalFont.font 2023-06-13 10:57:52 +08:00
李通洲 ba4c18f80b FFlist.h: fix copy / paste bug in ffListInitMove 2023-06-13 09:21:12 +08:00
李通洲 2c2a231330 CPU: fix memleaks 2023-06-13 09:04:41 +08:00
李通洲 429d7c1ed9 Host: don't use singleton 2023-06-13 09:04:41 +08:00
李通洲 3bf83e45ed Font: don't use singleton 2023-06-13 09:04:41 +08:00
李通洲 d5a3802492 Disk: don't use singleton 2023-06-13 09:04:41 +08:00
李通洲 88f354a872 Bluetooth: don't use singleton 2023-06-12 23:39:56 +08:00
李通洲 fa99508a69 CMake: make some serious warnings as errors 2023-06-12 23:39:56 +08:00
李通洲 cba352cca6 TerminalFont: don't use singleton
Singleton doesn't work well with JSON config
2023-06-12 23:39:56 +08:00
Linus Dierheimer fc12494ac1 Adapt to new repository url 2023-06-12 17:26:37 +02:00
Linus Dierheimer a42e807276 Don't test musl-clang, it is broken 2023-06-12 17:22:25 +02:00
Linus Dierheimer 67349354e4 Don't build the combination of musl & features 2023-06-12 17:20:27 +02:00
Linus Dierheimer 29f070fc1f Wifi: Workaround: Check if header is present 2023-06-12 16:15:29 +02:00
Linus Dierheimer 216ae71f7f Don't use linux/if_packet.h 2023-06-12 16:02:56 +02:00
Linus Dierheimer 0cf114c399 CI: Try to fix build with musl 2023-06-12 15:39:17 +02:00
Linus Dierheimer b784fd266a CI: Install correct packages 2023-06-12 15:29:11 +02:00
Linus Dierheimer 298b669ff9 CI: Try without static 2023-06-12 15:24:58 +02:00
Linus Dierheimer 465387fd65 CI: add musl to build test 2023-06-12 15:22:42 +02:00
Linus Dierheimer c99dd33246 Remove debug statement 2023-06-12 15:12:25 +02:00
Linus Dierheimer 47bf785752 Include limits.h when needed
Fixes #472
2023-06-12 15:10:45 +02:00
李通洲 6568cd8e0d fastfetch: unify parse functions 2023-06-12 15:48:26 +08:00
李通洲 e9b3a799bc OS: make osFile a global option
`OS` is used by Module `Package`
2023-06-12 15:42:56 +08:00
李通洲 d7115022e4 OpenGL: update text files that reflects the change of --gl to --opengl-type 2023-06-12 15:35:48 +08:00
李通洲 df4d6627ee Player: make playerName a global config
`playerName` is used in `ffDetectMedia`, which is used in Module `media` and `player`.
2023-06-12 15:28:31 +08:00
李通洲 9b9d03947d Users: silence compiler warnings 2023-06-12 15:28:31 +08:00
李通洲 40a1f75895 TerminalShell: remove --terminal-version and --shell-version 2023-06-12 15:03:56 +08:00
李通洲 6a71e0fa75 Media: tidy, add fixme 2023-06-12 15:03:56 +08:00
李通洲 c33eb8c265 GPU: support module options 2023-06-12 14:57:59 +08:00
李通洲 74e61369f2 FFlist / FFstrbuf: add InitMove functions 2023-06-12 11:30:04 +08:00
李通洲 6f9167c725 Display: detect screen rotation 2023-06-12 10:35:28 +08:00
李通洲 56effcb189 CPU: use module options 2023-06-12 10:33:28 +08:00
李通洲 8a284ae9a1 Battery: use module options 2023-06-12 10:32:35 +08:00
李通洲 71beb626c3 Logo: fix paddingLeft doesn't work when paddingTop is set 2023-06-11 21:35:18 +08:00
李通洲 e68efb184b JsonConfig: support more non-module options 2023-06-11 21:31:09 +08:00
李通洲 ac32de7bf1 WM: detect Gnome classic mode 2023-06-11 18:56:40 +08:00
李通洲 bab103ff17 Wallpaper (Linux): support Cinnamon 2023-06-11 14:26:57 +08:00
李通洲 a3a60176b1 Wallpaper (Linux): support MATE 2023-06-11 14:14:23 +08:00
李通洲 9c35e3a17a TerminalFont (Linux): support MATE Terminal 2023-06-11 14:13:57 +08:00
李通洲 3f97e8195b Terminal (Linux): support MATE terminal version detection 2023-06-11 14:07:22 +08:00
李通洲 4575ee0d97 Wallpaper (Linux): fix xfce wallpaper detection on my laptop 2023-06-11 12:59:43 +08:00
李通洲 ec03294ebc Wallpaper (Linux): support lxqt 2023-06-11 12:38:10 +08:00
李通洲 aa0d1d94b2 TerminalFont (Linux): support QTerminal 2023-06-11 12:32:17 +08:00
李通洲 662f081f49 Terminal: support qterminal version detection 2023-06-11 12:32:17 +08:00
李通洲 f65a3d1e75 Wallpaper (Linux): support KDE 2023-06-11 12:32:06 +08:00
李通洲 977da91aa6 DE: fix KDE version detection on Fedora 2023-06-11 09:53:43 +08:00
李通洲 c7a11e050c JsonConfig: don't make it a module
So that JsonConfig doesn't rely on `--structure`
2023-06-11 00:57:31 +08:00
李通洲 6d6eee9968 JsonConfig: support Logo config (WIP) 2023-06-10 21:35:45 +08:00
李通洲 abe0d2ca78 Global: drop json-c and switch to yyjson 2023-06-10 21:35:45 +08:00
李通洲 174e1f9d4b JSON: an attempt to switch back to yyjson
yyjson is a lot faster than json-c and is more actively maintained. In addition, as JSON config is now a major feature, we'd better not depend on lib that may not exist
2023-06-10 21:35:45 +08:00
Carter Li cb8dc0326c Merge pull request #432 from CarterLi/config
Initial support of JSON config file, the first step to fastfetch 2.0
2023-06-10 10:10:15 +08:00
李通洲 3227eee080 Processes: add JSON config 2023-06-10 09:15:15 +08:00
李通洲 0021219f42 Chassis: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 e3ec136cad Theme: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 db98e406c2 Weather: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 7f9ff587ce PublicIP: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 a4a801d83a Player: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 fde86657f2 Media: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 0adecd3cb0 Fastfetch: remove a useless function definition 2023-06-10 09:15:15 +08:00
李通洲 969c787ff8 Users: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 748a67d47a Vulkan: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 692dd841e3 OpenCL: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 e484c6cdfc OpenGL: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 d731051cb7 WM: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 11d8142cea DE: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 54a1890aca Wallpaper: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 a3524c3af1 Icons: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 823f773e26 PowerAdapter: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 d5557976d5 JSON: inline json-c function wrappers 2023-06-10 09:15:15 +08:00
李通洲 100ce5844d TerminalFont: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 13ae9aff44 Terminal: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 786d538276 Shell: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 fa28529308 Packages: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 2f5c198a81 Wifi: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 f3190b8979 Memory / Swap: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 31241b64d8 WMTheme: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 dab5dbf759 DateTime: remove redundant function definitions 2023-06-10 09:15:15 +08:00
李通洲 a4c8b93a07 Uptime: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 51bc06f60b Uptime: code refactor 2023-06-10 09:15:15 +08:00
李通洲 39582471e8 Global: major FFlist related code refactor 2023-06-10 09:15:15 +08:00
李通洲 6d002c175f FFstrbuf: fix building on Windows 2023-06-10 09:15:15 +08:00
李通洲 c7119498a3 Global: major FFstrbuf related code refactor 2023-06-10 09:15:15 +08:00
李通洲 2df1305521 Sound: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 7e85db6843 LocalIP: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 0b96818f6d Locale: add JSON config support 2023-06-10 09:15:15 +08:00
李通洲 3526092b38 Font: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 8dc443f827 Gamepad: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 623557f521 Disk: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 2359b7e2f4 GPU: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 9addc016fb CMake: fix char case issue 2023-06-10 09:15:15 +08:00
李通洲 e3e8c689ed Custom: support JSON module
Note: old command options `--set` and `--set-keyless` were removed. To reuse custom module, JSON config must be used.
2023-06-10 09:15:15 +08:00
李通洲 83dda3e8ab Cursor: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 305533a0d4 CpuUsage: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 0f3fa38c04 TerminalFont: fix Windows Terminal detection 2023-06-10 09:15:15 +08:00
李通洲 f205982ae5 CPU: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 9209ac5773 Colors: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 ff721218f5 JsonConfig: simplify code 2023-06-10 09:15:15 +08:00
李通洲 dca9ce4b2d JsonConfig: refactor to get rid of data-ffjson_* 2023-06-10 09:15:15 +08:00
李通洲 5f52c64d4d JsonConfig: code simplify 2023-06-10 09:15:15 +08:00
李通洲 5da3127344 Brightness: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 010330ac90 Break: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 5f3154acc6 Board: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 fb2004a6f9 Bluetooth: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 e812380f20 Logo: move logo command line option parser to a separate file
Prepare for JSON config support
2023-06-10 09:15:15 +08:00
李通洲 ae08966d40 Bios: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 76da3d811c Modules: remove unnecessary #include 2023-06-10 09:15:15 +08:00
李通洲 0377793102 JsonConfig: use .jsonc as config file extension
to prevent text editors from confusing
2023-06-10 09:15:15 +08:00
李通洲 169785a8bb Kernel: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 9c066e9494 Host: support JSON config 2023-06-10 09:15:15 +08:00
李通洲 04180a7389 Display: init support of JSON config 2023-06-10 09:15:15 +08:00
李通洲 da81111575 DateTime: init support of JSON config
Redundant modules `Date` and `Time` are removed
2023-06-10 09:15:15 +08:00
李通洲 c5dcf522c4 JsonConfig: make it a special module 2023-06-10 09:15:15 +08:00
李通洲 da5da85c07 Title: init support of JSON config 2023-06-10 09:15:15 +08:00
李通洲 0ab2eda0ae Separator: init support of JSON config 2023-06-10 09:15:15 +08:00
李通洲 4cf130bd07 Fastfetch: rename FFinstance::separator to keyValueSeparator, because it's conflicted against Separator module 2023-06-10 09:15:15 +08:00
李通洲 161c4ac028 OS: init support of JSON config 2023-06-10 09:15:15 +08:00
李通洲 d4549d6849 Command: init support of JSON config 2023-06-10 09:15:15 +08:00
李通洲 790ca460d4 Battery: init support of JSON config 2023-06-10 09:15:15 +08:00
李通洲 cbaeed7e8e Command: major code refactoring
ditto; and multi-command support was removed in favor of JSON config
support
2023-06-10 09:15:15 +08:00
李通洲 4e3e469ba8 Battery: major code refactoring
ditto
2023-06-10 09:15:15 +08:00
李通洲 6cb073e6a5 OS: major code refactoring
Split `fastfetch.h` to make it possible to print OS module with different options
2023-06-10 09:15:15 +08:00
李通洲 de2a346601 Revert "Deps: revert changes of JSON parse library"
This reverts commit ccb0f853db.
2023-06-10 09:15:15 +08:00
李通洲 8b285af276 CMake: build with debug info 2023-06-09 22:39:16 +08:00
Carter Li be60eaf7c8 Merge pull request #468 from LinusDierheimer/dev
Release 1.11.3
2023-06-09 22:34:25 +08:00
李通洲 2235c3e8e4 Release 1.11.3 2023-06-09 22:32:02 +08:00
李通洲 68ae9248a6 Settings: try fixing #467 2023-06-09 22:14:29 +08:00
李通洲 b9742642fc Release 1.11.2 before merging #432 2023-06-09 11:31:36 +08:00
李通洲 356c905703 DisplayServer (macOS): add a missing variable initialization 2023-06-09 11:07:06 +08:00
李通洲 47a5473a35 Init: fix possible memleaks 2023-06-09 10:10:03 +08:00
李通洲 96bca6888a LocalIP: remove useless code 2023-06-09 09:47:45 +08:00
李通洲 bbf31c1a95 Doc: update changelog 2023-06-08 22:28:32 +08:00
李通洲 42b8c1b429 Wallpaper: add missing docs 2023-06-08 22:27:15 +08:00
李通洲 77fde11039 Disk (Linux): fix fastfetch doesn't show Windows drives (/mnt/c) 2023-06-08 22:24:57 +08:00
李通洲 e13f04e80f Disk: backport changes from config branch 2023-06-08 22:24:57 +08:00
李通洲 ad026f6105 LocalIP: backport mac address support
Also change `--*-ip-*` to `--*ip-*` to be consistant to my config branch
2023-06-08 22:22:05 +08:00
李通洲 9107d0e107 Player: try avoiding too Linux-specific names 2023-06-08 16:08:56 +08:00
李通洲 ee876c54bf Theme: split detection code 2023-06-08 16:08:56 +08:00
李通洲 4af44a40bf OS (macOS): add fast path for code name detection 2023-06-07 14:30:45 +08:00
李通洲 399cfe2fbc CI (Wallpaper): run this module 2023-06-06 21:17:03 +08:00
李通洲 71d0cdbfce Wallpaper (Linux): add support for xfce4 2023-06-06 21:02:21 +08:00
李通洲 aae740472f Wallpaper (Linux): add support for gnome 2023-06-06 21:02:21 +08:00
李通洲 8f9beb2789 Wallpaper (macOS): add support 2023-06-06 21:02:21 +08:00
李通洲 77b93a904f Wallpaper (Windows): add new module 2023-06-06 15:48:24 +08:00
李通洲 7934c16bca Doc: update changelog for Icons module 2023-06-06 15:46:57 +08:00
李通洲 941ddee2fc Icons (Windows): add support
Instead of icon theme, this module on Windows detects enabled system icons
2023-06-06 15:35:41 +08:00
李通洲 16113bf330 Icons: split detection code 2023-06-06 15:35:41 +08:00
李通洲 505182428b Global: silence some clang warnings 2023-06-04 01:30:48 +08:00
李通洲 3c2a84ff78 TerminalFont: detect /dev/pts/* 2023-06-01 11:00:40 +08:00
李通洲 8a3346b650 DisplayServer (Wayland): remove a useless line 2023-05-30 22:38:35 +08:00
李通洲 5b63fb1362 Doc: update changelog 2023-05-30 21:04:11 +08:00
李通洲 393857b067 Brightness (Linux): print more useful display name instead of intel_backlight 2023-05-30 20:57:05 +08:00
李通洲 cb8a9c0796 DisplayServer (Wayland): detect display type 2023-05-30 20:54:08 +08:00
李通洲 036752763f DisplayServer (Wayland): silence compiler warnings 2023-05-30 20:53:35 +08:00
李通洲 3a90af1f44 DisplayServer (Wayland): detect screen rotation 2023-05-30 20:16:18 +08:00
李通洲 772de0ff97 DisplayServer: better wayland feature detection 2023-05-29 13:35:45 +08:00
李通洲 53a61a8e58 Display (Linux): support name detection for wayland protocol 2023-05-29 13:30:50 +08:00
Linus Dierheimer a37328c1aa Font: Show QT before GTK
keeps consistency with other modules
2023-05-28 12:34:23 +02:00
李通洲 782325395c DE: Fix Gnome version detection on Fedora 2023-05-28 01:10:00 +08:00
李通洲 e13d554433 Merge remote-tracking branch 'upstream/master' into dev 2023-05-28 00:20:31 +08:00
李通洲 15c72c04af Release: 1.11.1
Update changelog too
2023-05-28 00:17:57 +08:00
李通洲 b797246607 DisplayServer (Apple): use FF_AUTO_FREE 2023-05-28 00:17:57 +08:00
李通洲 d54bb4fd16 Windows: use ffStrbufInitWS 2023-05-28 00:17:57 +08:00
李通洲 0a946e3976 Disk (Windows): improve performance 2023-05-28 00:17:57 +08:00
李通洲 a339f00d83 Windows: fix potential memory curruption bug in unicode.c
Also add ffStrbufInitWS
2023-05-28 00:17:57 +08:00
李通洲 de15866c9a TerminalShell (Windows): print clink version 2023-05-28 00:17:57 +08:00
李通洲 24ee87720e TerminalShell: code refactoring 2023-05-28 00:17:57 +08:00
李通洲 7310b3ed09 TerminalShel (Windows): detect Tabby version with exe file version 2023-05-28 00:17:57 +08:00
李通洲 bb6cdc7bb0 Settings (Linux): fix memleaks reported by LeakSanitizer 2023-05-28 00:17:57 +08:00
李通洲 4a2d20fb74 TerminalFont: support Tabby 2023-05-28 00:17:57 +08:00
李通洲 b136b86300 TerminalShell: support Tabby terminal version detection 2023-05-28 00:17:57 +08:00
李通洲 d4a7ae8b34 Sound (macOS): detecting volume more aggressively 2023-05-28 00:17:57 +08:00
李通洲 04da7cebdb Logo: add macOS small version 2023-05-28 00:17:57 +08:00
李通洲 ccb227e694 TerminalShell: fix iTerm being detected as iTermServer-* sometimes 2023-05-28 00:17:57 +08:00
李通洲 9c7b868227 TerminalShell: support xonsh 2023-05-28 00:17:57 +08:00
李通洲 f333937b35 Swap (Windows): fix compiler warnings 2023-05-28 00:17:57 +08:00
李通洲 e4f6f15d70 Vulkan: try fixing #456 2023-05-28 00:17:57 +08:00
李通洲 5ae8ef1cb3 Swap: split module code from memory.c 2023-05-28 00:17:57 +08:00
李通洲 d863652e1b CMake(Windows): remove USE_WIN_NTAPI option 2023-05-28 00:17:57 +08:00
李通洲 ac540d73b7 Network: drop module 2023-05-28 00:17:57 +08:00
Edward Piper 37b9da7337 Fix EndeavourOS logo again 2023-05-28 00:17:57 +08:00
李通洲 93c0dbde0d DisplayServer (Windows): code simplification 2023-05-28 00:17:57 +08:00
李通洲 aa236b4da0 OpenCL: split detection code 2023-05-28 00:17:57 +08:00
李通洲 2fd3643632 Doc: document Network module 2023-05-28 00:17:57 +08:00
李通洲 24f9247c54 LocalIP: simplify loop interface detection 2023-05-28 00:17:57 +08:00
李通洲 d312b752a1 Network (FreeBSD): add dirty support 2023-05-28 00:17:57 +08:00
李通洲 1b476757a0 Network: code refactor & bug fixes 2023-05-28 00:17:57 +08:00
李通洲 c78a8f6317 Network (Linux): add support 2023-05-28 00:17:57 +08:00
李通洲 24c3788055 Network (Windows): add support 2023-05-28 00:17:57 +08:00
李通洲 a644762a60 Network (macOS): init 2023-05-28 00:17:57 +08:00
Linus Dierheimer 3185d92fb5 --pipe: don't print white color blocks
Fixes #450
2023-05-28 00:17:57 +08:00
李通洲 2c629bc821 FFstrbuf: remove FF_STRBUF_CREATE macro 2023-05-28 00:17:57 +08:00
李通洲 1a6c38bc26 CpuUsage: code refactor 2023-05-28 00:17:57 +08:00
李通洲 589f9aa8f3 Processes: code refactor 2023-05-28 00:17:57 +08:00
tdtooke 70e5d0b235 Update builtin.c 2023-05-28 00:17:57 +08:00
tdtooke aa81d80578 Update builtin.c 2023-05-28 00:17:57 +08:00
KingKrouch 7bc6676680 Update Windows 11 ASCII
Reason being that the original ASCII art as shown in Windows Terminal has random portions using "*" and "(" as opposed to "/".
2023-05-28 00:17:57 +08:00
Linus Dierheimer ab9b10824f Fix flatpak package count
Fix user package count
Show runtime packages too
Fixes #441
2023-05-28 00:17:57 +08:00
Linus Dierheimer f5931e80e7 Fix a new compile warning 2023-05-28 00:17:57 +08:00
Linus Dierheimer bf4f86b4f6 Remove leftover comment 2023-05-28 00:17:57 +08:00
李通洲 7f59f22cf4 Font: code refactor 2023-05-28 00:17:57 +08:00
李通洲 14f4817381 Doc: update changelog 2023-05-28 00:17:57 +08:00
李通洲 e821468bb0 Gamepad: fix copy-and-paste errors 2023-05-28 00:17:57 +08:00
李通洲 d9315d2332 Doc: update changelog 2023-05-28 00:17:57 +08:00
李通洲 a2b4be388e Logo: add SteamOS (#439) 2023-05-28 00:17:57 +08:00
李通洲 35e06642f9 Gamepad (Windows): change the name of Pro Controller 2023-05-28 00:17:57 +08:00
李通洲 92de3e4f30 Windows: fix compiling with imagemagick enabled 2023-05-28 00:17:57 +08:00
李通洲 5b65e182e9 Release: 1.11.1
Update changelog too
2023-05-27 23:53:41 +08:00
李通洲 a7896c39f0 DisplayServer (Apple): use FF_AUTO_FREE 2023-05-27 23:34:04 +08:00
李通洲 4f19bf9a18 Windows: use ffStrbufInitWS 2023-05-27 23:34:03 +08:00
李通洲 c379c65960 Disk (Windows): improve performance 2023-05-27 23:34:03 +08:00
李通洲 1ae0a83880 Windows: fix potential memory curruption bug in unicode.c
Also add ffStrbufInitWS
2023-05-27 23:34:03 +08:00
李通洲 77f7c813f4 TerminalShell (Windows): print clink version 2023-05-27 21:47:36 +08:00
李通洲 bfec8b5634 TerminalShell: code refactoring 2023-05-27 21:47:18 +08:00
李通洲 15a43a6b11 TerminalShel (Windows): detect Tabby version with exe file version 2023-05-27 21:26:00 +08:00
李通洲 c9e3c34ce1 Settings (Linux): fix memleaks reported by LeakSanitizer 2023-05-27 18:25:54 +08:00
李通洲 b99b3ad982 TerminalFont: support Tabby 2023-05-26 15:47:19 +08:00
李通洲 f4ce5c4143 TerminalShell: support Tabby terminal version detection 2023-05-26 15:44:54 +08:00
李通洲 bb4bf63621 Sound (macOS): detecting volume more aggressively 2023-05-26 15:18:59 +08:00
李通洲 60c1a552bb Logo: add macOS small version 2023-05-26 09:16:29 +08:00
李通洲 0a979ddd1e TerminalShell: fix iTerm being detected as iTermServer-* sometimes 2023-05-24 14:50:39 +08:00
李通洲 e45c4b49fd TerminalShell: support xonsh 2023-05-24 14:50:37 +08:00
李通洲 b89ace7aae Swap (Windows): fix compiler warnings 2023-05-16 20:54:45 +08:00
李通洲 424ca923fc Vulkan: try fixing #456 2023-05-16 20:53:45 +08:00
李通洲 e837e1e1d1 Swap: split module code from memory.c 2023-05-11 22:03:18 +08:00
李通洲 aea0986928 CMake(Windows): remove USE_WIN_NTAPI option 2023-05-11 19:55:31 +08:00
李通洲 dc2a3492f0 Network: drop module 2023-05-03 21:50:05 +08:00
Edward Piper 8cf033002c Fix EndeavourOS logo again 2023-05-03 21:49:50 +08:00
李通洲 4d7cb25aa6 DisplayServer (Windows): code simplification 2023-04-26 00:14:39 +08:00
李通洲 60cf3ec861 OpenCL: split detection code 2023-04-25 19:08:27 +08:00
李通洲 4fd82b16e8 Doc: document Network module 2023-04-18 20:59:26 +08:00
李通洲 26feccc0e4 LocalIP: simplify loop interface detection 2023-04-18 20:38:02 +08:00
李通洲 9a1bc66dfc Network (FreeBSD): add dirty support 2023-04-18 20:37:22 +08:00
李通洲 24a3783d7c Network: code refactor & bug fixes 2023-04-18 20:36:41 +08:00
李通洲 7e072c395f Network (Linux): add support 2023-04-18 18:27:25 +08:00
李通洲 94e1ed1d7e Network (Windows): add support 2023-04-18 18:02:31 +08:00
李通洲 94e6f4040d Network (macOS): init 2023-04-18 17:29:48 +08:00
Linus Dierheimer d570e59818 --pipe: don't print white color blocks
Fixes #450
2023-04-17 17:04:28 +02:00
李通洲 0e9d48fff0 FFstrbuf: remove FF_STRBUF_CREATE macro 2023-04-15 12:27:51 +08:00
李通洲 e690d73434 CpuUsage: code refactor 2023-04-15 12:27:51 +08:00
李通洲 8f2b3c6b69 Processes: code refactor 2023-04-15 12:27:51 +08:00
Linus Dierheimer 3c0b2fc910 Merge pull request #448 from LinusDierheimer/master
Merge pull request #437 from LinusDierheimer/dev
2023-04-13 09:17:37 +02:00
Linus Dierheimer 7d0a1c8987 Merge pull request #446 from tdtooke/dev
Adds another font color index to arch icon
2023-04-12 08:09:54 +02:00
tdtooke 757d947446 Update builtin.c 2023-04-11 13:44:07 -07:00
tdtooke 4ced4f9631 Update builtin.c 2023-04-11 13:35:24 -07:00
Linus Dierheimer c6859d7edd Merge pull request #445 from KingKrouch/winlogo-patch
Update Windows 11 ASCII logo to look more visually consistent.
2023-04-10 18:04:17 +02:00
KingKrouch 94cf9a89cc Update Windows 11 ASCII
Reason being that the original ASCII art as shown in Windows Terminal has random portions using "*" and "(" as opposed to "/".
2023-04-10 15:28:42 +00:00
Linus Dierheimer bd8d78427b Fix flatpak package count
Fix user package count
Show runtime packages too
Fixes #441
2023-04-06 11:11:31 +02:00
Linus Dierheimer e40d4b9b68 Fix a new compile warning 2023-04-05 13:41:10 +02:00
Linus Dierheimer 4a07485a19 Remove leftover comment 2023-04-05 13:21:46 +02:00
李通洲 71614e0b0c Font: code refactor 2023-04-04 12:06:21 +08:00
李通洲 d5b6c14bdf Doc: update changelog 2023-04-04 11:05:27 +08:00
李通洲 9509718b0e Gamepad: fix copy-and-paste errors 2023-04-04 11:02:59 +08:00
李通洲 c0ca022ac2 Doc: update changelog 2023-04-02 20:56:12 +08:00
李通洲 708b4a8981 Logo: add SteamOS (#439) 2023-04-02 20:54:16 +08:00
李通洲 8006b0ca4f Gamepad (Windows): change the name of Pro Controller 2023-04-02 20:41:18 +08:00
李通洲 cc2286f056 Windows: fix compiling with imagemagick enabled 2023-04-02 20:41:16 +08:00
Carter Li 81a4be498b Merge pull request #437 from LinusDierheimer/dev
Release 1.11.0
2023-03-25 14:42:07 +08:00
李通洲 56477f5ea6 GPU: be more careful to concat strings 2023-03-25 14:19:58 +08:00
李通洲 ca05e2e905 GPU: add option --gpu-force-vulkan 2023-03-25 13:24:28 +08:00
李通洲 a524302ea7 GPU (Windows): use a faster implementation 2023-03-25 13:04:44 +08:00
李通洲 945b5f1b15 Parsing: make it able to print 1.00 GB 2023-03-25 12:53:08 +08:00
李通洲 ccb0f853db Deps: revert changes of JSON parse library
Let's not make the change before fastfetch 2.0
2023-03-25 10:00:35 +08:00
李通洲 b8f1b0d6aa Release 1.11.0 2023-03-25 01:08:32 +08:00
李通洲 aa7d5bd704 Chore: add myself to FUNDING.yml 2023-03-25 00:50:40 +08:00
李通洲 9ee4c08790 Gamepad (Windows): detect gamepad name by productId
Also improve performance
2023-03-25 00:50:40 +08:00
李通洲 725d2f2612 Windows: fix <Windows.h> header mess 2023-03-25 00:50:40 +08:00
李通洲 4d5ad691f3 Doc: update changelog for flatpak-user support 2023-03-24 23:41:06 +08:00
李通洲 b2f3bf3461 Packages (Linux): support flatpak-user
Fixes #436
2023-03-24 17:47:03 +08:00
李通洲 44c389d29f Doc: document --display-compact-type 2023-03-23 15:09:47 +08:00
李通洲 ac8e03419e DisplayServer (Windows): correct resolution for vertical modes 2023-03-22 23:43:52 +08:00
李通洲 babb836f91 DisplayServer: detect display type ( builtin or external ) 2023-03-22 21:33:46 +08:00
李通洲 95e0a5ee95 DisplayServer: fix programming errors 2023-03-22 20:41:21 +08:00
李通洲 642a0c78cc Display: add options --display-detect-name and --display-precise-refresh-rate 2023-03-22 16:51:06 +08:00
李通洲 1ac90584cb Display: add option --display-compact-mode 2023-03-22 16:19:39 +08:00
李通洲 ccef5de86e Display (macOS, Windows): support display name detection 2023-03-22 16:04:48 +08:00
李通洲 e526ec9c32 Brightness: tidy 2023-03-22 15:44:59 +08:00
李通洲 b15e68658f FFstrbuf: make ffStrbufInit inlinable; add ffStrbufInitMove 2023-03-22 15:35:22 +08:00
李通洲 dcd0f8d3f6 DisplayServer (Windows): support precise refresh rate 2023-03-22 14:59:24 +08:00
李通洲 b3da6b0e89 CPU (Windows): try improving performance 2023-03-21 15:27:34 +08:00
李通洲 ff8c761de0 Doc: add changelog for new cursor features 2023-03-20 14:09:35 +08:00
李通洲 e6258acb55 Cursor (macOS): add support 2023-03-20 14:09:35 +08:00
李通洲 ecafed8fd5 Cursor (Windows): support cursor size detection 2023-03-20 10:29:06 +08:00
李通洲 73f99b1298 Doc: update changelog 2023-03-20 10:18:20 +08:00
Carter Li 7a6ed854ec Merge pull request #435 from regulargvy13/patch-1
Small update for nobara logo
2023-03-18 22:05:36 +08:00
regulargvy13 e923d78016 Small update for nobara logo
The last line in nobara logo was missing just a few spaces, so I added them, and now it's in proper shape :)
2023-03-18 00:46:46 +01:00
李通洲 615b2f72ae GPU (Linux): don't exit if libpci is failed to init
* Fixes #433
* Ref https://github.com/pciutils/pciutils/issues/136
2023-03-13 17:46:24 +08:00
李通洲 9773349253 Chassis: fix wrong module args used when printing 2023-03-10 13:54:27 +08:00
李通洲 fc57fa5415 Doc: document foot terminal support
Fix #431
2023-03-09 14:05:01 +08:00
李通洲 bdd9d46517 TerminalFont: support foot terminal 2023-03-09 14:02:08 +08:00
李通洲 013499f7a2 Terminal: support foot version detection 2023-03-09 14:01:59 +08:00
李通洲 c4416379bb Packages (Linux): support linuxbrew (Homebrew for Linux) 2023-03-08 15:02:58 +08:00
李通洲 c0c07e7dc9 TerminalFont: optimise JSON related code 2023-03-07 00:54:56 +08:00
李通洲 38ec3718ce CI: fix Windows artifacts 2023-03-06 11:22:57 +08:00
李通洲 e2e3561443 TerminalFont: migrate to json-c to prevent from 3rd lib code embedding 2023-03-04 12:17:16 +08:00
李通洲 199f2fc0cd Wifi (Linux): fix compiling with musl (#429) 2023-03-04 09:46:21 +08:00
李通洲 c944b2f599 DateTime: correct format as yyyy-MM-dd 2023-03-04 00:49:07 +08:00
李通洲 fdd0d47762 TerminalFont: migrate cJSON to yyjson
yyjson provides faster JSON parsing and supports JSON with comments ( which is allowed in WT config file )
https://github.com/ibireme/yyjson
2023-03-04 00:47:39 +08:00
李通洲 e5f851dcbb DisplayServer (Windows): fix scaled resolution detection 2023-03-04 00:41:32 +08:00
李通洲 78cb2781e6 Brightness (macOS): display monitor names 2023-03-01 15:40:18 +08:00
李通洲 ef9b5c57b1 DisplayServer (macOS): change process names 2023-02-27 11:29:10 +08:00
Carter Li 52eacd7140 Merge pull request #428 from LinusDierheimer/dev
Release: 1.10.3
2023-02-25 17:34:53 +08:00
李通洲 b19d8d6700 Release: 1.10.3 2023-02-25 16:06:16 +08:00
李通洲 6b0add44ee Init: print threads for --list-features if supported 2023-02-25 15:29:12 +08:00
李通洲 b66338494f CMake: fix compile error on Windows 2023-02-25 13:31:36 +08:00
李通洲 47cec48a49 GPU (Windows): fix uninited variables 2023-02-25 13:31:36 +08:00
李通洲 09ccbca79c WmTheme (Apple): don't depend on displayserver detection 2023-02-25 13:31:36 +08:00
李通洲 4f28ae62a7 Font: don't depend on displayserver detection on Windows and macOS. 2023-02-25 13:31:36 +08:00
李通洲 e953ea6542 Android: enable mutltithreading public-ip / weather detection 2023-02-24 17:48:20 +08:00
李通洲 de72c98a28 Init: don't create detection thread for displayserver on Windows / macOS
Displayserver (mainly resolutions) detection is cheap on win / mac, but creating an detection thread is unnecessary
2023-02-24 17:48:20 +08:00
李通洲 7f15f91bd3 Temps (Windows): dirty support
Note: https://stackoverflow.com/a/17083409
2023-02-23 21:31:33 +08:00
李通洲 c570c5bf97 IO: use FF_AUTO_CLOSE_FD 2023-02-23 13:58:39 +08:00
李通洲 52c304ecae IO (Linux): add detailed error messages for ffProcessAppendStdOut 2023-02-23 13:32:12 +08:00
Carter Li 4f4860eee8 Merge pull request #426 from LinusDierheimer/dev
Release: 1.10.2
2023-02-22 15:58:01 +08:00
李通洲 695e3cc692 Release: 1.10.2 2023-02-22 15:16:54 +08:00
李通洲 e05d9da231 Battery / Wifi: fix missing NULL for ffProcessAppendStdOut 2023-02-22 15:12:37 +08:00
Nanda H Krishna c16f9a9e20 sound_apple.c: handle kAudioObjectPropertyElementMain for macOS < 12 2023-02-22 14:19:22 +08:00
Carter Li 74b1871f18 CI: fix build (#424) 2023-02-21 22:19:17 +08:00
Carter Li 8fdb877840 Merge pull request #423 from LinusDierheimer/dev
Release 1.10.1
2023-02-21 21:43:50 +08:00
李通洲 3a7d7d79c0 CMake: more debug info 2023-02-21 21:40:55 +08:00
李通洲 28baf2596e CMake: more debug info 2023-02-21 21:38:10 +08:00
李通洲 30d1a55dde Release: 1.10.1 2023-02-21 21:28:26 +08:00
李通洲 3e068d16df Wifi / Battery (Android): more accurate checks 2023-02-21 21:25:02 +08:00
李通洲 c283e39b22 CI: update artifact name (Win32) 2023-02-21 20:44:22 +08:00
Carter Li f6702d83d0 Merge pull request #422 from LinusDierheimer/dev
Release 1.10.0
2023-02-21 18:48:33 +08:00
李通洲 b1a779c178 Release: 1.10.0; update changelog 2023-02-21 15:54:12 +08:00
李通洲 cc1260ee3c FFvaluestore: fix UB reported by clang 2023-02-21 10:21:07 +08:00
李通洲 92b1788825 Platform: refactor; remove extra / 2023-02-21 10:02:04 +08:00
李通洲 efdbeb585b Battery (Android): add temperature 2023-02-21 09:43:22 +08:00
李通洲 304f171d38 Battery / Wifi (Android): add more debug messages 2023-02-21 09:42:41 +08:00
李通洲 9a3909f8ba Memory (Windows): check for error cases 2023-02-16 17:19:43 +08:00
李通洲 6ca4b5391b Library: refactor FF_LIBRARY_LOAD to use __cleanup__ 2023-02-15 14:51:04 +08:00
李通洲 cabd36d078 CpuUsage (apple): simplify implementation 2023-02-14 19:24:29 +08:00
李通洲 64bacd2572 Vulkan: refactor directory structures 2023-02-14 17:52:58 +08:00
李通洲 47be29b89c DateTime: refactor directory structures 2023-02-14 17:49:23 +08:00
李通洲 6407bf6a1f GTK / QT: refactor directory structures 2023-02-14 17:47:39 +08:00
李通洲 e2d145cf31 Memory (Apple): use sysctl instead of sysctlbyname 2023-02-14 17:31:07 +08:00
李通洲 b634c70f80 Temp (Apple): support memory temperature detection for future use 2023-02-14 17:29:21 +08:00
李通洲 e29169711c TerminalShell (Linux): tidy 2023-02-14 16:33:58 +08:00
李通洲 662ddac050 Vulkan: detect vmem (#416) 2023-02-11 16:05:54 +08:00
李通洲 b90d543afc GPU (Windows): support vmem total / usage detection #416
vmem usage detection is guarded behind `--allow-slow-operations`
because it's really slow sometimes
2023-02-11 16:05:54 +08:00
李通洲 f05d134aa7 OpenCL: tidy 2023-02-10 11:20:27 +08:00
李通洲 74a68aa626 CMake: remove unused options 2023-02-10 11:08:05 +08:00
Linus Dierheimer fcc5170a10 Disk(Linux): Better detection of physical drives 2023-02-09 11:20:40 +01:00
李通洲 3a9403a2f1 Packages (Windows): optimise 2023-02-09 09:51:51 +08:00
李通洲 ff170caff6 GPU (Windows): fix duplicated entries. 2023-02-09 09:46:53 +08:00
李通洲 532b493c42 Doc: update changelog 2023-02-09 00:19:19 +08:00
李通洲 51cc87e0db GPU (Windows): keep WMI query as a slow operation for accurate results 2023-02-09 00:17:13 +08:00
李通洲 878d4608b1 Packages (Windows): fix scoop packages count in non-default install path 2023-02-09 00:15:35 +08:00
李通洲 03d1c62787 Packages (Windows): honor $SCOOP when detecting scoop packages
Fix #417
2023-02-08 22:49:30 +08:00
李通洲 5c46271898 GPU (Windows): fix driver version detection 2023-02-08 21:23:45 +08:00
李通洲 9a7c732555 OpenCL: fix Windows support
They changed the dll file name in the latest release
2023-02-08 21:07:36 +08:00
李通洲 8ffe6fda9b Battery: drop powrprof.dll dependency 2023-02-08 15:11:50 +08:00
Linus Dierheimer e563417166 Build test: Build as release with debug info 2023-02-07 12:21:47 +01:00
Linus Dierheimer ec3f9acd76 Cmake debug: change to exe linker only 2023-02-07 12:18:30 +01:00
李通洲 6c22fd6902 Host: update newest product name data (macOS) 2023-02-07 14:35:50 +08:00
李通洲 82b10a527b GPU: support driver version detection 2023-02-07 11:17:46 +08:00
李通洲 92c744d971 Windows: support for global config path in MSYS2 environment 2023-02-06 22:53:47 +08:00
李通洲 7a691a4286 Windows: add 32bit support 2023-02-06 16:03:38 +08:00
李通洲 e98489a74b Locale: tweaks 2023-02-06 14:55:57 +08:00
李通洲 7a5da23b0c Bluetooth: silense compiler warnings 2023-02-06 14:55:57 +08:00
李通洲 edf4837ed6 GPU: refactor vendor detection code 2023-02-06 14:55:57 +08:00
李通洲 749bd8db0e Gamepad (Windows): display attached controllers only 2023-02-05 21:42:59 +08:00
李通洲 d2460d8e85 GPU (Windows): try improving performance 2023-02-05 18:59:20 +08:00
Linus Dierheimer eead4cf70e Revert "Pipeline: debug"
This reverts commit 291f88b1e4.
2023-02-03 18:53:52 +01:00
Linus Dierheimer 291f88b1e4 Pipeline: debug 2023-02-03 18:48:40 +01:00
Linus Dierheimer 93f1a44d0f Revert "Pipeline: debug"
This reverts commit 550e107683.
2023-02-03 18:43:15 +01:00
Linus Dierheimer 550e107683 Pipeline: debug 2023-02-03 18:41:08 +01:00
Linus Dierheimer 7a8b94b6d4 Fix build with older libnm versions 2023-02-03 14:20:15 +01:00
Linus Dierheimer 2005b396fa Add missing comma 2023-02-03 13:38:37 +01:00
Linus Dierheimer 2a80b5ed36 Pipeline(Linux): Build on Ubuntu 20.04 2023-02-03 13:37:15 +01:00
Linus Dierheimer 47a32c725d X11: init scaled resolution with normal resolution 2023-02-03 11:22:34 +01:00
李通洲 fc26acd0ab DisplayServer: fix scaled resolution detection (Linux) 2023-02-03 10:34:17 +08:00
Linus Dierheimer e57f7d378a Wayland: support basic scale factors
#414
2023-02-02 18:16:56 +01:00
Linus Dierheimer 6de74587bd Update terminator font detection 2023-02-02 17:14:53 +01:00
Linus Dierheimer 6e5e7851d4 Merge pull request #415 from CSoellinger/feat/add-terminator-terminal-support
Add terminator terminal support
2023-02-02 17:01:59 +01:00
CSoellinger 84ccda45b0 feat: simplify parse prop file config 2023-02-02 16:16:24 +01:00
李通洲 ec3cd6cc68 LocalIP: support multiline compact mode 2023-02-02 22:25:31 +08:00
李通洲 cae9fee30a LocalIP (Windows): fix ipv6 detection 2023-02-02 21:01:50 +08:00
李通洲 f0111a8037 Windows: silense compiler warnings 2023-02-02 19:17:51 +08:00
CSoellinger 8fad590f8b feat: add terminator terminal support 2023-02-02 11:40:37 +01:00
CSoellinger 2ae5a9d725 Merge pull request #1 from LinusDierheimer/dev
Update dev
2023-02-02 11:25:06 +01:00
李通洲 8153c8b82c LocalIP: support --localip-compact-type option (#408) 2023-02-02 17:50:22 +08:00
Linus Dierheimer 159f4a3a3c Fix build on apple 2023-02-01 18:35:06 +01:00
Linus Dierheimer 3dbfff57e7 Merge branch 'dev' of github.com:LinusDierheimer/fastfetch into dev 2023-02-01 15:56:32 +01:00
Linus Dierheimer a063cd4feb Correctly handle zfs pools
#413
2023-02-01 15:56:25 +01:00
李通洲 dc5da3c3b3 Flashfetch: add missing modules 2023-02-01 21:54:45 +08:00
李通洲 79c9c19b1a Doc: document gamepad module support 2023-02-01 21:47:35 +08:00
李通洲 b49b583e64 Gamepad (Linux): add support 2023-02-01 21:46:23 +08:00
李通洲 0b8e8ad4f2 Gamepad (macOS): add support 2023-02-01 21:46:23 +08:00
李通洲 7fc2c4dcf1 Gamepad: init support for Windows 2023-02-01 21:46:23 +08:00
李通洲 a74cbc5781 Sound: fix memleak, update config file 2023-02-01 20:28:55 +08:00
Linus Dierheimer 619ec921ee Update changelog 2023-02-01 11:16:01 +01:00
Linus Dierheimer 1b23c9a030 Update changelog 2023-02-01 11:14:54 +01:00
Linus Dierheimer d4c11b9a1f Merge pull request #411 from CSoellinger/fix/detect-wm-mutter
fix: add another mutter detection for linux mint 21.1 (cinnamon)
2023-02-01 11:11:00 +01:00
CSoellinger 55da030e2a fix: move mutter(muffin) detection to get FF_WM_PRETTY_MUFFIN back 2023-02-01 10:50:31 +01:00
Linus Dierheimer c64f306550 Merge branch 'dev' of github.com:LinusDierheimer/fastfetch into dev 2023-02-01 10:43:32 +01:00
Linus Dierheimer 7ee4a648d0 Small fix to muffin theme detection 2023-02-01 10:43:24 +01:00
Linus Dierheimer 78ca4e7c87 Merge pull request #412 from CSoellinger/fix/spell-correction
fix: spell correction
2023-02-01 10:30:59 +01:00
CSoellinger 7a2826358b fix: spell correction 2023-02-01 10:08:08 +01:00
CSoellinger df84721b55 fix: add another mutter detection for linux mint 21.1 (cinnamon) 2023-02-01 10:01:47 +01:00
李通洲 f53a1f785d Doc: update changelog 2023-01-31 23:32:49 +08:00
李通洲 4f3b9776ae WmTheme (Windows): align output format to winfetch
Ref: https://github.com/lptstr/winfetch/commit/0358deea5e3ca03086be4984b905a0a534f8d1a5
2023-01-31 23:26:50 +08:00
李通洲 39f47d65a9 Sound: remove manufacturer detection
as it's only implemented on macOS
2023-01-31 22:39:27 +08:00
李通洲 a92e6b6d91 Sound (macOS): fix active device detection; fix memleaks; don't use deprecated properties 2023-01-31 22:37:48 +08:00
李通洲 00e044c431 Sound: change option --sound-show-all to --sound-type 2023-01-31 21:12:47 +08:00
李通洲 7132762c9c Sound (Linux): small fixes
1. treat PA_PORT_AVAILABLE_UNKNOWN as active so that the default speaker is active now
2. load `libpulse.so` as suggested in `config_user.txt`
2023-01-31 20:55:01 +08:00
李通洲 2476b44300 Global: add support for colored percentage numbers output 2023-01-31 19:42:11 +08:00
李通洲 d36e827ec9 Fastfetch: remove --nocache which has been deprecated for a while 2023-01-31 17:15:45 +08:00
Linus Dierheimer a37115cb00 Fix build on windows 2023-01-30 23:23:14 +01:00
Linus Dierheimer 7dc73c61ab WMDE: avoid the use of magick strings across the project
There are probably more, but those are all i found for now.
2023-01-30 18:46:39 +01:00
李通洲 a14ef06d14 TerminalShell (Windows): fix a rare case that fails to detect terminal 2023-01-29 23:29:53 +08:00
李通洲 212e7aa47e CI: test for memleaks 2023-01-29 13:12:50 +08:00
李通洲 ebe26eddf0 Windows: minify included headers 2023-01-29 10:21:23 +08:00
李通洲 517e3fcff9 WMI: add timeout to prevent CI from hanging
Hard coded 5 seconds
2023-01-29 10:10:31 +08:00
Linus Dierheimer 679162c762 --list-logos: list custom logos too 2023-01-28 17:19:45 +01:00
李通洲 e4973b3262 IO: fix Windows part; silense warnings 2023-01-28 22:46:59 +08:00
Linus Dierheimer a1ea7804f3 IO: Separate platform specific implementations 2023-01-28 12:40:12 +01:00
Linus Dierheimer 2c51d55ba2 IO: don't require posix specific stuff for ffPathExists 2023-01-28 11:52:23 +01:00
Linus Dierheimer 3b0e1a5833 Image: Use correct cache dir 2023-01-28 11:28:05 +01:00
Linus Dierheimer 9bb6d8fd6e Allow loading images from data dirs too
#375
2023-01-28 11:14:16 +01:00
李通洲 4afba798ba Sound: add missing command helpers 2023-01-28 13:46:40 +08:00
李通洲 f4cefe955b Sound: always initialize identifier and destroy it to avoid memleaks 2023-01-28 13:46:40 +08:00
李通洲 1c38ebb551 Parsing: only disable warning when necessary 2023-01-28 13:46:40 +08:00
Linus Dierheimer 14dcafe2ca Bluetooth(Linux): Refactor code a bit 2023-01-27 18:21:42 +01:00
Linus Dierheimer cf78216d78 Sound(Linux): Don't abuse manufactor 2023-01-27 18:03:57 +01:00
Linus Dierheimer 0c256e2908 Just try with all on and all of 2023-01-27 13:01:24 +01:00
Linus Dierheimer 00fc3f1a1d Add a workflow that tests different build config combinations 2023-01-27 12:56:36 +01:00
Linus Dierheimer 672e309d89 Small fixes 2023-01-27 11:21:01 +01:00
李通洲 b0c19256f0 Bluetooth: silense warnings 2023-01-27 13:10:06 +08:00
李通洲 205e664b4d Sound (Windows): show more detailed information 2023-01-27 13:08:07 +08:00
Linus Dierheimer cb466aec08 Linux: Fix build without dbus
#405
2023-01-26 22:08:55 +01:00
Linus Dierheimer 33f3744a63 Sound(Linux): Treat default port as always active
This fixes no shown sound devices when no audio is currently played
2023-01-26 17:25:14 +01:00
Linus Dierheimer 7adb1606f1 GH Actions: build with libpulse 2023-01-26 15:50:35 +01:00
Linus Dierheimer 184ada6ae8 Sound(linux): Implement using libpulse
Also differentiate between active and main device(s)
2023-01-26 15:48:28 +01:00
李通洲 856c9d58b8 TerminalFont: tweaks 2023-01-26 01:15:33 +08:00
李通洲 f3fba8a389 CI: build with alsa enabled 2023-01-26 01:14:22 +08:00
李通洲 10468a559a Doc: document Sound module support 2023-01-26 01:14:22 +08:00
李通洲 c4c9f02433 Sound (Linux): add dirty support 2023-01-26 01:14:22 +08:00
李通洲 f2dd288a0d Sound: don't leak memory 2023-01-26 00:36:45 +08:00
李通洲 aa36a83182 Windows: silense some warnings 2023-01-25 17:25:05 +08:00
李通洲 dd9047c4e9 Sound (Windows): add support 2023-01-25 17:17:31 +08:00
李通洲 11634b9a67 Windows: add com helper 2023-01-25 17:17:19 +08:00
李通洲 d832324306 Sound (macOS): new module 2023-01-25 14:28:13 +08:00
Linus Dierheimer a7af5c4f66 Merge branch 'dev' of github.com:LinusDierheimer/fastfetch into dev 2023-01-25 00:03:01 +01:00
Linus Dierheimer 0f2022bd40 Bluetooth: Don't leak memory 2023-01-25 00:02:54 +01:00
李通洲 e598598ca8 Bluetooth (macOS): add support
Limitation: no battery level
2023-01-24 22:13:53 +08:00
李通洲 85599fcf53 Bluetooth (Windows): add support
Limitation: no HLE devices, no battery level
2023-01-24 21:01:21 +08:00
Linus Dierheimer 6961488d38 Merge branch 'dev' of github.com:LinusDierheimer/fastfetch into dev 2023-01-24 12:02:47 +01:00
Linus Dierheimer 209d0c98d9 Bluetooth: Support multiple devices 2023-01-24 12:02:20 +01:00
Linus Dierheimer d718cc997c Merge pull request #404 from LinusDierheimer/master
Master
2023-01-24 10:51:03 +01:00
Linus Dierheimer 4967d0a222 Bluetooth: Build on unsupported platforms 2023-01-24 10:46:00 +01:00
Linus Dierheimer 17ebd5cea8 Merge 2023-01-24 10:40:29 +01:00
Linus Dierheimer 25e81b39f9 Bluetooth module 2023-01-24 10:39:33 +01:00
Linus Dierheimer 4b253aa4cf Merge pull request #403 from LinusDierheimer/dev
Release 1.9.1
2023-01-24 10:05:49 +01:00
李通洲 d7b84bed9f Doc: update changelog 2023-01-24 16:16:08 +08:00
李通洲 298d091e2e Wifi: fix the default output formatting 2023-01-24 11:30:25 +08:00
Carter Li ebe30394f2 Display (macOS): fix zero refresh rate on some monitors 2023-01-24 11:21:08 +08:00
李通洲 4c7d479e93 Release: 1.9.1 2023-01-24 10:14:59 +08:00
李通洲 d6d204ae5f Fastfetch: fix builds on unknown platform (#402) 2023-01-24 10:11:35 +08:00
Jonathan Wright ed23eb0fde Fix builds on s390x (#402)
Fixes #401
2023-01-24 10:09:26 +08:00
Linus Dierheimer fbbfc7f73c Merge pull request #399 from LinusDierheimer/dev
Release 1.9.0
2023-01-22 01:09:35 +01:00
李通洲 e0b2db17c2 Changelog: update version 2023-01-22 00:39:45 +08:00
李通洲 f360e10050 Release: 1.9.0 2023-01-22 00:32:41 +08:00
Linus Dierheimer c15f55762d Disk(Linux): Use mountpoint as last fallback for disk name 2023-01-21 14:57:30 +01:00
Linus Dierheimer 7edc715cba Merge branch 'dev' of github.com:LinusDierheimer/fastfetch into dev 2023-01-21 14:43:02 +01:00
Linus Dierheimer 27f76599bc Fix subvolume detection
#396
2023-01-21 14:42:19 +01:00
李通洲 e8bde5a394 Wifi: fix compiling on macOS 2023-01-21 16:23:28 +08:00
李通洲 3b820f1145 Doc: document wifi / battery support on Android 2023-01-21 16:04:16 +08:00
李通洲 c1444c0822 Android: support Wifi & Battery by using termux-api 2023-01-21 15:23:40 +08:00
李通洲 b424c525cc Disk (Android): fix compiling errors 2023-01-21 14:09:07 +08:00
李通洲 f640102b0e CPU (Linux): fix compiler warnings 2023-01-21 14:03:57 +08:00
李通洲 d9e79a5376 Fastfetch: print more info with -v 2023-01-21 10:33:09 +08:00
Linus Dierheimer 734ee38641 Disk (Linux): partition name impl & general refactor 2023-01-20 20:25:22 +01:00
李通洲 e651633c54 Temp: detect both device/class anddevice/device/class 2023-01-21 06:54:51 +08:00
李通洲 6d4bd06ffe Fastfetch: add missing \n when printing messages 2023-01-21 06:27:39 +08:00
李通洲 2af07fee4f Changelog: doc cpu temp fix 2023-01-21 06:26:24 +08:00
李通洲 6f4bdafb0c Temp: fix severial issues. Fixes #398
1. Temp detection has been gated behind of `--*-temp`. Don't make it a slow operation
2. According to [the kernel doc](https://www.kernel.org/doc/Documentation/hwmon/sysfs-interface), `temp1_input` is millidegree Celsius, which should be divided by 1000
3. There is no `/sys/class/hwmon/hwmon3/device/class` on my laptop, but `/sys/class/hwmon/hwmon3/device/device/class`. Need to confirm with @LinusDierheimer
4. Small code optimizations
2023-01-21 06:18:19 +08:00
Linus Dierheimer a71f2142bb Disk(Linux): Better subvolume detection
#396
2023-01-20 13:28:25 +01:00
李通洲 1e9ec5424a Global: add NO_CONFIG env variable
to disable parsing config files, for debugging purpose.
2023-01-20 16:05:03 +08:00
李通洲 068cbafe3d Packages: detect pacman package count inside MSYS2 env (Windows) 2023-01-18 23:10:28 +08:00
李通洲 4ce618c33c DisplayServer: fix win32 compatibility 2023-01-18 22:44:24 +08:00
李通洲 10b997608b Font: optimise output for Windows 2023-01-18 18:01:09 +08:00
Linus Dierheimer 5edab414d8 Cursor: prefer gtk over Xresources
#382
2023-01-17 17:49:41 +01:00
李通洲 6e904047f9 Display: document scaled resolution support 2023-01-17 23:07:20 +08:00
李通洲 fdb0cfb4df Display: detect scaled resolution (Windows) 2023-01-17 21:36:43 +08:00
李通洲 58999995f1 Display: split phycial resolution and scaled resolution 2023-01-17 19:09:18 +08:00
李通洲 f4a58036fa Resolution: rename to display 2023-01-17 18:21:53 +08:00
李通洲 65e2331979 CI: print brightness 2023-01-18 01:00:30 +08:00
李通洲 622a5c267b Wifi: fall back to ioctls if fail to loading libnm libs 2023-01-18 01:00:00 +08:00
李通洲 c746cde61e Wifi: code refactor; fix a silly copy & paste error 2023-01-17 15:52:51 +08:00
李通洲 68977be256 CI: build with libnm support; print supported features 2023-01-17 15:38:03 +08:00
李通洲 f28805fb94 Wifi: detect more information using libnm (Linux) 2023-01-17 05:36:43 +08:00
李通洲 df793c20fd Wifi: use ioctls instead of iw (Linux) 2023-01-17 10:43:55 +08:00
Linus Dierheimer a4e4e9c495 Merge branch 'dev' of github.com:LinusDierheimer/fastfetch into dev 2023-01-16 11:53:13 +01:00
Linus Dierheimer b1ccd2e2c0 Don't show subvolumes by default 2023-01-16 11:52:54 +01:00
李通洲 9a2687768f FFPlatform: remove extra / 2023-01-16 18:23:54 +08:00
Linus Dierheimer ab7b0571f3 Fix config files loading other config files 2023-01-15 20:03:28 +01:00
李通洲 14286e8c0f Fix typo 2023-01-16 01:20:10 +08:00
李通洲 6b41b85d4d Windows: fix sigfault 2023-01-16 01:18:13 +08:00
李通洲 cc7724dec4 FFPlatform: don't use target platform as running platform 2023-01-15 17:00:36 +08:00
李通洲 c832c7d794 Host: don't print None as product version 2023-01-15 16:55:33 +08:00
李通洲 52f36d29dc Doc: update CHANGELOG 2023-01-16 00:41:56 +08:00
李通洲 9b6dafe715 Packages: fix rpm count detection
Can't believe that this bug has existed for more than 3 months and no one found it
2023-01-16 00:41:35 +08:00
李通洲 d4ecbc6638 FFPlatform: fix memleaks 2023-01-16 00:35:48 +08:00
李通洲 1c93d68e7b Wifi: add basic Linux support using iw 2023-01-16 00:33:31 +08:00
Linus Dierheimer c1d92206f5 Third round of fixes for FFPlatform 2023-01-15 16:45:16 +01:00
Linus Dierheimer 7bef5008c2 Second round of fixes for FFPlatform 2023-01-15 16:26:08 +01:00
Linus Dierheimer 3ef3cca76b First round of fixes for FFPlatform 2023-01-15 16:06:50 +01:00
Linus Dierheimer a1d8e3e598 Introduce FFPlatform 2023-01-15 15:57:26 +01:00
Linus Dierheimer dd77ebe11e Fix GitHub code scanning alert 2023-01-14 19:59:54 +01:00
李通洲 27efc94b09 FFlist: silence compiler warnings when compiling with -m32 2023-01-15 01:02:10 +08:00
Linus Dierheimer b6abc6e326 Update logo doc 2023-01-14 17:54:21 +01:00
Linus Dierheimer f13a502123 Update logo doc 2023-01-14 17:50:14 +01:00
Linus Dierheimer f77f617bc2 Update Support Status 2023-01-14 17:20:36 +01:00
Carter Li 6ae9e0b332 Merge pull request #389 from CarterLi/command
RFC: an attempt to add a new module which can run custom shell scripts
2023-01-15 00:08:04 +08:00
Linus Dierheimer 8a054706b5 Fix build on linux 2023-01-14 17:00:56 +01:00
Linus Dierheimer 6e1d656a60 Fix budgie detection
#382
2023-01-14 16:58:09 +01:00
Linus Dierheimer 53430b9827 Merge branch 'dev' of github.com:LinusDierheimer/fastfetch into dev 2023-01-14 16:38:52 +01:00
Linus Dierheimer 026424ab8c Don't crash when uname fails
#385
2023-01-14 16:38:34 +01:00
李通洲 9c0fc63ee9 Windows: with cdff99, the special build for Win7 is no longer needed. Drop it. 2023-01-14 17:46:11 +08:00
李通洲 cdff99339e Windows: fix the last issue that breaks Win10- 2023-01-14 17:31:04 +08:00
李通洲 b739d94f23 Command: an attempt to add a new module which can run custom shell scripts 2023-01-14 01:27:54 +08:00
李通洲 e076097a7c FFlist: fix compiler warnings 2023-01-14 00:19:55 +08:00
李通洲 3cee8f5475 FFlist: add new functions to make it be able to work as a queue 2023-01-13 19:08:14 +08:00
李通洲 83ea189d81 GPU: simplify code 2023-01-13 15:46:29 +08:00
李通洲 dcf04aa4fe GPU: detect type based on vendor 2023-01-13 15:44:52 +08:00
李通洲 67ab7c0779 GPU: support vendor detection 2023-01-13 15:20:30 +08:00
李通洲 2b5511997c Global: support hiding other texts when printing percentage values 2023-01-12 22:46:21 +08:00
李通洲 53c6a0ec9f GPU: apply GPU type selection logic to Windows 2023-01-12 22:19:14 +08:00
Linus Dierheimer 1a710e4094 Better GPU type detection nr2
#379
2023-01-12 12:56:17 +01:00
Linus Dierheimer 5a90d8b545 Better GPU type detection
#379
2023-01-12 12:54:04 +01:00
Linus Dierheimer f794053f99 Merge branch 'dev' of github.com:LinusDierheimer/fastfetch into dev 2023-01-12 11:42:23 +01:00
Linus Dierheimer 670cf6fe90 GPU selection options
#379
2023-01-12 11:41:07 +01:00
李通洲 46ed8aa87c TerminalFont: don't try to detecting kitty and tty fonts on Windows 2023-01-12 00:19:30 +08:00
李通洲 387b8298bd Windows: fix bug that line buffering doesn't work properly 2023-01-12 00:19:30 +08:00
李通洲 c4aa55d522 TerminalFont: support WezTerm on Windows 2023-01-12 00:09:42 +08:00
李通洲 c3861954dc TerminalFont: support Alacritty on Windows 2023-01-11 23:46:37 +08:00
李通洲 ebfbf108a2 TerminalShell: support Alacritty terminal version detection 2023-01-11 23:46:15 +08:00
李通洲 66ed9adcda TerminalShell: support ConEmu version detection 2023-01-11 22:14:47 +08:00
李通洲 eb02206c05 TerminalShell: support Windows Terminal version detection 2023-01-11 22:10:42 +08:00
李通洲 cd0b74b0de TerminalShell: support deepin-terminal version detection 2023-01-11 18:12:36 +08:00
李通洲 6ca3b76a42 Update README 2023-01-11 18:07:58 +08:00
李通洲 84a03e80de README: clarify that fastfetch isn't written in pure C
Ref: https://github.com/ScoopInstaller/Main/pull/4334#discussion_r1066502517
2023-01-11 17:37:49 +08:00
李通洲 a74f813df1 CHANGLOG: remove a duplicated entry
oops
2023-01-11 17:37:49 +08:00
李通洲 99fc4e76ec TerminalShell: fix build on Windows 2023-01-11 17:27:34 +08:00
李通洲 7145f5252d TerminalShell: add --shell-version and --terminal-version options to disable shell / terminal version detection
in case that users don't like it
2023-01-11 17:17:17 +08:00
李通洲 9dab23b5fc TerminalShell: code refactor 2023-01-11 16:45:34 +08:00
李通洲 09ff8d35bc TerminalShell: support xfce4-terminal version detection 2023-01-11 16:07:34 +08:00
李通洲 ee903d2d07 TerminalShell: support konsole version detection 2023-01-11 15:56:24 +08:00
李通洲 b2f978aa7c TerminalShell: support kitty version detection 2023-01-11 15:14:29 +08:00
李通洲 76d957a144 TerminalShell: support gnome-terminal version detection 2023-01-11 15:12:32 +08:00
李通洲 a0acfeed56 TermiinalShell: code refactor 2023-01-11 15:03:16 +08:00
李通洲 b1f63ab822 Global: rename FF_UNUSED_PARAM to FF_MAYBE_UNUSED since it can be used on functions too. 2023-01-11 14:47:10 +08:00
李通洲 54ea9c2386 TerminalFont: support WezTerm font detection 2023-01-11 13:58:59 +08:00
李通洲 ccdb5c54d0 Linux: enable FF_*_AUTO_DESTROY
They have been on Windows and macOS for sometime and worked well.
2023-01-11 13:55:06 +08:00
李通洲 b8393051e4 Battery: add comments for future use (FreeBSD) 2023-01-11 13:52:14 +08:00
李通洲 94a8e0339e Windows: remove outdated comments 2023-01-11 13:51:47 +08:00
李通洲 a67ba713f5 Windows: fix CLANG64 build 2023-01-11 09:37:00 +08:00
李通洲 8ffbae80b8 Windows: clarify we support Windows 7 and newer only 2023-01-11 01:23:42 +08:00
李通洲 db17f95ce8 TerminalShell: detect Termux version 2023-01-10 21:11:44 +08:00
李通洲 c6365755c7 Title: fix computer name being trancated sometime 2023-01-10 20:56:54 +08:00
李通洲 ef2a5110fe TerminalShell: detect terminal version when available 2023-01-10 19:26:33 +08:00
李通洲 7f97725d7f Disk: add --disk-show-unknown option
Ref: https://github.com/LinusDierheimer/fastfetch/issues/383#issuecomment-1376893128
2023-01-10 17:31:47 +08:00
李通洲 af03c74fba Battery: fix build on macOS 2023-01-10 16:56:56 +08:00
李通洲 bc8a7a03c3 Battery: fix bug on FreeBSD
oops
2023-01-10 12:42:15 +08:00
李通洲 d4c361ae12 Battery: support FreeBSD
Completely untested
2023-01-10 12:36:38 +08:00
李通洲 8f932ac3d6 DisplayServer: fix build (Linux) 2023-01-09 22:33:10 +08:00
李通洲 4cc5f35b04 DisplayServer: revert changes of brightness partially 2023-01-09 22:26:56 +08:00
李通洲 476b0495e0 Brightness: add support for Windows 2023-01-09 22:26:56 +08:00
李通洲 85098a6627 Brightness: add support for Linux 2023-01-09 22:26:56 +08:00
李通洲 d9a022ffff Brightness: add new module (macOS)
It turns out that merging brightness module into resolution module is a bad idea.
2023-01-09 22:26:56 +08:00
Linus Dierheimer 8db1534ef3 Merge pull request #381 from aaronfranke/cpu-riscv
Add support for displaying the ISA string on RISC-V CPUs
2023-01-09 15:22:17 +01:00
Linus Dierheimer 0aa7d646a7 Initial logo documentation 2023-01-09 15:20:30 +01:00
Carter Li 599c06e981 Merge pull request #384 from VergeDX/dev
fix[getNixPackagesImpl]: count line with `wc -l` instead, also fixes leak.
2023-01-09 19:13:05 +08:00
Vanilla 078cb6e5b7 fix[getNixPackagesImpl]: count line with wc -l instead, also fixes leak. 2023-01-09 18:58:52 +08:00
Aaron Franke 5cc17bc306 Add support for displaying the ISA string on RISC-V CPUs 2023-01-09 02:21:26 -06:00
李通洲 ef18c8e3f7 Users: remove "wtsapi32_extend" as mingw_w64 now officially supports these APIs
Ref: https://github.com/mirror/mingw-w64/commit/931ca20b233e766950e7758cff71c270937b0b64
2023-01-09 14:03:46 +08:00
李通洲 012c7552eb macOS: try fixing #380 2023-01-09 13:42:58 +08:00
李通洲 0fd63084dc Global: fix other possible bugs where enumerating directories without ignoring . and .. 2023-01-09 10:45:51 +08:00
李通洲 0b12e73eef DisplayServer: make brightness detection actually work (Linux) 2023-01-09 10:44:09 +08:00
李通洲 4daf3016f8 Global: fix memleaks 2023-01-09 10:02:48 +08:00
李通洲 9f8e256bb4 DisplayServer: support brightness detection (Linux) 2023-01-08 20:47:06 +08:00
Linus Dierheimer 1bbcd9ad0d Look for logo files in <datadir>/fastfetch/logos/ too
#375
2023-01-08 12:30:36 +01:00
Linus Dierheimer b1c0a2dc1e Better init of config & data dirs 2023-01-08 11:32:43 +01:00
Linus Dierheimer 2a092de8d8 Detect data dirs at runtime
* Respecting the current platform
* Using them where appropiate
2023-01-08 01:41:09 +01:00
Linus Dierheimer bb57714ac9 Use configDirs to look for fastfetch configs 2023-01-07 22:51:47 +01:00
Linus Dierheimer 137039f868 Initialize brightness on wayland too 2023-01-07 22:37:01 +01:00
李通洲 e7af38aa11 DisplayServer: make display brightness actually work (Windows) 2023-01-08 01:27:54 +08:00
李通洲 d0bab2ca22 Image: fix compiler warnings (Windows) 2023-01-08 01:27:54 +08:00
李通洲 2621c48f92 DisplayServer: support brightness detection (Windows) 2023-01-08 01:27:54 +08:00
李通洲 959540f17c DisplayServer: support brightness detection (macOS) 2023-01-08 01:27:54 +08:00
李通洲 3e2c344417 Android: honor $XDG_CONFIG_HOME when loading user config file 2023-01-08 01:27:34 +08:00
李通洲 a307977ec1 Image: don't try to read image file with --logo none 2023-01-08 01:26:10 +08:00
李通洲 f3db4e49b6 Windows: store config file in RoamingAppData instead of LocalAppData 2023-01-03 17:01:24 +08:00
李通洲 30f9bcbd22 TerminalFont: fix mintty terminal font detection 2023-01-03 17:01:24 +08:00
李通洲 a98c71aab4 Config: search for user config file in the order of configDirs
This is necessary to keep forward compatibility for Windows / macOS users. Since `$LOCALAPPPATH` and `~/Library/Preferences` are now the first element of `configDirs`, config files in `~/.config` won't be used in previous manner.
2023-01-02 17:27:06 +08:00
李通洲 0d722ebe0b Config: add --list-config-paths option 2023-01-02 16:51:11 +08:00
李通洲 3caa92c567 macOS: looking for config files in ~/Library/Preferences 2023-01-02 16:34:57 +08:00
李通洲 ae6d921f23 Config: don't generate a config file silently
Instead, provide a new flag `--gen-config` and print the path to the config file, so that users can know where to find the file.
2023-01-02 16:34:57 +08:00
李通洲 d692fe91fb Windows: don't try to load config file in /etc 2023-01-02 16:34:57 +08:00
李通洲 822496808d Windows: look for config files in $LOCALAPPDATA 2023-01-02 16:34:57 +08:00
Linus Dierheimer 8533dc234b Update Changelog 2023-01-01 18:33:24 +01:00
Linus Dierheimer 2193fb531f Merge pull request #378 from IamNoRobot/pi-logo
fixed formatting error
2023-01-01 18:23:28 +01:00
Linus Dierheimer c069d14af5 Merge pull request #373 from IamNoRobot/pi-logo
RaspberryPi Logo, RaspberryPi small logo
2023-01-01 18:18:32 +01:00
IamNoRobot 02abc07bc1 fixed formatting error 2023-01-01 18:18:01 +01:00
IamNoRobot 34c33dd42f RaspberryPi Logo, RaspberryPi small logo 2023-01-01 18:05:09 +01:00
Linus Dierheimer dcc22f3bd7 Merge pull request #376 from jessebot/patch-1
Fix error text typo from item to iterm
2023-01-01 15:47:59 +01:00
JesseBot 4247d15672 Fix error text typo from item to iterm 2023-01-01 15:39:03 +01:00
李通洲 39d8ebc3c9 Logo: support --logo-padding-top 2023-01-01 17:37:11 +08:00
李通洲 8e3b6280af Image: support iterm protocol with --logo-type
fixes #374
2023-01-01 17:09:30 +08:00
李通洲 4a781d8471 Logo: support raw image type
For raw image type, fastfetch nether parses the file content, nor tries to detect the image size from the file. It's useful to print pre-converted sixel image.
2023-01-01 17:06:18 +08:00
李通洲 9f93ca8019 README: document image logo support 2023-01-01 12:29:08 +08:00
IamNotARobot 4890cb641c RaspberryPi Logo, RaspberryPi small logo 2022-12-31 17:52:47 +01:00
Linus Dierheimer 90bb004940 Merge pull request #371 from LinusDierheimer/master
Merge pull request #370 from LinusDierheimer/dev
2022-12-31 13:15:21 +01:00
1213 changed files with 85369 additions and 16814 deletions
+5
View File
@@ -0,0 +1,5 @@
[codespell]
check-filenames =
builtin = clear,rare,usage,informal
skip = */.git,*/cmake-build-*,*/.idea,*/completions,*/presets,*/screenshots,*/tests,*/3rdparty,*/logo/ascii
ignore-words-list = iterm,compiletime,unknwn,pengwin,siduction,master,sur,doas
+1 -1
View File
@@ -1 +1 @@
github: LinusDierheimer
github: [LinusDierheimer, CarterLi]
+55 -18
View File
@@ -1,43 +1,80 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
title: '[BUG] '
labels: bug
assignees: ''
---
Be sure to read the [FAQ](https://github.com/fastfetch-cli/fastfetch?tab=readme-ov-file#faq) before submitting a new issue.
<!-- We will try hard to solve the issue. However since platforms and hardwares vary greatly, it can be hard to find the root cause of an issue. Providing the following information may help us greatly. Thanks in advance! -->
# General description of bug:
* What happened:
* What should happen:
* Fastfetch version used: <!-- please use the latest version, if possible -->
* Did it work in an older version: <!-- if yes, which version -->
* Where did you get the binary: <!-- GitHub release / GitHub Actions / installed with a package manager (please tell us which package manager you used!) / built from source yourself -->
* Does this issue still occur in [the latest dev build](https://github.com/fastfetch-cli/fastfetch/actions/)?
# Often helpful questions:
* Does the issue occur across multiple terminal emulators? [Y/N]
* Does the issue occur across multiple shells? (bash, zsh, fish, etc) [Y/N]
# Often helpful information:
Output of `fastfetch --version`:
Screenshot:
<!-- Paste the screenshot here -->
The content of the configuration file you use (if any):
```
//paste here
// Paste here
```
Output of `fastfetch --load-config devinfo`:
```
//paste here
```
Output of `fastfetch --load-config devinfo-verbose`:
Output of `fastfetch -c ci.jsonc --format json`:
<!--
Note that this output will contain you public IP. If it is not relevant for the issue, feel free to remove it before uploading.
-->
```
//paste here
// Paste here
```
Output of `fastfetch --list-features`:
```
//paste here
// Paste here
```
<!--
If you get the following error: `Error: couldn't find config: [...]`, copy the files in [presets](../../presets/) to `/usr/share/fastfetch/presets/` or `~/.local/share/fastfetch/presets/`.
If this isn't possible (or too much work) for you, post the output of `fastfetch --show-errors --multithreading false --disable-linewrap false`.
-->
## If fastfatch crashed or froze
Paste the stacktrace here. You may get it with:
```shell
# You may need Ctrl+C to stop the process if it freezes
gdb -q -ex 'set confirm off' -ex run -ex 'bt full' -ex quit --args /path/to/fastfetch
```
If you are able to identify which module crashed, the strace can be helpful too
```shell
strace /path/to/fastfetch --multithreading false -s {MODULE} --pipe
```
If you cannot do the instructions above, please upload the core dump file:
## If fastfetch is slow
Use `time fastfetch --stat` to show time usage for each module.
## If an image or logo didn't show
<!-- Please make sure your terminal supports the image protocol you used. Note that GNOME Terminal doesn't support any image protocols. -->
* The image protocol you used:
* The terminal you used:
* Upload the image file here, or paste the image URL:
* Does it work with `--logo-width {WIDTH} --logo-height {HEIGHT}`?
## If fastfetch behaves incorrectly on shell startup
* The bug is reproducible with a clean shell configuration (i.e. `fastfetch` is the only line in `.zshrc` or `~/.config/fish/config.fish`):
* Does `sleep 1` before running `fastfetch` work?
+8 -4
View File
@@ -1,14 +1,18 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
title: '[FEAT] '
labels: enhancement
assignees: ''
---
# Current state:
Be sure to read [FAQ](https://github.com/fastfetch-cli/fastfetch?tab=readme-ov-file#faq) before submitting a new issue.
# Wanted state:
## Wanted features:
# Why the change is sensible:
<!-- Your features here -->
## Motivation:
<!-- Your motivation here -->
+5 -3
View File
@@ -1,18 +1,20 @@
---
name: Logo request
about: Request a new logo
title: ''
title: '[LOGO] '
labels: logo request
assignees: ''
---
Tip: A logo can be displayed by fastfetch without getting into fastfetch's official repo. For highly customized logo for personal use, it's recommended to keep it locally. Please refer to https://github.com/fastfetch-cli/fastfetch/wiki/Migrate-Neofetch-Logo-To-Fastfetch
# OS
```
paste content of /etc/os-release here. If this file doesn't exist, describe a way to identify the distro.
Paste content of /etc/os-release and /etc/lsb-release here. If none of these files exist, describe a way to identify the distro
```
# Ascii
```
paste ascii art here. If you leave this empty, i will try to find the logo myself.
Paste ascii art here.
```
+678
View File
@@ -0,0 +1,678 @@
name: CI
on:
- push
- pull_request
jobs:
spellcheck:
runs-on: ubuntu-latest
steps:
- name: checkout repository
uses: actions/checkout@v4
- name: Install codespell
shell: bash
run: |
sudo apt-get update || true
sudo apt-get install -y codespell
- name: Run Spellchecker
run: codespell
no-features-test:
name: No-features-test
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v4
- name: uname -a
run: uname -a
- name: configure project
run: cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr . -DENABLE_VULKAN=OFF -DENABLE_WAYLAND=OFF -DENABLE_XCB_RANDR=OFF -DENABLE_XCB=OFF -DENABLE_XRANDR=OFF -DENABLE_X11=OFF -DENABLE_DRM=OFF -DENABLE_GIO=OFF -DENABLE_DCONF=OFF -DENABLE_DBUS=OFF -DENABLE_XFCONF=OFF -DENABLE_SQLITE3=OFF -DENABLE_RPM=OFF -DENABLE_IMAGEMAGICK7=OFF -DENABLE_IMAGEMAGICK6=OFF -DENABLE_CHAFA=OFF -DENABLE_ZLIB=OFF -DENABLE_EGL=OFF -DENABLE_GLX=OFF -DENABLE_OSMESA=OFF -DENABLE_OPENCL=OFF -DENABLE_LIBNM=OFF -DENABLE_FREETYPE=OFF -DENABLE_PULSE=OFF -DENABLE_DDCUTIL=OFF -DENABLE_DIRECTX_HEADERS=OFF -DENABLE_THREADS=OFF
- name: build project
run: cmake --build . --target package --verbose -j4
- name: list features
run: ./fastfetch --list-features
- name: run fastfetch
run: time ./fastfetch -c presets/ci.jsonc
- name: run fastfetch --format json
run: time ./fastfetch -c presets/ci.jsonc --format json
- name: run flashfetch
run: time ./flashfetch
- name: print dependencies
run: ldd fastfetch
- name: run tests
run: ctest
linux-amd64:
name: Linux-amd64
runs-on: ubuntu-20.04
permissions:
security-events: write
contents: read
outputs:
ffversion: ${{ steps.ffversion.outputs.ffversion }}
steps:
- name: checkout repository
uses: actions/checkout@v4
- name: uname -a
run: uname -a
- name: install required packages
run: sudo apt-get update && sudo apt-get install -y libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev libosmesa6-dev ocl-icd-opencl-dev libnm-dev libpulse-dev libdrm-dev directx-headers-dev
- name: install linuxbrew packages
run: |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
/home/linuxbrew/.linuxbrew/bin/brew install imagemagick chafa ddcutil --ignore-dependencies
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: c
- name: configure project
run: PKG_CONFIG_PATH=/home/linuxbrew/.linuxbrew/lib/pkgconfig:$PKG_CONFIG_PATH cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr .
- name: build project
run: cmake --build . --target package --verbose -j4
- name: perform CodeQL analysis
uses: github/codeql-action/analyze@v3
- name: list features
run: ./fastfetch --list-features
- name: run fastfetch
run: time ./fastfetch -c presets/ci.jsonc
- name: run fastfetch --format json
run: time ./fastfetch -c presets/ci.jsonc --format json
- name: run flashfetch
run: time ./flashfetch
- name: print dependencies
run: ldd fastfetch
- name: run tests
run: ctest
- name: get fastfetch version
id: ffversion
run: echo "ffversion=$(./fastfetch --version-raw)" >> $GITHUB_OUTPUT
- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: fastfetch-linux-amd64
path: ./fastfetch-*.*
linux-aarch64:
name: Linux-aarch64
runs-on: ubuntu-22.04
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v4
- name: run VM
uses: uraimo/run-on-arch-action@v2
id: runcmd
with:
arch: aarch64
distro: ubuntu22.04
githubToken: ${{ github.token }}
run: |
uname -a
apt-get update && apt-get install -y cmake make g++ libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev libosmesa6-dev ocl-icd-opencl-dev libnm-dev libpulse-dev libdrm-dev libddcutil-dev libchafa-dev directx-headers-dev rpm
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr .
cmake --build . --target package --verbose -j4
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest
- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: fastfetch-linux-aarch64
path: ./fastfetch-*.*
linux-armv7:
name: Linux-armv7
runs-on: ubuntu-22.04
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v4
- name: run VM
uses: uraimo/run-on-arch-action@v2
id: runcmd
with:
arch: armv7
distro: ubuntu20.04
githubToken: ${{ github.token }}
run: |
uname -a
apt-get update && apt-get install -y wget
# CMake installed by apt has bug `list sub-command REMOVE_ITEM requires two or more arguments`
wget --no-check-certificate https://apt.kitware.com/ubuntu/pool/main/c/cmake/{cmake_3.29.2-0kitware1ubuntu20.04.1_armhf.deb,cmake-data_3.29.2-0kitware1ubuntu20.04.1_all.deb}
dpkg -i *.deb
apt-get install -y make g++ libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev libosmesa6-dev ocl-icd-opencl-dev libnm-dev libpulse-dev libdrm-dev directx-headers-dev rpm
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr .
cmake --build . --target package --verbose -j4
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest
- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: fastfetch-linux-armv7
path: ./fastfetch-*.*
linux-riscv64:
name: Linux-riscv64
runs-on: ubuntu-22.04
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v4
- name: run VM
uses: uraimo/run-on-arch-action@v2
id: runcmd
with:
arch: riscv64
distro: ubuntu22.04
githubToken: ${{ github.token }}
run: |
uname -a
apt-get update && apt-get install -y cmake make g++ libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev libosmesa6-dev ocl-icd-opencl-dev libnm-dev libpulse-dev libdrm-dev libddcutil-dev libchafa-dev directx-headers-dev rpm
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr .
cmake --build . --target package --verbose -j4
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest
- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: fastfetch-linux-riscv64
path: ./fastfetch-*.*
musl-amd64:
name: Musl-amd64
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: setup alpine linux
uses: jirutka/setup-alpine@master
with:
branch: v3.19
- name: install dependencies
run: |
cat /etc/alpine-release
uname -a
apk add cmake samurai vulkan-loader-dev libxcb-dev wayland-dev libdrm-dev dconf-dev imagemagick-dev chafa-dev zlib-dev dbus-dev mesa-dev opencl-dev xfconf-dev sqlite-dev networkmanager-dev pulseaudio-dev ddcutil-dev gcc g++
shell: alpine.sh --root {0}
- name: build
run: |
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr -DIS_MUSL=ON -GNinja .
cmake --build . --target package --verbose -j4
shell: alpine.sh {0}
- name: run
run: |
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest
shell: alpine.sh {0}
- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: fastfetch-musl-amd64
path: ./fastfetch-*.*
musl-aarch64:
name: Musl-aarch64
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: setup alpine linux
uses: jirutka/setup-alpine@master
with:
branch: v3.19
arch: aarch64
- name: install dependencies
run: |
cat /etc/alpine-release
uname -a
apk add cmake samurai vulkan-loader-dev libxcb-dev wayland-dev libdrm-dev dconf-dev imagemagick-dev chafa-dev zlib-dev dbus-dev mesa-dev opencl-dev xfconf-dev sqlite-dev networkmanager-dev pulseaudio-dev ddcutil-dev gcc g++
shell: alpine.sh --root {0}
- name: build
run: |
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr -DIS_MUSL=ON -GNinja .
cmake --build . --target package --verbose -j4
shell: alpine.sh {0}
- name: run
run: |
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest
shell: alpine.sh {0}
- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: fastfetch-musl-aarch64
path: ./fastfetch-*.*
macos-universal:
name: macOS-universal
runs-on: macos-12
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v4
- name: uname -a
run: uname -a
- name: install required packages
run: |
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install --overwrite vulkan-loader vulkan-headers molten-vk imagemagick chafa
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: c
- name: configure project
run: cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_OSX_ARCHITECTURES='arm64;x86_64' .
- name: build project
run: cmake --build . --target package --verbose -j4
- name: perform CodeQL analysis
uses: github/codeql-action/analyze@v3
- name: list features
run: ./fastfetch --list-features
- name: run fastfetch
run: time ./fastfetch -c presets/ci.jsonc
- name: run fastfetch --format json
run: time ./fastfetch -c presets/ci.jsonc --format json
- name: run flashfetch
run: time ./flashfetch
- name: print dependencies
run: otool -L fastfetch
- name: run tests
run: ctest
- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: fastfetch-macos-universal
path: ./fastfetch-*.*
sunos-amd64:
runs-on: ubuntu-latest
name: SunOS-amd64
steps:
- name: checkout repository
uses: actions/checkout@v4
- uses: actions/checkout@v4
- name: run VM
uses: vmactions/omnios-vm@v1
with:
usesh: true
prepare: |
uname -a
pkg update --accept
pkg install gcc13 cmake git pkg-config glib2 dbus sqlite-3 imagemagick
run: |
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On .
cmake --build . --target package --verbose -j4
./fastfetch --list-features
time ./fastfetch
time ./fastfetch --format json
time ./flashfetch
ldd fastfetch
ctest
cpack
- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: fastfetch-sunos-amd64
path: ./fastfetch-*.*
freebsd-amd64:
name: FreeBSD-amd64
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v4
- name: run VM
uses: cross-platform-actions/action@master
with:
operating_system: freebsd
architecture: x86-64
cpu_count: 3
shell: bash
version: '13.2'
run: |
uname -a
sudo pkg update
sudo pkg install -y cmake git pkgconf binutils wayland vulkan-headers vulkan-loader libxcb libXrandr libX11 libdrm glib dconf dbus sqlite3-tcl xfce4-conf ImageMagick6 ImageMagick7 chafa egl libosmesa opencl ocl-icd v4l_compat
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On .
cmake --build . --target package --verbose -j4
./fastfetch --list-features
time ./fastfetch
time ./fastfetch --format json
time ./flashfetch
ldd fastfetch
ctest
- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: fastfetch-freebsd-amd64
path: ./fastfetch-*.*
freebsd-aarch64:
name: FreeBSD-aarch64
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v4
- name: run VM
uses: cross-platform-actions/action@master
with:
operating_system: freebsd
architecture: arm64
cpu_count: 3
shell: bash
version: '13.2'
run: |
uname -a
sudo pkg update
sudo pkg install -y cmake git pkgconf binutils wayland vulkan-headers vulkan-loader libxcb libXrandr libX11 libdrm glib dconf dbus sqlite3-tcl xfce4-conf ImageMagick6 ImageMagick7 chafa egl libosmesa opencl ocl-icd v4l_compat
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On .
cmake --build . --target package --verbose -j4
./fastfetch --list-features
time ./fastfetch
time ./fastfetch --format json
time ./flashfetch
ldd fastfetch
ctest
- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: fastfetch-freebsd-aarch64
path: ./fastfetch-*.*
windows-amd64:
name: Windows-amd64
runs-on: windows-latest
permissions:
security-events: write
contents: read
defaults:
run:
shell: msys2 {0}
steps:
- name: checkout repository
uses: actions/checkout@v4
- name: setup-msys2
uses: msys2/setup-msys2@v2
with:
msystem: CLANG64
update: true
install: git mingw-w64-clang-x86_64-7zip mingw-w64-clang-x86_64-cmake mingw-w64-clang-x86_64-clang mingw-w64-clang-x86_64-vulkan-loader mingw-w64-clang-x86_64-vulkan-headers mingw-w64-clang-x86_64-opencl-icd mingw-w64-clang-x86_64-opencl-headers mingw-w64-clang-x86_64-cppwinrt
- name: print msys version
run: uname -a
- name: configure project
run: env PKG_CONFIG_PATH=/clang64/lib/pkgconfig/:$PKG_CONFIG_PATH cmake -DSET_TWEAK=Off -DBUILD_TESTS=On .
- name: build project
run: cmake --build . --verbose -j4
- name: copy necessary dlls
run: cp /clang64/bin/{OpenCL,vulkan-1}.dll .
- name: download amd_ags
run: curl -LO https://github.com/GPUOpen-LibrariesAndSDKs/AGS_SDK/raw/master/ags_lib/lib/amd_ags_x64.dll
- name: list features
run: ./fastfetch --list-features
- name: run fastfetch
run: time ./fastfetch -c presets/ci.jsonc
- name: run fastfetch --format json
run: time ./fastfetch -c presets/ci.jsonc --format json
- name: run flashfetch
run: time ./flashfetch
- name: print dependencies
run: ldd fastfetch
- name: run tests
run: ctest
- name: create zip archive
run: 7z a -tzip -mx9 -bd -y fastfetch-windows-amd64.zip LICENSE *.dll fastfetch.exe flashfetch.exe presets
- name: create 7z archive
run: 7z a -t7z -mx9 -bd -y fastfetch-windows-amd64.7z LICENSE *.dll fastfetch.exe flashfetch.exe presets
- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: fastfetch-windows-amd64
path: ./fastfetch-windows-amd64.*
windows-i686:
name: Windows-i686
runs-on: windows-latest
permissions:
security-events: write
contents: read
defaults:
run:
shell: msys2 {0}
steps:
- name: checkout repository
uses: actions/checkout@v4
- name: setup-msys2
uses: msys2/setup-msys2@v2
with:
msystem: CLANG32
update: true
install: git p7zip mingw-w64-clang-i686-cmake mingw-w64-clang-i686-clang mingw-w64-clang-i686-vulkan-loader mingw-w64-clang-i686-vulkan-headers mingw-w64-clang-i686-opencl-icd mingw-w64-clang-i686-opencl-headers
- name: print msys version
run: uname -a
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: c, cpp
- name: configure project
run: env PKG_CONFIG_PATH=/clang32/lib/pkgconfig/:$PKG_CONFIG_PATH cmake -DSET_TWEAK=Off -DBUILD_TESTS=On .
- name: build project
run: cmake --build . --verbose -j4
- name: perform CodeQL analysis
uses: github/codeql-action/analyze@v3
- name: copy necessary dlls
run: cp /clang32/bin/{OpenCL,vulkan-1}.dll .
- name: download amd_ags
run: curl -LO https://github.com/GPUOpen-LibrariesAndSDKs/AGS_SDK/raw/master/ags_lib/lib/amd_ags_x86.dll
- name: run fastfetch
run: time ./fastfetch -c presets/ci.jsonc
- name: run fastfetch --format json
run: time ./fastfetch -c presets/ci.jsonc --format json
- name: run flashfetch
run: time ./flashfetch
- name: print dependencies
run: ldd fastfetch
- name: run tests
run: ctest
- name: create zip archive
run: 7z a -tzip -mx9 -bd -y fastfetch-windows-i686.zip LICENSE *.dll fastfetch.exe flashfetch.exe presets
- name: create 7z archive
run: 7z a -t7z -mx9 -bd -y fastfetch-windows-i686.7z LICENSE *.dll fastfetch.exe flashfetch.exe presets
- name: upload artifacts
uses: actions/upload-artifact@v4
with:
name: fastfetch-windows-i686
path: ./fastfetch-windows-i686.*
release:
if: github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'fastfetch-cli/fastfetch'
name: Release
runs-on: ubuntu-latest
needs:
- linux-amd64
- linux-aarch64
- linux-armv7
- linux-riscv64
- musl-amd64
- musl-aarch64
- macos-universal
- freebsd-amd64
- freebsd-aarch64
- sunos-amd64
- windows-amd64
- windows-i686
permissions:
contents: write
steps:
- name: get latest release version
id: get_version_release
uses: pozetroninc/github-action-get-latest-release@master
with:
repository: ${{ github.repository }}
- name: download artifacts
if: needs.linux-amd64.outputs.ffversion != steps.get_version_release.outputs.release
uses: actions/download-artifact@v4
- name: create release
if: needs.linux-amd64.outputs.ffversion != steps.get_version_release.outputs.release
uses: ncipollo/release-action@v1
with:
tag: ${{ needs.linux-amd64.outputs.ffversion }}
commit: ${{ github.sha }}
artifactErrorsFailBuild: true
artifacts: fastfetch-*/fastfetch-*
body: "Please refer to [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/${{ needs.linux-amd64.outputs.ffversion }}/CHANGELOG.md) for details."
- name: download source tarballs
if: needs.linux-amd64.outputs.ffversion != steps.get_version_release.outputs.release
run: |
for i in 1 2 3 4 5; do curl -L --remote-name-all --output-dir fastfetch-source --create-dirs https://github.com/${{ github.repository }}/archive/refs/tags/${{ needs.linux-amd64.outputs.ffversion }}.{tar.gz,zip} && break || sleep 5; done
ls fastfetch-*/*
- name: generate release notes
if: needs.linux-amd64.outputs.ffversion != steps.get_version_release.outputs.release
run: |
echo "Please refer to [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/${{ needs.linux-amd64.outputs.ffversion }}/CHANGELOG.md) for details." > fastfetch-release-notes.md
echo -e "\n---\n\n<details><summary>SHA256SUMs</summary><br>\n\n\`\`\`" >> fastfetch-release-notes.md
sha256sum fastfetch-*/* >> fastfetch-release-notes.md
echo -e "\`\`\`\n</details>" >> fastfetch-release-notes.md
echo -e "\n<details><summary>SHA512SUMs</summary><br>\n\n\`\`\`" >> fastfetch-release-notes.md
sha512sum fastfetch-*/* >> fastfetch-release-notes.md
echo -e "\`\`\`\n</details>" >> fastfetch-release-notes.md
- name: update release body
if: needs.linux-amd64.outputs.ffversion != steps.get_version_release.outputs.release
uses: ncipollo/release-action@v1
with:
tag: ${{ needs.linux-amd64.outputs.ffversion }}
commit: ${{ github.sha }}
bodyFile: fastfetch-release-notes.md
allowUpdates: true
-303
View File
@@ -1,303 +0,0 @@
name: manage pushes
on:
- push
- pull_request
jobs:
linux:
name: Linux
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
outputs:
ffversion: ${{ steps.ffversion.outputs.ffversion }}
steps:
- name: checkout repository
uses: actions/checkout@v3
- name: install required packages
run: sudo apt-get update && sudo apt-get install -y libpci-dev libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev rpm librpm-dev libzstd-dev libegl-dev libglx-dev libosmesa6-dev ocl-icd-opencl-dev libcjson-dev
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: c
- name: configure project
run: cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr .
- name: build project
run: cmake --build . --target package
- name: perform CodeQL analysis
uses: github/codeql-action/analyze@v2
- name: run fastfetch
run: time ./fastfetch --disable-linewrap false --hide-cursor false --show-errors true --load-config presets/all
- name: run flashfetch
run: time ./flashfetch
- name: run tests
run: ctest
- name: get fastfetch version
id: ffversion
run: echo "ffversion=$(./fastfetch --version-raw)" >> $GITHUB_OUTPUT
- name: upload artifacts
uses: actions/upload-artifact@v3
with:
name: fastfetch-linux
path: ./fastfetch-*.*
macos:
name: MacOS
runs-on: macos-latest
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v3
- name: install required packages
run: brew install vulkan-loader molten-vk imagemagick chafa
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: c
- name: configure project
run: cmake -DSET_TWEAK=Off -DBUILD_TESTS=On .
- name: build project
run: cmake --build . --target package
- name: perform CodeQL analysis
uses: github/codeql-action/analyze@v2
- name: run fastfetch
run: time ./fastfetch --disable-linewrap false --hide-cursor false --show-errors true --load-config presets/all
- name: run flashfetch
run: time ./flashfetch
- name: run tests
run: ctest
- name: upload artifacts
uses: actions/upload-artifact@v3
with:
name: fastfetch-macos
path: ./fastfetch-*.*
freebsd:
name: FreeBSD
runs-on: macos-12
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v3
- name: run VM
uses: vmactions/freebsd-vm@v0
with:
prepare: |
pkg install -y cmake git pkgconf pciutils wayland vulkan-headers vulkan-loader libxcb libXrandr libX11 glib dconf dbus sqlite3-tcl xfce4-conf ImageMagick6 ImageMagick7 chafa egl libosmesa opencl ocl-icd
run: |
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On .
cmake --build . --target package
time ./fastfetch --disable-linewrap false --hide-cursor false --show-errors true --load-config presets/all
time ./flashfetch
ctest
- name: upload artifacts
uses: actions/upload-artifact@v3
with:
name: fastfetch-freebsd
path: ./fastfetch-*.*
windows:
name: Windows
runs-on: windows-latest
permissions:
security-events: write
contents: read
defaults:
run:
shell: msys2 {0}
steps:
- name: checkout repository
uses: actions/checkout@v3
- name: setup-msys2
uses: msys2/setup-msys2@v2
with:
msystem: CLANG64
update: true
install: git zip mingw-w64-clang-x86_64-cmake mingw-w64-clang-x86_64-clang mingw-w64-clang-x86_64-cjson mingw-w64-clang-x86_64-vulkan-loader mingw-w64-clang-x86_64-opencl-icd
- name: print msys version
run: uname -a
# https://github.com/msys2/MINGW-packages/issues/13524#event-7555720785
- name: create OpenCL.pc
run: |
cat > /clang64/lib/pkgconfig/OpenCL.pc << EOF
prefix=/clang64
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: OpenCL
Description: Open Computing Language generic Installable Client Driver Loader
Version: 2022.09.30-1
Libs: -L${libdir} -lOpenCL.dll
Cflags: -I${includedir}
EOF
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: c, cpp
- name: configure project
run: env PKG_CONFIG_PATH=/clang64/lib/pkgconfig/:$PKG_CONFIG_PATH cmake -DSET_TWEAK=Off -DBUILD_TESTS=On .
- name: build project
run: cmake --build .
- name: perform CodeQL analysis
uses: github/codeql-action/analyze@v2
- name: copy necessary dlls
run: cp /clang64/bin/{libcjson,libOpenCL,vulkan-1}.dll .
- name: run fastfetch
run: time ./fastfetch --disable-linewrap false --hide-cursor false --show-errors true --load-config presets/all
- name: run flashfetch
run: time ./flashfetch
- name: run tests
run: ctest
- name: create zip archive
run: zip fastfetch-$(./fastfetch --version-raw)-Windows.zip *.dll fastfetch.exe flashfetch.exe
- name: upload artifacts
uses: actions/upload-artifact@v3
with:
name: fastfetch-windows
path: ./fastfetch-*-Windows.zip
win7:
name: Win7
runs-on: windows-latest
permissions:
security-events: write
contents: read
defaults:
run:
shell: msys2 {0}
steps:
- name: checkout repository
uses: actions/checkout@v3
- name: setup-msys2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: git zip mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc mingw-w64-x86_64-cjson mingw-w64-x86_64-vulkan-loader mingw-w64-x86_64-opencl-icd
- name: print msys version
run: uname -a
# https://github.com/msys2/MINGW-packages/issues/13524#event-7555720785
- name: create OpenCL.pc
run: |
cat > /mingw64/lib/pkgconfig/OpenCL.pc << EOF
prefix=/mingw64
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: OpenCL
Description: Open Computing Language generic Installable Client Driver Loader
Version: 2022.09.30-1
Libs: -L${libdir} -lOpenCL.dll
Cflags: -I${includedir}
EOF
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: c, cpp
- name: configure project
run: env PKG_CONFIG_PATH=/mingw64/lib/pkgconfig/:$PKG_CONFIG_PATH cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_BUFFER=Off .
- name: build project
run: cmake --build .
- name: perform CodeQL analysis
uses: github/codeql-action/analyze@v2
- name: copy necessary dlls
run: cp /mingw64/bin/{libcjson,libOpenCL,vulkan-1}.dll .
- name: run fastfetch
run: time ./fastfetch --disable-linewrap false --hide-cursor false --show-errors true --load-config presets/all
- name: run flashfetch
run: time ./flashfetch
- name: run tests
run: ctest
- name: create zip archive
run: zip fastfetch-$(./fastfetch --version-raw)-Win7.zip *.dll fastfetch.exe flashfetch.exe
- name: upload artifacts
uses: actions/upload-artifact@v3
with:
name: fastfetch-win7
path: ./fastfetch-*-Win7.zip
release:
if: github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'LinusDierheimer/fastfetch'
name: Release
runs-on: ubuntu-latest
needs:
- linux
- macos
- freebsd
- windows
- win7
permissions:
contents: write
steps:
- name: download artifacts
uses: actions/download-artifact@v3
- name: get latest release version
id: get_version_release
uses: pozetroninc/github-action-get-latest-release@master
with:
repository: ${{ github.repository }}
- name: create release
if: needs.linux.outputs.ffversion != steps.get_version_release.outputs.release
uses: ncipollo/release-action@v1
with:
tag: ${{ needs.linux.outputs.ffversion }}
commit: ${{ github.sha }}
artifactErrorsFailBuild: true
artifacts: fastfetch-linux/*,fastfetch-macos/*,fastfetch-freebsd/*,fastfetch-windows/*,fastfetch-win7/*
+8 -6
View File
@@ -1,9 +1,11 @@
**/build/
**/.vscode/
**/.cache/
**/.kdev4/
**/.DS_Store
/.vs
build/
.vs/
.vscode/
.cache/
.kdev4/
.DS_Store
cscope.*
tags
fastfetch.kdev4
*.user
*.user.*
+1259 -3
View File
File diff suppressed because it is too large Load Diff
+736 -194
View File
File diff suppressed because it is too large Load Diff
+133
View File
@@ -0,0 +1,133 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official email address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[INSERT CONTACT METHOD].
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of
actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations
-34
View File
@@ -1,34 +0,0 @@
# Development help
This file is not an official documentation!
Here i just add things that are easy to forget.
## Features i am planning to implement
### Specific
- [ ] Split the project in different libs / executables, all linking static by default:
- `libffdetect`: contains all the detection stuff. To be used by anything that needs system information
- `libffprint`: contains the printing functions, logos, format etc
- `fastfetch` and `flashfetch`: Executables, that initialize the config of libffprint. Fist one at runtime, second one at compile time
- [ ] Make LocalIP module more configurable
- [ ] Automatic migrate old config files to newer versions
- [ ] ZSH completions
- [ ] Fish completions
- [ ] Make CPU usage detection much faster and more accurate
- [ ] Detect CPU usage in a common detection methode and expose it both to the cpuUsage module and the cpu format string
- [ ] Per session caching
### General
- More presets
- More logos
- More package managers
- More DE detections
- More WM theme detections
- More terminal font detections
- Performance optimizations
- More module specific options
- Better error handling, especially the messages shown when using --show-errors
- Using package managers libraries for package count detection instead own. E.g. using libalpm instead of counting files in /var/lib/pacman/local
- Better documentation (especially default config file and the various --help options. Colored output?)
- General feature parity with neofetch, to demonstrate supremity of c
+154 -109
View File
@@ -1,6 +1,17 @@
# Fastfetch
Fastfetch is a [neofetch](https://github.com/dylanaraps/neofetch)-like tool for fetching system information and displaying them in a pretty way. It is written in pure c, with performance and customizability in mind. Currently, Linux, Android, FreeBSD, MacOS and Windows 7+ are supported.
[![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/fastfetch-cli/fastfetch/ci.yml)](https://github.com/fastfetch-cli/fastfetch/actions)
[![GitHub license](https://img.shields.io/github/license/fastfetch-cli/fastfetch)](https://github.com/fastfetch-cli/fastfetch/blob/dev/LICENSE)
[![GitHub contributors](https://img.shields.io/github/contributors/fastfetch-cli/fastfetch)](https://github.com/fastfetch-cli/fastfetch/graphs/contributors)
[![GitHub top language](https://img.shields.io/github/languages/top/fastfetch-cli/fastfetch?logo=c&label=)](https://github.com/fastfetch-cli/fastfetch/blob/dev/CMakeLists.txt#L5)
[![GitHub commit activity (branch)](https://img.shields.io/github/commit-activity/m/fastfetch-cli/fastfetch)](https://github.com/fastfetch-cli/fastfetch/commits)
[![homebrew downloads](https://img.shields.io/homebrew/installs/dm/fastfetch?logo=homebrew)](https://formulae.brew.sh/formula/fastfetch#default)
[![GitHub all releases](https://img.shields.io/github/downloads/fastfetch-cli/fastfetch/total?logo=github)](https://github.com/fastfetch-cli/fastfetch/releases)
[![GitHub release (with filter)](https://img.shields.io/github/v/release/fastfetch-cli/fastfetch?logo=github)](https://github.com/fastfetch-cli/fastfetch/releases)
[![latest packaged version(s)](https://repology.org/badge/latest-versions/fastfetch.svg)](https://repology.org/project/fastfetch/versions)
[![Packaging status](https://repology.org/badge/tiny-repos/fastfetch.svg)](https://repology.org/project/fastfetch/versions)
Fastfetch is a [neofetch](https://github.com/dylanaraps/neofetch)-like tool for fetching system information and displaying them in a pretty way. It is written mainly in C, with performance and customizability in mind. Currently, Linux, Android, FreeBSD, macOS, SunOS and Windows 7+ are supported.
<img src="screenshots/example1.png" width="49%" align="left" />
<img src="https://upload.wikimedia.org/wikipedia/commons/2/24/Transparent_Square_Tiles_Texture.png" width="49%" height="16px" align="left" />
@@ -10,136 +21,70 @@ Fastfetch is a [neofetch](https://github.com/dylanaraps/neofetch)-like tool for
<img src="screenshots/example3.png" width="48%" align="top" />
<img src="screenshots/example5.png" height="15%" align="top" />
## Customization
There are [screenshots on different platforms](https://github.com/fastfetch-cli/fastfetch/wiki)
With customization and speed being two competing goals, this project actually builds two executables.
## Installation
* The main one being `fastfetch`, which can be very greatly configured via flags. These flags can be made persistent in `~/.config/fastfetch/config.conf`. To view the available options run `fastfetch --help`.
* The second executable being built is called `flashfetch`, which is configured at compile time to eliminate any possible overhead. Configuration of it can be very easily done in [`src/flashfetch.c`](src/flashfetch.c).
### Linux
At the moment the performance difference is measurable, but too small to be human recognizable. But the leap will get bigger with more and more options coming, and on slow machines this might actually make a difference.
Some distros packaged an outdated fastfetch version. Older version is not supported, please always ensure that the latest version is used.
There are some premade config files in [`presets`](presets), including the ones used for the screenshots above. You can load them using `--load-config <filename>`. They may also serve as a good example for format arguments.
* Ubuntu: [`ppa:zhangsongcui3371/fastfetch`](https://launchpad.net/~zhangsongcui3371/+archive/ubuntu/fastfetch) (for Ubuntu 22.04 or newer)
* Debian: `sudo apt install fastfetch` (for Debian 13 or newer)
* Debian / Ubuntu: Download `fastfetch-linux-<proper architecture>.deb` from [Github release page](https://github.com/fastfetch-cli/fastfetch/releases/latest) and double-click it (for Ubuntu 20.04 or newer and Debian 11 or newer).
* Arch Linux: `sudo pacman -S fastfetch`
* Fedora: `sudo dnf install fastfetch`
* Gentoo: `sudo emerge --ask app-misc/fastfetch`
* Alpine: `apk add --upgrade fastfetch`
* NixOS: `nix-shell -p fastfetch`
* openSUSE: `sudo zypper install fastfetch`
* ALT Linux: `sudo apt-get install fastfetch`
## Dependencies
Replace sudo with doas depending on what you use.
Fastfetch dynamically loads needed libraries if they are available. On Linux, its only hard dependencies are `libc` (any implementation of the c standard library), `libdl` and [`libpthread`](https://man7.org/linux/man-pages/man7/pthreads.7.html) (if built with multithreading support). They are all shipped with [`glibc`](https://www.gnu.org/software/libc/), which is already installed on most linux distributions.
[See also if fastfetch has been packaged for your favorite Linux distro](#Packaging).
The following libraries are used if present at runtime:
### Linux and FreeBSD
* [`libpci`](https://github.com/pciutils/pciutils): GPU output.
* [`libvulkan`](https://www.vulkan.org/): Vulkan module & fallback for GPU output.
* [`libxcb-randr`](https://xcb.freedesktop.org/),
[`libXrandr`](https://gitlab.freedesktop.org/xorg/lib/libxrandr),
[`libxcb`](https://xcb.freedesktop.org/),
[`libX11`](https://gitlab.freedesktop.org/xorg/lib/libx11): At least one of them sould be present in X11 sessions for better resolution detection and faster WM detection. The `*randr` ones provide multi monitor support The `libxcb*` ones usually have better performance.
* [`libwayland-client`](https://wayland.freedesktop.org/): Better resolution performance and output in wayland sessions. Supports different refresh rates per monitor.
* [`libGIO`](https://developer.gnome.org/gio/unstable/): Needed for values that are only stored GSettings.
* [`libDConf`](https://developer.gnome.org/dconf/unstable/): Needed for values that are only stored in DConf + Fallback for GSettings.
* [`libmagickcore` (ImageMagick)](https://www.imagemagick.org/): Images in terminal using sixel or kitty graphics protocol.
* [`libchafa`](https://github.com/hpjansson/chafa): Image output as ascii art.
* [`libZ`](https://www.zlib.net/): Faster image output when using kitty graphics protocol.
* [`libDBus`](https://www.freedesktop.org/wiki/Software/dbus): Needed for detecting current media player and song.
* [`libEGL`](https://www.khronos.org/registry/EGL/),
[`libGLX`](https://dri.freedesktop.org/wiki/GLX/),
[`libOSMesa`](https://docs.mesa3d.org/osmesa.html): At least one of them is needed by the OpenGL module for gl context creation.
* [`libOpenCL`](https://www.khronos.org/opencl/): OpenCL module
* [`libXFConf`](https://gitlab.xfce.org/xfce/xfconf): Needed for XFWM theme and XFCE Terminal font.
* [`libsqlite3`](https://www.sqlite.org/index.html): Needed for pkg & rpm package count.
* [`librpm`](http://rpm.org/): Slower fallback for rpm package count. Needed on openSUSE.
* [`libcJSON`](https://github.com/DaveGamble/cJSON): Needed for Windows Terminal font ( WSL ).
If fastfetch is not packaged for your distro or an outdated version is packaged, [linuxbrew](https://brew.sh/) is a good alternative: `brew install fastfetch`
### macOS
* [`MediaRemote`](https://iphonedev.wiki/index.php/MediaRemote.framework): Need for Media detection. It's a private framework provided by newer macOS system.
* [`MoltenVK`](https://github.com/KhronosGroup/MoltenVK): Vulkan driver for macOS. [`molten-vk`](https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/molten-vk.rb)
* [`libmagickcore` (ImageMagick)](https://www.imagemagick.org/): Images in terminal using sixel graphics protocol. [`imagemagick`](https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/imagemagick.rb)
* [`libchafa`](https://github.com/hpjansson/chafa): Image output as ascii art. [`chafa`](https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/chafa.rb)
For the image logo, iTerm with iterm image protocol should work. Apple Terminal is not supported.
* [HomeBrew](https://formulae.brew.sh/formula/fastfetch#default): `brew install fastfetch`
* [MacPorts](https://ports.macports.org/port/fastfetch/): `sudo port install fastfetch`
### Windows
* [`wlanapi`](https://learn.microsoft.com/en-us/windows/win32/api/wlanapi/): A system dll which isn't supported by Windows Server by default. Used for Wifi info detection.
* [`libcJSON`](https://github.com/DaveGamble/cJSON): Used for Windows Terminal font detection. [`cjson`](https://github.com/msys2/MINGW-packages/tree/master/mingw-w64-cjson)
* [`libvulkan`](https://www.vulkan.org/): Vulkan module. Usually has been provided by GPU drivers. [`vulkan-loader`](https://github.com/msys2/MINGW-packages/tree/master/mingw-w64-vulkan-loader) [`vulkan-headers`](https://github.com/msys2/MINGW-packages/tree/master/mingw-w64-vulkan-headers)
* [`libOpenCL`](https://www.khronos.org/opencl/): OpenCL module. [`opencl-icd`](https://github.com/msys2/MINGW-packages/tree/master/mingw-w64-opencl-icd)
* [scoop](https://scoop.sh/#/apps?q=fastfetch): `scoop install fastfetch`
* [winget](https://github.com/microsoft/winget-pkgs/tree/master/manifests/f/Fastfetch-cli/Fastfetch): `winget install fastfetch`
* [MSYS2 MinGW](https://github.com/msys2/MINGW-packages/tree/master/mingw-w64-fastfetch): `pacman -S mingw-w64-<subsystem>-<arch>-fastfetch`
Note: In Windows 7, 8 and 8.1, [ConEmu](https://conemu.github.io/en/AnsiEscapeCodes.html) is required to run fastfetch due to [the lack of ASCII escape code native support](https://en.wikipedia.org/wiki/ANSI_escape_code#DOS,_OS/2,_and_Windows). In addition, special build `fastfetch-win7` is provided to support these old systems, which
You may also download it directly from [GitHub releases page](https://github.com/fastfetch-cli/fastfetch/releases/latest) and extract the archive.
1. Build with the ancient [MSVCRT](https://en.wikipedia.org/wiki/Microsoft_Windows_library_files#MSVCRT.DLL,_MSVCP*.DLL_and_CRTDLL.DLL) C runtime library, instead of the modern [UCRT](https://learn.microsoft.com/en-us/cpp/windows/universal-crt-deployment) C runtime library
2. Disable stdout application buffer, which seems to problematic for ConEmu.
### FreeBSD
For the image logo, only chafa is supported due to [the design flaw of ConPTY](https://github.com/microsoft/terminal/issues/1173). In addition, chafa support is not built by default due to the massive dependencies of imagemagick. You must built it yourself.
* `pkg install fastfetch`
### Android
### Android (Termux)
* [`freetype`](https://www.freetype.org/): Used for Termux font detection. [`freetype`](https://github.com/termux/termux-packages/tree/master/packages/freetype)
* [`libvulkan`](https://www.vulkan.org/): Vulkan module, also used for GPU detection. Usually has been provided by Android system. [`vulkan-loader-android`](https://github.com/termux/termux-packages/tree/master/packages/vulkan-loader-android) [`vulkan-headers`](https://github.com/termux/termux-packages/tree/master/packages/vulkan-headers)
* `pkg install fastfetch`
## Support status
All categories not listed here should work without needing a specific implementation.
## Build from source
##### Available Modules
```
Title, Separator, OS, Host, Bios, Board, Kernel, Uptime, Processes, Packages, Shell, Resolution, DE, WM, WMTheme, Theme, Icons, Font, Cursor, Terminal, Terminal Font, CPU, CPUUsage, GPU, Memory, Swap, Disk, Battery, Power Adapter, Player, Media, Vulkan, OpenGL, OpenCL, LocalIP, PublicIP, Wifi, DateTime, Date, Time, Locale, Colors, Break, Custom
```
See Wiki: https://github.com/fastfetch-cli/fastfetch/wiki/Building
##### Logos
```
AlmaLinux, Alpine, Android, Arch, Arco, Artix, Bedrock, CachyOS, CentOS, CRUX, Crystal, Debian, Devuan, Deepin, Endeavour, Enso, Fedora, FreeBSD, Garuda, Gentoo, KDE Neon, KISS, Kubuntu, LangitKetujuh, Linux, MacOS, Manjaro, Mint, MSYS2, NixOS, Nobara, OpenSUSE, OpenSUSE Tumbleweed, OpenSUSE LEAP, Parabola, Pop!_OS, RebornOS, RedstarOS, Rocky, Rosa, Slackware, Solus, Ubuntu, Vanilla, Void, Windows 11, Windows 8, Windows, Zorin
```
* Most of the logos have a small variant. Access it by appending _small to the logo name.
* Some logos have an old variant. Access it by appending _old to the logo name.
* To disable the logo, use `--logo none`.
* Get a list of all available logos with `fastfetch --print-logos`.
* Printing images as logo is supported using Sixel / Kitty / iTerm graphics protocol or chafas image to text conversion.
## Usage
##### Package managers
```
Pacman, dpkg, rpm, emerge, eopkg, xbps, nix, Flatpak, Snap, apk, pkg, brew, MacPorts, scoop, Chocolatey
```
* Run it with default configuration: `fastfetch`
* Run it with [all supported modules](https://github.com/fastfetch-cli/fastfetch/wiki/Support+Status#available-modules) and find what you interest: `fastfetch -c all.jsonc`
* Find all data that fastfetch detects: `fastfetch -s <module> --format json`
* Display help messages: `fastfetch --help`
* Generate config file based on command line arguments: `fastfetch --arg1 --arg2 --gen-config`
##### WM themes
```
KWin, Mutter, Muffin, Marco, XFWM, Openbox (LXDE, LXQT & without DE), Quartz Compositor (macOS), DWM (Windows)
```
## Customization
##### DE versions
```
KDE Plasma, Gnome, Cinnamon, Mate, XFCE4, LXQt
```
Fastfetch uses the JSONC (or JSON with comments) for configuration. [See Wiki for detail](https://github.com/fastfetch-cli/fastfetch/wiki/Configuration). There are some premade config files in [`presets`](presets), including the ones used for the screenshots above. You can load them using `-c <filename>`. They may also serve as a good example for format arguments.
##### Terminal fonts
```
Konsole, Gnome Terminal, Tilix, XFCE4 Terminal, Alacritty, Kitty, LXTerminal, Deepin Terminal, iTerm2, Apple Terminal, Warp, TTY, Windows Terminal, Termux, mintty, ConEmu
```
Logos can be heavily customized too; see the [logo documentation](https://github.com/fastfetch-cli/fastfetch/wiki/Logo-options) for more information.
## Building
fastfetch uses [`cmake`](https://cmake.org/) for building. [`pkg-config`](https://www.freedesktop.org/wiki/Software/pkg-config/) is recommended for better library detection. The simplest steps to build the fastfetch and flashfetch binaries are:
```bash
mkdir -p build
cd build
cmake ..
cmake --build . --target fastfetch --target flashfetch
```
If the build process fails to find the headers for a library listed in [dependencies](#dependencies), fastfetch will simply build without support for that specific feature. This means, it won't look for it at runtime and just act like it isn't available.
### Building on Windows
Currently GCC or clang is required (MSVC is not supported). MSYS2 with CLANG64 subsystem (or CLANGARM64 if needed) is suggested (and tested) to build fastfetch. If you need Windows 7 / 8.x support, using MINGW64 is suggested.
1. Install [MSYS2](https://www.msys2.org/#installation)
1. Open `MSYS2 CLANG64` (not `MSYS2 / MSYS`, which targets cygwin C runtime)
1. Install dependencies
```bash
pacman -Syu mingw-w64-clang-x86_64-cmake mingw-w64-clang-x86_64-pkgconf mingw-w64-clang-x86_64-clang mingw-w64-clang-x86_64-cjson mingw-w64-clang-x86_64-vulkan-loader mingw-w64-clang-x86_64-opencl-icd
```
1. Follow building instructions of Linux
## Packaging
@@ -154,8 +99,108 @@ pacman -Syu mingw-w64-clang-x86_64-cmake mingw-w64-clang-x86_64-pkgconf mingw-w6
## FAQ
Q: Why do you need a very performant version of neofetch?
> I like putting neofetch in my ~/.bashrc to have a system overwiew whenever I use the terminal, but the slow speed annoyed me, so I created this. Also neofetch didn't output everything correctly (e.g Font is displayed as "[Plasma], Noto Sans, 10 [GTK2/3]") and writing my own tool gave me the possibility to fine tune it to run perfectly on at least my configuration.
### Q: Neofetch is good enough. Why do I need fastfetch?
Q: It does not display [*] correctly for me, what can I do?
> This is most likely because your system is not implemented (yet). At the moment I am focusing more on making the core app better, than adding more configurations. Feel free to open a pull request if you want to add support for your configuration
1. Fastfetch is actively maintained.
2. Fastfetch is faster. As the name suggests.
3. Fastfetch is more feature-rich. By default fastfetch only has a few modules enabled. Use `fastfetch -c all` to find what you want.
4. Fastfetch is more configurable. You can find more information in the Wiki: <https://github.com/fastfetch-cli/fastfetch/wiki/Configuration>
5. Fastfetch is more polished. For example, neofetch prints `555MiB` in `Memory` module and `23G` in `Disk` module (notibily the difference of `MiB` and `G`), while fastfetch prints `555.00 MiB` and `22.97 GiB` respectively.
6. Fastfetch is more accurate. For example, [neofetch never actually supports Wayland protocol](https://github.com/dylanaraps/neofetch/pull/2395).
### Q: Fastfetch shows my local IP address. It leaks my privacy!
A local IP (10.x.x.x, 172.x.x.x, 192.168.x.x) has nothing to do with privacy. It only makes sense if you are on the same network, for example, if you connect to the same Wi-Fi network.
Actually the `Local IP` module is the most useful module for me personally. I (@CarterLi) have several VMs installed to test fastfetch and often need to SSH into them. I have fastfetch running on shell startup and I never need to type `ip addr` manually.
If you really don't like it, you can disable the `Local IP` module in `config.jsonc`.
### Q: Where is the config file? I can't find it.
`Fastfetch` don't generate config file automatically. You can use `fastfetch --gen-config` to generate one. The config file will be saved in `~/.config/fastfetch/config.jsonc` by default. See [Wiki for detail](https://github.com/fastfetch-cli/fastfetch/wiki/Configuration).
### Q: The configuration is so complex. Where is the documentation?
Fastfetch uses JSON (with comments) for configuration. I suggest you use an IDE with JSON schema support (like VSCode) to edit it.
Alternatively, you can refer to the presets in [`presets` directory](https://github.com/fastfetch-cli/fastfetch/tree/dev/presets).
### Q: I WANT THE DOCUMENTATION!
[Here is the documentation](https://github.com/fastfetch-cli/fastfetch/wiki/Json-Schema). It is generated from [JSON schema](https://github.com/fastfetch-cli/fastfetch/blob/dev/doc/json_schema.json) but you won't like it.
### Q: How can I customize the module output?
Fastfetch uses `format` to generate output. For example to make `GPU` module show GPU name only and ignore other information, you can use
```jsonc
{
"modules": [
{
"type": "gpu",
"format": "{2}" // See `fastfetch -h gpu-format` for detail
}
]
}
```
which is equivalent to `fastfetch -s gpu --gpu-format '{2}'`
See `fastfetch -h format` for basic usage. For module specific formattion, see `fastfetch -h <module>-format`
### Q: I have my own ascii-art / image file. How can I show it with fastfetch?
Try `fastfetch -l /path/to/logo`. See [logo documentation](https://github.com/fastfetch-cli/fastfetch/wiki/Logo-options) for detail.
If you just want to display distro name in [FIGlet text](https://github.com/pwaller/pyfiglet)
```bash
# install pyfiglet and jq first
pyfiglet -s -f small_slant $(fastfetch -s os --format json | jq -r '.[0].result.name') && fastfetch -l none
```
![image](https://github.com/fastfetch-cli/fastfetch/assets/6134068/6466524e-ab8c-484f-848d-eec7ddeb7df2)
### Q: Fastfetch runs in white and black on shell startup. Why?
This issue usually happens when using fastfetch with `p10k`. There are known incompatibility between fastfetch and p10k instant prompt.
The p10k doc clearly states that you should NOT print anything to stdout after `p10k-instant-prompt` is initialized. You should either put `fastfetch` before initialization of `p10k-instant-prompt` (recommended)
You can always use `fastfetch --pipe false` to force fastfetch running in colorful mode.
### Q: I want feature A / B / C. Will fastfetch support it?
Fastfetch is a system information tool. We only accept hardware or system level software feature requests. For most personal uses, I recommend using `Command` module to detect it yourself, which can be used to grab output from a custom shell script:
```jsonc
// This module shows the default editor
{
"modules": [
{
"type": "command",
"text": "$EDITOR --version | head -1",
"key": "Editor"
}
]
}
```
Otherwise, open a feature request in [GitHub Issues](https://github.com/fastfetch-cli/fastfetch/issues).
### Q: I have questions. Where can I get help?
* For usage questions, please start a discussion in [GitHub Discussions](https://github.com/fastfetch-cli/fastfetch/discussions).
* For possible bugs, please open an issue in [GitHub Issues](https://github.com/fastfetch-cli/fastfetch/issues). Be sure to fill the bug-report template carefully for developers to investigate.
## Star History
Give it a star to support us!
<a href="https://star-history.com/#fastfetch-cli/fastfetch&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=fastfetch-cli/fastfetch&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=fastfetch-cli/fastfetch&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=fastfetch-cli/fastfetch&type=Date" />
</picture>
</a>
+88 -74
View File
@@ -1,11 +1,9 @@
#!/usr/bin/env bash
__fastfetch_complete_help()
{
local __ff_helps=(
"color"
"format"
"load-config"
"config"
"os-format"
"host-format"
"kernel-format"
@@ -13,18 +11,18 @@ __fastfetch_complete_help()
"processes-format"
"packages-format"
"shell-format"
"resolution-format"
"display-format"
"de-format"
"wm-format"
"wm-theme-format"
"wmtheme-format"
"theme-format"
"icons-format"
"font-format"
"cursor-format"
"terminal-format"
"terminal-font-format"
"terminalfont-format"
"cpu-format"
"cpu-usage-format"
"cpuusage-format"
"gpu-format"
"memory-format"
"swap-format"
@@ -32,8 +30,8 @@ __fastfetch_complete_help()
"battery-format"
"poweradapter-format"
"locale-format"
"local-ip-format"
"public-ip-format"
"localip-format"
"publicip-format"
"player-format"
"media-format"
"datetime-format"
@@ -42,6 +40,7 @@ __fastfetch_complete_help()
"vulkan-format"
"opengl-format"
"opencl-format"
"bluetooth-format"
)
COMPREPLY=($(compgen -W "${__ff_helps[*]}" -- "$CURRENT_WORD"))
}
@@ -65,7 +64,7 @@ __fastfetch_complete_path()
__fastfetch_complete_logo()
{
COMPREPLY=($(compgen -W "$(fastfetch --list-logos-autocompletion)" -- "$CURRENT_WORD"))
COMPREPLY=($(compgen -W "$(fastfetch --list-logos autocompletion)" -- "$CURRENT_WORD"))
}
__fastfetch_complete_logo_type()
@@ -112,7 +111,7 @@ __fastfetch_complete_option()
"${FF_OPTIONS_LOGO[@]}"
"${FF_OPTIONS_LOGO_TYPE[@]}"
"${FF_OPTIONS_BINARY_PREFIX[@]}"
"${FF_OPTIONS_GL[@]}"
"${FF_OPTIONS_OPENGL[@]}"
)
if [[ $WORD_COUND -lt 3 ]]; then
@@ -160,6 +159,8 @@ __fastfetch_completion()
"--print-config-system"
"--print-config-user"
"--print-structure"
"--gen-config"
"--gen-config-force"
)
local FF_OPTIONS_HELP=(
@@ -179,16 +180,24 @@ __fastfetch_completion()
"--cpu-temp"
"--gpu-temp"
"--battery-temp"
"--display-precise-refresh-rate"
"--localip-show-ipv4"
"--localip-show-ipv6"
"--localip-show-loop"
"--localip-name-prefix"
"--localip-compact-type"
"--escape-bedrock"
"--pipe"
"--title-fqdn"
"--escape-bedrock"
"--disk-show-removable"
"--disk-folders"
"--disk-show-external"
"--disk-show-hidden"
"--disk-show-subvolumes"
"--gpu-hide-integrated"
"--gpu-hide-discrete"
"--gpu-force-method"
"--disk-show-unknown"
"--bluetooth-show-disconnected"
)
local FF_OPTIONS_STRING=(
@@ -196,6 +205,7 @@ __fastfetch_completion()
"--logo-padding"
"--logo-padding-left"
"--logo-padding-right"
"--logo-padding-top"
"--logo-color-1"
"--logo-color-2"
"--logo-color-3"
@@ -204,146 +214,148 @@ __fastfetch_completion()
"--logo-color-6"
"--logo-color-7"
"--logo-color-8"
"--logo-color-9"
"--logo-width"
"--logo-height"
"--logo-color-9"
"-c"
"--color"
"--color-keys"
"--color-title"
"--display-compact-type"
"--separator"
"-s"
"--structure"
"--set"
"--set-keyless"
"--player-name"
"--percent-type"
"--public-ip-url"
"--public-ip-timeout"
"--publicip-url"
"--publicip-timeout"
"--weather-output-format"
"--weather-timeout"
"--os-key"
"--os-format"
"--os-error"
"--os-key-color"
"--host-key"
"--host-format"
"--host-error"
"--host-key-color"
"--kernel-key"
"--kernel-format"
"--kernel-error"
"--kernel-key-color"
"--uptime-key"
"--uptime-format"
"--uptime-error"
"--uptime-key-color"
"--processes-key"
"--processes-format"
"--processes-error"
"--processes-key-color"
"--packages-key"
"--packages-format"
"--packages-error"
"--packages-key-color"
"--shell-key"
"--shell-format"
"--shell-error"
"--resolution-key"
"--resolution-format"
"--resolution-error"
"--shell-key-color"
"--display-key"
"--display-format"
"--display-key-color"
"--de-key"
"--de-format"
"--de-error"
"--de-key-color"
"--wm-key"
"--wm-format"
"--wm-error"
"--wm-theme-key"
"--wm-theme-format"
"--wm-theme-error"
"--wm-key-color"
"--wmtheme-key"
"--wmtheme-format"
"--wmtheme-key-color"
"--theme-key"
"--theme-format"
"--theme-error"
"--theme-key-color"
"--icons-key"
"--icons-format"
"--icons-error"
"--icons-key-color"
"--font-key"
"--font-format"
"--font-error"
"--font-key-color"
"--cursor-key"
"--cursor-format"
"--cursor-error"
"--cursor-key-color"
"--terminal-key"
"--terminal-format"
"--terminal-error"
"--terminal-font-key"
"--terminal-font-format"
"--terminal-font-error"
"--terminal-key-color"
"--terminalfont-key"
"--terminalfont-format"
"--terminalfont-key-color"
"--cpu-key"
"--cpu-format"
"--cpu-error"
"--cpu-key-color"
"--cpu-useage-key"
"--cpu-useage-format"
"--cpu-useage-error"
"--cpu-useage-key-color"
"--gpu-key"
"--gpu-format"
"--gpu-error"
"--gpu-key-color"
"--memory-key"
"--memory-format"
"--memory-error"
"--memory-key-color"
"--swap-key"
"--swap-format"
"--swap-error"
"--swap-key-color"
"--disk-key"
"--disk-format"
"--disk-error"
"--disk-key-color"
"--battery-key"
"--battery-format"
"--battery-error"
"--battery-key-color"
"--poweradapter-key"
"--poweradapter-format"
"--poweradapter-error"
"--poweradapter-key-color"
"--locale-key"
"--locale-format"
"--locale-error"
"--local-ip-key"
"--local-ip-format"
"--local-ip-error"
"--public-ip-key"
"--public-ip-format"
"--public-ip-error"
"--locale-key-color"
"--localip-key"
"--localip-format"
"--localip-key-color"
"--publicip-key"
"--publicip-format"
"--publicip-key-color"
"--wifi-key"
"--wifi-format"
"--wifi-error"
"--wifi-key-color"
"--weather-key"
"--weather-format"
"--weather-error"
"--weather-key-color"
"--player-key"
"--player-format"
"--player-error"
"--player-key-color"
"--media-key"
"--media-format"
"--media-error"
"--media-key-color"
"--datetime-key"
"--datetime-format"
"--datetime-error"
"--datetime-key-color"
"--date-key"
"--date-format"
"--date-error"
"--date-key-color"
"--time-key"
"--time-format"
"--time-error"
"--time-key-color"
"--vulkan-key"
"--vulkan-format"
"--vulkan-error"
"--vulkan-key-color"
"--opengl-key"
"--opengl-format"
"--opengl-error"
"--opengl-key-color"
"--opencl-key"
"--opencl-format"
"--opencl-error"
"--opencl-key-color"
"--users-key"
"--users-format"
"--users-error"
"--users-key-color"
"--users-myself-only"
"--bluetooth-key"
"--bluetooth-format"
"--bluetooth-key-color"
)
local FF_OPTIONS_PATH=(
"--load-config"
"--os-file"
"-c"
"--config"
"--lib-pci"
"--lib-vulkan"
"--lib-wayland"
@@ -364,7 +376,9 @@ __fastfetch_completion()
"--lib-glx"
"--lib-osmesa"
"--lib-opencl"
"--battery-dir"
"--lib-pulse"
"--lib-ddcutil"
"--lib-nm"
)
local FF_OPTIONS_LOGO=(
@@ -380,8 +394,8 @@ __fastfetch_completion()
"--binary-prefix"
)
local FF_OPTIONS_GL=(
"--gl"
local FF_OPTIONS_OPENGL=(
"--opengl-type"
)
if __fastfetch_previous_matches "${FF_OPTIONS_SINGLE[@]}"; then
@@ -404,7 +418,7 @@ __fastfetch_completion()
__fastfetch_complete_logo_type
elif __fastfetch_previous_matches "${FF_OPTIONS_BINARY_PREFIX[@]}"; then
__fastfetch_complete_binary_prefix
elif __fastfetch_previous_matches "${FF_OPTIONS_GL[@]}"; then
elif __fastfetch_previous_matches "${FF_OPTIONS_OPENGL[@]}"; then
__fastfetch_complete_gl
else
__fastfetch_complete_option
+104
View File
@@ -0,0 +1,104 @@
if not type -q fastfetch
exit
end
complete -c fastfetch -f
function __fastfetch_complete_bool
echo -e "true\tBool"
echo -e "false\tBool"
end
function __fastfetch_complete_color
echo -e "black\tColor"
echo -e "red\tColor"
echo -e "green\tColor"
echo -e "yellow\tColor"
echo -e "blue\tColor"
echo -e "magenta\tColor"
echo -e "cyan\tColor"
echo -e "white\tColor"
echo -e "default\tColor"
end
function __fastfetch_complete_command
for line in (fastfetch --list-modules autocompletion)
set -l pair (string split -m 2 : $line)
set -l module (string lower $pair[1])
echo -e "$module-format\tModule format"
end
echo -e "format\tCustom format"
echo -e "color\tColor format"
end
function __fastfetch_complete_config
for line in (fastfetch --list-presets autocompletion)
echo -e "$line\tPreset"
end
echo -e "none\tDisable loading config file"
end
function __fastfetch_complete_logo
for line in (fastfetch --list-logos autocompletion)
echo -e "$line\tBuiltin logo"
end
echo -e "none\tDon't print logo"
echo -e "small\tPrint small ascii logo if available"
end
function __fastfetch_complete_structure
for line in (fastfetch --list-modules autocompletion)
set -l pair (string split -m 2 : $line)
echo -e "$pair[1]\t$pair[2]"
end
end
string match -r -a -g "^###> ?(.*)" < (status -f) | string collect | python3 | source
###> #!/usr/bin/env python3
###>
###> import json, subprocess, sys
###>
###> def main():
###> data: dict[str, list[dict]] = json.loads(subprocess.check_output(['fastfetch', '--help-raw']))
###>
###> for key in data:
###> for flag in data[key]:
###> if flag.get('pseudo', False):
###> continue
###>
###> command_prefix: str = f'complete -c fastfetch -d "{flag["desc"]}" -l "{flag["long"]}"';
###> if 'short' in flag:
###> command_prefix += f' -o "{flag["short"]}"'
###>
###> if 'arg' in flag:
###> type: str = flag['arg']['type'];
###> if type == 'bool':
###> print(f'{command_prefix} -x -a "(__fastfetch_complete_bool)"')
###> elif type == 'color':
###> print(f'{command_prefix} -x -a "(__fastfetch_complete_color)"')
###> elif type == 'command':
###> print(f'{command_prefix} -x -a "(__fastfetch_complete_command)"')
###> elif type == 'config':
###> print(f'{command_prefix} -x -a "(__fastfetch_complete_config)"')
###> elif type == 'enum':
###> temp: str = ' '.join(flag["arg"]["enum"])
###> print(f'{command_prefix} -x -a "{temp}"')
###> elif type == 'logo':
###> print(f'{command_prefix} -x -a "(__fastfetch_complete_logo)"')
###> elif type == 'structure':
###> print(f'{command_prefix} -x -a "(__fish_complete_list : __fastfetch_complete_structure)"')
###> elif type == 'path':
###> print(f'{command_prefix} -r -F')
###> else:
###> print(f'{command_prefix} -x')
###> else:
###> print(f'{command_prefix} -f')
###>
###> if __name__ == "__main__":
###> try:
###> main()
###> except:
###> sys.exit(1)
###>
+120
View File
@@ -0,0 +1,120 @@
fastfetch (2.16.0) jammy; urgency=medium
* Update to 2.16.0
-- Carter Li <zhangsongcui@live.cn> Wed, 19 Jun 2024 14:53:43 +0800
fastfetch (2.15.0) jammy; urgency=medium
* Update to 2.15.0
-- Carter Li <zhangsongcui@live.cn> Fri, 07 Jun 2024 13:52:43 +0800
fastfetch (2.14.0) jammy; urgency=medium
* Update to 2.14.0
-- Carter Li <zhangsongcui@live.cn> Thu, 30 May 2024 14:27:54 +0800
fastfetch (2.13.2) jammy; urgency=medium
* Update to 2.13.2
-- Carter Li <zhangsongcui@live.cn> Fri, 24 May 2024 13:48:59 +0800
fastfetch (2.13.1) jammy; urgency=medium
* Update to 2.13.1
-- Carter Li <zhangsongcui@live.cn> Tue, 21 May 2024 15:10:37 +0800
fastfetch (2.12.0) jammy; urgency=medium
* Update to 2.12.0
-- Carter Li <zhangsongcui@live.cn> Tue, 14 May 2024 16:33:33 +0800
fastfetch (2.11.5) jammy; urgency=medium
* Update to 2.11.5
-- Carter Li <zhangsongcui@live.cn> Tue, 07 May 2024 09:30:05 +0800
fastfetch (2.11.3) jammy; urgency=medium
* Update to 2.11.3
-- Carter Li <zhangsongcui@live.cn> Mon, 06 May 2024 08:46:45 +0800
fastfetch (2.10.2) jammy; urgency=medium
* Update to 2.10.2
-- Carter Li <zhangsongcui@live.cn> Tue, 23 Apr 2024 15:18:23 +0800
fastfetch (2.10.1) jammy; urgency=medium
* Update to 2.10.1
-- Carter Li <zhangsongcui@live.cn> Tue, 23 Apr 2024 09:55:02 +0800
fastfetch (2.9.2) jammy; urgency=medium
* Update to 2.9.2
-- Carter Li <zhangsongcui@live.cn> Tue, 16 Apr 2024 16:32:40 +0800
fastfetch (2.9.1) jammy; urgency=medium
* Update to 2.9.1
-- Carter Li <zhangsongcui@live.cn> Mon, 08 Apr 2024 09:34:30 +0800
fastfetch (2.8.10) jammy; urgency=medium
* Update to 2.8.10
-- Carter Li <zhangsongcui@live.cn> Mon, 25 Mar 2024 15:01:53 +0800
fastfetch (2.8.9) jammy; urgency=medium
* Update to 2.8.9
-- Carter Li <zhangsongcui@live.cn> Fri, 15 Mar 2024 10:49:42 +0800
fastfetch (2.8.8) jammy; urgency=medium
* Update to 2.8.8
-- Carter Li <zhangsongcui@live.cn> Fri, 08 Mar 2024 09:59:41 +0800
fastfetch (2.8.6) jammy; urgency=medium
* Update to 2.8.6
-- Carter Li <zhangsongcui@live.cn> Wed, 28 Feb 2024 10:01:40 +0800
fastfetch (2.8.4) jammy; urgency=medium
* Update to 2.8.4
-- Carter Li <zhangsongcui@live.cn> Fri, 23 Feb 2024 16:14:57 +0800
fastfetch (2.7.1ubuntu2) jammy; urgency=medium
* Ignore .git
-- Carter Li <zhangsongcui@live.cn> Wed, 07 Feb 2024 14:23:23 +0800
fastfetch (2.7.1ubuntu1) jammy; urgency=medium
* Update build scripts
-- Carter Li <zhangsongcui@live.cn> Wed, 07 Feb 2024 13:53:37 +0800
fastfetch (2.7.1) jammy; urgency=medium
* Initial release.
-- Carter Li <zhangsongcui@live.cn> Tue, 06 Feb 2024 15:01:11 +0800
+1
View File
@@ -0,0 +1 @@
12
+13
View File
@@ -0,0 +1,13 @@
Source: fastfetch
Section: universe/utils
Priority: optional
Maintainer: Carter Li <zhangsongcui@live.cn>
Build-Depends: libvulkan-dev, libwayland-dev, libxrandr-dev, libxcb-randr0-dev, libdconf-dev, libdbus-1-dev, libmagickcore-dev, libxfconf-0-dev, libsqlite3-dev, librpm-dev, libegl-dev, libglx-dev, libosmesa6-dev, ocl-icd-opencl-dev, libnm-dev, libpulse-dev, libdrm-dev, libddcutil-dev, libchafa-dev, directx-headers-dev, pkgconf, cmake (>= 3.12), debhelper (>= 11.2), dh-cmake, dh-cmake-compat (= 1), dh-sequence-cmake, dh-sequence-ctest, ninja-build
Standards-Version: 4.0.0
Homepage: https://github.com/fastfetch-cli/fastfetch
Package: fastfetch
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Fastfetch is a neofetch-like tool for fetching system information and displaying them in a pretty way.
It is written mainly in C, with performance and customizability in mind.
+11
View File
@@ -0,0 +1,11 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: fastfetch
Source: https://github.com/fastfetch-cli/fastfetch
Files: *
Copyright: 2024 fastfetch-cli
License: Expat
Files: src/3rdparty/yyjson/*
Copyright: 2020 YaoYuan
License: Expat
+1
View File
@@ -0,0 +1 @@
fastfetch_2.16.0_source.buildinfo universe/utils optional
Vendored Executable
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
debuild -S -i -I
dput ppa:zhangsongcui3371/fastfetch ~/fastfetch_*.changes
Vendored Executable
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/make -f
%:
dh $@ --buildsystem=cmake+ninja
override_dh_ctest_configure:
dh_ctest_configure -- -DSET_TWEAK=OFF -DBUILD_TESTS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo
+4
View File
@@ -0,0 +1,4 @@
version=4
opts="filenamemangle=s%.*/@ANY_VERSION@%@PACKAGE@-$1.tar.gz%,searchmode=plain" \
https://api.github.com/repos/fastfetch-cli/fastfetch/releases?per_page=100 \
https://api.github.com/repos/fastfetch-cli/fastfetch/tarball/@ANY_VERSION@
+141
View File
@@ -0,0 +1,141 @@
.TH FASTFETCH 1 "@FASTFETCH_BUILD_DATE@" "@CMAKE_PROJECT_NAME@ @CMAKE_PROJECT_VERSION@"
.SH NAME
fastfetch \- a neofetch\-like tool for fetching system information and
displaying them in a pretty way
.SH SYNOPSIS
.B fastfetch
.I [options...]
.SH DESCRIPTION
Fastfetch is a neofetch\-like tool for fetching system information and
displaying them in a pretty way. It is written mainly in C, with performance
and customizability in mind.
Currently, Linux, Android, FreeBSD, MacOS and Windows 7+ are supported.
.SH "EXIT STATUS"
On successful execution, fastfetch returns zero. If any error happened,
the exit code will be non\-zero.
.SH OPTIONS
.SS "Informative Options"
.TP
.B \-h, \-\-help \fI[command]
Show help output, displaying all available options or help for given command
.TP
.B \-v, \-\-version
Show version of fastfetch
.TP
.B \-\-list\-config\-paths
List search paths of config files
.TP
.B \-\-list\-data\-paths
List search paths of presets and logos
.TP
.B \-\-list\-logos
List available logos, they can be loaded with \fI\-\-logo
.TP
.B \-\-list\-modules
List available modules
.TP
.B \-\-list\-presets
List available presets, they can be loaded with \fI\-\-config
.TP
.B \-\-list\-features
List the supported features fastfetch was compiled with
.TP
.B \-\-print\-logos
Print available logos
.TP
.B \-\-print\-structure
Print the default structure
.TP
.B \-\-format \fI<type>
Set the output format. Besides the
.I default
format, only
.I json
is supported currently.
.SS "Display Options"
.TP
.B \-l, \-\-logo \fI<logo>
Set the logo to display
.TP
.B \-s, \-\-structure \fI<structure>
Set the structure of the fetch. For details about the structure,
see the CONFIGURATION section.
.SS "Config Options"
.TP
.B \-c, \-\-config \fI<config>
Use the specified config file or preset. If
.I none
is specified, disable further config loading. For details about
config files, see the CONFIGURATION section
.TP
.B \-\-gen\-config \fI[file]
Generate a config file with options specified on the command line.
If \fIfile\fR is specified, the configuration will written to the
file, otherwise it will be written to stdout.
.TP
.B \-\-gen\-config\-force \fI[file]
Same as \fB\-\-gen\-config\fR, but overwrites existing config
.TP
To list all options, use \fB\-\-help\fR. It will also print all available module options.
.SH CONFIGURATION
.SS "Fetch Structure"
The structure of a fetch describes the modules that should be included in
the output. It consists of a string of modules, separated by a colon (:).
To list all available modules, use \fB\-\-list\-modules\fR
.SS "Config Files"
Fastfetch uses JSONC based format for configuration. Fastfetch doesn't generate
config file automatically; it should be generated manually by \fB\-\-gen\-config\fR.
The config file will be saved in \fB~/.config/fastfetch/config.jsonc\fR by default.
A JSONC config file is a JSON file that also supports comments with (// and /* */).
Those files must have the extension '.jsonc'.
The specified configuration/preset files are searched in the following order:
1. relative to the current working directory
2. relative to ~/.local/share/fastfetch/presets/
3. relative to /usr/share/fastfetch/presets/
Fastfetch provides some default presets. List them with \fB\-\-list\-presets\fR.
.SH "SEE ALSO"
.BR neofetch (1)
.SH BUGS
Please report bugs to: \fIhttps://github.com/fastfetch\-cli/fastfetch/issues\fR
+2169
View File
File diff suppressed because it is too large Load Diff
-1
View File
@@ -1 +0,0 @@
--structure Title:Separator:OS:Host:Bios:Board:Chassis:Kernel:Uptime:Processes:Packages:Shell:Resolution:DE:WM:WMTheme:Theme:Icons:Font:Cursor:Terminal:TerminalFont:CPU:CPUUsage:GPU:Memory:Swap:Disk:Battery:PowerAdapter:Player:Media:PublicIP:LocalIP:Wifi:DateTime:Locale:Vulkan:OpenGL:OpenCL:Users:Weather:Break:Colors
+91
View File
@@ -0,0 +1,91 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"padding": {
"top": 2
}
},
"modules": [
"title",
"separator",
"os",
"host",
"bios",
"bootmgr",
"board",
"chassis",
"kernel",
"initsystem",
"uptime",
"loadavg",
"processes",
"packages",
"shell",
"editor",
"display",
"brightness",
"monitor",
"lm",
"de",
"wm",
"wmtheme",
"theme",
"icons",
"font",
"cursor",
"wallpaper",
"terminal",
"terminalfont",
"terminalsize",
"terminaltheme",
{
"type": "cpu",
"showPeCoreCount": true,
"temp": true
},
"cpucache",
"cpuusage",
{
"type": "gpu",
"temp": true
},
"memory",
"physicalmemory",
"swap",
"disk",
"battery",
"poweradapter",
"player",
"media",
"publicip",
{
"type": "localip",
"showIpv6": true,
"showMac": true
},
"wifi",
"datetime",
"locale",
"vulkan",
"opengl",
"opencl",
"users",
"bluetooth",
"sound",
"camera",
"gamepad",
{
"type": "weather",
"timeout": 1000
},
"netio",
"diskio",
{
"type": "physicaldisk",
"temp": true
},
"version",
"break",
"colors"
]
}
+84
View File
@@ -0,0 +1,84 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"modules": [
{
"type": "title",
"key": "User",
"format": "{1}"
},
{
"type": "title",
"key": "Hostname",
"format": "{2}"
},
{
"type": "host",
"key": "Model"
},
{
"type": "os",
"format": "{3} {9} {12}"
},
"kernel",
"uptime",
{
"type": "loadavg",
"key": "Load Average"
},
"processes",
{
"type": "wm",
"key": "Window Manager"
},
{
"type": "de",
"key": "Desktop Environment"
},
{
"type": "shell",
"format": "{7}"
},
{
"type": "terminal",
"format": "{5} {6} {#37}█{#97}█ {#36}█{#96}█ {#35}█{#95}█ {#34}█{#94}█ {#33}█{#93}█ {#32}█{#92}█ {#31}█{#91}█ {#30}█{#90}█"
},
{
"type": "packages",
"format": "{1}"
},
{
"type": "cpu",
"key": "Temperature",
"temp": true,
"format": "{8}"
},
{
"type": "cpu",
"key": "CPU",
"format": "{4} x {1}"
},
{
"type": "gpu",
"format": "{2}"
},
{
"type": "memory",
"key": "RAM"
},
{
"type": "disk",
"key": "Disk",
"folders": "/"
},
{
"type": "localip",
"key": "LAN IP",
"showIpv6": true,
"showPrefixLen": false
},
{
"type": "publicip",
"key": "WAN IP"
}
]
}
-3
View File
@@ -1,3 +0,0 @@
--logo arch
--os-format "Arch Linux ({12})"
--packages-format "{} (pacman)"
+42
View File
@@ -0,0 +1,42 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "builtin",
"source": "arch"
},
"modules": [
"title",
"separator",
{
"type": "os",
"format": "Arch Linux ({12})"
},
"host",
"kernel",
"uptime",
{
"type": "packages",
"format": "{} (pacman)"
},
"shell",
"display",
"de",
"wm",
"wmtheme",
"theme",
"icons",
"font",
"cursor",
"terminal",
"terminalfont",
"cpu",
"gpu",
"memory",
"disk",
"battery",
"poweradapter",
"locale",
"break",
"colors"
]
}
+93
View File
@@ -0,0 +1,93 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"display": {
"stat": true,
"pipe": true,
"showErrors": true,
"noBuffer": true
},
"logo": null,
"modules": [
"title",
"separator",
"os",
"host",
"bios",
"bootmgr",
"board",
"chassis",
"kernel",
"initsystem",
"uptime",
"loadavg",
"processes",
"packages",
"shell",
"editor",
"display",
"brightness",
"monitor",
"lm",
"de",
"wm",
"wmtheme",
"theme",
"icons",
"font",
"cursor",
"wallpaper",
"terminal",
"terminalfont",
"terminalsize",
"terminaltheme",
{
"type": "cpu",
"showPeCoreCount": true,
"temp": true
},
"cpucache",
"cpuusage",
{
"type": "gpu",
"temp": true
},
"memory",
"physicalmemory",
"swap",
"disk",
"battery",
"poweradapter",
"player",
"media",
"publicip",
{
"type": "localip",
"showIpv6": true,
"showMac": true
},
"wifi",
"datetime",
"locale",
"vulkan",
"opengl",
"opencl",
"users",
"bluetooth",
"sound",
"camera",
"gamepad",
{
"type": "weather",
"timeout": 1000
},
"netio",
"diskio",
{
"type": "physicaldisk",
"temp": true
},
"version",
"break",
"colors"
]
}
-3
View File
@@ -1,3 +0,0 @@
--disable-linewrap false
--multithreading false
--show-errors
-3
View File
@@ -1,3 +0,0 @@
--load-config devinfo
--load-config all
--load-config verbose
-1
View File
@@ -1 +0,0 @@
# Load with --load-config examples/1
+154
View File
@@ -0,0 +1,154 @@
// Load with --load-config examples/2.jsonc
// Note that you must replace the image path to an existing image to display it.
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"padding": {
"top": 2
}
},
"display": {
"separator": " -> "
},
"modules": [
{
"type": "custom",
"format": "┌────────────────────────────────────────────────────────────┐",
"outputColor": "90"
},
{
"type": "title",
"keyWidth": 10
},
{
"type": "custom",
"format": "└────────────────────────────────────────────────────────────┘",
"outputColor": "90"
},
{
"type": "custom",
"format": " {#90} {#31} {#32} {#33} {#34} {#35} {#36} {#37} {#38} {#39}  {#38} {#37} {#36} {#35} {#34} {#33} {#32} {#31} {#90}"
},
{
"type": "custom",
"format": "┌────────────────────────────────────────────────────────────┐",
"outputColor": "90"
},
{
"type": "os",
"key": " OS",
"keyColor": "yellow"
},
{
"type": "kernel",
"key": "│ ├",
"keyColor": "yellow"
},
{
"type": "packages",
"key": "│ ├󰏖",
"keyColor": "yellow"
},
{
"type": "shell",
"key": "│ └",
"keyColor": "yellow"
},
{
"type": "wm",
"key": " DE/WM",
"keyColor": "blue"
},
{
"type": "lm",
"key": "│ ├󰧨",
"keyColor": "blue"
},
{
"type": "wmtheme",
"key": "│ ├󰉼",
"keyColor": "blue"
},
{
"type": "icons",
"key": "│ ├󰀻",
"keyColor": "blue"
},
{
"type": "terminal",
"key": "│ ├",
"keyColor": "blue"
},
{
"type": "wallpaper",
"key": "│ └󰸉",
"keyColor": "blue"
},
{
"type": "host",
"key": "󰌢 PC",
"keyColor": "green"
},
{
"type": "cpu",
"key": "│ ├󰻠",
"keyColor": "green"
},
{
"type": "gpu",
"key": "│ ├󰍛",
"keyColor": "green"
},
{
"type": "disk",
"key": "│ ├",
"keyColor": "green"
},
{
"type": "memory",
"key": "│ ├󰑭",
"keyColor": "green"
},
{
"type": "swap",
"key": "│ ├󰓡",
"keyColor": "green"
},
{
"type": "uptime",
"key": "│ ├󰅐",
"keyColor": "green"
},
{
"type": "display",
"key": "│ └󰍹",
"keyColor": "green"
},
{
"type": "sound",
"key": " SND",
"keyColor": "cyan"
},
{
"type": "player",
"key": "│ ├󰥠",
"keyColor": "cyan"
},
{
"type": "media",
"key": "│ └󰝚",
"keyColor": "cyan"
},
{
"type": "custom",
"format": "└────────────────────────────────────────────────────────────┘",
"outputColor": "90"
},
"break",
{
"type": "custom",
"format": " {#90} {#31} {#32} {#33} {#34} {#35} {#36} {#37} {#38} {#39}  {#38} {#37} {#36} {#35} {#34} {#33} {#32} {#31} {#90}"
}
]
}
+40
View File
@@ -0,0 +1,40 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "small"
},
"display": {
"separator": "-> ",
"color": {
"separator": "red"
}
},
"modules": [
{
"key": "Distro ",
"type": "os"
},
{
"key": "Shell ",
"type": "shell"
},
{
"key": "Terminal ",
"type": "terminal"
},
{
"key": "Display ",
"type": "display"
},
{
"key": "Backlight ",
"type": "brightness"
},
"break",
{
"type": "colors",
"paddingLeft": 6,
"symbol": "circle"
}
]
}
+107
View File
@@ -0,0 +1,107 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "none"
},
"display": {
"separator": "-> ",
"color": {
"separator": "1"
}
},
"modules": [
{
"type": "title",
"format": " {6}{7}{8}"
},
"break",
{
"type": "custom",
"format": "┌───────────────────────────── {#1}System Information{#} ─────────────────────────────┐"
},
"break",
{
"key": "  OS ",
"keyColor": "red",
"type": "os"
},
{
"key": " 󰌢 Machine ",
"keyColor": "green",
"type": "host"
},
{
"key": "  Kernel ",
"keyColor": "magenta",
"type": "kernel"
},
{
"key": " 󰅐 Uptime ",
"keyColor": "red",
"type": "uptime"
},
{
"key": " 󰍹 Resolution ",
"keyColor": "yellow",
"type": "display",
"compactType": "original-with-refresh-rate"
},
{
"key": "  WM ",
"keyColor": "blue",
"type": "wm"
},
{
"key": "  DE ",
"keyColor": "green",
"type": "de"
},
{
"key": "  Shell ",
"keyColor": "cyan",
"type": "shell"
},
{
"key": "  Terminal ",
"keyColor": "red",
"type": "terminal"
},
{
"key": " 󰻠 CPU ",
"keyColor": "yellow",
"type": "cpu"
},
{
"key": " 󰍛 GPU ",
"keyColor": "blue",
"type": "gpu"
},
{
"key": " 󰑭 Memory ",
"keyColor": "magenta",
"type": "memory"
},
{
"key": " 󰩟 Local IP ",
"keyColor": "red",
"type": "localip",
"compact": true
},
{
"key": " 󰩠 Public IP ",
"keyColor": "cyan",
"type": "publicip"
},
"break",
{
"type": "custom",
"format": "└──────────────────────────────────────────────────────────────────────────────┘"
},
"break",
{
"type": "colors",
"paddingLeft": 34,
"symbol": "circle"
}
]
}
+87
View File
@@ -0,0 +1,87 @@
// Inspired by Catnap
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "small",
"padding": {
"top": 1
}
},
"display": {
"separator": "",
"keyWidth": 15
},
"modules": [
{
"key": "╭───────────╮",
"type": "custom"
},
{
// draw borders first to make colors of left and right border consistant
"key": "│ │\u001b[11D{#31} user",
"type": "title",
"format": "{1}"
},
{
"key": "│ │\u001b[11D{#32}󰇅 hname",
"type": "title",
"format": "{2}"
},
{
"key": "│ │\u001b[11D{#33}󰅐 uptime",
"type": "uptime"
},
{
"key": "│ │\u001b[11D{#34}󰟾 distro",
"type": "os"
},
{
"key": "│ │\u001b[11D{#35} kernel",
"type": "kernel"
},
{
"key": "│ │\u001b[11D{#36}󰇄 desktop",
"type": "de"
},
{
"key": "│ │\u001b[11D{#31} term",
"type": "terminal"
},
{
"key": "│ │\u001b[11D{#32} shell",
"type": "shell"
},
{
"key": "│ │\u001b[11D{#33}󰍛 cpu",
"type": "cpu",
"showPeCoreCount": true
},
{
"key": "│ │\u001b[11D{#34}󰉉 disk",
"type": "disk",
"folders": "/"
},
{
"key": "│ │\u001b[11D{#35} memory",
"type": "memory"
},
{
"key": "│ │\u001b[11D{#36}󰩟 network",
"type": "localip",
"format": "{1} ({4})"
},
{
"key": "├───────────┤",
"type": "custom"
},
{
"key": "│ │\u001b[11D{#39} colors",
"type": "colors",
"symbol": "circle"
},
{
"key": "╰───────────╯",
"type": "custom"
}
]
}
+86
View File
@@ -0,0 +1,86 @@
// Inspired by Catnap
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "small"
},
"display": {
"separator": "",
"keyWidth": 12
},
"modules": [
{
// draw borders first to make colors of left and right border consistant
"key": " user",
"type": "title",
"format": "{1}",
"keyColor": "31"
},
{
"key": "󰇅 hname",
"type": "title",
"format": "{2}",
"keyColor": "32"
},
{
"key": "󰅐 uptime",
"type": "uptime",
"keyColor": "33"
},
{
"key": "󰟾 distro",
"type": "os",
"keyColor": "34"
},
{
"key": " kernel",
"type": "kernel",
"keyColor": "35"
},
{
"key": "󰇄 desktop",
"type": "de",
"keyColor": "36"
},
{
"key": " term",
"type": "terminal",
"keyColor": "31"
},
{
"key": " shell",
"type": "shell",
"keyColor": "32"
},
{
"key": "󰍛 cpu",
"type": "cpu",
"showPeCoreCount": true,
"keyColor": "33"
},
{
"key": "󰉉 disk",
"type": "disk",
"folders": "/",
"keyColor": "34"
},
{
"key": " memory",
"type": "memory",
"keyColor": "35"
},
{
"key": "󰩟 network",
"type": "localip",
"format": "{1} ({4})",
"keyColor": "36"
},
{
"key": " colors",
"type": "colors",
"symbol": "circle",
"keyColor": "39"
}
]
}
+87
View File
@@ -0,0 +1,87 @@
// Inspired by Catnap
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "small",
"padding": {
"top": 1
}
},
"display": {
"separator": "",
"keyWidth": 15
},
"modules": [
{
"key": "•••••••••••••",
"type": "custom"
},
{
// draw borders first to make colors of left and right border consistant
"key": "• •\u001b[11D{#31} user",
"type": "title",
"format": "{1}"
},
{
"key": "• •\u001b[11D{#32}󰇅 hname",
"type": "title",
"format": "{2}"
},
{
"key": "• •\u001b[11D{#33}󰅐 uptime",
"type": "uptime"
},
{
"key": "• •\u001b[11D{#34}󰟾 distro",
"type": "os"
},
{
"key": "• •\u001b[11D{#35} kernel",
"type": "kernel"
},
{
"key": "• •\u001b[11D{#36}󰇄 desktop",
"type": "de"
},
{
"key": "• •\u001b[11D{#31} term",
"type": "terminal"
},
{
"key": "• •\u001b[11D{#32} shell",
"type": "shell"
},
{
"key": "• •\u001b[11D{#33}󰍛 cpu",
"type": "cpu",
"showPeCoreCount": true
},
{
"key": "• •\u001b[11D{#34}󰉉 disk",
"type": "disk",
"folders": "/"
},
{
"key": "• •\u001b[11D{#35} memory",
"type": "memory"
},
{
"key": "• •\u001b[11D{#36}󰩟 network",
"type": "localip",
"format": "{1} ({4})"
},
{
"key": "•••••••••••••",
"type": "custom"
},
{
"key": "• •\u001b[11D{#39} colors",
"type": "colors",
"symbol": "circle"
},
{
"key": "•••••••••••••",
"type": "custom"
}
]
}
+85
View File
@@ -0,0 +1,85 @@
// Inspired by Catnap
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "small",
"padding": {
"top": 1
}
},
"display": {
"separator": " "
},
"modules": [
{
"key": "╔═══════════╗",
"type": "custom"
},
{
"key": "║ {#31} user {#keys}║",
"type": "title",
"format": "{1}"
},
{
"key": "║ {#32}󰇅 hname {#keys}║",
"type": "title",
"format": "{2}"
},
{
"key": "║ {#33}󰅐 uptime {#keys}║",
"type": "uptime"
},
{
"key": "║ {#34}󰟾 distro {#keys}║",
"type": "os"
},
{
"key": "║ {#35} kernel {#keys}║",
"type": "kernel"
},
{
"key": "║ {#36}󰇄 desktop {#keys}║",
"type": "de"
},
{
"key": "║ {#31} term {#keys}║",
"type": "terminal"
},
{
"key": "║ {#32} shell {#keys}║",
"type": "shell"
},
{
"key": "║ {#33}󰍛 cpu {#keys}║",
"type": "cpu",
"showPeCoreCount": true
},
{
"key": "║ {#34}󰉉 disk {#keys}║",
"type": "disk",
"folders": "/"
},
{
"key": "║ {#35} memory {#keys}║",
"type": "memory"
},
{
"key": "║ {#36}󰩟 network {#keys}║",
"type": "localip",
"format": "{1} ({4})"
},
{
"key": "╠═══════════╣",
"type": "custom"
},
{
"key": "║ {#39} colors {#keys}║",
"type": "colors",
"symbol": "circle"
},
{
"key": "╚═══════════╝",
"type": "custom"
}
]
}
+83
View File
@@ -0,0 +1,83 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "small",
"padding": {
"top": 1,
"right": 2
}
},
"display": {
"separator": "> ",
"color": {
"separator": "red"
}
},
"modules": [
{
"format": "{#1}{#keys}╭───────────────────────────────────────────────────────────────────────────╮\u001b[76D {6}{7}{8} 🖥 ",
"type": "title"
},
{
"key": "│\u001b[75C│\u001b[75D{#31} kernel ",
"type": "kernel"
},
{
"key": "│\u001b[75C│\u001b[75D{#32}󰅐 uptime ",
"type": "uptime"
},
{
"key": "│\u001b[75C│\u001b[75D{#33}󰟾 distro ",
"type": "os"
},
{
"key": "│\u001b[75C│\u001b[75D{#34}󰇄 desktop ",
"type": "de"
},
{
"key": "│\u001b[75C│\u001b[75D{#35} term ",
"type": "terminal"
},
{
"key": "│\u001b[75C│\u001b[75D{#36} shell ",
"type": "shell"
},
{
"key": "│\u001b[75C│\u001b[75D{#35}󰍛 cpu ",
"type": "cpu",
"showPeCoreCount": true,
"temp": true
},
{
"key": "│\u001b[75C│\u001b[75D{#34}󰍛 gpu ",
"type": "gpu"
},
{
"key": "│\u001b[75C│\u001b[75D{#33}󰉉 disk ",
"type": "disk",
"folders": "/"
},
{
"key": "│\u001b[75C│\u001b[75D{#32} memory ",
"type": "memory"
},
{
"key": "│\u001b[75C│\u001b[75D{#31}󰩟 network ",
"type": "localip",
"format": "{1} ({4})"
},
{
"format": "{#1}{#keys}├───────────────────────────────────────────────────────────────────────────┤",
"type": "custom"
},
{
"key": "│\u001b[75C│\u001b[75D{#39} colors ",
"type": "colors",
"symbol": "circle"
},
{
"format": "{#1}{#keys}╰───────────────────────────────────────────────────────────────────────────╯",
"type": "custom"
}
]
}
+83
View File
@@ -0,0 +1,83 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "small",
"padding": {
"top": 1,
"right": 2
}
},
"display": {
"separator": "> ",
"color": {
"separator": "red"
}
},
"modules": [
{
"format": "{#1}{#keys}╔═══════════════════════════════════════════════════════════════════════════╗\u001b[76D {6}{7}{8} 💻 ",
"type": "title"
},
{
"key": "║\u001b[75C║\u001b[75D{#31} kernel ",
"type": "kernel"
},
{
"key": "║\u001b[75C║\u001b[75D{#32}󰅐 uptime ",
"type": "uptime"
},
{
"key": "║\u001b[75C║\u001b[75D{#33}󰟾 distro ",
"type": "os"
},
{
"key": "║\u001b[75C║\u001b[75D{#34}󰇄 desktop ",
"type": "de"
},
{
"key": "║\u001b[75C║\u001b[75D{#35} term ",
"type": "terminal"
},
{
"key": "║\u001b[75C║\u001b[75D{#36} shell ",
"type": "shell"
},
{
"key": "║\u001b[75C║\u001b[75D{#35}󰍛 cpu ",
"type": "cpu",
"showPeCoreCount": true,
"temp": true
},
{
"key": "║\u001b[75C║\u001b[75D{#34}󰍛 gpu ",
"type": "gpu"
},
{
"key": "║\u001b[75C║\u001b[75D{#33}󰉉 disk ",
"type": "disk",
"folders": "/"
},
{
"key": "║\u001b[75C║\u001b[75D{#32} memory ",
"type": "memory"
},
{
"key": "║\u001b[75C║\u001b[75D{#31}󰩟 network ",
"type": "localip",
"format": "{1} ({4})"
},
{
"format": "{#1}{#keys}╠═══════════════════════════════════════════════════════════════════════════╣",
"type": "custom"
},
{
"key": "║\u001b[75C║\u001b[75D{#39} colors ",
"type": "colors",
"symbol": "circle"
},
{
"format": "{#1}{#keys}╚═══════════════════════════════════════════════════════════════════════════╝",
"type": "custom"
}
]
}
+188
View File
@@ -0,0 +1,188 @@
// _____ _____ _____ _____ _____ _____ _____ _____ _____
// | __| _ | __|_ _| __| __|_ _| | | |
// | __| |__ | | | | __| __| | | | --| |
// |__| |__|__|_____| |_| |__| |_____| |_| |_____|__|__|
//
// By CarterLi - https://github.com/CarterLi
// Homepage - https://github.com/fastfetch-cli/fastfetch
// config.jsonc - ニリ @niri-san
// pokemon-colorscripts - https://gitlab.com/phoneybadger/pokemon-colorscripts
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"source": " _____ _____ _____ _____ _____ _____ _____ _____ _____\n| __| _ | __|_ _| __| __|_ _| | | |\n| __| |__ | | | | __| __| | | | --| |\n|__| |__|__|_____| |_| |__| |_____| |_| |_____|__|__|",
"type": "data",
"separate": true,
"padding": {
"right": 2
}
},
"display": {
"separator": " - "
},
"modules": [
{
"type": "custom", // HardwareInfo
"format": "• {#green}SYSTEM INFORMATION"
},
{
"type": "host",
"key": "HOST",
"format": "{name}{?vendor} ({vendor}){?}",
"keyColor": "green"
},
{
"type": "chassis",
"key": "COMPUTER TYPE",
"keyColor": "green"
},
{
"type": "cpu",
"key": "CPU",
"keyColor": "green"
},
{
"type": "gpu",
"key": "GPU",
"keyColor": "green"
},
{
"type": "memory",
"key": "MEMORY USED",
"keyColor": "green"
},
{
"type": "swap",
"key": "SWAP USED",
"keyColor": "green"
},
{
"type": "disk",
"key": "DISK",
"folders": "/",
"keyColor": "green"
},
{
"type": "custom", // SoftwareInfo
"format": "• {#red}SOFTWARE INFORMATION"
},
{
"type": "os",
"key": "DISTRO",
"keyColor": "red"
},
{
"type": "disk",
"folders": "/", // Use "/System/Volumes/VM" or something else on macOS
"format": "{create-time}",
"key": "INSTALLED DATE",
"keyColor": "red"
},
{
"type": "kernel",
"key": "KERNEL",
"keyColor": "red"
},
{
"type": "packages",
"key": "PACKAGES",
"keyColor": "red"
},
{
"type": "uptime",
"key": "UPTIME",
"keyColor": "red"
},
{
"type": "custom", // DisplayInfo
"format": "• {#blue}DISPLAY INFORMATION"
},
{
"type": "de",
"key": "DESKTOP ENVIRONMENT",
"keyColor": "blue"
},
{
"type": "lm",
"key": "LOGIN MANAGER",
"format": "{type}",
"keyColor": "blue"
},
{
"type": "wm",
"key": "WM",
"keyColor": "blue"
},
{
"type": "wmtheme",
"key": "WM THEME",
"keyColor": "blue"
},
{
"type": "monitor",
"key": "MONITOR ({name})",
"keyColor": "blue"
},
{
"type": "custom", // DesignInfo
"format": "• {#yellow}DESIGN INFORMATION"
},
{
"type": "wallpaper",
"key": "WALLPAPER",
"keyColor": "yellow"
},
{
"type": "theme",
"key": "KDE THEME",
"format": "{1}",
"keyColor": "yellow"
},
{
"type": "icons",
"key": "ICON THEME",
"format": "{1}",
"keyColor": "yellow"
},
{
"type": "font",
"key": "FONT",
"format": "{?1}{1} [QT]{?}{/1}Unknown", // Remove "[QT]" if not using Qt
"keyColor": "yellow"
},
{
"type": "terminalfont",
"key": "TERMINAL FONT",
"keyColor": "yellow"
},
{
"type": "cursor",
"key": "CURSOR",
"keyColor": "yellow"
},
{
"type": "custom", // OtherInfo
"format": "• {#cyan}VARIOUS INFORMATION"
},
{
"type": "media",
"key": "NOW PLAYING",
"format": "{?artist}{artist} - {?}{title}",
"keyColor": "cyan"
},
{
"type": "weather",
"key": "WEATHER",
"timeout": 1000,
"keyColor": "cyan"
},
{
"type": "version",
"key": "INFO",
"keyColor": "cyan"
},
"break",
"colors",
"break"
]
}
-24
View File
@@ -1,24 +0,0 @@
# Load with --load-config examples/2
# Note that you must replace the image path to an existing image to display it.
--kitty /home/linus/Bilder/Gentoo.png
--logo-width 28
--separator "  "
--set-keyless HardwareStart=┌───────── \e[1mHardware Information\e[0m ─────────┐
--set-keyless SoftwareStart=├───────── \e[1mSoftware Information\e[0m ─────────┤
--set-keyless InformationEnd=└────────────────────────────────────────┘
--set-keyless Colors= \e[38m \e[37m \e[36m \e[35m \e[34m \e[33m \e[32m \e[31m
--structure HardwareStart:Host:CPU:GPU:SoftwareStart:OS:Kernel:WM:Shell:Terminal:TerminalFont:Packages:InformationEnd:Colors
--host-key " "
--cpu-key " "
--gpu-key " ﬙"
--os-key " "
--kernel-key " "
--wm-key " "
--shell-key " "
--terminal-key " "
--terminal-font-key " "
--packages-key " "
+167
View File
@@ -0,0 +1,167 @@
// Load with --load-config examples/2.jsonc
// Note that you must replace the image path to an existing image to display it.
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
// "logo": {
// "type": "iterm",
// "source": "~/Desktop/apple1.png",
// "width": 28,
// "height": 12
// },
"display": {
"separator": "  "
},
"modules": [
{
"type": "custom", // HardwareStart
// {#1} is equivalent to `\u001b[1m`. {#} is equivalent to `\u001b[m`
"format": "┌─────────── {#1}Hardware Information{#} ───────────┐"
},
{
"type": "host",
"key": " 󰌢"
},
{
"type": "cpu",
"key": " 󰻠"
},
{
"type": "gpu",
"key": " 󰍛"
},
{
"type": "disk",
"key": " "
},
{
"type": "memory",
"key": " 󰑭"
},
{
"type": "swap",
"key": " 󰓡"
},
{
"type": "display",
"key": " 󰍹"
},
{
"type": "brightness",
"key": " 󰃞"
},
{
"type": "battery",
"key": " "
},
{
"type": "poweradapter",
"key": " "
},
{
"type": "bluetooth",
"key": " "
},
{
"type": "sound",
"key": " "
},
{
"type": "gamepad",
"key": " "
},
{
"type": "custom", // SoftwareStart
"format": "├─────────── {#1}Software Information{#} ───────────┤"
},
{
"type": "title",
"key": " ",
"format": "{1}@{2}"
},
{
"type": "os",
"key": " " // Just get your distro's logo off nerdfonts.com
},
{
"type": "kernel",
"key": " ",
"format": "{1} {2}"
},
{
"type": "lm",
"key": " 󰧨"
},
{
"type": "de",
"key": " "
},
{
"type": "wm",
"key": " "
},
{
"type": "shell",
"key": " "
},
{
"type": "terminal",
"key": " "
},
{
"type": "terminalfont",
"key": " "
},
{
"type": "theme",
"key": " 󰉼"
},
{
"type": "icons",
"key": " 󰀻"
},
{
"type": "wallpaper",
"key": " 󰸉"
},
{
"type": "packages",
"key": " 󰏖"
},
{
"type": "uptime",
"key": " 󰅐"
},
{
"type": "media",
"key": " 󰝚"
},
{
"type": "localip",
"key": " 󰩟",
"compact": true
},
{
"type": "publicip",
"key": " 󰩠"
},
{
"type": "wifi",
"key": " ",
"format": "{4}" // ssid
},
{
"type": "locale",
"key": " "
},
{
"type": "custom", // InformationEnd
"format": "└────────────────────────────────────────────┘"
},
{
"type": "colors",
"paddingLeft": 2,
"symbol": "circle"
}
]
}
+160
View File
@@ -0,0 +1,160 @@
// Inspired by https://github.com/usgraphics/TR-100
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": null,
"display": {
"pipe": true,
"keyWidth": 16,
"separator": "│ ",
"percent": {
"type": 6
},
"bar": {
"borderLeft": "",
"borderRight": "",
"charElapsed": "█",
"charTotal": "░",
"width": 40
}
},
"modules": [
{
"type": "custom",
"format": "┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐"
},
{
"type": "custom",
"format": "├┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┤"
},
{
"type": "version",
"key": " ",
"format": "│ FASTFETCH v{version} │"
},
{
"type": "custom",
"format": "│ TR-100 MACHINE REPORT │"
},
{
"type": "custom",
"format": "├────────────┬──────────────────────────────────────────┤"
},
{
"type": "os",
"key": "│ OS │\u001b[42C"
},
{
"type": "kernel",
"key": "│ KERNEL │\u001b[42C"
},
{
"type": "custom",
"format": "├────────────┼──────────────────────────────────────────┤"
},
{
"type": "title",
"key": "│ HOSTNAME │\u001b[42C",
"format": "{host-name}"
},
{
"type": "localip",
"key": "│ CLIENT IP │\u001b[42C",
"format": "{ipv4}"
},
{
"type": "localip",
"key": "│ MAC ADDR │\u001b[42C",
"format": "{mac} ({ifname})",
"showIPv4": false,
"showMac": true
},
{
"type": "dns",
"key": "│ DNS │\u001b[42C",
"showType": "ipv4"
},
{
"type": "title",
"key": "│ USER │\u001b[42C",
"format": "{user-name}"
},
{
"type": "host",
"key": "│ MACHINE │\u001b[42C",
"format": "{name}"
},
{
"type": "custom",
"format": "├────────────┼──────────────────────────────────────────┤"
},
{
"type": "cpu",
"key": "│ PROCESSOR │\u001b[42C",
"format": "{name}"
},
{
"type": "cpu",
"key": "│ CORES │\u001b[42C",
"format": "{cores-physical} PHYSICAL CORES / {cores-logical} THREADS",
"showPeCoreCount": false
},
{
"type": "cpu",
"key": "│ CPU FREQ │\u001b[42C",
"format": "{freq-max}{/freq-max}{freq-base}{/} GHz"
},
{
"type": "loadavg",
"compact": false,
// {duration} is not fixed length, hack it
"key": "│ LOAD \u001b[s{duration}m\u001b[u\u001b[6C│\u001b[42C"
},
{
"type": "custom",
"format": "├────────────┼──────────────────────────────────────────┤"
},
{
"type": "memory",
"key": "│ MEMORY │\u001b[42C",
"format": "{used} / {total} [{percentage}]"
},
{
"type": "memory",
"key": "│ USAGE │\u001b[42C",
"format": ""
},
{
"type": "custom",
"format": "├────────────┼──────────────────────────────────────────┤"
},
{
"type": "disk",
"key": "│ VOLUME │\u001b[42C",
"format": "{size-used} / {size-total} [{size-percentage}]",
"folders": "/"
},
{
"type": "disk",
"key": "│ DISK USAGE │\u001b[42C",
"format": ""
},
{
"type": "custom",
"format": "├────────────┼──────────────────────────────────────────┤"
},
{
"type": "users",
"key": "│ LAST LOGIN │\u001b[42C",
"format": "{login-time}{?client-ip} ({client-ip})",
"myselfOnly": true
},
{
"type": "uptime",
"key": "│ UPTIME │\u001b[42C"
},
{
"type": "custom",
"format": "└────────────┴──────────────────────────────────────────┘"
}
]
}
+43
View File
@@ -0,0 +1,43 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "small"
},
"modules": [
{
"key": "██ Distro",
"keyColor": "38;5;210",
"type": "os"
},
{
"key": "██ Kernel",
"keyColor": "38;5;84",
"type": "kernel"
},
{
"key": "██ Shell",
"keyColor": "38;5;147",
"type": "shell"
},
{
"key": "██ Packages",
"keyColor": "38;5;200",
"type": "packages"
},
{
"key": "██ WM",
"keyColor": "38;5;44",
"type": "wm"
},
{
"key": "██ CPU",
"keyColor": "38;5;75",
"type": "cpu"
},
{
"key": "██ Memory",
"keyColor": "38;5;123",
"type": "memory"
}
]
}
+109
View File
@@ -0,0 +1,109 @@
// Modified from: https://github.com/fastfetch-cli/fastfetch/pull/1025#issuecomment-2177566138
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"source": "arch3",
"color": {
"1": "red",
"2": "yellow"
}
},
"display": {
"color": {
"separator": "blue"
},
"separator": " | "
},
"modules": [
{
"type": "kernel",
"key": " /\\rch Linux",
"keyColor": "magenta"
},
{
"type": "custom",
"format": ">-----------<+>------------------------------------------<",
"outputColor": "separator"
},
{
"type": "uptime",
"key": " Uptime ",
"keyColor": "green"
},
{
"type": "shell",
"key": " Shell ",
"keyColor": "green"
},
{
"type": "terminal",
"key": " Terminal ",
"keyColor": "green"
},
{
"type": "terminalfont",
"key": " Font ",
"keyColor": "green"
},
{
"type": "packages",
"key": " Packages ",
"keyColor": "green"
},
{
"type": "localip",
"key": " Local IP ",
"keyColor": "green"
},
{
"type": "custom",
"format": ">-----------<+>------------------------------------------<",
"outputColor": "separator"
},
{
"type": "display",
"key": " Display ",
"keyColor": "cyan"
},
{
"type": "cpu",
"key": " CPU ",
"keyColor": "cyan"
},
{
"type": "gpu",
"key": " GPU ",
"keyColor": "cyan"
},
{
"type": "memory",
"key": " RAM ",
"keyColor": "cyan"
},
{
"type": "swap",
"key": " SWAP ",
"keyColor": "cyan"
},
{
"type": "disk",
"key": " Disk ",
"keyColor": "cyan"
},
{
"type": "battery",
"key": " Battery ",
"keyColor": "cyan"
},
{
"type": "custom",
"format": ">-----------<+>------------------------------------------<",
"outputColor": "separator"
},
"break",
{
"type": "colors",
"paddingLeft": 15
}
]
}
-7
View File
@@ -1,7 +0,0 @@
# Load with --load-config example/3
--logo debian_small
--structure Vulkan:OpenGL:OpenCL:Memory:Disk:LocalIP
--binary-prefix si
--localip-show-loop false
--disk-folders /:/home:/boot:/efi
+20
View File
@@ -0,0 +1,20 @@
// Load with --load-config examples/3.jsonc
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": "debian_small",
"display": {
"binaryPrefix": "si"
},
"modules": [
"vulkan",
"opengl",
"opencl",
"memory",
{
"type": "disk",
"folders": "/:/home:/boot:/efi"
},
"localip"
]
}
-7
View File
@@ -1,7 +0,0 @@
# Load with --load-config examples/4
--color blue
--logo arch_small
--logo-padding-right 1
--separator "  "
--structure Date:Time:Break:Player:Media
+31
View File
@@ -0,0 +1,31 @@
// Load with --load-config examples/4.jsonc
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"source": "arch_small",
"padding": {
"right": 1
}
},
"display": {
"binaryPrefix": "si",
"color": "blue",
"separator": "  "
},
"modules": [
{
"type": "datetime",
"key": "Date",
"format": "{1}-{3}-{11}"
},
{
"type": "datetime",
"key": "Time",
"format": "{14}:{17}:{20}"
},
"break",
"player",
"media"
]
}
-11
View File
@@ -1,11 +0,0 @@
# Load with --load-config examples/5
--logo none
--color reset_magenta
--structure Theme:Icons:Font:Cursor
--theme-key T
--theme-format {7}
--icons-key I
--icons-format {5}
--font-key F
--cursor-key C
+27
View File
@@ -0,0 +1,27 @@
// Load with --load-config examples/5.jsonc
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": null,
"display": {
"color": "reset_magenta"
},
"modules": [
{
"type": "theme",
"key": "T"
},
{
"type": "icons",
"key": "I"
},
{
"type": "font",
"key": "F"
},
{
"type": "cursor",
"key": "C"
}
]
}
+185
View File
@@ -0,0 +1,185 @@
// Load with --load-config examples/2.jsonc
// Note that you must replace the image path to an existing image to display it.
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
// "logo": {
// "type": "iterm",
// "source": "/Users/carter/Desktop/apple1.png",
// "width": 28,
// "height": 12
// },
"display": {
"separator": " "
},
"modules": [
{
"type": "host",
"key": "╭─󰌢",
"keyColor": "green"
},
{
"type": "cpu",
"key": "├─󰻠",
"keyColor": "green"
},
{
"type": "gpu",
"key": "├─󰍛",
"keyColor": "green"
},
{
"type": "disk",
"key": "├─",
"keyColor": "green"
},
{
"type": "memory",
"key": "├─󰑭",
"keyColor": "green"
},
{
"type": "swap",
"key": "├─󰓡",
"keyColor": "green"
},
{
"type": "display",
"key": "├─󰍹",
"keyColor": "green"
},
{
"type": "brightness",
"key": "├─󰃞",
"keyColor": "green"
},
{
"type": "battery",
"key": "├─",
"keyColor": "green"
},
{
"type": "poweradapter",
"key": "├─",
"keyColor": "green"
},
{
"type": "gamepad",
"key": "├─",
"keyColor": "green"
},
{
"type": "bluetooth",
"key": "├─",
"keyColor": "green"
},
{
"type": "sound",
"key": "╰─",
"keyColor": "green"
},
"break",
{
"type": "shell",
"key": "╭─",
"keyColor": "yellow"
},
{
"type": "terminal",
"key": "├─",
"keyColor": "yellow"
},
{
"type": "terminalfont",
"key": "├─",
"keyColor": "yellow"
},
{
"type": "lm",
"key": "├─󰧨",
"keyColor": "yellow"
},
{
"type": "de",
"key": "├─",
"keyColor": "yellow"
},
{
"type": "wm",
"key": "├─",
"keyColor": "yellow"
},
{
"type": "theme",
"key": "├─󰉼",
"keyColor": "yellow"
},
{
"type": "icons",
"key": "├─󰀻",
"keyColor": "yellow"
},
{
"type": "wallpaper",
"key": "╰─󰸉",
"keyColor": "yellow"
},
"break",
{
"type": "title",
"key": "╭─",
"format": "{1}@{2}",
"keyColor": "blue"
},
{
"type": "os",
"key": "├─", // Just get your distro's logo off nerdfonts.com
"keyColor": "blue"
},
{
"type": "kernel",
"key": "├─",
"format": "{1} {2}",
"keyColor": "blue"
},
{
"type": "packages",
"key": "├─󰏖",
"keyColor": "blue"
},
{
"type": "uptime",
"key": "├─󰅐",
"keyColor": "blue"
},
{
"type": "media",
"key": "├─󰝚",
"keyColor": "blue"
},
{
"type": "localip",
"key": "├─󰩟",
"compact": true,
"keyColor": "blue"
},
{
"type": "publicip",
"key": "├─󰩠",
"keyColor": "blue"
},
{
"type": "wifi",
"key": "├─",
"format": "{4}", // ssid
"keyColor": "blue"
},
{
"type": "locale",
"key": "╰─",
"keyColor": "blue"
}
]
}
+139
View File
@@ -0,0 +1,139 @@
// Load with --load-config examples/2.jsonc
// Note that you must replace the image path to an existing image to display it.
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"padding": {
"top": 2
}
},
"display": {
"separator": " -> "
},
"modules": [
"title",
"separator",
{
"type": "os",
"key": " OS",
"keyColor": "yellow",
"format": "{2}"
},
{
"type": "os",
"key": "├", // Just get your distro's logo off nerdfonts.com
"keyColor": "yellow",
"format": "{6}{?6} {?}{10}{?10} {?}{8}{?8} {?}{11}"
},
{
"type": "kernel",
"key": "├",
"keyColor": "yellow"
},
{
"type": "packages",
"key": "├󰏖",
"keyColor": "yellow"
},
{
"type": "shell",
"key": "└",
"keyColor": "yellow"
},
"break",
{
"type": "wm",
"key": " DE/WM",
"keyColor": "blue"
},
{
"type": "lm",
"key": "├󰧨",
"keyColor": "blue"
},
{
"type": "wmtheme",
"key": "├󰉼",
"keyColor": "blue"
},
{
"type": "icons",
"key": "├󰀻",
"keyColor": "blue"
},
{
"type": "terminal",
"key": "├",
"keyColor": "blue"
},
{
"type": "wallpaper",
"key": "└󰸉",
"keyColor": "blue"
},
"break",
{
"type": "host",
"key": "󰌢 PC",
"keyColor": "green"
},
{
"type": "cpu",
"key": "├󰻠",
"keyColor": "green"
},
{
"type": "gpu",
"key": "├󰍛",
"keyColor": "green"
},
{
"type": "disk",
"key": "├",
"keyColor": "green"
},
{
"type": "memory",
"key": "├󰑭",
"keyColor": "green"
},
{
"type": "swap",
"key": "├󰓡",
"keyColor": "green"
},
{
"type": "uptime",
"key": "├󰅐",
"keyColor": "green"
},
{
"type": "display",
"key": "└󰍹",
"keyColor": "green"
},
"break",
{
"type": "sound",
"key": " SOUND",
"keyColor": "cyan"
},
{
"type": "player",
"key": "├󰥠",
"keyColor": "cyan"
},
{
"type": "media",
"key": "└󰝚",
"keyColor": "cyan"
},
"break",
"colors"
]
}
+52
View File
@@ -0,0 +1,52 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "small"
},
"display": {
"separator": " ",
"color": {
"keys": "magenta"
},
"size": {
"ndigits": 0,
"maxPrefix": "MB"
}
},
"modules": [
{
"type": "title",
"color": {
"user": "green",
"at": "red",
"host": "blue"
}
},
{
"type": "os",
"key": "",
"format": "{2} {8}"
},
{
"type": "kernel",
"key": ""
},
{
"type": "memory",
"key": ""
},
{
"type": "packages",
"key": "󰏖"
},
{
"type": "uptime",
"key": "󰅐"
},
{
"type": "custom",
"key": "",
"format": "{#31}███{#32}███{#33}███{#34}███{#35}███{#36}███"
}
]
}
+33
View File
@@ -0,0 +1,33 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "small"
},
"display": {
"keyWidth": 11,
"bar": {
"charElapsed": "=",
"charTotal": "-",
"width": 13
},
"percent": {
"type": 2
}
},
"modules": [
"title",
"separator",
"memory",
"swap",
{
"type": "disk",
"folders": "/"
},
"battery",
{
"type": "colors",
"paddingLeft": 10,
"symbol": "circle"
}
]
}
-4
View File
@@ -1,4 +0,0 @@
--structure Host:Resolution:CPU:GPU:Memory:Disk:Battery
--memory-format "{?2}{2}{?}"
--disk-format "{?2}{2}{?}"
--battery-format "{?1}{1} {?}{?2}{2} {?}{?3}({3}){?}"
+37
View File
@@ -0,0 +1,37 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"modules": [
{
"type": "host",
"format": "{?2}{2}{?}{?5} ({5}){?}"
},
"chassis",
{
"type": "board",
"format": "{?1}{1}{?}{?2} ({2}){?}"
},
"cpu",
{
"type": "memory",
"format": "{?2}{2}{?}"
},
"physicaldisk",
"gpu",
"display",
"monitor",
{
"type": "wifi",
"format": "{?1}{1}{?}{?6} - {6}{?}"
},
{
"type": "sound",
"format": "{?2}{2}{?}"
},
"camera",
{
"type": "battery",
"format": "{?1}{1}{?}{?2} {2}{?}{?3} ({3}){?}"
},
"poweradapter"
]
}
-10
View File
@@ -1,10 +0,0 @@
--structure "Title:Separator:OS:Host:Kernel:Uptime:Packages:Shell:Resolution:DE:WM:WMTheme:Theme:Icons:Terminal:TerminalFont:CPU:GPU:Memory:Break:Colors"
--host-format "{/2}{-}{/}{2}{?3} {3}{?}"
--os-format "{3} {12}"
--resolution-format "{}x{}"
--de-format "{2} {3}"
--theme-format "{?1}{1}{?3} {3}{?} [Plasma], {?}{7}"
--terminal-font-format "{/2}{-}{/}{2}{?3} {3}{?}"
--memory-format "{/1}{-}{/}{/2}{-}{/}{} / {}"
--gpu-key "GPU"
--resolution-key "Resolution"
+45
View File
@@ -0,0 +1,45 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"display": {
"size": {
"maxPrefix": "MB",
"ndigits": 0
}
},
"modules": [
"title",
"separator",
"os",
"host",
"kernel",
"uptime",
"packages",
"shell",
{
"type": "display",
"compactType": "original",
"key": "Resolution"
},
"de",
"wm",
"wmtheme",
"theme",
"icons",
"terminal",
{
"type": "terminalfont",
"format": "{/2}{-}{/}{2}{?3} {3}{?}"
},
"cpu",
{
"type": "gpu",
"key": "GPU"
},
{
"type": "memory",
"format": "{/1}{-}{/}{/2}{-}{/}{} / {}"
},
"break",
"colors"
]
}
-5
View File
@@ -1,5 +0,0 @@
--structure Title:Separator:OS:Host:Kernel:Uptime:Battery:Break:Packages:Shell:Resolution:Terminal:Break:CPU:GPU:Memory:Break:Colors
--host-format "{/2}{-}{/}{2}{?3} {3}{?}"
--battery-format "{/4}{-}{/}{4}%{?5} [{5}]{?}"
--resolution-key "Resolution"
--gpu-key "GPU"
+32
View File
@@ -0,0 +1,32 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"modules": [
"title",
"separator",
"os",
{
"type": "host",
"format": "{/2}{-}{/}{2}{?3} {3}{?}"
},
"kernel",
"uptime",
{
"type": "battery",
"format": "{/4}{-}{/}{4}{?5} [{5}]{?}"
},
"break",
"packages",
"shell",
"display",
"terminal",
"break",
"cpu",
{
"type": "gpu",
"key": "GPU"
},
"memory",
"break",
"colors"
]
}
+37
View File
@@ -0,0 +1,37 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"modules": [
"title",
"os",
"kernel",
"uptime",
{
"type": "packages",
"format": "{all}"
},
"shell",
{
"type": "display",
"key": "Resolution",
"compactType": "original"
},
"de",
"wm",
"wmtheme",
{
"type": "terminalfont",
"key": "font"
},
{
"type": "disk",
"folders": "/",
"key": "Disk"
},
"cpu",
"gpu",
{
"type": "memory",
"key": "RAM"
}
]
}
-1
View File
@@ -1 +0,0 @@
--structure OS:Kernel:Shell:DE:WM:WMTheme:Theme:Icons:Font:Cursor:Terminal:TerminalFont
+17
View File
@@ -0,0 +1,17 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"modules": [
"os",
"kernel",
"shell",
"de",
"wm",
"wmtheme",
"theme",
"icons",
"font",
"cursor",
"terminal",
"terminalfont"
]
}
-30
View File
@@ -1,30 +0,0 @@
--os-format System: {}; Name: {}; Pretty name: {}; ID: {}; ID like: {}; Variant: {}; Variant ID: {}; Version: {}; Version ID: {}; Version codename: {}; Build ID: {}; Architecture: {}
--host-format Family: product_family: {}; product_name: {}; product_version: {}; product_sku: {}; sys_vendor: {}
--kernel-format Sysname: {}; Release: {}; Version: {}
--uptime-format Days: {}; Hours: {}; Minutes: {}; Seconds: {}
--processes-format Count: {}
--packages-format All: {}; pacman: {}; pacman branch: {}; dpkg: {}; rpm: {}; emerge: {}; eopkg: {}; xbps: {}; apk: {}; flatpak: {}; snap: {}; brew: {}; brew-cask: {}; port: {}; scoop: {}; choco: {}
--shell-format Process name: {}; Process path: {}; Process exe: {}; Process version: {}; User path: {}; User exe: {}; User version: {}
--resolution-format Width: {}; Height: {}; Refresh rate: {}
--de-format Process name: {}; Pretty name: {}; Version: {}
--wm-format Process name: {}; Pretty name: {}; Protocol: {}
--wm-theme-format Name: {}
--theme-format Plasma: {}; Plasma colors: {}; Plasma colors pretty: {}; GTK2: {}; GTK3: {}; GTK4: {}; GTK: {}
--icons-format Plasma: {}; GTK2: {}; GTK3: {}; GTK4: {}; GTK: {}
--font-format Font1: {}; Font2: {}; Font3: {}; Font4: {}
--cursor-format Theme: {}; Size: {}
--terminal-format Process: {}; Path: {}; Exe: {}
--terminal-font-format Pretty: {}; Name: {}; Size: {}; Styles: {}
--cpu-format Name: {}, Vendor: {}, CoresPhysical: {}, CoresLogical: {}, CoresOnline: {}, FrequencyMin: {}, FrequencyMax: {}, Temperature: {}
--cpu-usage-format Percentage: {}
--gpu-format Vendor: {}; Name: {}; Driver: {}; Temperature: {}; CoreCount: {}
--memory-format Used: {}; Total: {}; Percentage: {}
--disk-format SizeUsed: {}; SizeTotal: {}; SizePercentage: {}; FilesUsed: {}; FilesTotal: {}; FilesPercentage: {}; Removable: {}; Hidden: {}; Filesystem: {}; Name: {}
--battery-format Manufactor: {}; Model: {}; Technology: {}; Capacity: {}; Status: {}
--poweradapter-format Watts: {}; Name: {}; Manufactor: {}; Model: {}; Description: {}
--player-format Pretty: {}; Name: {}; Bus: {}; Url: {}
--media-format Pretty: {}; Name: {}; Artist: {}; Album: {}
--datetime-format year: {}; yearShort: {}; month: {}; monthPretty: {}; monthName: {}; monthNameShort: {}; weekNumber: {}; weekday: {}; weekdayShort: {}; dayInYear: {}; dayInMonth: {}; dayInWeek: {}; hour: {}; hourPretty: {}; hour12: {}; hour12Pretty: {}; minute: {}; minutePretty: {}; second: {}; secondPretty: {}
--vulkan-format driver: {}; Api Version: {}; Conformance Version: {}
--opengl-format version: {}; renderer: {}; vendor: {}
--opencl-format version: {}; device: {}; vendor: {}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 285 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

+383
View File
@@ -0,0 +1,383 @@
//
// Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
/// \file
/// \mainpage
/// AGS Library Overview
/// --------------------
/// This document provides an overview of the AGS (AMD GPU Services) library. The AGS library provides software developers with the ability to query
/// AMD GPU software and hardware state information that is not normally available through standard operating systems or graphic APIs.
///
/// The latest version of the API is publicly hosted here: https://github.com/GPUOpen-LibrariesAndSDKs/AGS_SDK/.
/// It is also worth checking http://gpuopen.com/gaming-product/amd-gpu-services-ags-library/ for any updates and articles on AGS.
/// \internal
/// Online documentation is publicly hosted here: http://gpuopen-librariesandsdks.github.io/ags/
/// \endinternal
///
/// ---------------------------------------
/// What's new in AGS 6.2 since version 6.1
/// ---------------------------------------
/// AGS 6.2 includes the following updates:
/// * Shader clock intrinsics
/// * Minor improvements and fixes
///
/// ---------------------------------------
/// What's new in AGS 6.1 since version 6.0
/// ---------------------------------------
/// AGS 6.1 includes the following updates:
/// * RDNA3 detection
///
/// ---------------------------------------
/// What's new in AGS 6.0 since version 5.4.2
/// ---------------------------------------
/// AGS 6.0 includes the following updates:
/// * DX12 ray tracing hit token for RDNA2 hardware.
/// * Shader intrinsic that exposes ReadLaneAt in DX12.
/// * Shader intrinsics that expose explicit float conversions in DX12.
/// * Refactored and revised API to minimize user error.
/// * Added agsGetVersionNumber.
/// * Detection for external GPUs.
/// * Detection of RDNA2 architecture.
/// * Grouped the more established intrinsics together into per year support.
/// * Function pointer typedefs for the API
///
/// ---------------------------------------
/// What's new in AGS 5.4.2 since version 5.4.1
/// ---------------------------------------
/// AGS 5.4.2 includes the following updates:
/// * sharedMemoryInBytes has been reinstated.
/// * Clock speed returned for APUs.
///
/// ---------------------------------------
/// What's new in AGS 5.4.1 since version 5.4.0
/// ---------------------------------------
/// AGS 5.4.1 includes the following updates:
/// * AsicFamily_Count to help with code maintenance.
/// * Visual Studio 2019 support.
/// * x86 support
/// * BaseInstance and BaseVertex intrinsics along with corresponding caps bits.
/// * GetWaveSize intrinsic along with corresponding caps bits.
///
/// ---------------------------------------
/// What's new in AGS 5.4 since version 5.3
/// ---------------------------------------
/// AGS 5.4 includes the following updates:
/// * A more detailed description of the GPU architecture, now including RDNA GPUs.
/// * Radeon 7 core and memory speeds returned.
/// * Draw index and Atomic U64 intrinsics for both DX11 and DX12.
///
/// ---------------------------------------
/// What's new in AGS 5.3 since version 5.2
/// ---------------------------------------
/// AGS 5.3 includes the following updates:
/// * DX11 deferred context support for Multi Draw Indirect and UAV Overlap extensions.
/// * A Radeon Software Version helper to determine whether the installed driver meets your game's minimum driver version requirements.
/// * Freesync HDR Gamma 2.2 mode which uses a 1010102 swapchain and can be considered as an alternative to using the 64 bit swapchain required for Freesync HDR scRGB.
///
/// Using the AGS library
/// ---------------------
/// It is recommended to take a look at the source code for the samples that come with the AGS SDK:
/// * AGSSample
/// * CrossfireSample
/// * EyefinitySample
/// The AGSSample application is the simplest of the three examples and demonstrates the code required to initialize AGS and use it to query the GPU and Eyefinity state.
/// The CrossfireSample application demonstrates the use of the new API to transfer resources on GPUs in Crossfire mode. Lastly, the EyefinitySample application provides a more
/// extensive example of Eyefinity setup than the basic example provided in AGSSample.
/// There are other samples on Github that demonstrate the DirectX shader extensions, such as the Barycentrics11 and Barycentrics12 samples.
///
/// To add AGS support to an existing project, follow these steps:
/// * Link your project against the correct import library. Choose from either the 32 bit or 64 bit version.
/// * Copy the AGS dll into the same directory as your game executable.
/// * Include the amd_ags.h header file from your source code.
/// * Include the AGS hlsl files if you are using the shader intrinsics.
/// * Declare a pointer to an AGSContext and make this available for all subsequent calls to AGS.
/// * On game initialization, call \ref agsInitialize passing in the address of the context. On success, this function will return a valid context pointer.
///
/// Don't forget to cleanup AGS by calling \ref agsDeInitialize when the app exits, after the device has been destroyed.
#ifndef AMD_AGS_H
#define AMD_AGS_H
#define AMD_AGS_VERSION_MAJOR 6 ///< AGS major version
#define AMD_AGS_VERSION_MINOR 2 ///< AGS minor version
#define AMD_AGS_VERSION_PATCH 0 ///< AGS patch version
#ifdef __cplusplus
extern "C" {
#endif
/// \defgroup Defines AGS defines
/// @{
#if defined (AGS_GCC)
#define AMD_AGS_API
#else
#define AMD_AGS_API __declspec(dllexport) ///< AGS exported functions
#endif
#define AGS_MAKE_VERSION( major, minor, patch ) ( ( major << 22 ) | ( minor << 12 ) | patch ) ///< Macro to create the app and engine versions for the fields in \ref AGSDX12ExtensionParams and \ref AGSDX11ExtensionParams and the Radeon Software Version
#define AGS_UNSPECIFIED_VERSION 0xFFFFAD00 ///< Use this to specify no version
#define AGS_CURRENT_VERSION AGS_MAKE_VERSION( AMD_AGS_VERSION_MAJOR, AMD_AGS_VERSION_MINOR, AMD_AGS_VERSION_PATCH ) ///< Macro to return the current AGS version as defined by the AGS header file
/// @}
/// \defgroup enums General enumerations
/// @{
/// The return codes
typedef enum AGSReturnCode
{
AGS_SUCCESS, ///< Successful function call
AGS_FAILURE, ///< Failed to complete call for some unspecified reason
AGS_INVALID_ARGS, ///< Invalid arguments into the function
AGS_OUT_OF_MEMORY, ///< Out of memory when allocating space internally
AGS_MISSING_D3D_DLL, ///< Returned when a D3D dll fails to load
AGS_LEGACY_DRIVER, ///< Returned if a feature is not present in the installed driver
AGS_NO_AMD_DRIVER_INSTALLED, ///< Returned if the AMD GPU driver does not appear to be installed
AGS_EXTENSION_NOT_SUPPORTED, ///< Returned if the driver does not support the requested driver extension
AGS_ADL_FAILURE, ///< Failure in ADL (the AMD Display Library)
AGS_DX_FAILURE, ///< Failure from DirectX runtime
AGS_D3DDEVICE_NOT_CREATED ///< Failure due to not creating the D3D device successfully via AGS.
} AGSReturnCode;
/// @}
typedef struct AGSContext AGSContext; ///< All function calls in AGS require a pointer to a context. This is generated via \ref agsInitialize
/// The rectangle struct used by AGS.
typedef struct AGSRect
{
int offsetX; ///< Offset on X axis
int offsetY; ///< Offset on Y axis
int width; ///< Width of rectangle
int height; ///< Height of rectangle
} AGSRect;
/// The display info struct used to describe a display enumerated by AGS
typedef struct AGSDisplayInfo
{
char name[ 256 ]; ///< The name of the display
char displayDeviceName[ 32 ]; ///< The display device name, i.e. DISPLAY_DEVICE::DeviceName
unsigned int isPrimaryDisplay : 1; ///< Whether this display is marked as the primary display
unsigned int HDR10 : 1; ///< HDR10 is supported on this display
unsigned int dolbyVision : 1; ///< Dolby Vision is supported on this display
unsigned int freesync : 1; ///< Freesync is supported on this display
unsigned int freesyncHDR : 1; ///< Freesync HDR is supported on this display
unsigned int eyefinityInGroup : 1; ///< The display is part of the Eyefinity group
unsigned int eyefinityPreferredDisplay : 1; ///< The display is the preferred display in the Eyefinity group for displaying the UI
unsigned int eyefinityInPortraitMode : 1; ///< The display is in the Eyefinity group but in portrait mode
unsigned int reservedPadding : 24; ///< Reserved for future use
int maxResolutionX; ///< The maximum supported resolution of the unrotated display
int maxResolutionY; ///< The maximum supported resolution of the unrotated display
float maxRefreshRate; ///< The maximum supported refresh rate of the display
AGSRect currentResolution; ///< The current resolution and position in the desktop, ignoring Eyefinity bezel compensation
AGSRect visibleResolution; ///< The visible resolution and position. When Eyefinity bezel compensation is enabled this will
///< be the sub region in the Eyefinity single large surface (SLS)
float currentRefreshRate; ///< The current refresh rate
int eyefinityGridCoordX; ///< The X coordinate in the Eyefinity grid. -1 if not in an Eyefinity group
int eyefinityGridCoordY; ///< The Y coordinate in the Eyefinity grid. -1 if not in an Eyefinity group
double chromaticityRedX; ///< Red display primary X coord
double chromaticityRedY; ///< Red display primary Y coord
double chromaticityGreenX; ///< Green display primary X coord
double chromaticityGreenY; ///< Green display primary Y coord
double chromaticityBlueX; ///< Blue display primary X coord
double chromaticityBlueY; ///< Blue display primary Y coord
double chromaticityWhitePointX; ///< White point X coord
double chromaticityWhitePointY; ///< White point Y coord
double screenDiffuseReflectance; ///< Percentage expressed between 0 - 1
double screenSpecularReflectance; ///< Percentage expressed between 0 - 1
double minLuminance; ///< The minimum luminance of the display in nits
double maxLuminance; ///< The maximum luminance of the display in nits
double avgLuminance; ///< The average luminance of the display in nits
int logicalDisplayIndex; ///< The internally used index of this display
int adlAdapterIndex; ///< The internally used ADL adapter index
int reserved; ///< reserved field
} AGSDisplayInfo;
/// The ASIC family
typedef enum AsicFamily
{
AsicFamily_Unknown, ///< Unknown architecture, potentially from another IHV. Check \ref AGSDeviceInfo::vendorId
AsicFamily_PreGCN, ///< Pre GCN architecture.
AsicFamily_GCN1, ///< AMD GCN 1 architecture: Oland, Cape Verde, Pitcairn & Tahiti.
AsicFamily_GCN2, ///< AMD GCN 2 architecture: Hawaii & Bonaire. This also includes APUs Kaveri and Carrizo.
AsicFamily_GCN3, ///< AMD GCN 3 architecture: Tonga & Fiji.
AsicFamily_GCN4, ///< AMD GCN 4 architecture: Polaris.
AsicFamily_Vega, ///< AMD Vega architecture, including Raven Ridge (ie AMD Ryzen CPU + AMD Vega GPU).
AsicFamily_RDNA, ///< AMD RDNA architecture
AsicFamily_RDNA2, ///< AMD RDNA2 architecture
AsicFamily_RDNA3, ///< AMD RDNA3 architecture
AsicFamily_Count ///< Number of enumerated ASIC families
} AsicFamily;
/// The device info struct used to describe a physical GPU enumerated by AGS
typedef struct AGSDeviceInfo
{
const char* adapterString; ///< The adapter name string
AsicFamily asicFamily; ///< Set to Unknown if not AMD hardware
unsigned int isAPU : 1; ///< Whether this device is an APU
unsigned int isPrimaryDevice : 1; ///< Whether this device is marked as the primary device
unsigned int isExternal :1; ///< Whether this device is a detachable, external device
unsigned int reservedPadding : 29; ///< Reserved for future use
int vendorId; ///< The vendor id
int deviceId; ///< The device id
int revisionId; ///< The revision id
int numCUs; ///< Number of compute units
int numWGPs; ///< Number of RDNA Work Group Processors. Only valid if ASIC is RDNA onwards.
int numROPs; ///< Number of ROPs
int coreClock; ///< Core clock speed at 100% power in MHz
int memoryClock; ///< Memory clock speed at 100% power in MHz
int memoryBandwidth; ///< Memory bandwidth in MB/s
float teraFlops; ///< Teraflops of GPU. Zero if not GCN onwards. Calculated from iCoreClock * iNumCUs * 64 Pixels/clk * 2 instructions/MAD
unsigned long long localMemoryInBytes; ///< The size of local memory in bytes. 0 for non AMD hardware.
unsigned long long sharedMemoryInBytes; ///< The size of system memory available to the GPU in bytes. It is important to factor this into your VRAM budget for APUs
///< as the reported local memory will only be a small fraction of the total memory available to the GPU.
int numDisplays; ///< The number of active displays found to be attached to this adapter.
AGSDisplayInfo* displays; ///< List of displays allocated by AGS to be numDisplays in length.
int eyefinityEnabled; ///< Indicates if Eyefinity is active
int eyefinityGridWidth; ///< Contains width of the multi-monitor grid that makes up the Eyefinity Single Large Surface.
int eyefinityGridHeight; ///< Contains height of the multi-monitor grid that makes up the Eyefinity Single Large Surface.
int eyefinityResolutionX; ///< Contains width in pixels of the multi-monitor Single Large Surface.
int eyefinityResolutionY; ///< Contains height in pixels of the multi-monitor Single Large Surface.
int eyefinityBezelCompensated; ///< Indicates if bezel compensation is used for the current SLS display area. 1 if enabled, and 0 if disabled.
int adlAdapterIndex; ///< Internally used index into the ADL list of adapters
int reserved; ///< reserved field
} AGSDeviceInfo;
/// \defgroup general General API functions
/// API for initialization, cleanup, HDR display modes and Crossfire GPU count
/// @{
typedef void* (__stdcall *AGS_ALLOC_CALLBACK)( size_t allocationSize ); ///< AGS user defined allocation prototype
typedef void (__stdcall *AGS_FREE_CALLBACK)( void* allocationPtr ); ///< AGS user defined free prototype
/// The configuration options that can be passed in to \ref agsInitialize
typedef struct AGSConfiguration
{
AGS_ALLOC_CALLBACK allocCallback; ///< Optional memory allocation callback. If not supplied, malloc() is used
AGS_FREE_CALLBACK freeCallback; ///< Optional memory freeing callback. If not supplied, free() is used
} AGSConfiguration;
/// The top level GPU information returned from \ref agsInitialize
typedef struct AGSGPUInfo
{
const char* driverVersion; ///< The AMD driver package version
const char* radeonSoftwareVersion; ///< The Radeon Software Version
int numDevices; ///< Number of GPUs in the system
AGSDeviceInfo* devices; ///< List of GPUs in the system
} AGSGPUInfo;
/// The struct to specify the display settings to the driver.
typedef struct AGSDisplaySettings AGSDisplaySettings;
/// The result returned from \ref agsCheckDriverVersion
typedef enum AGSDriverVersionResult
{
AGS_SOFTWAREVERSIONCHECK_OK, ///< The reported Radeon Software Version is newer or the same as the required version
AGS_SOFTWAREVERSIONCHECK_OLDER, ///< The reported Radeon Software Version is older than the required version
AGS_SOFTWAREVERSIONCHECK_UNDEFINED ///< The check could not determine as result. This could be because it is a private or custom driver or just invalid arguments.
} AGSDriverVersionResult;
///
/// Helper function to check the installed software version against the required software version.
///
/// \param [in] radeonSoftwareVersionReported The Radeon Software Version returned from \ref AGSGPUInfo::radeonSoftwareVersion.
/// \param [in] radeonSoftwareVersionRequired The Radeon Software Version to check against. This is specificed using \ref AGS_MAKE_VERSION.
/// \return The result of the check.
///
AMD_AGS_API AGSDriverVersionResult agsCheckDriverVersion( const char* radeonSoftwareVersionReported, unsigned int radeonSoftwareVersionRequired );
///
/// Function to return the AGS version number.
///
/// \return The version number made using AGS_MAKE_VERSION( AMD_AGS_VERSION_MAJOR, AMD_AGS_VERSION_MINOR, AMD_AGS_VERSION_PATCH ).
///
AMD_AGS_API int agsGetVersionNumber();
///
/// Function used to initialize the AGS library.
/// agsVersion must be specified as AGS_CURRENT_VERSION or the call will return \ref AGS_INVALID_ARGS.
/// Must be called prior to any of the subsequent AGS API calls.
/// Must be called prior to ID3D11Device or ID3D12Device creation.
/// \note The caller of this function should handle the possibility of the call failing in the cases below. One option is to do a vendor id check and only call \ref agsInitialize if there is an AMD GPU present.
/// \note This function will fail with \ref AGS_NO_AMD_DRIVER_INSTALLED if there is no AMD driver found on the system.
/// \note This function will fail with \ref AGS_LEGACY_DRIVER in Catalyst versions before 12.20.
///
/// \param [in] agsVersion The API version specified using the \ref AGS_CURRENT_VERSION macro. If this does not match the version in the binary this initialization call will fail.
/// \param [in] config Optional pointer to a AGSConfiguration struct to override the default library configuration.
/// \param [out] context Address of a pointer to a context. This function allocates a context on the heap which is then required for all subsequent API calls.
/// \param [out] gpuInfo Optional pointer to a AGSGPUInfo struct which will get filled in for all the GPUs in the system.
///
AMD_AGS_API AGSReturnCode agsInitialize( int agsVersion, const AGSConfiguration* config, AGSContext** context, AGSGPUInfo* gpuInfo );
///
/// Function used to clean up the AGS library.
///
/// \param [in] context Pointer to a context. This function will deallocate the context from the heap.
///
AMD_AGS_API AGSReturnCode agsDeInitialize( AGSContext* context );
///
/// Function used to set a specific display into HDR mode
/// \note Setting all of the values apart from color space and transfer function to zero will cause the display to use defaults.
/// \note Call this function after each mode change (switch to fullscreen, any change in swapchain etc).
/// \note HDR10 PQ mode requires a 1010102 swapchain.
/// \note HDR10 scRGB mode requires an FP16 swapchain.
/// \note Freesync HDR scRGB mode requires an FP16 swapchain.
/// \note Freesync HDR Gamma 2.2 mode requires a 1010102 swapchain.
/// \note Dolby Vision requires a 8888 UNORM swapchain.
///
/// \param [in] context Pointer to a context. This is generated by \ref agsInitialize
/// \param [in] deviceIndex The index of the device listed in \ref AGSGPUInfo::devices.
/// \param [in] displayIndex The index of the display listed in \ref AGSDeviceInfo::displays.
/// \param [in] settings Pointer to the display settings to use.
///
AMD_AGS_API AGSReturnCode agsSetDisplayMode( AGSContext* context, int deviceIndex, int displayIndex, const AGSDisplaySettings* settings );
/// @}
/// @}
#ifdef __cplusplus
} // extern "C"
#endif
#endif // AMD_AGS_H
+7
View File
@@ -0,0 +1,7 @@
{
"home": "https://github.com/GPUOpen-LibrariesAndSDKs/AGS_SDK",
"license": "MIT (embeded in source)",
"version": "AGS v6.2.0",
"author": "Advanced Micro Devices, Inc",
"modified": "CarterLi"
}
+7
View File
@@ -0,0 +1,7 @@
{
"home": "https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c",
"license": "MIT compatible (embed in source)",
"version": "2007-05-26 (Unicode 5.0)",
"author": "Markus Kuhn",
"modified": "CarterLi"
}
+314
View File
@@ -0,0 +1,314 @@
/*
* This is an implementation of wcwidth() and wcswidth() (defined in
* IEEE Std 1002.1-2001) for Unicode.
*
* http://www.opengroup.org/onlinepubs/007904975/functions/wcwidth.html
* http://www.opengroup.org/onlinepubs/007904975/functions/wcswidth.html
*
* In fixed-width output devices, Latin characters all occupy a single
* "cell" position of equal width, whereas ideographic CJK characters
* occupy two such cells. Interoperability between terminal-line
* applications and (teletype-style) character terminals using the
* UTF-8 encoding requires agreement on which character should advance
* the cursor by how many cell positions. No established formal
* standards exist at present on which Unicode character shall occupy
* how many cell positions on character terminals. These routines are
* a first attempt of defining such behavior based on simple rules
* applied to data provided by the Unicode Consortium.
*
* For some graphical characters, the Unicode standard explicitly
* defines a character-cell width via the definition of the East Asian
* FullWidth (F), Wide (W), Half-width (H), and Narrow (Na) classes.
* In all these cases, there is no ambiguity about which width a
* terminal shall use. For characters in the East Asian Ambiguous (A)
* class, the width choice depends purely on a preference of backward
* compatibility with either historic CJK or Western practice.
* Choosing single-width for these characters is easy to justify as
* the appropriate long-term solution, as the CJK practice of
* displaying these characters as double-width comes from historic
* implementation simplicity (8-bit encoded characters were displayed
* single-width and 16-bit ones double-width, even for Greek,
* Cyrillic, etc.) and not any typographic considerations.
*
* Much less clear is the choice of width for the Not East Asian
* (Neutral) class. Existing practice does not dictate a width for any
* of these characters. It would nevertheless make sense
* typographically to allocate two character cells to characters such
* as for instance EM SPACE or VOLUME INTEGRAL, which cannot be
* represented adequately with a single-width glyph. The following
* routines at present merely assign a single-cell width to all
* neutral characters, in the interest of simplicity. This is not
* entirely satisfactory and should be reconsidered before
* establishing a formal standard in this area. At the moment, the
* decision which Not East Asian (Neutral) characters should be
* represented by double-width glyphs cannot yet be answered by
* applying a simple rule from the Unicode database content. Setting
* up a proper standard for the behavior of UTF-8 character terminals
* will require a careful analysis not only of each Unicode character,
* but also of each presentation form, something the author of these
* routines has avoided to do so far.
*
* http://www.unicode.org/unicode/reports/tr11/
*
* Markus Kuhn -- 2007-05-26 (Unicode 5.0)
*
* Permission to use, copy, modify, and distribute this software
* for any purpose and without fee is hereby granted. The author
* disclaims all warranties with regard to this software.
*
* Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
*/
#include <wchar.h>
struct interval {
int first;
int last;
};
/* auxiliary function for binary search in interval table */
static int bisearch(wchar_t ucs, const struct interval *table, int max) {
int min = 0;
int mid;
if (ucs < table[0].first || ucs > table[max].last)
return 0;
while (max >= min) {
mid = (min + max) / 2;
if (ucs > table[mid].last)
min = mid + 1;
else if (ucs < table[mid].first)
max = mid - 1;
else
return 1;
}
return 0;
}
/* The following two functions define the column width of an ISO 10646
* character as follows:
*
* - The null character (U+0000) has a column width of 0.
*
* - Other C0/C1 control characters and DEL will lead to a return
* value of -1.
*
* - Non-spacing and enclosing combining characters (general
* category code Mn or Me in the Unicode database) have a
* column width of 0.
*
* - SOFT HYPHEN (U+00AD) has a column width of 1.
*
* - Other format characters (general category code Cf in the Unicode
* database) and ZERO WIDTH SPACE (U+200B) have a column width of 0.
*
* - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF)
* have a column width of 0.
*
* - Spacing characters in the East Asian Wide (W) or East Asian
* Full-width (F) category as defined in Unicode Technical
* Report #11 have a column width of 2.
*
* - All remaining characters (including all printable
* ISO 8859-1 and WGL4 characters, Unicode control characters,
* etc.) have a column width of 1.
*
* This implementation assumes that wchar_t characters are encoded
* in ISO 10646.
*/
int mk_wcwidth(wchar_t ucs)
{
/* sorted list of non-overlapping intervals of non-spacing characters */
/* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */
static const struct interval combining[] = {
{ 0x0300, 0x036F }, { 0x0483, 0x0486 }, { 0x0488, 0x0489 },
{ 0x0591, 0x05BD }, { 0x05BF, 0x05BF }, { 0x05C1, 0x05C2 },
{ 0x05C4, 0x05C5 }, { 0x05C7, 0x05C7 }, { 0x0600, 0x0603 },
{ 0x0610, 0x0615 }, { 0x064B, 0x065E }, { 0x0670, 0x0670 },
{ 0x06D6, 0x06E4 }, { 0x06E7, 0x06E8 }, { 0x06EA, 0x06ED },
{ 0x070F, 0x070F }, { 0x0711, 0x0711 }, { 0x0730, 0x074A },
{ 0x07A6, 0x07B0 }, { 0x07EB, 0x07F3 }, { 0x0901, 0x0902 },
{ 0x093C, 0x093C }, { 0x0941, 0x0948 }, { 0x094D, 0x094D },
{ 0x0951, 0x0954 }, { 0x0962, 0x0963 }, { 0x0981, 0x0981 },
{ 0x09BC, 0x09BC }, { 0x09C1, 0x09C4 }, { 0x09CD, 0x09CD },
{ 0x09E2, 0x09E3 }, { 0x0A01, 0x0A02 }, { 0x0A3C, 0x0A3C },
{ 0x0A41, 0x0A42 }, { 0x0A47, 0x0A48 }, { 0x0A4B, 0x0A4D },
{ 0x0A70, 0x0A71 }, { 0x0A81, 0x0A82 }, { 0x0ABC, 0x0ABC },
{ 0x0AC1, 0x0AC5 }, { 0x0AC7, 0x0AC8 }, { 0x0ACD, 0x0ACD },
{ 0x0AE2, 0x0AE3 }, { 0x0B01, 0x0B01 }, { 0x0B3C, 0x0B3C },
{ 0x0B3F, 0x0B3F }, { 0x0B41, 0x0B43 }, { 0x0B4D, 0x0B4D },
{ 0x0B56, 0x0B56 }, { 0x0B82, 0x0B82 }, { 0x0BC0, 0x0BC0 },
{ 0x0BCD, 0x0BCD }, { 0x0C3E, 0x0C40 }, { 0x0C46, 0x0C48 },
{ 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 }, { 0x0CBC, 0x0CBC },
{ 0x0CBF, 0x0CBF }, { 0x0CC6, 0x0CC6 }, { 0x0CCC, 0x0CCD },
{ 0x0CE2, 0x0CE3 }, { 0x0D41, 0x0D43 }, { 0x0D4D, 0x0D4D },
{ 0x0DCA, 0x0DCA }, { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 },
{ 0x0E31, 0x0E31 }, { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E },
{ 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EB9 }, { 0x0EBB, 0x0EBC },
{ 0x0EC8, 0x0ECD }, { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 },
{ 0x0F37, 0x0F37 }, { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E },
{ 0x0F80, 0x0F84 }, { 0x0F86, 0x0F87 }, { 0x0F90, 0x0F97 },
{ 0x0F99, 0x0FBC }, { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 },
{ 0x1032, 0x1032 }, { 0x1036, 0x1037 }, { 0x1039, 0x1039 },
{ 0x1058, 0x1059 }, { 0x1160, 0x11FF }, { 0x135F, 0x135F },
{ 0x1712, 0x1714 }, { 0x1732, 0x1734 }, { 0x1752, 0x1753 },
{ 0x1772, 0x1773 }, { 0x17B4, 0x17B5 }, { 0x17B7, 0x17BD },
{ 0x17C6, 0x17C6 }, { 0x17C9, 0x17D3 }, { 0x17DD, 0x17DD },
{ 0x180B, 0x180D }, { 0x18A9, 0x18A9 }, { 0x1920, 0x1922 },
{ 0x1927, 0x1928 }, { 0x1932, 0x1932 }, { 0x1939, 0x193B },
{ 0x1A17, 0x1A18 }, { 0x1B00, 0x1B03 }, { 0x1B34, 0x1B34 },
{ 0x1B36, 0x1B3A }, { 0x1B3C, 0x1B3C }, { 0x1B42, 0x1B42 },
{ 0x1B6B, 0x1B73 }, { 0x1DC0, 0x1DCA }, { 0x1DFE, 0x1DFF },
{ 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x2060, 0x2063 },
{ 0x206A, 0x206F }, { 0x20D0, 0x20EF }, { 0x302A, 0x302F },
{ 0x3099, 0x309A }, { 0xA806, 0xA806 }, { 0xA80B, 0xA80B },
{ 0xA825, 0xA826 }, { 0xFB1E, 0xFB1E }, { 0xFE00, 0xFE0F },
{ 0xFE20, 0xFE23 }, { 0xFEFF, 0xFEFF }, { 0xFFF9, 0xFFFB },
{ 0x10A01, 0x10A03 }, { 0x10A05, 0x10A06 }, { 0x10A0C, 0x10A0F },
{ 0x10A38, 0x10A3A }, { 0x10A3F, 0x10A3F }, { 0x1D167, 0x1D169 },
{ 0x1D173, 0x1D182 }, { 0x1D185, 0x1D18B }, { 0x1D1AA, 0x1D1AD },
{ 0x1D242, 0x1D244 }, { 0xE0001, 0xE0001 }, { 0xE0020, 0xE007F },
{ 0xE0100, 0xE01EF }
};
/* test for 8-bit control characters */
if (ucs == 0)
return 0;
if (ucs < 32 || (ucs >= 0x7f && ucs < 0xa0))
return -1;
/* binary search in table of non-spacing characters */
if (bisearch(ucs, combining,
sizeof(combining) / sizeof(struct interval) - 1))
return 0;
/* if we arrive here, ucs is not a combining or C0/C1 control character */
return 1 +
(ucs >= 0x1100 &&
(ucs <= 0x115f || /* Hangul Jamo init. consonants */
ucs == 0x2329 || ucs == 0x232a ||
(ucs >= 0x2e80 && ucs <= 0xa4cf &&
ucs != 0x303f) || /* CJK ... Yi */
(ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */
(ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility Ideographs */
(ucs >= 0xfe10 && ucs <= 0xfe19) || /* Vertical forms */
(ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */
(ucs >= 0xff00 && ucs <= 0xff60) || /* Fullwidth Forms */
(ucs >= 0xffe0 && ucs <= 0xffe6) ||
#ifndef _WIN32 // sizeof(wchar_t) == 2
(ucs >= 0x20000 && ucs <= 0x2fffd) ||
(ucs >= 0x30000 && ucs <= 0x3fffd) ||
#endif
0
));
}
int mk_wcswidth(const wchar_t *pwcs, size_t n)
{
int w, width = 0;
for (;*pwcs && n-- > 0; pwcs++)
if ((w = mk_wcwidth(*pwcs)) < 0)
return -1;
else
width += w;
return width;
}
/*
* The following functions are the same as mk_wcwidth() and
* mk_wcswidth(), except that spacing characters in the East Asian
* Ambiguous (A) category as defined in Unicode Technical Report #11
* have a column width of 2. This variant might be useful for users of
* CJK legacy encodings who want to migrate to UCS without changing
* the traditional terminal character-width behaviour. It is not
* otherwise recommended for general use.
*/
int mk_wcwidth_cjk(wchar_t ucs)
{
/* sorted list of non-overlapping intervals of East Asian Ambiguous
* characters, generated by "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */
static const struct interval ambiguous[] = {
{ 0x00A1, 0x00A1 }, { 0x00A4, 0x00A4 }, { 0x00A7, 0x00A8 },
{ 0x00AA, 0x00AA }, { 0x00AE, 0x00AE }, { 0x00B0, 0x00B4 },
{ 0x00B6, 0x00BA }, { 0x00BC, 0x00BF }, { 0x00C6, 0x00C6 },
{ 0x00D0, 0x00D0 }, { 0x00D7, 0x00D8 }, { 0x00DE, 0x00E1 },
{ 0x00E6, 0x00E6 }, { 0x00E8, 0x00EA }, { 0x00EC, 0x00ED },
{ 0x00F0, 0x00F0 }, { 0x00F2, 0x00F3 }, { 0x00F7, 0x00FA },
{ 0x00FC, 0x00FC }, { 0x00FE, 0x00FE }, { 0x0101, 0x0101 },
{ 0x0111, 0x0111 }, { 0x0113, 0x0113 }, { 0x011B, 0x011B },
{ 0x0126, 0x0127 }, { 0x012B, 0x012B }, { 0x0131, 0x0133 },
{ 0x0138, 0x0138 }, { 0x013F, 0x0142 }, { 0x0144, 0x0144 },
{ 0x0148, 0x014B }, { 0x014D, 0x014D }, { 0x0152, 0x0153 },
{ 0x0166, 0x0167 }, { 0x016B, 0x016B }, { 0x01CE, 0x01CE },
{ 0x01D0, 0x01D0 }, { 0x01D2, 0x01D2 }, { 0x01D4, 0x01D4 },
{ 0x01D6, 0x01D6 }, { 0x01D8, 0x01D8 }, { 0x01DA, 0x01DA },
{ 0x01DC, 0x01DC }, { 0x0251, 0x0251 }, { 0x0261, 0x0261 },
{ 0x02C4, 0x02C4 }, { 0x02C7, 0x02C7 }, { 0x02C9, 0x02CB },
{ 0x02CD, 0x02CD }, { 0x02D0, 0x02D0 }, { 0x02D8, 0x02DB },
{ 0x02DD, 0x02DD }, { 0x02DF, 0x02DF }, { 0x0391, 0x03A1 },
{ 0x03A3, 0x03A9 }, { 0x03B1, 0x03C1 }, { 0x03C3, 0x03C9 },
{ 0x0401, 0x0401 }, { 0x0410, 0x044F }, { 0x0451, 0x0451 },
{ 0x2010, 0x2010 }, { 0x2013, 0x2016 }, { 0x2018, 0x2019 },
{ 0x201C, 0x201D }, { 0x2020, 0x2022 }, { 0x2024, 0x2027 },
{ 0x2030, 0x2030 }, { 0x2032, 0x2033 }, { 0x2035, 0x2035 },
{ 0x203B, 0x203B }, { 0x203E, 0x203E }, { 0x2074, 0x2074 },
{ 0x207F, 0x207F }, { 0x2081, 0x2084 }, { 0x20AC, 0x20AC },
{ 0x2103, 0x2103 }, { 0x2105, 0x2105 }, { 0x2109, 0x2109 },
{ 0x2113, 0x2113 }, { 0x2116, 0x2116 }, { 0x2121, 0x2122 },
{ 0x2126, 0x2126 }, { 0x212B, 0x212B }, { 0x2153, 0x2154 },
{ 0x215B, 0x215E }, { 0x2160, 0x216B }, { 0x2170, 0x2179 },
{ 0x2190, 0x2199 }, { 0x21B8, 0x21B9 }, { 0x21D2, 0x21D2 },
{ 0x21D4, 0x21D4 }, { 0x21E7, 0x21E7 }, { 0x2200, 0x2200 },
{ 0x2202, 0x2203 }, { 0x2207, 0x2208 }, { 0x220B, 0x220B },
{ 0x220F, 0x220F }, { 0x2211, 0x2211 }, { 0x2215, 0x2215 },
{ 0x221A, 0x221A }, { 0x221D, 0x2220 }, { 0x2223, 0x2223 },
{ 0x2225, 0x2225 }, { 0x2227, 0x222C }, { 0x222E, 0x222E },
{ 0x2234, 0x2237 }, { 0x223C, 0x223D }, { 0x2248, 0x2248 },
{ 0x224C, 0x224C }, { 0x2252, 0x2252 }, { 0x2260, 0x2261 },
{ 0x2264, 0x2267 }, { 0x226A, 0x226B }, { 0x226E, 0x226F },
{ 0x2282, 0x2283 }, { 0x2286, 0x2287 }, { 0x2295, 0x2295 },
{ 0x2299, 0x2299 }, { 0x22A5, 0x22A5 }, { 0x22BF, 0x22BF },
{ 0x2312, 0x2312 }, { 0x2460, 0x24E9 }, { 0x24EB, 0x254B },
{ 0x2550, 0x2573 }, { 0x2580, 0x258F }, { 0x2592, 0x2595 },
{ 0x25A0, 0x25A1 }, { 0x25A3, 0x25A9 }, { 0x25B2, 0x25B3 },
{ 0x25B6, 0x25B7 }, { 0x25BC, 0x25BD }, { 0x25C0, 0x25C1 },
{ 0x25C6, 0x25C8 }, { 0x25CB, 0x25CB }, { 0x25CE, 0x25D1 },
{ 0x25E2, 0x25E5 }, { 0x25EF, 0x25EF }, { 0x2605, 0x2606 },
{ 0x2609, 0x2609 }, { 0x260E, 0x260F }, { 0x2614, 0x2615 },
{ 0x261C, 0x261C }, { 0x261E, 0x261E }, { 0x2640, 0x2640 },
{ 0x2642, 0x2642 }, { 0x2660, 0x2661 }, { 0x2663, 0x2665 },
{ 0x2667, 0x266A }, { 0x266C, 0x266D }, { 0x266F, 0x266F },
{ 0x273D, 0x273D }, { 0x2776, 0x277F }, { 0xE000, 0xF8FF },
{ 0xFFFD, 0xFFFD }, { 0xF0000, 0xFFFFD }, { 0x100000, 0x10FFFD }
};
/* binary search in table of non-spacing characters */
if (bisearch(ucs, ambiguous,
sizeof(ambiguous) / sizeof(struct interval) - 1))
return 2;
return mk_wcwidth(ucs);
}
int mk_wcswidth_cjk(const wchar_t *pwcs, size_t n)
{
int w, width = 0;
for (;*pwcs && n-- > 0; pwcs++)
if ((w = mk_wcwidth_cjk(*pwcs)) < 0)
return -1;
else
width += w;
return width;
}
+6
View File
@@ -0,0 +1,6 @@
{
"home": "https://github.com/ibireme/yyjson",
"license": "MIT ( embed in source )",
"version": "0.9.0",
"author": "ibireme"
}
+9473
View File
File diff suppressed because it is too large Load Diff
+7924
View File
File diff suppressed because it is too large Load Diff
-49
View File
@@ -1,49 +0,0 @@
#include "util/textModifier.h"
#include "bar.h"
// green, yellow, red: print the color on nth (0~9) block
// set its value == 10 means the color will not be printed
void ffAppendPercentBar(FFinstance* instance, FFstrbuf* buffer, uint8_t percent, uint8_t green, uint8_t yellow, uint8_t red)
{
assert(green <= 10 && yellow <= 10 && red <= 10);
// [ 0%, 5%) prints 0 blocks
// [ 5%, 15%) prints 1 block;
// ...
// [85%, 95%) prints 9 blocks;
// [95%,100%] prints 10 blocks
percent = (uint8_t)(percent + 5) / 10;
assert(percent <= 10);
if(!instance->config.pipe)
ffStrbufAppendS(buffer, "\033[97m[ ");
else
ffStrbufAppendS(buffer, "[ ");
for (uint8_t i = 0; i < percent; ++i)
{
if(!instance->config.pipe)
{
if (i == green)
ffStrbufAppendS(buffer, "\033[32m");
else if (i == yellow)
ffStrbufAppendS(buffer, "\033[93m");
else if (i == red)
ffStrbufAppendS(buffer, "\033[91m");
}
ffStrbufAppendS(buffer, "");
}
if (percent < 10)
{
if(!instance->config.pipe)
ffStrbufAppendS(buffer, "\033[97m");
for (uint8_t i = percent; i < 10; ++i)
ffStrbufAppendS(buffer, "-");
}
if(!instance->config.pipe)
ffStrbufAppendS(buffer, "\033[97m ]" FASTFETCH_TEXT_MODIFIER_RESET);
else
ffStrbufAppendS(buffer, " ]");
}
-16
View File
@@ -1,16 +0,0 @@
#pragma once
#ifndef FF_INCLUDED_common_bar
#define FF_INCLUDED_common_bar
#include "fastfetch.h"
enum
{
FF_PERCENTAGE_TYPE_NUM_BIT = 1,
FF_PERCENTAGE_TYPE_BAR_BIT = 2,
};
void ffAppendPercentBar(FFinstance* instance, FFstrbuf* buffer, uint8_t percent, uint8_t green, uint8_t yellow, uint8_t red);
#endif
+55
View File
@@ -0,0 +1,55 @@
#pragma once
#define FF_COLOR_MODE_RESET "0;"
#define FF_COLOR_MODE_BOLD "1;"
#define FF_COLOR_MODE_DIM "2;"
#define FF_COLOR_MODE_ITALIC "3;"
#define FF_COLOR_MODE_UNDERLINE "4;"
#define FF_COLOR_MODE_BLINK "5;"
#define FF_COLOR_MODE_INVERSE "7;"
#define FF_COLOR_MODE_HIDDEN "8;"
#define FF_COLOR_MODE_STRIKETHROUGH "9;"
#define FF_COLOR_FG_BLACK "30"
#define FF_COLOR_FG_RED "31"
#define FF_COLOR_FG_GREEN "32"
#define FF_COLOR_FG_YELLOW "33"
#define FF_COLOR_FG_BLUE "34"
#define FF_COLOR_FG_MAGENTA "35"
#define FF_COLOR_FG_CYAN "36"
#define FF_COLOR_FG_WHITE "37"
#define FF_COLOR_FG_DEFAULT "39"
#define FF_COLOR_FG_LIGHT_BLACK "90"
#define FF_COLOR_FG_LIGHT_RED "91"
#define FF_COLOR_FG_LIGHT_GREEN "92"
#define FF_COLOR_FG_LIGHT_YELLOW "93"
#define FF_COLOR_FG_LIGHT_BLUE "94"
#define FF_COLOR_FG_LIGHT_MAGENTA "95"
#define FF_COLOR_FG_LIGHT_CYAN "96"
#define FF_COLOR_FG_LIGHT_WHITE "97"
#define FF_COLOR_BG_BLACK "40"
#define FF_COLOR_BG_RED "41"
#define FF_COLOR_BG_GREEN "42"
#define FF_COLOR_BG_YELLOW "43"
#define FF_COLOR_BG_BLUE "44"
#define FF_COLOR_BG_MAGENTA "45"
#define FF_COLOR_BG_CYAN "46"
#define FF_COLOR_BG_WHITE "47"
#define FF_COLOR_BG_DEFAULT "49"
#define FF_COLOR_BG_LIGHT_BLACK "100"
#define FF_COLOR_BG_LIGHT_RED "101"
#define FF_COLOR_BG_LIGHT_GREEN "102"
#define FF_COLOR_BG_LIGHT_YELLOW "103"
#define FF_COLOR_BG_LIGHT_BLUE "104"
#define FF_COLOR_BG_LIGHT_MAGENTA "105"
#define FF_COLOR_BG_LIGHT_CYAN "106"
#define FF_COLOR_BG_LIGHT_WHITE "107"
#define FF_COLOR_FG_256 "38;5;"
#define FF_COLOR_BG_256 "48;5;"
#define FF_COLOR_FG_RGB "38;2;"
#define FF_COLOR_BG_RGB "48;2;"
+165
View File
@@ -0,0 +1,165 @@
#include "commandoption.h"
#include "common/printing.h"
#include "common/time.h"
#include "common/jsonconfig.h"
#include "fastfetch_datatext.h"
#include "modules/modules.h"
#include "util/stringUtils.h"
#include <ctype.h>
#include <inttypes.h>
bool ffParseModuleOptions(const char* key, const char* value)
{
if (!ffStrStartsWith(key, "--") || !ffCharIsEnglishAlphabet(key[2])) return false;
for (FFModuleBaseInfo** modules = ffModuleInfos[toupper(key[2]) - 'A']; *modules; ++modules)
{
FFModuleBaseInfo* baseInfo = *modules;
if (baseInfo->parseCommandOptions(baseInfo, key, value)) return true;
}
return false;
}
void ffPrepareCommandOption(FFdata* data)
{
FFOptionsModules* const options = &instance.config.modules;
//If we don't have a custom structure, use the default one
if(data->structure.length == 0)
ffStrbufAppendS(&data->structure, FASTFETCH_DATATEXT_STRUCTURE); // Cannot use `ffStrbufSetStatic` here because we will modify the string
if(ffStrbufContainIgnCaseS(&data->structure, FF_CPUUSAGE_MODULE_NAME))
ffPrepareCPUUsage();
if(ffStrbufContainIgnCaseS(&data->structure, FF_DISKIO_MODULE_NAME))
ffPrepareDiskIO(&options->diskIo);
if(ffStrbufContainIgnCaseS(&data->structure, FF_NETIO_MODULE_NAME))
ffPrepareNetIO(&options->netIo);
if(instance.config.general.multithreading)
{
if(ffStrbufContainIgnCaseS(&data->structure, FF_PUBLICIP_MODULE_NAME))
ffPreparePublicIp(&options->publicIP);
if(ffStrbufContainIgnCaseS(&data->structure, FF_WEATHER_MODULE_NAME))
ffPrepareWeather(&options->weather);
}
}
static void genJsonConfig(FFModuleBaseInfo* baseInfo, yyjson_mut_doc* doc)
{
yyjson_mut_val* modules = yyjson_mut_obj_get(doc->root, "modules");
if (!modules)
modules = yyjson_mut_obj_add_arr(doc, doc->root, "modules");
yyjson_mut_val* module = yyjson_mut_obj(doc);
FF_STRBUF_AUTO_DESTROY type = ffStrbufCreateS(baseInfo->name);
ffStrbufLowerCase(&type);
yyjson_mut_obj_add_strbuf(doc, module, "type", &type);
if (baseInfo->generateJsonConfig)
baseInfo->generateJsonConfig(baseInfo, doc, module);
if (yyjson_mut_obj_size(module) > 1)
yyjson_mut_arr_add_val(modules, module);
else
yyjson_mut_arr_add_strbuf(doc, modules, &type);
}
static void genJsonResult(FFModuleBaseInfo* baseInfo, yyjson_mut_doc* doc)
{
yyjson_mut_val* module = yyjson_mut_arr_add_obj(doc, doc->root);
yyjson_mut_obj_add_str(doc, module, "type", baseInfo->name);
if (baseInfo->generateJsonResult)
baseInfo->generateJsonResult(baseInfo, doc, module);
else
yyjson_mut_obj_add_str(doc, module, "error", "Unsupported for JSON format");
}
static void parseStructureCommand(
const char* line,
void (*fn)(FFModuleBaseInfo *baseInfo, yyjson_mut_doc* jsonDoc),
yyjson_mut_doc* jsonDoc
)
{
if(ffCharIsEnglishAlphabet(line[0]))
{
for (FFModuleBaseInfo** modules = ffModuleInfos[toupper(line[0]) - 'A']; *modules; ++modules)
{
FFModuleBaseInfo* baseInfo = *modules;
if (ffStrEqualsIgnCase(line, baseInfo->name))
{
if (__builtin_expect(jsonDoc != NULL, false))
fn(baseInfo, jsonDoc);
else
baseInfo->printModule(baseInfo);
return;
}
}
}
ffPrintError(line, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "<no implementation provided>");
}
void ffPrintCommandOption(FFdata* data, yyjson_mut_doc* jsonDoc)
{
//Parse the structure and call the modules
uint32_t startIndex = 0;
while (startIndex < data->structure.length)
{
uint32_t colonIndex = ffStrbufNextIndexC(&data->structure, startIndex, ':');
data->structure.chars[colonIndex] = '\0';
uint64_t ms = 0;
if(instance.config.display.stat)
ms = ffTimeGetTick();
parseStructureCommand(data->structure.chars + startIndex, genJsonResult, jsonDoc);
if(instance.config.display.stat)
{
ms = ffTimeGetTick() - ms;
if (jsonDoc)
{
yyjson_mut_val* moduleJson = yyjson_mut_arr_get_last(jsonDoc->root);
yyjson_mut_obj_add_uint(jsonDoc, moduleJson, "stat", ms);
}
else
{
char str[32];
int len = snprintf(str, sizeof str, "%" PRIu64 "ms", ms);
if(instance.config.display.pipe)
puts(str);
else
printf("\033[s\033[1A\033[9999999C\033[%dD%s\033[u", len, str); // Save; Up 1; Right 9999999; Left <len>; Print <str>; Load
}
}
#if defined(_WIN32)
if (!jsonDoc && !instance.config.display.noBuffer) fflush(stdout);
#endif
startIndex = colonIndex + 1;
}
}
void ffMigrateCommandOptionToJsonc(FFdata* data, yyjson_mut_doc* jsonDoc)
{
//If we don't have a custom structure, use the default one
if(data->structure.length == 0)
ffStrbufAppendS(&data->structure, FASTFETCH_DATATEXT_STRUCTURE); // Cannot use `ffStrbufSetStatic` here because we will modify the string
//Parse the structure and call the modules
uint32_t startIndex = 0;
while (startIndex < data->structure.length)
{
uint32_t colonIndex = ffStrbufNextIndexC(&data->structure, startIndex, ':');
data->structure.chars[colonIndex] = '\0';
parseStructureCommand(data->structure.chars + startIndex, genJsonConfig, jsonDoc);
startIndex = colonIndex + 1;
}
}
+15
View File
@@ -0,0 +1,15 @@
#pragma once
#include "fastfetch.h"
// Things only needed by fastfetch
typedef struct FFdata
{
FFstrbuf structure;
bool configLoaded;
} FFdata;
bool ffParseModuleOptions(const char* key, const char* value);
void ffPrepareCommandOption(FFdata* data);
void ffPrintCommandOption(FFdata* data, yyjson_mut_doc* jsonDoc);
void ffMigrateCommandOptionToJsonc(FFdata* data, yyjson_mut_doc* jsonDoc);
+204
View File
@@ -0,0 +1,204 @@
#include "dbus.h"
#ifdef FF_HAVE_DBUS
#include "common/thread.h"
#include "util/stringUtils.h"
static bool loadLibSymbols(FFDBusLibrary* lib)
{
FF_LIBRARY_LOAD(dbus, &instance.config.library.libDBus, false, "libdbus-1" FF_LIBRARY_EXTENSION, 4);
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_bus_get, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_message_new_method_call, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_message_iter_init, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_message_iter_init_append, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_message_iter_append_basic, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_message_iter_get_arg_type, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_message_iter_get_basic, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_message_iter_recurse, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_message_iter_has_next, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_message_iter_next, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_message_unref, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_connection_send_with_reply_and_block, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_connection_flush, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_pending_call_block, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_pending_call_steal_reply, false)
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_pending_call_unref, false)
dbus = NULL; // don't auto dlclose
return true;
}
static const FFDBusLibrary* loadLib(void)
{
static FFDBusLibrary lib;
static bool loaded = false;
static bool loadSuccess = false;
if(!loaded)
{
loaded = true;
loadSuccess = loadLibSymbols(&lib);
}
return loadSuccess ? &lib : NULL;
}
const char* ffDBusLoadData(DBusBusType busType, FFDBusData* data)
{
data->lib = loadLib();
if(data->lib == NULL)
return "Failed to load DBus library";
data->connection = data->lib->ffdbus_bus_get(busType, NULL);
if(data->connection == NULL)
return "Failed to connect to DBus";
return NULL;
}
bool ffDBusGetValue(FFDBusData* dbus, DBusMessageIter* iter, FFstrbuf* result)
{
int argType = dbus->lib->ffdbus_message_iter_get_arg_type(iter);
if(argType == DBUS_TYPE_STRING)
{
const char* value = NULL;
dbus->lib->ffdbus_message_iter_get_basic(iter, &value);
if(!ffStrSet(value))
return false;
ffStrbufAppendS(result, value);
return true;
}
if(argType != DBUS_TYPE_VARIANT && argType != DBUS_TYPE_ARRAY)
return false;
DBusMessageIter subIter;
dbus->lib->ffdbus_message_iter_recurse(iter, &subIter);
if(argType == DBUS_TYPE_VARIANT)
return ffDBusGetValue(dbus, &subIter, result);
//At this point we have an array
bool foundAValue = false;
while(true)
{
if(ffDBusGetValue(dbus, &subIter, result))
{
foundAValue = true;
ffStrbufAppendS(result, ", ");
}
FF_DBUS_ITER_CONTINUE(dbus, &subIter);
}
if(foundAValue)
ffStrbufSubstrBefore(result, result->length - 2);
return foundAValue;
}
bool ffDBusGetBool(FFDBusData* dbus, DBusMessageIter* iter, bool* result)
{
int argType = dbus->lib->ffdbus_message_iter_get_arg_type(iter);
if(argType == DBUS_TYPE_BOOLEAN)
{
dbus_bool_t value = 0;
dbus->lib->ffdbus_message_iter_get_basic(iter, &value);
*result = value != 0;
return true;
}
if(argType != DBUS_TYPE_VARIANT)
return false;
DBusMessageIter subIter;
dbus->lib->ffdbus_message_iter_recurse(iter, &subIter);
return ffDBusGetBool(dbus, &subIter, result);
}
bool ffDBusGetByte(FFDBusData* dbus, DBusMessageIter* iter, uint8_t* result)
{
int argType = dbus->lib->ffdbus_message_iter_get_arg_type(iter);
if(argType == DBUS_TYPE_BYTE)
{
dbus->lib->ffdbus_message_iter_get_basic(iter, result);
return true;
}
if(argType != DBUS_TYPE_VARIANT)
return false;
DBusMessageIter subIter;
dbus->lib->ffdbus_message_iter_recurse(iter, &subIter);
return ffDBusGetByte(dbus, &subIter, result);
}
DBusMessage* ffDBusGetMethodReply(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* method)
{
DBusMessage* message = dbus->lib->ffdbus_message_new_method_call(busName, objectPath, interface, method);
if(message == NULL)
return NULL;
DBusMessage* reply = dbus->lib->ffdbus_connection_send_with_reply_and_block(dbus->connection, message, FF_DBUS_TIMEOUT_MILLISECONDS, NULL);
dbus->lib->ffdbus_message_unref(message);
return reply;
}
DBusMessage* ffDBusGetProperty(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* property)
{
DBusMessage* message = dbus->lib->ffdbus_message_new_method_call(busName, objectPath, "org.freedesktop.DBus.Properties", "Get");
if(message == NULL)
return NULL;
DBusMessageIter requestIterator;
dbus->lib->ffdbus_message_iter_init_append(message, &requestIterator);
if(!dbus->lib->ffdbus_message_iter_append_basic(&requestIterator, DBUS_TYPE_STRING, &interface))
{
dbus->lib->ffdbus_message_unref(message);
return NULL;
}
if(!dbus->lib->ffdbus_message_iter_append_basic(&requestIterator, DBUS_TYPE_STRING, &property))
{
dbus->lib->ffdbus_message_unref(message);
return NULL;
}
DBusMessage* reply = dbus->lib->ffdbus_connection_send_with_reply_and_block(dbus->connection, message, FF_DBUS_TIMEOUT_MILLISECONDS, NULL);
dbus->lib->ffdbus_message_unref(message);
return reply;
}
bool ffDBusGetPropertyString(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* property, FFstrbuf* result)
{
DBusMessage* reply = ffDBusGetProperty(dbus, busName, objectPath, interface, property);
if(reply == NULL)
return false;
DBusMessageIter rootIterator;
if(!dbus->lib->ffdbus_message_iter_init(reply, &rootIterator))
{
dbus->lib->ffdbus_message_unref(reply);
return false;
}
bool ret = ffDBusGetValue(dbus, &rootIterator, result);
dbus->lib->ffdbus_message_unref(reply);
return ret;
}
#endif //FF_HAVE_DBUS
+53
View File
@@ -0,0 +1,53 @@
#pragma once
#ifdef FF_HAVE_DBUS
#include <dbus/dbus.h>
#include "util/FFstrbuf.h"
#include "common/library.h"
#define FF_DBUS_TIMEOUT_MILLISECONDS 35
#define FF_DBUS_ITER_CONTINUE(dbus, iterator) \
{ \
if(!(dbus)->lib->ffdbus_message_iter_has_next(iterator)) \
break; \
(dbus)->lib->ffdbus_message_iter_next(iterator); \
continue; \
}
typedef struct FFDBusLibrary
{
FF_LIBRARY_SYMBOL(dbus_bus_get)
FF_LIBRARY_SYMBOL(dbus_message_new_method_call)
FF_LIBRARY_SYMBOL(dbus_message_iter_init)
FF_LIBRARY_SYMBOL(dbus_message_iter_init_append)
FF_LIBRARY_SYMBOL(dbus_message_iter_append_basic)
FF_LIBRARY_SYMBOL(dbus_message_iter_get_arg_type)
FF_LIBRARY_SYMBOL(dbus_message_iter_get_basic)
FF_LIBRARY_SYMBOL(dbus_message_iter_recurse)
FF_LIBRARY_SYMBOL(dbus_message_iter_has_next)
FF_LIBRARY_SYMBOL(dbus_message_iter_next)
FF_LIBRARY_SYMBOL(dbus_message_unref)
FF_LIBRARY_SYMBOL(dbus_connection_send_with_reply_and_block)
FF_LIBRARY_SYMBOL(dbus_connection_flush)
FF_LIBRARY_SYMBOL(dbus_pending_call_block)
FF_LIBRARY_SYMBOL(dbus_pending_call_steal_reply)
FF_LIBRARY_SYMBOL(dbus_pending_call_unref)
} FFDBusLibrary;
typedef struct FFDBusData
{
const FFDBusLibrary* lib;
DBusConnection* connection;
} FFDBusData;
const char* ffDBusLoadData(DBusBusType busType, FFDBusData* data); //Returns an error message or NULL on success
bool ffDBusGetValue(FFDBusData* dbus, DBusMessageIter* iter, FFstrbuf* result);
bool ffDBusGetBool(FFDBusData* dbus, DBusMessageIter* iter, bool* result);
bool ffDBusGetByte(FFDBusData* dbus, DBusMessageIter* iter, uint8_t* result);
DBusMessage* ffDBusGetMethodReply(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* method);
DBusMessage* ffDBusGetProperty(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* property);
bool ffDBusGetPropertyString(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* property, FFstrbuf* result);
#endif // FF_HAVE_DBUS
+46 -58
View File
@@ -2,13 +2,31 @@
#include "common/font.h"
#include <string.h>
#include <ctype.h>
static void fontInit(FFfont* font)
void ffFontInit(FFfont* font)
{
// Ensure no memory allocates
ffStrbufInit(&font->pretty);
ffStrbufInit(&font->name);
ffStrbufInitA(&font->size, 4);
ffListInitA(&font->styles, sizeof(FFstrbuf), 4);
ffStrbufInit(&font->size);
ffListInit(&font->styles, sizeof(FFstrbuf));
}
static void strbufAppendNSExcludingC(FFstrbuf* strbuf, uint32_t length, const char* value, char exclude)
{
if(value == NULL || length == 0)
return;
ffStrbufEnsureFree(strbuf, length);
for(uint32_t i = 0; i < length; i++)
{
if(value[i] != exclude)
strbuf->chars[strbuf->length++] = value[i];
}
strbuf->chars[strbuf->length] = '\0';
}
static void fontInitPretty(FFfont* font)
@@ -44,64 +62,38 @@ static void fontInitPretty(FFfont* font)
void ffFontInitQt(FFfont* font, const char* data)
{
fontInit(font);
ffFontInit(font);
//See https://doc.qt.io/qt-5/qfont.html#toString
//Family
while(*data != ',' && *data != '\0')
{
ffStrbufAppendC(&font->name, *data);
++data;
}
if(*data != '\0')
++data;
data = ffStrbufAppendSUntilC(&font->name, data, ',');
ffStrbufTrim(&font->name, ' ');
if (!data) goto exit;
data++;
//Size
while(*data != ',' && *data != '\0')
{
ffStrbufAppendC(&font->size, *data);
++data;
}
if(*data != '\0')
++data;
data = ffStrbufAppendSUntilC(&font->size, data, ',');
ffStrbufTrim(&font->size, ' ');
if (!data) goto exit;
data++;
#define FF_FONT_QT_SKIP_VALUE \
while(*data != ',' && *data != '\0') \
++data; \
if(*data != '\0') \
++data;
FF_FONT_QT_SKIP_VALUE //Pixel size
FF_FONT_QT_SKIP_VALUE //Style hint
FF_FONT_QT_SKIP_VALUE //Font weight
FF_FONT_QT_SKIP_VALUE //Font style
FF_FONT_QT_SKIP_VALUE //Underline
FF_FONT_QT_SKIP_VALUE //Strike out
FF_FONT_QT_SKIP_VALUE //Fixed pitch
FF_FONT_QT_SKIP_VALUE //Always 0
#undef FF_FONT_QT_SKIP_VALUE
while(*data != '\0')
//Style
data = strrchr(data, ',');
if (!data) goto exit;
data++;
if (isalpha(*data))
{
while(*data == ' ')
++data;
if(*data == '\0')
break;
FFstrbuf* style = ffListAdd(&font->styles);
ffStrbufInit(style);
while(*data != ' ' && *data != '\0')
do
{
ffStrbufAppendC(style, *data);
++data;
}
FFstrbuf* style = ffListAdd(&font->styles);
ffStrbufInit(style);
data = ffStrbufAppendSUntilC(style, data, ' ');
if (data) data++;
} while (data);
}
exit:
fontInitPretty(font);
}
@@ -154,7 +146,7 @@ static void fontPangoParseWord(const char** data, FFfont* font, FFstrbuf* altern
ffStrbufInit(alternativeBuffer);
}
ffStrbufAppendNSExludingC(alternativeBuffer, wordLength, wordStart, '-');
strbufAppendNSExcludingC(alternativeBuffer, wordLength, wordStart, '-');
if(
strncasecmp(wordStart, "Ultra ", 6) == 0 ||
@@ -170,7 +162,7 @@ static void fontPangoParseWord(const char** data, FFfont* font, FFstrbuf* altern
if(alternativeBuffer != NULL)
{
ffStrbufAppendNSExludingC(alternativeBuffer, wordLength, wordStart, '-');
strbufAppendNSExcludingC(alternativeBuffer, wordLength, wordStart, '-');
return;
}
@@ -181,7 +173,7 @@ static void fontPangoParseWord(const char** data, FFfont* font, FFstrbuf* altern
void ffFontInitPango(FFfont* font, const char* data)
{
fontInit(font);
ffFontInit(font);
while(*data != '\0' && *data != '`' && *data != '\\')
fontPangoParseWord(&data, font, NULL);
@@ -191,19 +183,15 @@ void ffFontInitPango(FFfont* font, const char* data)
void ffFontInitValues(FFfont* font, const char* name, const char* size)
{
fontInit(font);
ffFontInit(font);
ffStrbufAppendS(&font->name, name);
ffStrbufTrim(&font->name, '"');
ffStrbufAppendS(&font->size, size);
fontInitPretty(font);
}
void ffFontInitCopy(FFfont* font, const char* name)
{
ffFontInitValues(font, name, NULL);
}
void ffFontInitWithSpace(FFfont* font, const char* rawName)
{
const char* pspace = strrchr(rawName, ' ');
@@ -213,7 +201,7 @@ void ffFontInitWithSpace(FFfont* font, const char* rawName)
return;
}
fontInit(font);
ffFontInit(font);
ffStrbufAppendNS(&font->name, (uint32_t)(pspace - rawName), rawName);
ffStrbufAppendS(&font->size, pspace + 1);
+5 -5
View File
@@ -1,8 +1,5 @@
#pragma once
#ifndef FF_INCLUDED_common_font
#define FF_INCLUDED_common_font
#include "util/FFstrbuf.h"
#include "util/FFlist.h"
@@ -14,11 +11,14 @@ typedef struct FFfont
FFlist styles;
} FFfont;
void ffFontInit(FFfont* font);
void ffFontInitQt(FFfont* font, const char* data);
void ffFontInitPango(FFfont* font, const char* data);
void ffFontInitCopy(FFfont* font, const char* name);
void ffFontInitValues(FFfont* font, const char* name, const char* size);
void ffFontInitWithSpace(FFfont* font, const char* rawName);
void ffFontDestroy(FFfont* font);
#endif
static inline void ffFontInitCopy(FFfont* font, const char* name)
{
ffFontInitValues(font, name, NULL);
}
+123 -103
View File
@@ -2,6 +2,7 @@
#include "common/format.h"
#include "common/parsing.h"
#include "util/textModifier.h"
#include "util/stringUtils.h"
#include <inttypes.h>
@@ -11,6 +12,8 @@ void ffFormatAppendFormatArg(FFstrbuf* buffer, const FFformatarg* formatarg)
ffStrbufAppendF(buffer, "%i", *(int*)formatarg->value);
else if(formatarg->type == FF_FORMAT_ARG_TYPE_UINT)
ffStrbufAppendF(buffer, "%" PRIu32, *(uint32_t*)formatarg->value);
else if(formatarg->type == FF_FORMAT_ARG_TYPE_UINT64)
ffStrbufAppendF(buffer, "%" PRIu64, *(uint64_t*)formatarg->value);
else if(formatarg->type == FF_FORMAT_ARG_TYPE_UINT16)
ffStrbufAppendF(buffer, "%" PRIu16, *(uint16_t*)formatarg->value);
else if(formatarg->type == FF_FORMAT_ARG_TYPE_UINT8)
@@ -19,10 +22,12 @@ void ffFormatAppendFormatArg(FFstrbuf* buffer, const FFformatarg* formatarg)
ffStrbufAppendS(buffer, (const char*)formatarg->value);
else if(formatarg->type == FF_FORMAT_ARG_TYPE_STRBUF)
ffStrbufAppend(buffer, (FFstrbuf*)formatarg->value);
else if(formatarg->type == FF_FORMAT_ARG_TYPE_FLOAT)
ffStrbufAppendF(buffer, "%f", *(float*)formatarg->value);
else if(formatarg->type == FF_FORMAT_ARG_TYPE_DOUBLE)
ffStrbufAppendF(buffer, "%g", *(double*)formatarg->value);
else if(formatarg->type == FF_FORMAT_ARG_TYPE_BOOL)
ffStrbufAppendS(buffer, formatarg->value != NULL ? "true" : "false");
ffStrbufAppendS(buffer, *(bool*)formatarg->value ? "true" : "false");
else if(formatarg->type == FF_FORMAT_ARG_TYPE_LIST)
{
const FFlist* list = formatarg->value;
@@ -47,14 +52,33 @@ void ffFormatAppendFormatArg(FFstrbuf* buffer, const FFformatarg* formatarg)
* @param placeholderValue the string to parse
* @return uint32_t the parsed value
*/
static inline uint32_t getArgumentIndex(const FFstrbuf* placeholderValue)
static uint32_t getArgumentIndex(const char* placeholderValue, uint32_t numArgs, const FFformatarg* arguments)
{
uint32_t result = UINT32_MAX;
char firstChar = placeholderValue[0];
if (firstChar == '\0')
return 0; // use arg counter
if(placeholderValue->chars[0] != '-')
sscanf(placeholderValue->chars, "%u", &result);
if (firstChar >= '0' && firstChar <= '9')
{
char* pEnd = NULL;
uint32_t result = (uint32_t) strtoul(placeholderValue, &pEnd, 10);
if (result > numArgs)
return UINT32_MAX;
if (*pEnd != '\0')
return UINT32_MAX;
return result;
}
else if (ffCharIsEnglishAlphabet(firstChar))
{
for (uint32_t i = 0; i < numArgs; ++i)
{
const FFformatarg* arg = &arguments[i];
if (arg->name && strcasecmp(placeholderValue, arg->name) == 0)
return i + 1;
}
}
return result == 0 ? UINT32_MAX : result;
return UINT32_MAX;
}
static inline void appendInvalidPlaceholder(FFstrbuf* buffer, const char* start, const FFstrbuf* placeholderValue, uint32_t index, uint32_t formatStringLength)
@@ -66,16 +90,6 @@ static inline void appendInvalidPlaceholder(FFstrbuf* buffer, const char* start,
ffStrbufAppendC(buffer, '}');
}
static inline void appendEmptyPlaceholder(FFstrbuf* buffer, const char* placeholder, uint32_t* argCounter, uint32_t numArgs, const FFformatarg* arguments)
{
if(*argCounter >= numArgs)
ffStrbufAppendS(buffer, placeholder);
else
ffFormatAppendFormatArg(buffer, arguments + *argCounter);
(*argCounter)++;
}
static inline bool formatArgSet(const FFformatarg* arg)
{
return arg->value != NULL && (
@@ -96,7 +110,8 @@ void ffParseFormatString(FFstrbuf* buffer, const FFstrbuf* formatstr, uint32_t n
uint32_t numOpenIfs = 0;
uint32_t numOpenNotIfs = 0;
uint32_t numOpenColors = 0;
FF_STRBUF_AUTO_DESTROY placeholderValue = ffStrbufCreate();
for(uint32_t i = 0; i < formatstr->length; ++i)
{
@@ -107,13 +122,6 @@ void ffParseFormatString(FFstrbuf* buffer, const FFstrbuf* formatstr, uint32_t n
continue;
}
// if we have an { at the end handle it as {}
if(i == formatstr->length - 1)
{
appendEmptyPlaceholder(buffer, "{", &argCounter, numArgs, arguments);
continue;
}
// jump to next char, the start of the placeholder value
++i;
@@ -124,151 +132,163 @@ void ffParseFormatString(FFstrbuf* buffer, const FFstrbuf* formatstr, uint32_t n
continue;
}
// placeholder is {}
if(formatstr->chars[i] == '}')
ffStrbufClear(&placeholderValue);
{
appendEmptyPlaceholder(buffer, "{}", &argCounter, numArgs, arguments);
continue;
uint32_t iEnd = ffStrbufNextIndexC(formatstr, i, '}');
ffStrbufAppendNS(&placeholderValue, iEnd - i, &formatstr->chars[i]);
i = iEnd;
}
FFstrbuf placeholderValue;
ffStrbufInit(&placeholderValue);
char firstChar = placeholderValue.chars[0];
while(i < formatstr->length && formatstr->chars[i] != '}')
ffStrbufAppendC(&placeholderValue, formatstr->chars[i++]);
// test if for stop, if so break the loop
if(placeholderValue.length == 1 && placeholderValue.chars[0] == '-')
if (placeholderValue.length == 1)
{
ffStrbufDestroy(&placeholderValue);
break;
}
// test if for stop, if so break the loop
if (firstChar == '-')
break;
// test for end of an if, if so do nothing
if(placeholderValue.length == 1 && placeholderValue.chars[0] == '?')
{
if(numOpenIfs == 0)
appendInvalidPlaceholder(buffer, "{", &placeholderValue, i, formatstr->length);
else
--numOpenIfs;
ffStrbufDestroy(&placeholderValue);
continue;
}
// test for end of a not if, if so do nothing
if(placeholderValue.length == 1 && placeholderValue.chars[0] == '/')
{
if(numOpenNotIfs == 0)
appendInvalidPlaceholder(buffer, "{", &placeholderValue, i, formatstr->length);
else
--numOpenNotIfs;
ffStrbufDestroy(&placeholderValue);
continue;
}
// test for end of a color, if so do nothing
if(placeholderValue.length == 1 && placeholderValue.chars[0] == '#')
{
if(numOpenColors == 0)
appendInvalidPlaceholder(buffer, "{", &placeholderValue, i, formatstr->length);
else
// test for end of an if, if so do nothing
if (firstChar == '?')
{
ffStrbufAppendS(buffer, FASTFETCH_TEXT_MODIFIER_RESET);
--numOpenColors;
if(numOpenIfs == 0)
appendInvalidPlaceholder(buffer, "{", &placeholderValue, i, formatstr->length);
else
--numOpenIfs;
continue;
}
ffStrbufDestroy(&placeholderValue);
continue;
// test for end of a not if, if so do nothing
if (firstChar == '/')
{
if(numOpenNotIfs == 0)
appendInvalidPlaceholder(buffer, "{", &placeholderValue, i, formatstr->length);
else
--numOpenNotIfs;
continue;
}
// test for end of a color, if so do nothing
if (firstChar == '#')
{
if (!instance.config.display.pipe)
ffStrbufAppendS(buffer, FASTFETCH_TEXT_MODIFIER_RESET);
continue;
}
}
// test for if, if so evaluate it
if(placeholderValue.chars[0] == '?')
if (firstChar == '?')
{
ffStrbufSubstrAfter(&placeholderValue, 0);
uint32_t index = getArgumentIndex(&placeholderValue);
uint32_t index = getArgumentIndex(placeholderValue.chars, numArgs, arguments);
// testing for an invalid index
if(index > numArgs)
if (index > numArgs)
{
appendInvalidPlaceholder(buffer, "{?", &placeholderValue, i, formatstr->length);
ffStrbufDestroy(&placeholderValue);
continue;
}
// continue normally if an format arg is set and the value is > 0
if(formatArgSet(&arguments[index - 1]))
if (formatArgSet(&arguments[index - 1]))
{
++numOpenIfs;
ffStrbufDestroy(&placeholderValue);
continue;
}
// fastforward to the end of the if without printing the in between
i = ffStrbufNextIndexS(formatstr, i, "{?}") + 2; // 2 is the length of "{?}" - 1 because the loop will increament it again directly after continue
ffStrbufDestroy(&placeholderValue);
i = ffStrbufNextIndexS(formatstr, i, "{?}") + 2; // 2 is the length of "{?}" - 1 because the loop will increment it again directly after continue
continue;
}
// test for not if, if so evaluate it
if(placeholderValue.chars[0] == '/')
if (firstChar == '/')
{
ffStrbufSubstrAfter(&placeholderValue, 0);
uint32_t index = getArgumentIndex(&placeholderValue);
uint32_t index = getArgumentIndex(placeholderValue.chars, numArgs, arguments);
// testing for an invalid index
if(index > numArgs)
if (index > numArgs)
{
appendInvalidPlaceholder(buffer, "{/", &placeholderValue, i, formatstr->length);
ffStrbufDestroy(&placeholderValue);
continue;
}
//continue normally if an format arg is not set or the value is 0
if(!formatArgSet(&arguments[index - 1]))
if (!formatArgSet(&arguments[index - 1]))
{
++numOpenNotIfs;
ffStrbufDestroy(&placeholderValue);
continue;
}
// fastforward to the end of the if without printing the in between
i = ffStrbufNextIndexS(formatstr, i, "{/}") + 2; // 2 is the length of "{/}" - 1 because the loop will increament it again directly after continue
ffStrbufDestroy(&placeholderValue);
i = ffStrbufNextIndexS(formatstr, i, "{/}") + 2; // 2 is the length of "{/}" - 1 because the loop will increment it again directly after continue
continue;
}
//test for color, if so evaluate it
if(placeholderValue.chars[0] == '#')
if (firstChar == '#')
{
++numOpenColors;
ffStrbufSubstrAfter(&placeholderValue, 0);
ffStrbufAppendS(buffer, "\033[");
ffStrbufAppend(buffer, &placeholderValue);
ffStrbufAppendC(buffer, 'm');
ffStrbufDestroy(&placeholderValue);
if (!instance.config.display.pipe)
{
ffStrbufAppendS(buffer, "\e[");
ffOptionParseColorNoClear(placeholderValue.chars + 1, buffer);
ffStrbufAppendC(buffer, 'm');
}
continue;
}
uint32_t index = getArgumentIndex(&placeholderValue);
int32_t truncLength = INT32_MAX;
char* pColon = memchr(placeholderValue.chars, ':', placeholderValue.length);
if (pColon != NULL)
{
char* pEnd = NULL;
truncLength = (int32_t) strtol(pColon + 1, &pEnd, 10);
if (*pEnd != '\0')
{
appendInvalidPlaceholder(buffer, "{", &placeholderValue, i, formatstr->length);
continue;
}
*pColon = '\0';
}
uint32_t index = getArgumentIndex(placeholderValue.chars, numArgs, arguments);
// test for invalid index
if(index > numArgs)
if (index == 0)
index = ++argCounter;
if (index > numArgs)
{
if (pColon) *pColon = ':';
appendInvalidPlaceholder(buffer, "{", &placeholderValue, i, formatstr->length);
ffStrbufDestroy(&placeholderValue);
continue;
}
ffFormatAppendFormatArg(buffer, &arguments[index - 1]);
bool ellipsis = false;
if (truncLength < 0)
{
ellipsis = true;
truncLength = -truncLength;
}
ffStrbufDestroy(&placeholderValue);
uint32_t oldLength = buffer->length;
ffFormatAppendFormatArg(buffer, &arguments[index - 1]);
if (buffer->length - oldLength > (uint32_t) truncLength)
{
ffStrbufSubstrBefore(buffer, oldLength + (uint32_t) truncLength);
ffStrbufTrimRightSpace(buffer);
if (ellipsis)
ffStrbufAppendS(buffer, "");
}
}
ffStrbufTrimRight(buffer, ' ');
ffStrbufAppendS(buffer, FASTFETCH_TEXT_MODIFIER_RESET);
if (!instance.config.display.pipe)
ffStrbufAppendS(buffer, FASTFETCH_TEXT_MODIFIER_RESET);
}
+7 -7
View File
@@ -1,17 +1,16 @@
#pragma once
#ifndef FF_INCLUDED_common_format
#define FF_INCLUDED_common_format
typedef enum FFformatargtype
{
FF_FORMAT_ARG_TYPE_NULL = 0,
FF_FORMAT_ARG_TYPE_UINT,
FF_FORMAT_ARG_TYPE_UINT64,
FF_FORMAT_ARG_TYPE_UINT16,
FF_FORMAT_ARG_TYPE_UINT8,
FF_FORMAT_ARG_TYPE_INT,
FF_FORMAT_ARG_TYPE_STRING,
FF_FORMAT_ARG_TYPE_STRBUF,
FF_FORMAT_ARG_TYPE_FLOAT,
FF_FORMAT_ARG_TYPE_DOUBLE,
FF_FORMAT_ARG_TYPE_LIST,
FF_FORMAT_ARG_TYPE_BOOL
@@ -21,11 +20,12 @@ typedef struct FFformatarg
{
FFformatargtype type;
const void* value;
const char* name; // argument name, must start with an alphabet
} FFformatarg;
void ffFormatAppendFormatArg(FFstrbuf* buffer, const FFformatarg* formatarg);
void ffParseFormatString(FFstrbuf* buffer, const FFstrbuf* formatstr, uint32_t numArgs, const FFformatarg* arguments);
#define FF_FORMAT_ARG_VALUE_BOOL(xpr) ((xpr) ? (const void*) 1 : NULL)
#endif
#define FF_PARSE_FORMAT_STRING_CHECKED(buffer, formatstr, numArgs, arguments) do {\
static_assert(sizeof(arguments) / sizeof(*(arguments)) == (numArgs), "Invalid number of format arguments");\
ffParseFormatString((buffer), (formatstr), (numArgs), (arguments));\
} while (0)
+106 -397
View File
@@ -1,320 +1,90 @@
#include "fastfetch.h"
#include "common/parsing.h"
#include "common/thread.h"
#include "detection/qt.h"
#include "detection/gtk.h"
#include "detection/displayserver/displayserver.h"
#include "detection/terminaltheme/terminaltheme.h"
#include "util/textModifier.h"
#include "logo/logo.h"
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <locale.h>
#ifdef _WIN32
#include <wincon.h>
#include <locale.h>
#include <windows.h>
#include "util/windows/unicode.h"
#else
#include <signal.h>
#endif
static void initConfigDirs(FFstate* state)
{
ffListInit(&state->configDirs, sizeof(FFstrbuf));
#if !(defined(_WIN32) || defined(__APPLE__) || defined(__ANDROID__))
const char* xdgConfigHome = getenv("XDG_CONFIG_HOME");
if(ffStrSet(xdgConfigHome))
{
FFstrbuf* buffer = (FFstrbuf*) ffListAdd(&state->configDirs);
ffStrbufInitA(buffer, 64);
ffStrbufAppendS(buffer, xdgConfigHome);
ffStrbufEnsureEndsWithC(buffer, '/');
}
#endif
#define FF_ENSURE_ONLY_ONCE_IN_LIST(element) \
if(ffListFirstIndexComp(&state->configDirs, element, (bool(*)(const void*, const void*))ffStrbufEqual) < state->configDirs.length - 1) \
{ \
ffStrbufDestroy(ffListGet(&state->configDirs, state->configDirs.length - 1)); \
--state->configDirs.length; \
}
FFstrbuf* userConfigHome = ffListAdd(&state->configDirs);
ffStrbufInitA(userConfigHome, 64);
ffStrbufAppendS(userConfigHome, state->passwd->pw_dir);
ffStrbufAppendS(userConfigHome, "/.config/");
FF_ENSURE_ONLY_ONCE_IN_LIST(userConfigHome)
FFstrbuf* userHome = ffListAdd(&state->configDirs);
ffStrbufInitA(userHome, 64);
ffStrbufAppendS(userHome, state->passwd->pw_dir);
ffStrbufEnsureEndsWithC(userHome, '/');
FF_ENSURE_ONLY_ONCE_IN_LIST(userHome)
#if !(defined(_WIN32) || defined(__APPLE__) || defined(__ANDROID__))
FFstrbuf xdgConfigDirs;
ffStrbufInitA(&xdgConfigDirs, 64);
ffStrbufAppendS(&xdgConfigDirs, getenv("XDG_CONFIG_DIRS"));
uint32_t startIndex = 0;
while (startIndex < xdgConfigDirs.length)
{
uint32_t colonIndex = ffStrbufNextIndexC(&xdgConfigDirs, startIndex, ':');
xdgConfigDirs.chars[colonIndex] = '\0';
if(!ffStrSet(xdgConfigDirs.chars + startIndex))
{
startIndex = colonIndex + 1;
continue;
}
FFstrbuf* buffer = (FFstrbuf*) ffListAdd(&state->configDirs);
ffStrbufInitA(buffer, 64);
ffStrbufAppendS(buffer, xdgConfigDirs.chars + startIndex);
ffStrbufEnsureEndsWithC(buffer, '/');
FF_ENSURE_ONLY_ONCE_IN_LIST(buffer);
startIndex = colonIndex + 1;
}
ffStrbufDestroy(&xdgConfigDirs);
FFstrbuf* systemConfigHome = ffListAdd(&state->configDirs);
ffStrbufInitA(systemConfigHome, 64);
ffStrbufAppendS(systemConfigHome, FASTFETCH_TARGET_DIR_ETC"/xdg/");
FF_ENSURE_ONLY_ONCE_IN_LIST(systemConfigHome)
#endif
FFstrbuf* systemConfig = ffListAdd(&state->configDirs);
ffStrbufInitA(systemConfig, 64);
ffStrbufAppendS(systemConfig, FASTFETCH_TARGET_DIR_ETC"/");
FF_ENSURE_ONLY_ONCE_IN_LIST(systemConfig)
#undef FF_ENSURE_ONLY_ONCE_IN_LIST
}
FFinstance instance; // Global singleton
static void initState(FFstate* state)
{
#ifdef WIN32
//https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/setlocale-wsetlocale?source=recommendations&view=msvc-170#utf-8-support
setlocale(LC_ALL, ".UTF8");
#endif
state->logoWidth = 0;
state->logoHeight = 0;
state->keysHeight = 0;
#ifndef WIN32
state->passwd = getpwuid(getuid());
state->terminalLightTheme = false;
ffPlatformInit(&state->platform);
state->configDoc = NULL;
state->resultDoc = NULL;
{
// don't enable bright color if the terminal is in light mode
FFTerminalThemeResult result;
if (ffDetectTerminalTheme(&result, true /* forceEnv for performance */) && !result.bg.dark)
state->terminalLightTheme = true;
}
}
static void defaultConfig(void)
{
ffOptionsInitLogo(&instance.config.logo);
ffOptionsInitGeneral(&instance.config.general);
ffOptionsInitModules(&instance.config.modules);
ffOptionsInitDisplay(&instance.config.display);
ffOptionsInitLibrary(&instance.config.library);
}
void ffInitInstance(void)
{
#ifdef WIN32
//https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/setlocale-wsetlocale?source=recommendations&view=msvc-170#utf-8-support
setlocale(LC_ALL, ".UTF8");
#else
state->passwd = ffGetPasswd();
#endif
uname(&state->utsname);
initConfigDirs(state);
}
static void initModuleArg(FFModuleArgs* args)
{
ffStrbufInit(&args->key);
ffStrbufInit(&args->outputFormat);
ffStrbufInit(&args->errorFormat);
}
static void defaultConfig(FFinstance* instance)
{
ffStrbufInitA(&instance->config.logo.source, 0);
instance->config.logo.type = FF_LOGO_TYPE_AUTO;
for(uint8_t i = 0; i < (uint8_t) FASTFETCH_LOGO_MAX_COLORS; ++i)
ffStrbufInit(&instance->config.logo.colors[i]);
instance->config.logo.width = 0;
instance->config.logo.height = 0; //preserve aspect ratio
instance->config.logo.paddingLeft = 0;
instance->config.logo.paddingRight = 4;
instance->config.logo.printRemaining = true;
instance->config.logo.preserveAspectRadio = false;
instance->config.logo.chafaFgOnly = false;
ffStrbufInitS(&instance->config.logo.chafaSymbols, "block+border+space-wide-inverted"); // Chafa default
instance->config.logo.chafaCanvasMode = UINT32_MAX;
instance->config.logo.chafaColorSpace = UINT32_MAX;
instance->config.logo.chafaDitherMode = UINT32_MAX;
ffStrbufInit(&instance->config.colorKeys);
ffStrbufInit(&instance->config.colorTitle);
ffStrbufInit(&instance->config.separator);
ffStrbufAppendS(&instance->config.separator, ": ");
instance->config.showErrors = false;
instance->config.recache = false;
instance->config.allowSlowOperations = false;
instance->config.disableLinewrap = true;
instance->config.hideCursor = true;
instance->config.escapeBedrock = true;
instance->config.binaryPrefixType = FF_BINARY_PREFIX_TYPE_IEC;
instance->config.glType = FF_GL_TYPE_AUTO;
instance->config.pipe = false;
instance->config.multithreading = true;
instance->config.stat = false;
initModuleArg(&instance->config.os);
initModuleArg(&instance->config.host);
initModuleArg(&instance->config.bios);
initModuleArg(&instance->config.board);
initModuleArg(&instance->config.chassis);
initModuleArg(&instance->config.kernel);
initModuleArg(&instance->config.uptime);
initModuleArg(&instance->config.processes);
initModuleArg(&instance->config.packages);
initModuleArg(&instance->config.shell);
initModuleArg(&instance->config.resolution);
initModuleArg(&instance->config.de);
initModuleArg(&instance->config.wm);
initModuleArg(&instance->config.wmTheme);
initModuleArg(&instance->config.theme);
initModuleArg(&instance->config.icons);
initModuleArg(&instance->config.font);
initModuleArg(&instance->config.cursor);
initModuleArg(&instance->config.terminal);
initModuleArg(&instance->config.terminalFont);
initModuleArg(&instance->config.cpu);
initModuleArg(&instance->config.cpuUsage);
initModuleArg(&instance->config.gpu);
initModuleArg(&instance->config.memory);
initModuleArg(&instance->config.swap);
initModuleArg(&instance->config.disk);
initModuleArg(&instance->config.battery);
initModuleArg(&instance->config.powerAdapter);
initModuleArg(&instance->config.locale);
initModuleArg(&instance->config.localIP);
initModuleArg(&instance->config.publicIP);
initModuleArg(&instance->config.weather);
initModuleArg(&instance->config.wifi);
initModuleArg(&instance->config.player);
initModuleArg(&instance->config.media);
initModuleArg(&instance->config.dateTime);
initModuleArg(&instance->config.date);
initModuleArg(&instance->config.time);
initModuleArg(&instance->config.vulkan);
initModuleArg(&instance->config.openGL);
initModuleArg(&instance->config.openCL);
initModuleArg(&instance->config.users);
ffStrbufInitA(&instance->config.libPCI, 0);
ffStrbufInitA(&instance->config.libVulkan, 0);
ffStrbufInitA(&instance->config.libWayland, 0);
ffStrbufInitA(&instance->config.libXcbRandr, 0);
ffStrbufInitA(&instance->config.libXcb, 0);
ffStrbufInitA(&instance->config.libXrandr, 0);
ffStrbufInitA(&instance->config.libX11, 0);
ffStrbufInitA(&instance->config.libGIO, 0);
ffStrbufInitA(&instance->config.libDConf, 0);
ffStrbufInitA(&instance->config.libDBus, 0);
ffStrbufInitA(&instance->config.libXFConf, 0);
ffStrbufInitA(&instance->config.libSQLite3, 0);
ffStrbufInitA(&instance->config.librpm, 0);
ffStrbufInitA(&instance->config.libImageMagick, 0);
ffStrbufInitA(&instance->config.libZ, 0);
ffStrbufInitA(&instance->config.libChafa, 0);
ffStrbufInitA(&instance->config.libEGL, 0);
ffStrbufInitA(&instance->config.libGLX, 0);
ffStrbufInitA(&instance->config.libOSMesa, 0);
ffStrbufInitA(&instance->config.libOpenCL, 0);
ffStrbufInitA(&instance->config.libcJSON, 0);
ffStrbufInitA(&instance->config.libfreetype, 0);
ffStrbufInit(&instance->config.libwlanapi);
instance->config.cpuTemp = false;
instance->config.gpuTemp = false;
instance->config.batteryTemp = false;
instance->config.titleFQDN = false;
ffStrbufInitA(&instance->config.diskFolders, 0);
instance->config.diskShowRemovable = true;
instance->config.diskShowHidden = false;
ffStrbufInitA(&instance->config.batteryDir, 0);
ffStrbufInitA(&instance->config.separatorString, 0);
instance->config.localIpShowIpV4 = true;
instance->config.localIpShowIpV6 = false;
instance->config.localIpShowLoop = false;
ffStrbufInit(&instance->config.localIpNamePrefix);
instance->config.publicIpTimeout = 0;
ffStrbufInit(&instance->config.publicIpUrl);
instance->config.weatherTimeout = 0;
ffStrbufInitS(&instance->config.weatherOutputFormat, "%t+-+%C+(%l)");
ffStrbufInitA(&instance->config.osFile, 0);
ffStrbufInitA(&instance->config.playerName, 0);
instance->config.percentType = 1;
}
void ffInitInstance(FFinstance* instance)
{
initState(&instance->state);
defaultConfig(instance);
}
#ifdef FF_HAVE_THREADS
FF_THREAD_ENTRY_DECL_WRAPPER(ffConnectDisplayServer, FFinstance*)
#if !(defined(__APPLE__) || defined(_WIN32))
#define FF_DETECT_QT_GTK 1
FF_THREAD_ENTRY_DECL_WRAPPER(ffDetectQt, FFinstance*)
FF_THREAD_ENTRY_DECL_WRAPPER(ffDetectGTK2, FFinstance*)
FF_THREAD_ENTRY_DECL_WRAPPER(ffDetectGTK3, FFinstance*)
FF_THREAD_ENTRY_DECL_WRAPPER(ffDetectGTK4, FFinstance*)
#endif //!(defined(__APPLE__) || defined(_WIN32))
#endif //FF_HAVE_THREADS
void startDetectionThreads(FFinstance* instance)
{
#ifdef FF_HAVE_THREADS
ffThreadDetach(ffThreadCreate(ffConnectDisplayServerThreadMain, instance));
#ifdef FF_DETECT_QT_GTK
ffThreadDetach(ffThreadCreate(ffDetectQtThreadMain, instance));
ffThreadDetach(ffThreadCreate(ffDetectGTK2ThreadMain, instance));
ffThreadDetach(ffThreadCreate(ffDetectGTK3ThreadMain, instance));
ffThreadDetach(ffThreadCreate(ffDetectGTK4ThreadMain, instance));
// Never use `setlocale(LC_ALL, "")`
setlocale(LC_TIME, "");
setlocale(LC_NUMERIC, "");
#ifdef LC_MESSAGES
setlocale(LC_MESSAGES, "");
#endif
#endif
#else
FF_UNUSED(instance);
#endif
initState(&instance.state);
defaultConfig();
}
static volatile bool ffDisableLinewrap = true;
static volatile bool ffHideCursor = true;
static void resetConsole()
static void resetConsole(void)
{
if(ffDisableLinewrap)
fputs("\033[?7h", stdout);
if(ffHideCursor)
fputs("\033[?25h", stdout);
#if defined(_WIN32)
fflush(stdout);
#endif
}
#ifdef _WIN32
BOOL WINAPI consoleHandler(DWORD signal)
{
FF_UNUSED(signal);
resetConsole();
resetConsole();
exit(0);
}
#else
@@ -326,18 +96,21 @@ static void exitSignalHandler(int signal)
}
#endif
void ffStart(FFinstance* instance)
void ffStart(void)
{
if(instance->config.multithreading)
startDetectionThreads(instance);
#ifdef FF_START_DETECTION_THREADS
if(instance.config.general.multithreading)
startDetectionThreads();
#endif
ffDisableLinewrap = instance->config.disableLinewrap && !instance->config.pipe;
ffHideCursor = instance->config.hideCursor && !instance->config.pipe;
ffDisableLinewrap = instance.config.display.disableLinewrap && !instance.config.display.pipe && !instance.state.resultDoc;
ffHideCursor = instance.config.display.hideCursor && !instance.config.display.pipe && !instance.state.resultDoc;
#ifdef _WIN32
#ifdef FF_ENABLE_BUFFER
if (instance.config.display.noBuffer)
setvbuf(stdout, NULL, _IONBF, 0);
else
setvbuf(stdout, NULL, _IOFBF, 4096);
#endif
SetConsoleCtrlHandler(consoleHandler, TRUE);
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD mode = 0;
@@ -345,9 +118,7 @@ void ffStart(FFinstance* instance)
SetConsoleMode(hStdout, mode | ENABLE_PROCESSED_OUTPUT | ENABLE_VIRTUAL_TERMINAL_PROCESSING);
SetConsoleOutputCP(CP_UTF8);
#else
#ifndef FF_ENABLE_BUFFER
setvbuf(stdout, NULL, _IONBF, 0);
#endif
if (instance.config.display.noBuffer) setvbuf(stdout, NULL, _IONBF, 0);
struct sigaction action = { .sa_handler = exitSignalHandler };
sigaction(SIGINT, &action, NULL);
sigaction(SIGTERM, &action, NULL);
@@ -355,7 +126,7 @@ void ffStart(FFinstance* instance)
#endif
//reset everything to default before we start printing
if(!instance->config.pipe)
if(!instance.config.display.pipe && !instance.state.resultDoc)
fputs(FASTFETCH_TEXT_MODIFIER_RESET, stdout);
if(ffHideCursor)
@@ -364,129 +135,46 @@ void ffStart(FFinstance* instance)
if(ffDisableLinewrap)
fputs("\033[?7l", stdout);
ffLogoPrint(instance);
ffLogoPrint();
}
void ffFinish(FFinstance* instance)
void ffFinish(void)
{
if(instance->config.logo.printRemaining)
ffLogoPrintRemaining(instance);
if(instance.config.logo.printRemaining)
ffLogoPrintRemaining();
resetConsole();
}
static void destroyModuleArg(FFModuleArgs* args)
static void destroyConfig(void)
{
ffStrbufDestroy(&args->key);
ffStrbufDestroy(&args->outputFormat);
ffStrbufDestroy(&args->errorFormat);
ffOptionsDestroyLogo(&instance.config.logo);
ffOptionsDestroyGeneral(&instance.config.general);
ffOptionsDestroyModules(&instance.config.modules);
ffOptionsDestroyDisplay(&instance.config.display);
ffOptionsDestroyLibrary(&instance.config.library);
}
static void destroyConfig(FFinstance* instance)
static void destroyState(void)
{
ffStrbufDestroy(&instance->config.logo.source);
ffStrbufDestroy(&instance->config.logo.chafaSymbols);
for(uint8_t i = 0; i < (uint8_t) FASTFETCH_LOGO_MAX_COLORS; ++i)
ffStrbufDestroy(&instance->config.logo.colors[i]);
ffStrbufDestroy(&instance->config.colorKeys);
ffStrbufDestroy(&instance->config.colorTitle);
ffStrbufDestroy(&instance->config.separator);
destroyModuleArg(&instance->config.os);
destroyModuleArg(&instance->config.host);
destroyModuleArg(&instance->config.bios);
destroyModuleArg(&instance->config.board);
destroyModuleArg(&instance->config.kernel);
destroyModuleArg(&instance->config.uptime);
destroyModuleArg(&instance->config.processes);
destroyModuleArg(&instance->config.packages);
destroyModuleArg(&instance->config.shell);
destroyModuleArg(&instance->config.resolution);
destroyModuleArg(&instance->config.de);
destroyModuleArg(&instance->config.wm);
destroyModuleArg(&instance->config.wmTheme);
destroyModuleArg(&instance->config.theme);
destroyModuleArg(&instance->config.icons);
destroyModuleArg(&instance->config.font);
destroyModuleArg(&instance->config.cursor);
destroyModuleArg(&instance->config.terminal);
destroyModuleArg(&instance->config.terminalFont);
destroyModuleArg(&instance->config.cpu);
destroyModuleArg(&instance->config.cpuUsage);
destroyModuleArg(&instance->config.gpu);
destroyModuleArg(&instance->config.memory);
destroyModuleArg(&instance->config.swap);
destroyModuleArg(&instance->config.disk);
destroyModuleArg(&instance->config.battery);
destroyModuleArg(&instance->config.powerAdapter);
destroyModuleArg(&instance->config.locale);
destroyModuleArg(&instance->config.localIP);
destroyModuleArg(&instance->config.publicIP);
destroyModuleArg(&instance->config.weather);
destroyModuleArg(&instance->config.wifi);
destroyModuleArg(&instance->config.player);
destroyModuleArg(&instance->config.media);
destroyModuleArg(&instance->config.dateTime);
destroyModuleArg(&instance->config.date);
destroyModuleArg(&instance->config.time);
destroyModuleArg(&instance->config.vulkan);
destroyModuleArg(&instance->config.openGL);
destroyModuleArg(&instance->config.openCL);
destroyModuleArg(&instance->config.users);
ffStrbufDestroy(&instance->config.libPCI);
ffStrbufDestroy(&instance->config.libVulkan);
ffStrbufDestroy(&instance->config.libWayland);
ffStrbufDestroy(&instance->config.libXcbRandr);
ffStrbufDestroy(&instance->config.libXcb);
ffStrbufDestroy(&instance->config.libXrandr);
ffStrbufDestroy(&instance->config.libX11);
ffStrbufDestroy(&instance->config.libGIO);
ffStrbufDestroy(&instance->config.libDConf);
ffStrbufDestroy(&instance->config.libDBus);
ffStrbufDestroy(&instance->config.libXFConf);
ffStrbufDestroy(&instance->config.libSQLite3);
ffStrbufDestroy(&instance->config.librpm);
ffStrbufDestroy(&instance->config.libImageMagick);
ffStrbufDestroy(&instance->config.libZ);
ffStrbufDestroy(&instance->config.libChafa);
ffStrbufDestroy(&instance->config.libEGL);
ffStrbufDestroy(&instance->config.libGLX);
ffStrbufDestroy(&instance->config.libOSMesa);
ffStrbufDestroy(&instance->config.libOpenCL);
ffStrbufDestroy(&instance->config.libcJSON);
ffStrbufDestroy(&instance->config.libfreetype);
ffStrbufDestroy(&instance->config.libwlanapi);
ffStrbufDestroy(&instance->config.diskFolders);
ffStrbufDestroy(&instance->config.batteryDir);
ffStrbufDestroy(&instance->config.separatorString);
ffStrbufDestroy(&instance->config.localIpNamePrefix);
ffStrbufDestroy(&instance->config.publicIpUrl);
ffStrbufDestroy(&instance->config.weatherOutputFormat);
ffStrbufDestroy(&instance->config.osFile);
ffStrbufDestroy(&instance->config.playerName);
ffPlatformDestroy(&instance.state.platform);
yyjson_doc_free(instance.state.configDoc);
yyjson_mut_doc_free(instance.state.resultDoc);
ffStrbufDestroy(&instance.state.genConfigPath);
}
static void destroyState(FFinstance* instance)
void ffDestroyInstance(void)
{
for(uint32_t i = 0; i < instance->state.configDirs.length; ++i)
ffStrbufDestroy((FFstrbuf*)ffListGet(&instance->state.configDirs, i));
ffListDestroy(&instance->state.configDirs);
}
void ffDestroyInstance(FFinstance* instance)
{
destroyConfig(instance);
destroyState(instance);
destroyConfig();
destroyState();
}
//Must be in a file compiled with the libfastfetch target, because the FF_HAVE* macros are not defined for the executable targets
void ffListFeatures()
void ffListFeatures(void)
{
fputs(
#ifdef FF_HAVE_LIBPCI
"libpci\n"
#ifdef FF_HAVE_THREADS
"threads\n"
#endif
#ifdef FF_HAVE_VULKAN
"vulkan\n"
@@ -506,6 +194,9 @@ void ffListFeatures()
#ifdef FF_HAVE_X11
"x11\n"
#endif
#ifdef FF_HAVE_DRM
"drm\n"
#endif
#ifdef FF_HAVE_GIO
"gio\n"
#endif
@@ -548,11 +239,29 @@ void ffListFeatures()
#ifdef FF_HAVE_OPENCL
"opencl\n"
#endif
#ifdef FF_HAVE_LIBCJSON
"libcjson\n"
#endif
#ifdef FF_HAVE_FREETYPE
"freetype"
"freetype\n"
#endif
#ifdef FF_HAVE_PULSE
"libpulse\n"
#endif
#ifdef FF_HAVE_LIBNM
"libnm\n"
#endif
#ifdef FF_HAVE_DDCUTIL
"libddcutil\n"
#endif
#ifdef FF_HAVE_DIRECTX_HEADERS
"Directx Headers\n"
#endif
#ifdef FF_USE_SYSTEM_YYJSON
"System yyjson\n"
#endif
#if __has_include(<linux/videodev2.h>)
"linux/videodev2\n"
#endif
#if __has_include(<linux/wireless.h>)
"linux/wireless\n"
#endif
""
, stdout);
-285
View File
@@ -1,285 +0,0 @@
#include "fastfetch.h"
#include "common/io.h"
#include <unistd.h>
#include <fcntl.h>
#ifdef _WIN32
#include <fileapi.h>
#else
#include <termios.h>
#include <poll.h>
#endif
static void createSubfolders(const char* fileName)
{
FFstrbuf path;
ffStrbufInit(&path);
while(*fileName != '\0')
{
ffStrbufAppendC(&path, *fileName);
if(*fileName == '/')
{
mkdir(path.chars
#ifndef WIN32
, S_IRWXU | S_IRGRP | S_IROTH
#endif
);
}
++fileName;
}
ffStrbufDestroy(&path);
}
bool ffWriteFDBuffer(int fd, const FFstrbuf* content)
{
return write(fd, content->chars, content->length) != -1;
}
bool ffWriteFileData(const char* fileName, size_t dataSize, const void* data)
{
#ifdef _WIN32
HANDLE handle = CreateFileA(fileName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(handle == INVALID_HANDLE_VALUE)
{
createSubfolders(fileName);
handle = CreateFileA(fileName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(handle == INVALID_HANDLE_VALUE)
return false;
}
DWORD written;
bool ret = !!WriteFile(handle, data, (DWORD)dataSize, &written, NULL);
CloseHandle(handle);
#else
int openFlagsModes = O_WRONLY | O_CREAT | O_TRUNC;
int openFlagsRights = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
int fd = open(fileName, openFlagsModes, openFlagsRights);
if(fd == -1)
{
createSubfolders(fileName);
fd = open(fileName, openFlagsModes, openFlagsRights);
if(fd == -1)
return false;
}
bool ret = write(fd, data, dataSize) != -1;
close(fd);
#endif
return ret;
}
bool ffWriteFileBuffer(const char* fileName, const FFstrbuf* buffer)
{
return ffWriteFileData(fileName, buffer->length, buffer->chars);
}
#ifdef _WIN32
bool ffAppendHandleBuffer(HANDLE handle, FFstrbuf* buffer)
{
DWORD readed = 0;
LARGE_INTEGER fileSize;
if(!GetFileSizeEx(handle, &fileSize))
fileSize.QuadPart = 0;
ffStrbufEnsureFree(buffer, fileSize.QuadPart > 0 ? (uint32_t)fileSize.QuadPart : 31);
uint32_t free = ffStrbufGetFree(buffer);
bool success;
while(
(success = !!ReadFile(handle, buffer->chars + buffer->length, free, &readed, NULL)) &&
(uint32_t) readed == free
) {
buffer->length += (uint32_t) readed;
ffStrbufEnsureFree(buffer, buffer->allocated - 1); // Doubles capacity every round. -1 for the null byte.
free = ffStrbufGetFree(buffer);
}
if(readed > 0)
buffer->length += (uint32_t) readed;
buffer->chars[buffer->length] = '\0';
ffStrbufTrimRight(buffer, '\n');
ffStrbufTrimRight(buffer, ' ');
return success;
}
#endif
bool ffAppendFDBuffer(int fd, FFstrbuf* buffer)
{
ssize_t readed = 0;
struct stat fileInfo;
if(fstat(fd, &fileInfo) != 0)
return false;
ffStrbufEnsureFree(buffer, fileInfo.st_size > 0 ? (uint32_t)fileInfo.st_size : 31);
uint32_t free = ffStrbufGetFree(buffer);
while(
(readed = read(fd, buffer->chars + buffer->length, free)) > 0 &&
(uint32_t) readed == free
) {
buffer->length += (uint32_t) readed;
ffStrbufEnsureFree(buffer, buffer->allocated - 1); // Doubles capacity every round. -1 for the null byte.
free = ffStrbufGetFree(buffer);
}
// In case of failure, read returns -1. We don't want to substract the length of the buffer.
if(readed > 0)
buffer->length += (uint32_t) readed;
buffer->chars[buffer->length] = '\0';
ffStrbufTrimRight(buffer, '\n');
ffStrbufTrimRight(buffer, ' ');
return readed >= 0;
}
ssize_t ffReadFileData(const char* fileName, size_t dataSize, void* data)
{
#ifdef _WIN32
HANDLE handle = CreateFileA(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(handle == INVALID_HANDLE_VALUE)
return false;
DWORD readed;
if(!ReadFile(handle, data, (DWORD)dataSize, &readed, NULL))
return -1;
return (ssize_t)readed;
#else
int fd = open(fileName, O_RDONLY);
if(fd == -1)
return -1;
ssize_t readed = read(fd, data, dataSize);
close(fd);
return readed;
#endif
}
bool ffAppendFileBuffer(const char* fileName, FFstrbuf* buffer)
{
#ifdef _WIN32
HANDLE handle = CreateFileA(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(handle == INVALID_HANDLE_VALUE)
return false;
bool ret = ffAppendHandleBuffer(handle, buffer);
CloseHandle(handle);
#else
int fd = open(fileName, O_RDONLY);
if(fd == -1)
return false;
bool ret = ffAppendFDBuffer(fd, buffer);
close(fd);
#endif
return ret;
}
bool ffReadFileBuffer(const char* fileName, FFstrbuf* buffer)
{
ffStrbufClear(buffer);
return ffAppendFileBuffer(fileName, buffer);
}
// Not thread safe!
void ffSuppressIO(bool suppress)
{
static bool init = false;
static int origOut = -1;
static int origErr = -1;
static int nullFile = -1;
if(!init)
{
if(!suppress)
return;
origOut = dup(STDOUT_FILENO);
origErr = dup(STDERR_FILENO);
nullFile = open("/dev/null", O_WRONLY);
init = true;
}
if(nullFile == -1)
return;
fflush(stdout);
fflush(stderr);
dup2(suppress ? nullFile : origOut, STDOUT_FILENO);
dup2(suppress ? nullFile : origErr, STDERR_FILENO);
}
bool ffFileExists(const char* fileName, mode_t mode)
{
struct stat fileStat;
return stat(fileName, &fileStat) == 0 && ((fileStat.st_mode & S_IFMT) == mode);
}
void ffGetTerminalResponse(const char* request, const char* format, ...)
{
#ifndef WIN32
struct termios oldTerm, newTerm;
if(tcgetattr(STDIN_FILENO, &oldTerm) == -1)
return;
newTerm = oldTerm;
newTerm.c_lflag &= (tcflag_t) ~(ICANON | ECHO);
if(tcsetattr(STDIN_FILENO, TCSANOW, &newTerm) == -1)
return;
fputs(request, stdout);
fflush(stdout);
struct pollfd pfd;
pfd.fd = STDIN_FILENO;
pfd.events = POLLIN;
pfd.revents = 0;
//Give the terminal 35ms to respond
if(poll(&pfd, 1, 35) <= 0)
{
tcsetattr(STDIN_FILENO, TCSANOW, &oldTerm);
return;
}
char buffer[512];
ssize_t readed = read(STDIN_FILENO, buffer, sizeof(buffer) - 1);
tcsetattr(STDIN_FILENO, TCSANOW, &oldTerm);
if(readed <= 0)
return;
buffer[readed] = '\0';
va_list args;
va_start(args, format);
vsscanf(buffer, format, args);
va_end(args);
#else
//Unimplemented
FF_UNUSED(request, format);
#endif
}
-30
View File
@@ -1,30 +0,0 @@
#pragma once
#ifndef FF_INCLUDED_common_io
#define FF_INCLUDED_common_io
#include "fastfetch.h"
#include <sys/stat.h> //mode_t, fstat, stat
bool ffWriteFDBuffer(int fd, const FFstrbuf* content);
bool ffWriteFileData(const char* fileName, size_t dataSize, const void* data);
bool ffWriteFileBuffer(const char* fileName, const FFstrbuf* buffer);
bool ffAppendFDBuffer(int fd, FFstrbuf* buffer);
ssize_t ffReadFileData(const char* fileName, size_t dataSize, void* data);
bool ffAppendFileBuffer(const char* fileName, FFstrbuf* buffer);
bool ffReadFileBuffer(const char* fileName, FFstrbuf* buffer);
#ifdef _WIN32
bool ffAppendHandleBuffer(HANDLE handle, FFstrbuf* buffer);
#endif
bool ffFileExists(const char* fileName, mode_t mode);
// Not thread safe!
void ffSuppressIO(bool suppress);
FF_C_SCANF(2, 3) void ffGetTerminalResponse(const char* request, const char* format, ...);
#endif
+203
View File
@@ -0,0 +1,203 @@
#pragma once
#include "util/FFstrbuf.h"
#include "util/FFlist.h"
#ifdef _WIN32
#include <fileapi.h>
#include <handleapi.h>
#include <io.h>
typedef HANDLE FFNativeFD;
#else
#include <unistd.h>
#include <dirent.h>
#include <sys/stat.h>
typedef int FFNativeFD;
// procfs's file can be changed between read calls such as /proc/meminfo and /proc/uptime.
// one safe way to read correct data is reading the whole file in a single read syscall
// 8192 comes from procps-ng: https://gitlab.com/procps-ng/procps/-/blob/master/library/meminfo.c?ref_type=heads#L39
#define PROC_FILE_BUFFSIZ 8192
#endif
static inline FFNativeFD FFUnixFD2NativeFD(int unixfd)
{
#ifndef _WIN32
return unixfd;
#else
return (FFNativeFD) _get_osfhandle(unixfd);
#endif
}
static inline bool ffWriteFDData(FFNativeFD fd, size_t dataSize, const void* data)
{
#ifndef _WIN32
return write(fd, data, dataSize) != -1;
#else
DWORD written;
return WriteFile(fd, data, (DWORD) dataSize, &written, NULL) && written == dataSize;
#endif
}
static inline bool ffWriteFDBuffer(FFNativeFD fd, const FFstrbuf* content)
{
return ffWriteFDData(fd, content->length, content->chars);
}
bool ffWriteFileData(const char* fileName, size_t dataSize, const void* data);
static inline bool ffWriteFileBuffer(const char* fileName, const FFstrbuf* buffer)
{
return ffWriteFileData(fileName, buffer->length, buffer->chars);
}
static inline ssize_t ffReadFDData(FFNativeFD fd, size_t dataSize, void* data)
{
#ifndef _WIN32
return read(fd, data, dataSize);
#else
DWORD bytesRead;
if(!ReadFile(fd, data, (DWORD)dataSize, &bytesRead, NULL))
return -1;
return (ssize_t)bytesRead;
#endif
}
ssize_t ffReadFileData(const char* fileName, size_t dataSize, void* data);
bool ffAppendFDBuffer(FFNativeFD fd, FFstrbuf* buffer);
bool ffAppendFileBuffer(const char* fileName, FFstrbuf* buffer);
static inline bool ffReadFileBuffer(const char* fileName, FFstrbuf* buffer)
{
ffStrbufClear(buffer);
return ffAppendFileBuffer(fileName, buffer);
}
//Bit flags, combine with |
typedef enum FFPathType
{
FF_PATHTYPE_FILE = 1 << 0,
FF_PATHTYPE_DIRECTORY = 1 << 1,
FF_PATHTYPE_ANY = FF_PATHTYPE_FILE | FF_PATHTYPE_DIRECTORY,
} FFPathType;
static inline bool ffPathExists(const char* path, FFPathType pathType)
{
#ifdef _WIN32
DWORD attr = GetFileAttributesA(path);
if(attr == INVALID_FILE_ATTRIBUTES)
return false;
if(pathType & FF_PATHTYPE_FILE && !(attr & FILE_ATTRIBUTE_DIRECTORY))
return true;
if(pathType & FF_PATHTYPE_DIRECTORY && (attr & FILE_ATTRIBUTE_DIRECTORY))
return true;
#else
struct stat fileStat;
if(stat(path, &fileStat) != 0)
return false;
unsigned int mode = fileStat.st_mode & S_IFMT;
if(pathType & FF_PATHTYPE_FILE && mode != S_IFDIR)
return true;
if(pathType & FF_PATHTYPE_DIRECTORY && mode == S_IFDIR)
return true;
#endif
return false;
}
bool ffPathExpandEnv(const char* in, FFstrbuf* out);
#define FF_IO_TERM_RESP_WAIT_MS 100 // #554
FF_C_SCANF(2, 3)
const char* ffGetTerminalResponse(const char* request, const char* format, ...);
// Not thread safe!
bool ffSuppressIO(bool suppress);
static inline void ffUnsuppressIO(bool* suppressed)
{
if (!*suppressed) return;
ffSuppressIO(false);
*suppressed = false;
}
#define FF_SUPPRESS_IO() bool __attribute__((__cleanup__(ffUnsuppressIO), __unused__)) io_suppressed__ = ffSuppressIO(true)
void ffListFilesRecursively(const char* path, bool pretty);
static inline bool wrapClose(FFNativeFD* pfd)
{
assert(pfd);
#ifndef WIN32
if (*pfd < 0)
return false;
close(*pfd);
#else
// https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443
if (*pfd == NULL || *pfd == INVALID_HANDLE_VALUE)
return false;
CloseHandle(*pfd);
#endif
return true;
}
#define FF_AUTO_CLOSE_FD __attribute__((__cleanup__(wrapClose)))
static inline bool wrapFclose(FILE** pfile)
{
assert(pfile);
if (!*pfile)
return false;
fclose(*pfile);
return true;
}
#define FF_AUTO_CLOSE_FILE __attribute__((__cleanup__(wrapFclose)))
#ifndef _WIN32
static inline bool wrapClosedir(DIR** pdir)
{
assert(pdir);
if (!*pdir)
return false;
closedir(*pdir);
return true;
}
#else
static inline bool wrapClosedir(HANDLE* pdir)
{
assert(pdir);
if (!*pdir)
return false;
FindClose(*pdir);
return true;
}
#endif
#define FF_AUTO_CLOSE_DIR __attribute__((__cleanup__(wrapClosedir)))
static inline bool ffSearchUserConfigFile(const FFlist* configDirs, const char* fileSubpath, FFstrbuf* result)
{
// configDirs is a list of FFstrbufs include the trailing slash
FF_LIST_FOR_EACH(FFstrbuf, dir, *configDirs)
{
ffStrbufClear(result);
ffStrbufAppend(result, dir);
ffStrbufAppendS(result, fileSubpath);
if (ffPathExists(result->chars, FF_PATHTYPE_FILE))
return true;
}
return false;
}
+287
View File
@@ -0,0 +1,287 @@
#include "io.h"
#include "fastfetch.h"
#include "util/stringUtils.h"
#include <fcntl.h>
#include <termios.h>
#include <poll.h>
#include <dirent.h>
#include <errno.h>
#if __has_include(<wordexp.h>)
#include <wordexp.h>
#endif
static void createSubfolders(const char* fileName)
{
FF_STRBUF_AUTO_DESTROY path = ffStrbufCreate();
char *token = NULL;
while((token = strchr(fileName, '/')) != NULL)
{
ffStrbufAppendNS(&path, (uint32_t)(token - fileName + 1), fileName);
mkdir(path.chars, S_IRWXU | S_IRGRP | S_IROTH);
fileName = token + 1;
}
}
bool ffWriteFileData(const char* fileName, size_t dataSize, const void* data)
{
int openFlagsModes = O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC;
int openFlagsRights = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
int FF_AUTO_CLOSE_FD fd = open(fileName, openFlagsModes, openFlagsRights);
if(fd == -1)
{
if (errno == ENOENT)
{
createSubfolders(fileName);
fd = open(fileName, openFlagsModes, openFlagsRights);
if(fd == -1)
return false;
}
else
return false;
}
return write(fd, data, dataSize) > 0;
}
static inline void readWithLength(int fd, FFstrbuf* buffer, uint32_t length)
{
ffStrbufEnsureFixedLengthFree(buffer, length);
ssize_t bytesRead = 0;
while(
length > 0 && (bytesRead = read(fd, buffer->chars + buffer->length, length)) > 0
) {
buffer->length += (uint32_t) bytesRead;
length -= (uint32_t) bytesRead;
}
}
static inline void readUntilEOF(int fd, FFstrbuf* buffer)
{
ffStrbufEnsureFree(buffer, 31);
uint32_t available = ffStrbufGetFree(buffer);
ssize_t bytesRead = 0;
while(
(bytesRead = read(fd, buffer->chars + buffer->length, available)) > 0
) {
buffer->length += (uint32_t) bytesRead;
if((uint32_t) bytesRead == available)
ffStrbufEnsureFree(buffer, buffer->allocated - 1); // Doubles capacity every round. -1 for the null byte.
available = ffStrbufGetFree(buffer);
}
}
bool ffAppendFDBuffer(int fd, FFstrbuf* buffer)
{
struct stat fileInfo;
if(fstat(fd, &fileInfo) != 0)
return false;
if (fileInfo.st_size > 0)
readWithLength(fd, buffer, (uint32_t)fileInfo.st_size);
else
readUntilEOF(fd, buffer);
buffer->chars[buffer->length] = '\0';
return buffer->length > 0;
}
ssize_t ffReadFileData(const char* fileName, size_t dataSize, void* data)
{
int FF_AUTO_CLOSE_FD fd = open(fileName, O_RDONLY | O_CLOEXEC);
if(fd == -1)
return -1;
return ffReadFDData(fd, dataSize, data);
}
bool ffAppendFileBuffer(const char* fileName, FFstrbuf* buffer)
{
int FF_AUTO_CLOSE_FD fd = open(fileName, O_RDONLY | O_CLOEXEC);
if(fd == -1)
return false;
return ffAppendFDBuffer(fd, buffer);
}
bool ffPathExpandEnv(FF_MAYBE_UNUSED const char* in, FF_MAYBE_UNUSED FFstrbuf* out)
{
bool result = false;
#if __has_include(<wordexp.h>) // https://github.com/termux/termux-packages/pull/7056
wordexp_t exp;
if(wordexp(in, &exp, 0) != 0)
return false;
if (exp.we_wordc == 1)
{
result = true;
ffStrbufSetS(out, exp.we_wordv[0]);
}
wordfree(&exp);
#endif
return result;
}
const char* ffGetTerminalResponse(const char* request, const char* format, ...)
{
int fin = STDIN_FILENO, fout = STDOUT_FILENO;
FF_AUTO_CLOSE_FD int ftty = -1;
if (!isatty(STDIN_FILENO))
{
if (ftty < 0)
ftty = open("/dev/tty", O_RDWR | O_NOCTTY | O_CLOEXEC);
fin = ftty;
}
if (!isatty(STDOUT_FILENO))
{
if (ftty < 0)
ftty = open("/dev/tty", O_RDWR | O_NOCTTY | O_CLOEXEC);
fout = ftty;
}
struct termios oldTerm;
if(tcgetattr(fin, &oldTerm) == -1)
return "tcgetattr(STDIN_FILENO, &oldTerm) failed";
struct termios newTerm = oldTerm;
newTerm.c_lflag &= (tcflag_t) ~(ICANON | ECHO);
if(tcsetattr(fin, TCSAFLUSH, &newTerm) == -1)
return "tcsetattr(STDIN_FILENO, TCSAFLUSH, &newTerm)";
ffWriteFDData(fout, strlen(request), request);
//Give the terminal some time to respond
if(poll(&(struct pollfd) { .fd = fin, .events = POLLIN }, 1, FF_IO_TERM_RESP_WAIT_MS) <= 0)
{
tcsetattr(fin, TCSANOW, &oldTerm);
return "poll() timeout or failed";
}
char buffer[512];
ssize_t bytesRead = read(fin, buffer, sizeof(buffer) - 1);
tcsetattr(fin, TCSANOW, &oldTerm);
if(bytesRead <= 0)
return "read(STDIN_FILENO, buffer, sizeof(buffer) - 1) failed";
buffer[bytesRead] = '\0';
va_list args;
va_start(args, format);
vsscanf(buffer, format, args);
va_end(args);
return NULL;
}
bool ffSuppressIO(bool suppress)
{
static bool init = false;
static int origOut = -1;
static int origErr = -1;
static int nullFile = -1;
if(!init)
{
if(!suppress)
return true;
origOut = dup(STDOUT_FILENO);
origErr = dup(STDERR_FILENO);
nullFile = open("/dev/null", O_WRONLY | O_CLOEXEC);
init = true;
}
if(nullFile == -1)
return false;
fflush(stdout);
fflush(stderr);
dup2(suppress ? nullFile : origOut, STDOUT_FILENO);
dup2(suppress ? nullFile : origErr, STDERR_FILENO);
return true;
}
void listFilesRecursively(uint32_t baseLength, FFstrbuf* folder, uint8_t indentation, const char* folderName, bool pretty)
{
FF_AUTO_CLOSE_FD int dfd = open(folder->chars, O_RDONLY);
if (dfd < 0)
return;
DIR* dir = fdopendir(dfd);
if(dir == NULL)
return;
uint32_t folderLength = folder->length;
if(pretty && folderName != NULL)
{
for(uint8_t i = 0; i < indentation - 1; i++)
fputs(" | ", stdout);
printf("%s/\n", folderName);
}
struct dirent* entry;
while((entry = readdir(dir)) != NULL)
{
bool isDir = false;
#ifdef _DIRENT_HAVE_D_TYPE
if(entry->d_type != DT_UNKNOWN && entry->d_type != DT_LNK)
isDir = entry->d_type == DT_DIR;
else
#else
{
struct stat stbuf;
if (fstatat(dfd, entry->d_name, &stbuf, 0) < 0)
isDir = false;
else
isDir = S_ISDIR(stbuf.st_mode);
}
#endif
if (isDir)
{
if(ffStrEquals(entry->d_name, ".") || ffStrEquals(entry->d_name, ".."))
continue;
ffStrbufAppendS(folder, entry->d_name);
ffStrbufAppendC(folder, '/');
listFilesRecursively(baseLength, folder, (uint8_t) (indentation + 1), entry->d_name, pretty);
ffStrbufSubstrBefore(folder, folderLength);
continue;
}
if (pretty)
{
for(uint8_t i = 0; i < indentation; i++)
fputs(" | ", stdout);
}
else
{
fputs(folder->chars + baseLength, stdout);
}
puts(entry->d_name);
}
closedir(dir);
}
void ffListFilesRecursively(const char* path, bool pretty)
{
FF_STRBUF_AUTO_DESTROY folder = ffStrbufCreateS(path);
ffStrbufEnsureEndsWithC(&folder, '/');
listFilesRecursively(folder.length, &folder, 0, NULL, pretty);
}
+277
View File
@@ -0,0 +1,277 @@
#include "io.h"
#include "fastfetch.h"
#include "util/stringUtils.h"
#include <windows.h>
static void createSubfolders(const char* fileName)
{
FF_STRBUF_AUTO_DESTROY path = ffStrbufCreate();
char *token = NULL;
while((token = strchr(fileName, '/')) != NULL)
{
ffStrbufAppendNS(&path, (uint32_t)(token - fileName + 1), fileName);
CreateDirectoryA(path.chars, NULL);
fileName = token + 1;
}
}
bool ffWriteFileData(const char* fileName, size_t dataSize, const void* data)
{
HANDLE FF_AUTO_CLOSE_FD handle = CreateFileA(fileName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (handle == INVALID_HANDLE_VALUE)
{
if (GetLastError() == ERROR_PATH_NOT_FOUND)
{
createSubfolders(fileName);
handle = CreateFileA(fileName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (handle == INVALID_HANDLE_VALUE)
return false;
}
else
return false;
}
DWORD written;
return !!WriteFile(handle, data, (DWORD)dataSize, &written, NULL);
}
static inline void readWithLength(HANDLE handle, FFstrbuf* buffer, uint32_t length)
{
ffStrbufEnsureFixedLengthFree(buffer, length);
DWORD bytesRead = 0;
while(
length > 0 &&
ReadFile(handle, buffer->chars + buffer->length, length, &bytesRead, NULL) != FALSE &&
bytesRead > 0
) {
buffer->length += (uint32_t) bytesRead;
length -= (uint32_t) bytesRead;
}
}
static inline void readUntilEOF(HANDLE handle, FFstrbuf* buffer)
{
ffStrbufEnsureFree(buffer, 31);
uint32_t available = ffStrbufGetFree(buffer);
DWORD bytesRead = 0;
while(
ReadFile(handle, buffer->chars + buffer->length, available, &bytesRead, NULL) != FALSE &&
bytesRead > 0
) {
buffer->length += (uint32_t) bytesRead;
if((uint32_t) bytesRead == available)
ffStrbufEnsureFree(buffer, buffer->allocated - 1); // Doubles capacity every round. -1 for the null byte.
available = ffStrbufGetFree(buffer);
}
}
bool ffAppendFDBuffer(HANDLE handle, FFstrbuf* buffer)
{
LARGE_INTEGER fileSize;
if(!GetFileSizeEx(handle, &fileSize))
fileSize.QuadPart = 0;
if (fileSize.QuadPart > 0)
readWithLength(handle, buffer, (uint32_t)fileSize.QuadPart);
else
readUntilEOF(handle, buffer);
buffer->chars[buffer->length] = '\0';
return buffer->length > 0;
}
ssize_t ffReadFileData(const char* fileName, size_t dataSize, void* data)
{
HANDLE FF_AUTO_CLOSE_FD handle = CreateFileA(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(handle == INVALID_HANDLE_VALUE)
return -1;
return ffReadFDData(handle, dataSize, data);
}
bool ffAppendFileBuffer(const char* fileName, FFstrbuf* buffer)
{
HANDLE FF_AUTO_CLOSE_FD handle = CreateFileA(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(handle == INVALID_HANDLE_VALUE)
return false;
return ffAppendFDBuffer(handle, buffer);
}
bool ffPathExpandEnv(const char* in, FFstrbuf* out)
{
DWORD length = ExpandEnvironmentStringsA(in, NULL, 0);
if (length <= 1) return false;
ffStrbufClear(out);
ffStrbufEnsureFree(out, (uint32_t)length);
ExpandEnvironmentStringsA(in, out->chars, length);
out->length = (uint32_t)length - 1;
return true;
}
bool ffSuppressIO(bool suppress)
{
static bool init = false;
static HANDLE hOrigOut = INVALID_HANDLE_VALUE;
static HANDLE hOrigErr = INVALID_HANDLE_VALUE;
static HANDLE hNullFile = INVALID_HANDLE_VALUE;
static int fOrigOut = -1;
static int fOrigErr = -1;
static int fNullFile = -1;
if (!init)
{
if(!suppress)
return true;
hOrigOut = GetStdHandle(STD_OUTPUT_HANDLE);
hOrigErr = GetStdHandle(STD_ERROR_HANDLE);
hNullFile = CreateFileW(L"NUL", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, NULL);
fOrigOut = _dup(STDOUT_FILENO);
fOrigErr = _dup(STDERR_FILENO);
fNullFile = _open_osfhandle((intptr_t) hNullFile, 0);
init = true;
}
if (hNullFile == INVALID_HANDLE_VALUE || fNullFile == -1)
return false;
fflush(stdout);
fflush(stderr);
SetStdHandle(STD_OUTPUT_HANDLE, suppress ? hNullFile : hOrigOut);
SetStdHandle(STD_ERROR_HANDLE, suppress ? hNullFile : hOrigErr);
_dup2(suppress ? fNullFile : fOrigOut, STDOUT_FILENO);
_dup2(suppress ? fNullFile : fOrigErr, STDERR_FILENO);
return true;
}
void listFilesRecursively(uint32_t baseLength, FFstrbuf* folder, uint8_t indentation, const char* folderName, bool pretty)
{
uint32_t folderLength = folder->length;
if(pretty && folderName != NULL)
{
for(uint8_t i = 0; i < indentation - 1; i++)
fputs(" | ", stdout);
printf("%s/\n", folderName);
}
ffStrbufAppendC(folder, '*');
WIN32_FIND_DATAA entry;
HANDLE hFind = FindFirstFileA(folder->chars, &entry);
ffStrbufTrimRight(folder, '*');
if(hFind == INVALID_HANDLE_VALUE)
return;
do
{
if (entry.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(ffStrEquals(entry.cFileName, ".") || ffStrEquals(entry.cFileName, ".."))
continue;
ffStrbufSubstrBefore(folder, folderLength);
ffStrbufAppendS(folder, entry.cFileName);
ffStrbufAppendC(folder, '/');
listFilesRecursively(baseLength, folder, (uint8_t) (indentation + 1), entry.cFileName, pretty);
ffStrbufSubstrBefore(folder, folderLength);
continue;
}
if (pretty)
{
for(uint8_t i = 0; i < indentation; i++)
fputs(" | ", stdout);
}
else
{
fputs(folder->chars + baseLength, stdout);
}
puts(entry.cFileName);
} while (FindNextFileA(hFind, &entry));
FindClose(hFind);
}
void ffListFilesRecursively(const char* path, bool pretty)
{
FF_STRBUF_AUTO_DESTROY folder = ffStrbufCreateS(path);
ffStrbufEnsureEndsWithC(&folder, '/');
listFilesRecursively(folder.length, &folder, 0, NULL, pretty);
}
const char* ffGetTerminalResponse(const char* request, const char* format, ...)
{
HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
FF_AUTO_CLOSE_FD HANDLE hConin = INVALID_HANDLE_VALUE;
DWORD inputMode;
if (!GetConsoleMode(hInput, &inputMode))
{
hConin = CreateFileW(L"CONIN$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, NULL);
hInput = hConin;
}
SetConsoleMode(hInput, 0);
FlushConsoleInputBuffer(hInput);
{
DWORD bytes = 0;
HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
FF_AUTO_CLOSE_FD HANDLE hConout = INVALID_HANDLE_VALUE;
DWORD outputMode;
if (!GetConsoleMode(hOutput, &outputMode))
{
hConout = CreateFileW(L"CONOUT$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, NULL);
hOutput = hConout;
}
WriteFile(hOutput, "TEST\n", 5, &bytes, NULL);
WriteFile(hOutput, request, (DWORD) strlen(request), &bytes, NULL);
}
while (true)
{
if (WaitForSingleObjectEx(hInput, FF_IO_TERM_RESP_WAIT_MS, TRUE) != WAIT_OBJECT_0)
{
SetConsoleMode(hInput, inputMode);
return "WaitForSingleObject() failed or timeout";
}
// Ignore all unexpected input events
INPUT_RECORD record;
DWORD len = 0;
if (!PeekConsoleInputW(hInput, &record, 1, &len))
break;
if (
record.EventType == KEY_EVENT &&
record.Event.KeyEvent.uChar.UnicodeChar != L'\r' &&
record.Event.KeyEvent.uChar.UnicodeChar != L'\n'
)
break;
else
ReadConsoleInputW(hInput, &record, 1, &len);
}
char buffer[512];
DWORD bytes = 0;
ReadFile(hInput, buffer, sizeof(buffer) - 1, &bytes, NULL);
SetConsoleMode(hInput, inputMode);
if(bytes <= 0)
return "ReadFile() failed";
buffer[bytes] = '\0';
va_list args;
va_start(args, format);
vsscanf(buffer, format, args);
va_end(args);
return NULL;
}
+245
View File
@@ -0,0 +1,245 @@
#include "fastfetch.h"
#include "common/jsonconfig.h"
#include "common/printing.h"
#include "common/io/io.h"
#include "common/time.h"
#include "modules/modules.h"
#include "util/stringUtils.h"
#include <assert.h>
#include <ctype.h>
#include <inttypes.h>
bool ffJsonConfigParseModuleArgs(const char* key, yyjson_val* val, FFModuleArgs* moduleArgs)
{
if(ffStrEqualsIgnCase(key, "key"))
{
ffStrbufSetNS(&moduleArgs->key, (uint32_t) yyjson_get_len(val), yyjson_get_str(val));
return true;
}
else if(ffStrEqualsIgnCase(key, "format"))
{
ffStrbufSetNS(&moduleArgs->outputFormat, (uint32_t) yyjson_get_len(val), yyjson_get_str(val));
return true;
}
else if(ffStrEqualsIgnCase(key, "outputColor"))
{
ffOptionParseColor(yyjson_get_str(val), &moduleArgs->outputColor);
return true;
}
else if(ffStrEqualsIgnCase(key, "keyColor"))
{
ffOptionParseColor(yyjson_get_str(val), &moduleArgs->keyColor);
return true;
}
else if(ffStrEqualsIgnCase(key, "keyWidth"))
{
moduleArgs->keyWidth = (uint32_t) yyjson_get_uint(val);
return true;
}
return false;
}
void ffJsonConfigGenerateModuleArgsConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, FFModuleArgs* defaultModuleArgs, FFModuleArgs* moduleArgs)
{
if (!ffStrbufEqual(&defaultModuleArgs->key, &moduleArgs->key))
yyjson_mut_obj_add_strbuf(doc, module, "key", &moduleArgs->key);
if (!ffStrbufEqual(&defaultModuleArgs->outputFormat, &moduleArgs->outputFormat))
yyjson_mut_obj_add_strbuf(doc, module, "format", &moduleArgs->outputFormat);
if (!ffStrbufEqual(&defaultModuleArgs->keyColor, &moduleArgs->keyColor))
yyjson_mut_obj_add_strbuf(doc, module, "keyColor", &moduleArgs->keyColor);
if (moduleArgs->keyWidth != defaultModuleArgs->keyWidth)
yyjson_mut_obj_add_uint(doc, module, "keyWidth", moduleArgs->keyWidth);
}
const char* ffJsonConfigParseEnum(yyjson_val* val, int* result, FFKeyValuePair pairs[])
{
if (yyjson_is_int(val))
{
int intVal = yyjson_get_int(val);
for (const FFKeyValuePair* pPair = pairs; pPair->key; ++pPair)
{
if (intVal == pPair->value)
{
*result = pPair->value;
return NULL;
}
}
return "Invalid enum integer";
}
else if (yyjson_is_str(val))
{
const char* strVal = yyjson_get_str(val);
for (const FFKeyValuePair* pPair = pairs; pPair->key; ++pPair)
{
if (ffStrEqualsIgnCase(strVal, pPair->key))
{
*result = pPair->value;
return NULL;
}
}
return "Invalid enum string";
}
else
return "Invalid enum value type; must be a string or integer";
}
static inline void genJsonResult(FFModuleBaseInfo* baseInfo, yyjson_mut_doc* doc)
{
yyjson_mut_val* module = yyjson_mut_arr_add_obj(doc, doc->root);
yyjson_mut_obj_add_str(doc, module, "type", baseInfo->name);
if (baseInfo->generateJsonResult)
baseInfo->generateJsonResult(baseInfo, doc, module);
else
yyjson_mut_obj_add_str(doc, module, "error", "Unsupported for JSON format");
}
static bool parseModuleJsonObject(const char* type, yyjson_val* jsonVal, yyjson_mut_doc* jsonDoc)
{
if(!ffCharIsEnglishAlphabet(type[0])) return false;
for (FFModuleBaseInfo** modules = ffModuleInfos[toupper(type[0]) - 'A']; *modules; ++modules)
{
FFModuleBaseInfo* baseInfo = *modules;
if (ffStrEqualsIgnCase(type, baseInfo->name))
{
if (jsonVal) baseInfo->parseJsonObject(baseInfo, jsonVal);
if (__builtin_expect(jsonDoc != NULL, false))
genJsonResult(baseInfo, jsonDoc);
else
baseInfo->printModule(baseInfo);
return true;
}
}
return false;
}
static void prepareModuleJsonObject(const char* type, yyjson_val* module)
{
FFconfig* cfg = &instance.config;
switch (type[0])
{
case 'b': case 'B': {
if (ffStrEqualsIgnCase(type, FF_CPUUSAGE_MODULE_NAME))
ffPrepareCPUUsage();
break;
}
case 'd': case 'D': {
if (ffStrEqualsIgnCase(type, FF_DISKIO_MODULE_NAME))
{
if (module) cfg->modules.diskIo.moduleInfo.parseJsonObject(&cfg->modules.diskIo, module);
ffPrepareDiskIO(&cfg->modules.diskIo);
}
break;
}
case 'n': case 'N': {
if (ffStrEqualsIgnCase(type, FF_NETIO_MODULE_NAME))
{
if (module) cfg->modules.netIo.moduleInfo.parseJsonObject(&cfg->modules.netIo, module);
ffPrepareNetIO(&cfg->modules.netIo);
}
break;
}
case 'p': case 'P': {
if (ffStrEqualsIgnCase(type, FF_PUBLICIP_MODULE_NAME))
{
if (module) cfg->modules.publicIP.moduleInfo.parseJsonObject(&cfg->modules.publicIP, module);
ffPreparePublicIp(&cfg->modules.publicIP);
}
break;
}
case 'w': case 'W': {
if (ffStrEqualsIgnCase(type, FF_WEATHER_MODULE_NAME))
{
if (module) cfg->modules.weather.moduleInfo.parseJsonObject(&cfg->modules.weather, module);
ffPrepareWeather(&cfg->modules.weather);
}
break;
}
}
}
static const char* printJsonConfig(bool prepare, yyjson_mut_doc* jsonDoc)
{
yyjson_val* const root = yyjson_doc_get_root(instance.state.configDoc);
assert(root);
if (!yyjson_is_obj(root))
return "Invalid JSON config format. Root value must be an object";
yyjson_val* modules = yyjson_obj_get(root, "modules");
if (!modules) return NULL;
if (!yyjson_is_arr(modules)) return "Property 'modules' must be an array of strings or objects";
yyjson_val* item;
size_t idx, max;
yyjson_arr_foreach(modules, idx, max, item)
{
uint64_t ms = 0;
if(!prepare && instance.config.display.stat)
ms = ffTimeGetTick();
yyjson_val* module = item;
const char* type = yyjson_get_str(module);
if (type)
module = NULL;
else if (yyjson_is_obj(module))
{
type = yyjson_get_str(yyjson_obj_get(module, "type"));
if (!type) return "module object must contain a \"type\" key ( case sensitive )";
if (yyjson_obj_size(module) == 1) // contains only Property type
module = NULL;
}
else
return "modules must be an array of strings or objects";
if(prepare)
prepareModuleJsonObject(type, module);
else if(!parseModuleJsonObject(type, module, jsonDoc))
return "Unknown module type";
if(!prepare && instance.config.display.stat)
{
ms = ffTimeGetTick() - ms;
if (jsonDoc)
{
yyjson_mut_val* moduleJson = yyjson_mut_arr_get_last(jsonDoc->root);
yyjson_mut_obj_add_uint(jsonDoc, moduleJson, "stat", ms);
}
else
{
char str[32];
int len = snprintf(str, sizeof str, "%" PRIu64 "ms", ms);
if(instance.config.display.pipe)
puts(str);
else
printf("\033[s\033[1A\033[9999999C\033[%dD%s\033[u", len, str); // Save; Up 1; Right 9999999; Left <len>; Print <str>; Load
}
}
#if defined(_WIN32)
if (!instance.config.display.noBuffer && !jsonDoc) fflush(stdout);
#endif
}
return NULL;
}
void ffPrintJsonConfig(bool prepare, yyjson_mut_doc* jsonDoc)
{
const char* error = printJsonConfig(prepare, jsonDoc);
if (error)
{
if (jsonDoc)
{
yyjson_mut_val* obj = yyjson_mut_obj(jsonDoc);
yyjson_mut_obj_add_str(jsonDoc, obj, "error", error);
yyjson_mut_doc_set_root(jsonDoc, obj);
}
else
ffPrintError("JsonConfig", 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "%s", error);
}
}
+25
View File
@@ -0,0 +1,25 @@
#pragma once
#include "fastfetch.h"
bool ffJsonConfigParseModuleArgs(const char* key, yyjson_val* val, FFModuleArgs* moduleArgs);
const char* ffJsonConfigParseEnum(yyjson_val* val, int* result, FFKeyValuePair pairs[]);
void ffPrintJsonConfig(bool prepare, yyjson_mut_doc* jsonDoc);
void ffJsonConfigGenerateModuleArgsConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, FFModuleArgs* defaultModuleArgs, FFModuleArgs* moduleArgs);
yyjson_api_inline yyjson_mut_val* yyjson_mut_strbuf(yyjson_mut_doc *doc, const FFstrbuf* buf) {
return yyjson_mut_strncpy(doc, buf->chars, buf->length);
}
yyjson_api_inline bool yyjson_mut_obj_add_strbuf(yyjson_mut_doc *doc,
yyjson_mut_val *obj,
const char *_key,
const FFstrbuf* buf) {
return yyjson_mut_obj_add_strncpy(doc, obj, _key, buf->chars, buf->length);
}
yyjson_api_inline bool yyjson_mut_arr_add_strbuf(yyjson_mut_doc *doc,
yyjson_mut_val *obj,
const FFstrbuf* buf) {
return yyjson_mut_arr_add_strncpy(doc, obj, buf->chars, buf->length);
}
+6 -5
View File
@@ -1,10 +1,12 @@
#include "fastfetch.h"
#include "common/library.h"
#ifndef FF_DISABLE_DLOPEN
#include <stdarg.h>
//Clang doesn't define __SANITIZE_ADDRESS__ but defines __has_feature(address_sanitizer)
#if defined(__has_feature)
#if !defined(__SANITIZE_ADDRESS__) && defined(__has_feature)
#if __has_feature(address_sanitizer)
#define __SANITIZE_ADDRESS__
#endif
@@ -32,8 +34,7 @@ static void* libraryLoad(const char* path, int maxVersion)
if(result != NULL || maxVersion < 0)
return result;
FFstrbuf pathbuf;
ffStrbufInitA(&pathbuf, 64);
FF_STRBUF_AUTO_DESTROY pathbuf = ffStrbufCreateA(64);
ffStrbufAppendS(&pathbuf, path);
ffStrbufAppendC(&pathbuf, '.');
@@ -49,8 +50,6 @@ static void* libraryLoad(const char* path, int maxVersion)
ffStrbufSubstrBefore(&pathbuf, originalLength);
}
ffStrbufDestroy(&pathbuf);
#endif
return result;
@@ -80,3 +79,5 @@ void* ffLibraryLoad(const FFstrbuf* userProvidedName, ...)
return result;
}
#endif
+69 -15
View File
@@ -1,16 +1,15 @@
#pragma once
#ifndef FF_INCLUDED_common_library
#define FF_INCLUDED_common_library
#include "fastfetch.h"
#include "util/FFcheckmacros.h"
#if defined(_WIN32) //We don't force MSYS using LoadLibrary because dlopen also searches $LD_LIBRARY_PATH
#ifndef FF_DISABLE_DLOPEN
#if defined(_WIN32)
#include <libloaderapi.h>
#define FF_DLOPEN_FLAGS 0
FF_C_NODISCARD static inline void* dlopen(const char* path, int mode) { FF_UNUSED(mode); return LoadLibraryA(path); }
FF_C_NODISCARD static inline void* dlsym(void* handle, const char* symbol) { return GetProcAddress((HMODULE)handle, symbol); }
FF_C_NODISCARD static inline void* dlsym(void* handle, const char* symbol) { return (void*) GetProcAddress((HMODULE)handle, symbol); }
static inline int dlclose(void* handle) { return !FreeLibrary((HMODULE)handle); }
#else
#include <dlfcn.h>
@@ -24,40 +23,95 @@
#define FF_LIBRARY_EXTENSION ".so"
#endif
static inline void ffLibraryUnload(void** handle)
{
assert(handle);
if (*handle)
dlclose(*handle);
}
#define FF_LIBRARY_SYMBOL(symbolName) \
__typeof__(&symbolName) ff ## symbolName;
#define FF_LIBRARY_LOAD(libraryObjectName, userLibraryName, returnValue, ...) \
void* libraryObjectName = ffLibraryLoad(userLibraryName, __VA_ARGS__, NULL);\
void* __attribute__((__cleanup__(ffLibraryUnload))) libraryObjectName = ffLibraryLoad(userLibraryName, __VA_ARGS__, NULL);\
if(libraryObjectName == NULL) \
return returnValue;
#define FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, symbolMapping, symbolName, returnValue) \
symbolMapping = dlsym(library, #symbolName); \
symbolMapping = (__typeof__(&symbolName)) dlsym(library, #symbolName); \
if(symbolMapping == NULL) \
{ \
dlclose(library); \
return returnValue; \
}
return returnValue;
#define FF_LIBRARY_LOAD_SYMBOL_ADDRESS2(library, symbolMapping, symbolName, alternateName, returnValue) \
symbolMapping = dlsym(library, #symbolName); \
if(symbolMapping == NULL && !(symbolMapping = (__typeof__(&symbolName)) dlsym(library, #alternateName))) \
return returnValue;
#define FF_LIBRARY_LOAD_SYMBOL(library, symbolName, returnValue) \
__typeof__(&symbolName) FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, ff ## symbolName, symbolName, returnValue);
#define FF_LIBRARY_LOAD_SYMBOL_LAZY(library, symbolName) \
__typeof__(&symbolName) ff ## symbolName = dlsym(library, #symbolName);
__typeof__(&symbolName) ff ## symbolName = (__typeof__(&symbolName)) dlsym(library, #symbolName);
#define FF_LIBRARY_LOAD_SYMBOL_MESSAGE(library, symbolName) \
__typeof__(&symbolName) FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, ff ## symbolName, symbolName, "dlsym " #symbolName " failed");
#define FF_LIBRARY_LOAD_SYMBOL_MESSAGE2(library, symbolName, alternateName) \
__typeof__(&symbolName) FF_LIBRARY_LOAD_SYMBOL_ADDRESS2(library, ff ## symbolName, symbolName, alternateName, "dlsym " #symbolName " failed");
#define FF_LIBRARY_LOAD_SYMBOL_VAR(library, varName, symbolName, returnValue) \
FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, varName.ff ## symbolName, symbolName, returnValue);
FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, (varName).ff ## symbolName, symbolName, returnValue);
#define FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(library, varName, symbolName) \
FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, varName.ff ## symbolName, symbolName, "dlsym " #symbolName " failed");
FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, (varName).ff ## symbolName, symbolName, "dlsym " #symbolName " failed");
#define FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE2(library, varName, symbolName, alternateName) \
FF_LIBRARY_LOAD_SYMBOL_ADDRESS2(library, (varName).ff ## symbolName, symbolName, alternateName, "dlsym " #symbolName " failed");
#define FF_LIBRARY_LOAD_SYMBOL_PTR(library, varName, symbolName, returnValue) \
FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, varName->ff ## symbolName, symbolName, returnValue);
FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, (varName)->ff ## symbolName, symbolName, returnValue);
void* ffLibraryLoad(const FFstrbuf* userProvidedName, ...);
#else
#define FF_LIBRARY_EXTENSION ""
#define FF_LIBRARY_SYMBOL(symbolName) \
__typeof__(&symbolName) ff ## symbolName;
#define FF_LIBRARY_LOAD(libraryObjectName, userLibraryName, returnValue, ...) \
FF_MAYBE_UNUSED void* libraryObjectName = NULL; // Placeholder
#define FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, symbolMapping, symbolName, returnValue) \
symbolMapping = (__typeof__(&symbolName)) &symbolName
#define FF_LIBRARY_LOAD_SYMBOL_ADDRESS2(library, symbolMapping, symbolName, alternateName, returnValue) \
symbolMapping = (__typeof__(&symbolName)) &symbolName
#define FF_LIBRARY_LOAD_SYMBOL(library, symbolName, returnValue) \
FF_MAYBE_UNUSED __typeof__(&symbolName) FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, ff ## symbolName, symbolName, returnValue);
#define FF_LIBRARY_LOAD_SYMBOL_LAZY(library, symbolName) \
FF_MAYBE_UNUSED __typeof__(&symbolName) ff ## symbolName = (__typeof__(&symbolName)) &symbolName;
#define FF_LIBRARY_LOAD_SYMBOL_MESSAGE(library, symbolName) \
FF_MAYBE_UNUSED __typeof__(&symbolName) FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, ff ## symbolName, symbolName, "dlsym " #symbolName " failed");
#define FF_LIBRARY_LOAD_SYMBOL_MESSAGE2(library, symbolName, alternateName) \
FF_MAYBE_UNUSED __typeof__(&symbolName) FF_LIBRARY_LOAD_SYMBOL_ADDRESS2(library, ff ## symbolName, symbolName, alternateName, "dlsym " #symbolName " failed");
#define FF_LIBRARY_LOAD_SYMBOL_VAR(library, varName, symbolName, returnValue) \
FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, (varName).ff ## symbolName, symbolName, returnValue);
#define FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(library, varName, symbolName) \
FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, (varName).ff ## symbolName, symbolName, "dlsym " #symbolName " failed");
#define FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE2(library, varName, symbolName, alternateName) \
FF_LIBRARY_LOAD_SYMBOL_ADDRESS2(library, (varName).ff ## symbolName, symbolName, alternateName, "dlsym " #symbolName " failed");
#define FF_LIBRARY_LOAD_SYMBOL_PTR(library, varName, symbolName, returnValue) \
FF_LIBRARY_LOAD_SYMBOL_ADDRESS(library, (varName)->ff ## symbolName, symbolName, returnValue);
#endif
+176
View File
@@ -0,0 +1,176 @@
#include "fastfetch.h"
static FFModuleBaseInfo* A[] = {
NULL,
};
static FFModuleBaseInfo* B[] = {
(void*) &instance.config.modules.battery,
(void*) &instance.config.modules.bios,
(void*) &instance.config.modules.bluetooth,
(void*) &instance.config.modules.board,
(void*) &instance.config.modules.bootmgr,
(void*) &instance.config.modules.break_,
(void*) &instance.config.modules.brightness,
NULL,
};
static FFModuleBaseInfo* C[] = {
(void*) &instance.config.modules.camera,
(void*) &instance.config.modules.chassis,
(void*) &instance.config.modules.command,
(void*) &instance.config.modules.colors,
(void*) &instance.config.modules.cpu,
(void*) &instance.config.modules.cpuCache,
(void*) &instance.config.modules.cpuUsage,
(void*) &instance.config.modules.cursor,
(void*) &instance.config.modules.custom,
NULL,
};
static FFModuleBaseInfo* D[] = {
(void*) &instance.config.modules.dateTime,
(void*) &instance.config.modules.de,
(void*) &instance.config.modules.display,
(void*) &instance.config.modules.disk,
(void*) &instance.config.modules.diskIo,
(void*) &instance.config.modules.dns,
NULL,
};
static FFModuleBaseInfo* E[] = {
(void*) &instance.config.modules.editor,
NULL,
};
static FFModuleBaseInfo* F[] = {
(void*) &instance.config.modules.font,
NULL,
};
static FFModuleBaseInfo* G[] = {
(void*) &instance.config.modules.gamepad,
(void*) &instance.config.modules.gpu,
NULL,
};
static FFModuleBaseInfo* H[] = {
(void*) &instance.config.modules.host,
NULL,
};
static FFModuleBaseInfo* I[] = {
(void*) &instance.config.modules.icons,
(void*) &instance.config.modules.initSystem,
NULL,
};
static FFModuleBaseInfo* J[] = {
NULL,
};
static FFModuleBaseInfo* K[] = {
(void*) &instance.config.modules.kernel,
NULL,
};
static FFModuleBaseInfo* L[] = {
(void*) &instance.config.modules.lm,
(void*) &instance.config.modules.loadavg,
(void*) &instance.config.modules.locale,
(void*) &instance.config.modules.localIP,
NULL,
};
static FFModuleBaseInfo* M[] = {
(void*) &instance.config.modules.media,
(void*) &instance.config.modules.memory,
(void*) &instance.config.modules.monitor,
NULL,
};
static FFModuleBaseInfo* N[] = {
(void*) &instance.config.modules.netIo,
NULL,
};
static FFModuleBaseInfo* O[] = {
(void*) &instance.config.modules.openCL,
(void*) &instance.config.modules.openGL,
(void*) &instance.config.modules.os,
NULL,
};
static FFModuleBaseInfo* P[] = {
(void*) &instance.config.modules.packages,
(void*) &instance.config.modules.physicalDisk,
(void*) &instance.config.modules.physicalMemory,
(void*) &instance.config.modules.player,
(void*) &instance.config.modules.powerAdapter,
(void*) &instance.config.modules.processes,
(void*) &instance.config.modules.publicIP,
NULL,
};
static FFModuleBaseInfo* Q[] = {
NULL,
};
static FFModuleBaseInfo* R[] = {
NULL,
};
static FFModuleBaseInfo* S[] = {
(void*) &instance.config.modules.separator,
(void*) &instance.config.modules.shell,
(void*) &instance.config.modules.sound,
(void*) &instance.config.modules.swap,
NULL,
};
static FFModuleBaseInfo* T[] = {
(void*) &instance.config.modules.terminal,
(void*) &instance.config.modules.terminalFont,
(void*) &instance.config.modules.terminalSize,
(void*) &instance.config.modules.terminalTheme,
(void*) &instance.config.modules.title,
(void*) &instance.config.modules.theme,
NULL,
};
static FFModuleBaseInfo* U[] = {
(void*) &instance.config.modules.uptime,
(void*) &instance.config.modules.users,
NULL,
};
static FFModuleBaseInfo* V[] = {
(void*) &instance.config.modules.version,
(void*) &instance.config.modules.vulkan,
NULL,
};
static FFModuleBaseInfo* W[] = {
(void*) &instance.config.modules.wallpaper,
(void*) &instance.config.modules.weather,
(void*) &instance.config.modules.wm,
(void*) &instance.config.modules.wifi,
(void*) &instance.config.modules.wmTheme,
NULL,
};
static FFModuleBaseInfo* X[] = {
NULL,
};
static FFModuleBaseInfo* Y[] = {
NULL,
};
static FFModuleBaseInfo* Z[] = {
NULL,
};
FFModuleBaseInfo** ffModuleInfos[] = {
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z,
};

Some files were not shown because too many files have changed in this diff Show More