* fix: Codex Linux new logo
reMarkable changed their logo so reflecting that change here too
* Modify ASCII art in codex.txt
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* Add OS2 Warp logo
* Update ASCII art in os2warp.txt
* Refactor OS/2 Warp logo names for consistency
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* Proper detection of lliurex distribution
* fix newline
* Trim version and not versionID as assigned to lliurex-version output
* Update os_linux.c
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* Display: add server vendor string
* Display (X11): fetch server vendor string using XCB/Xlib
* WM: show server vendor string when not empty
* Display (XCB): use proper string helper function
* Display (X11): shorten "The X.Org Foundation" to "Xorg"
Unifies IPv4 and IPv6 default route queries under a shared result structure and per-family functions. Improves clarity and extensibility by centralizing route logic, streamlining detection of preferred interfaces, and updating all consumers to use the new API.
Prepares for more robust multi-protocol network information handling.
* LocalIP: consider preferred source address when retrieving default route
* LocalIP: fix logic error when there is no preferred source address
* LocalIP: use macros rather than manual free/close
* LocalIP(BSD): fix build error
* LocalIP: address Copilot suggestions
Moves module option structs out of global config and removes dynamic allocation, using static buffers and size assertions for safer, simpler management.
Refactors module initialization and destruction to work with isolated option structs, eliminating the need for the previous modules container and related code.
Unifies module option header usage and updates detection logic to leverage statically-sized option buffers, improving encapsulation and maintainability.
Simplifies module function signatures and reduces coupling between modules and config.
Enhances future extensibility and reliability by enforcing max size constraints and removing unnecessary indirections.
This commit addresses an issue where the default route detection on Windows incorrectly identified a disabled adapter as the default route. Previously, when a user disabled the adapter configured as the default route, the system still reported it as active due to stale routing table entries.
Some devices store their CPU name in hw.model, so check that as well
before giving up. Tested on NetBSD 10.1 evbppc/wii, and allows it to
detect the CPU as "750 (Revision 2.0)".
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
The current default behavior of not hiding any GPUs is retained. The new
feature of hiding unknown or unrecognized GPUs can be enabled with
hide-type = "unknown".
* T2/SDE: upstreaming downstream's logo change
T2/SDE port of fastfetch applies two patches, improving the
distribution's logo and adding alternative names. I see no point not
having these upstream.
Downstream's patches are found here:
https://github.com/rxrbln/t2sde/tree/main/package/contrib/fastfetch
The old logo has been renamed to "T2_small".
* Fix ASCII art alignment in t2.txt
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* Logo (Builtin): Add 2 more Alpine logos
* Remove unnecessary $1 in ASCII logo file
* Add type field to Alpine2 logo configuration
---------
Co-authored-by: naix <naix@noreply.codeberg.org>
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
On some PowerPC devices (notably the Nintendo Wii and Nintendo Wii U),
fastfetch detects the CPU incorrectly. It goes down the code path
of 'detectSocName()', and actually matches the model of the device
itself... as the CPU model name. This is obviously incorrect, and
leads to reporting such as 'CPU: wii'. Disable this code path
alltogether on PPC to prevent this, and just let it pull from cpuinfo.
This lets it have correct CPU reporting, such as on the Wii, giving
'CPU: 750CL @ 0.73GHz'.
Wii-Linux-Ngx is no longer the most up to date version of Linux for the Wii.
This change retains the original name for compatibility sake, and because
Neagix's version does indeed still exist. It moves the ASCII art to a more
generic file path, and introduces 2 new aliases for it: Wii-Linux, and WiiLinux.
* add src/logo/ascii/shebang.txt
Support for Shebang Linux
* add Shebang to src/logo/builtin.c
Support for Shebang Linux
* fix Shebang order in builtin.c
* Logo (Builtin): Added Bedrock Linux small ASCII logo
* Logo (Builtin): fixed spacing of small bedrock logo
* Update bedrock_small.txt
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* [chore] Update README.md
move repology badge to install section
customize with `columns` and `minversion` tags
* tweaks
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
Introduces the `-DBUILD_FLASHFETCH='ON'/'OFF'` build option so one can skip the `flashfetch` target (both from executable and install targets, option at `ON` by default to preserve compatibility with the current default behavior).
This is useful when distributing pre-built downstream packages (e.g. for Linux distributions packaging `fastfetch`) as building and shipping the `flashfetch` binary in such pre-built packages serves little to no purpose.
* Add support for detection of Armbian as Ubuntu flavor
Ubuntu can be used to build Armbian, it is one of the official bases for
Armbian. This allows the detection of Armbian in case it is based on
Ubuntu.
* Refactor Armbian detection
* Armbian: set idLike to id before setting id to "armbian"
* Tidy up detectArmbianVersion
A syntax error in the file caused the following output when trying to trigger completions in `zsh` (pressing <TAB>):
```zsh
$ fastfetch File "<stdin>", line 15
command_prefix = f"--logo-color-{i}[{flag["desc"]} ({i})]"
^^^^
SyntaxError: f-string: unmatched '['
```
This fix replaces single quotes with double quotes in the f-strings in lines 37 and 41.
* [macOS] Added support for dual CPUs on Mac computers
Signed-off-by: Koneko <azimovp17@gmail.com>
* Change how number of cores is displayed when the system is dual CPU
* Support for dual CPU on Windows
* Dual CPU detection on Linux basic implementation
---------
Signed-off-by: Koneko <azimovp17@gmail.com>
* Fixed the destination where fastfetch.1 is generated.
* Update CMakeLists.txt
Reappend trailing new line
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* host(macOS): add HwModel support for new Mac (iMac, Mac mini and Macbook Pro 2024)
* Update host_apple.c
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* Add initial support for MidnightBSD
* Cleanup some issues identified through code review.
Add libzfs check as MidnightBSD does have zfs.
* Add MidnightBSD check to the version.c detection
* Remove `OR MidnightBSD` tests
* Clean up
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* putting xeroarch logo in askii
* updating logo
* updating
* updating
* uploading xeroarch ascii logo
* upgrading fetch ascii logo
* fixing a very small issue
* removing unecessary line
* removing trailing lines
* fixing erroneous colors in the logo
---------
Co-authored-by: xeroarch <xeroarch.os@gmail.com>
* run.sh: Improve compatibility with other systems
For example $OSTYPE is empty in OpenBSD and the script fallsback to Linux option, with nproc isn't present it fails to build.
* Update run.sh
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* putting xeroarch logo in askii
* updating logo
* updating
* updating
* uploading xeroarch ascii logo
* upgrading fetch ascii logo
* fixing a very small issue
* removing unecessary line
* removing trailing lines
Both the zsh and fish completions depend on python3.
When the completitions kick in with those shells where no python3 is
found it throws errors.
Check python3 is installed, otherwise return no completitions to avoid
throwing errors
Co-authored-by: Andrew Davis <adavis@adavis.net>
DRM connectors have two properties, "enabled" and "status", standing for
"enabled by userspace" and "a display has been connected". Connector
status cannot be reliably detected sometimes, in this case status will
be set to unknown and it is still okay to enable it. Some drivers are
also able to enable disconnected connectors.
So it is both meaningful to detect connectors in two states,
- An enabled connector, where it must have been operating in some
configuration required by userspace
- A connected connector, where driver is sure a display has been
connected to the port, this is the obvious case.
In the original implementation, only information of connected connectors
are detected and an enabled connector without hotplug detection
capability, like a Composite video connector, will be silently ignored.
Switch to the new strategy to detect these connectors correctly.
References: https://github.com/torvalds/linux/blob/3efc57369a0ce8f76bf0804f7e673982384e4ac9/include/drm/drm_connector.h#L58-L89
Signed-off-by: Yao Zi <ziyao@disroot.org>
* lainos to top of FFlogo K
* Add LliureX art
* Add lliurex detect
* OS (Linux): fix coding style
* Update lliurex.txt
* Update builtin.c
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* Logo (Builtin): Add Steam Deck Logo
* accidentally removed newline after steam deck oled block
* Update builtin.c
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* Improve installation instructions in the README
* Revert some stuff
* Update README.md
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* Add Linux From Scratch logo
Added ASCII logo for Linux From Scratch
* Add Linux From Scratch to builtin.c
I added Linux From Scratch support to builtin.c
* Update builtin.c
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
* Create vanilla_small.txt
* Update builtin.c
for new vanilla small logo
* Update builtin.c
* Create 23.jsonc
* Update 23.jsonc
* Update builtin.c
---------
Co-authored-by: Carter Li <CarterLi@users.noreply.github.com>
On NixOS, Hyfetch has been placed in a "wrapper script" in order to set the correct PATH that it needs to run correctly.
As a result, the actual Hyfetch executable has been renamed `.hyfetch-wrapped`, which results in this check failing to detect Hyfetch on NixOS properly.
With this patch the logic has been changed to check if the program name contains the string `hyfetch`, which should work for the NixOS case.
In https://github.com/fish-shell/fish-shell/issues/10599, a user of an older version of fish has run into an issue with the fastfetch completion requiring a relatively new version.
Rewrite the (really quite clever) embedded Python into a straight pipe, dropping the string transformation entirely. Does require some escaping of quotes to support Python < 3.12.
The runtime packages detection was inaccurate. The official `flatpak
list` ignores some packages (notablily *.Locale) but the logic is
currently unknown.
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>
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.
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).
- 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.
* 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>
* 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>
<!-- We will try hard to solve the issue. However since platforms and hardwares vary greatly, it can be hard to find the root cause is. Providing 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 (What package manager) / Built from source yourself -->
* Does this issue still occurs in [the latest dev build](https://github.com/fastfetch-cli/fastfetch/actions/)?
# Often helpful information:
Screenshot:
<!-- Paste the screenshot here -->
The content of the configuration file you use (if any):
```
//paste here
```
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
```
Output of `fastfetch --list-features`:
```
//paste here
```
## If fastfatch crashed or freezed
Paste the stacktrace here. You may get it with:
```shell
# You may need Ctrl+C to stop the process if it freezes
Thanks for taking the time to fill out this bug report! 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!
- type:checkboxes
attributes:
label:Read the FAQ first
description:Please check if the issue is already covered in the FAQ.
options:
- label:I have checked the FAQ but the issue is not covered
required:true
- type:markdown
attributes:
value:"### General description of the bug"
- type:textarea
attributes:
label:Description
description:A clear and concise description of what the bug is.
placeholder:I was trying to [...] but [...]
validations:
required:true
- type:input
attributes:
label:Version used
description:Fastfetch version used. Please use the latest version (found in the [releases](https://github.com/fastfetch-cli/fastfetch/releases)) if possible.
placeholder:Result of `fastfetch --version`
validations:
required:true
- type:dropdown
attributes:
label:Bug prevalence
description:How often does the bug occur?
options:
-
- Always
- Sometimes
- Rarely
- Once
- Other
validations:
required:true
- type:dropdown
attributes:
label:Regression
description:Did it work in an older version?
options:
-
- Not sure
- 'Yes'
- 'No'
validations:
required:true
- type:dropdown
attributes:
label:Installation
description:Where did you install fastfetch from?
options:
-
- GitHub Releases
- GitHub Actions (nightly)
- Built from source
- Package manager
validations:
required:true
- type:input
attributes:
label:Package manager
description:Which package manager did you use if applicable?
placeholder:e.g. `apt`, `pacman`, `brew`, `scoop`
- type:markdown
attributes:
value:'### Often helpful information'
- type:textarea
attributes:
label:Screenshots
description:If applicable, add screenshots to help explain your problem.
- type:textarea
attributes:
label:Configuration
description:If applicable, paste your configuration file here.
placeholder:cat ~/.config/fastfetch/config.jsonc
render:jsonc
- type:markdown
attributes:
value:|
Paste the stacktrace here. You may get it with:
```shell
# You may need Ctrl+C to stop the process if it freezes
description:If something is not working as expected (wrong output, missing info, etc)
title:"[BUG] "
labels:["bug","triage"]
body:
- type:markdown
attributes:
value:|
Thanks for taking the time to fill out this bug report! 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!
- type:checkboxes
attributes:
label:Read the FAQ first
description:Please check if the issue is already covered in the FAQ.
options:
- label:I have checked the FAQ but the issue is not covered
required:true
- type:markdown
attributes:
value:"### General description of the bug"
- type:textarea
attributes:
label:Description
description:A clear and concise description of what the bug is.
placeholder:I was trying to [...] but [...]
validations:
required:true
- type:input
attributes:
label:Version used
description:Fastfetch version used. Please use the latest version (found in the [releases](https://github.com/fastfetch-cli/fastfetch/releases)) if possible.
placeholder:Result of `fastfetch --version`
validations:
required:true
- type:dropdown
attributes:
label:Bug prevalence
description:How often does the bug occur?
options:
-
- Always
- Sometimes
- Rarely
- Once
- Other
validations:
required:true
- type:dropdown
attributes:
label:Regression
description:Did it work in an older version?
options:
-
- Not sure
- 'Yes'
- 'No'
validations:
required:true
- type:dropdown
attributes:
label:Installation
description:Where did you install fastfetch from?
options:
-
- GitHub Releases
- GitHub Actions (nightly)
- Built from source
- Package manager
validations:
required:true
- type:input
attributes:
label:Package manager
description:Which package manager did you use if applicable?
placeholder:e.g. `apt`, `pacman`, `brew`, `scoop`
- type:markdown
attributes:
value:'### Often helpful information'
- type:textarea
attributes:
label:Screenshots
description:If applicable, add screenshots to help explain your problem.
- type:textarea
attributes:
label:Configuration
description:If applicable, paste your configuration file here.
placeholder:cat ~/.config/fastfetch/config.jsonc
render:jsonc
- type:textarea
attributes:
label:System information
description:Output of `fastfetch -c all.jsonc --stat --format json`
placeholder:|
Note that this output will contain you public IP.
If it is not relevant for the issue, feel free to remove it before uploading.
description:If my image logo is not displayed correctly
title:"[BUG] "
labels:["bug","logo","triage"]
body:
- type:markdown
attributes:
value:|
Thanks for taking the time to fill out this bug report! 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!
- type:checkboxes
attributes:
label:Read the FAQ first
description:Please check if the issue is already covered in the FAQ.
options:
- label:I have checked the FAQ but the issue is not covered
required:true
- type:markdown
attributes:
value:"### General description of the bug"
- type:textarea
attributes:
label:Description
description:A clear and concise description of what the bug is.
placeholder:I was trying to [...] but [...]
validations:
required:true
- type:input
attributes:
label:Version used
description:Fastfetch version used. Please use the latest version (found in the [releases](https://github.com/fastfetch-cli/fastfetch/releases)) if possible.
placeholder:Result of `fastfetch --version`
validations:
required:true
- type:dropdown
attributes:
label:Bug prevalence
description:How often does the bug occur?
options:
-
- Always
- Sometimes
- Rarely
- Once
- Other
validations:
required:true
- type:dropdown
attributes:
label:Regression
description:Did it work in an older version?
options:
-
- Not sure
- 'Yes'
- 'No'
validations:
required:true
- type:dropdown
attributes:
label:Installation
description:Where did you install fastfetch from?
options:
-
- GitHub Releases
- GitHub Actions (nightly)
- Built from source
- Package manager
validations:
required:true
- type:input
attributes:
label:Package manager
description:Which package manager did you use if applicable?
placeholder:e.g. `apt`, `pacman`, `brew`, `scoop`
- type:markdown
attributes:
value:'### Often helpful information'
- type:textarea
attributes:
label:Screenshots
description:If applicable, add screenshots to help explain your problem.
- type:textarea
attributes:
label:Configuration
description:If applicable, paste your configuration file here.
placeholder:cat ~/.config/fastfetch/config.jsonc
render:jsonc
- type:markdown
attributes:
value:|
#### 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 as of now
Some tips:
1. Try `fastfetch --show-errors` to see if there are any errors.
2. Try `fastfetch --logo-width {WIDTH} --logo-height {HEIGHT}`. Some protocols may require a image size being set.
- type:input
attributes:
label:Image protocol
description:The image protocol you used
validations:
required:true
- type:input
attributes:
label:Terminal
description:The terminal you used
validations:
required:true
- type:textarea
attributes:
label:Image tried
description:Upload the image file, or paste the image URL here
validations:
required:true
- type:textarea
attributes:
label:Error message
description:Error message printed by `fastfetch -s none --show-errors`, if any
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 and /etc/lsb-release here. If none of these files exist, describe a way to identify the distro
description:Request a new ASCII logo for your favorite distro
title:"[LOGO] "
labels:["logo request"]
body:
- type:markdown
attributes:
value:|
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
- type:textarea
attributes:
label:OS
description:Paste content of `/etc/os-release` and `/etc/lsb-release` here. If none of these files exist, describe a way to identify the distro
placeholder:cat /etc/os-release
validations:
required:true
- type:textarea
attributes:
label:ASCII Art
description:An ASCII logo should not take up too much space (smaller than 50x20 characters). Please also include the color codes if not available in `os-release`
placeholder:Paste ASCII art here
validations:
required:true
- type:input
attributes:
label:Original Image
description:If the ASCII art is based on an image, please provide a link to the original image
placeholder:Image URL or distro website URL
- type:checkboxes
attributes:
label:Checklist
options:
- label:The ASCII art is smaller than 50x20 characters (width x height)
required:true
- label:The ASCII art contains color codes, or the color codes are available in `os-release`
required:true
- label:The ASCII art contains no internal paddings (spaces at the start and the end of lines)
body:"Please refer to [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/${{ needs.linux-amd64.outputs.ffversion }}/CHANGELOG.md) for details."
body:"Please refer to [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/${{ needs.linux-hosts.outputs.ffversion }}/CHANGELOG.md) for details."
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 and Windows 7+ are supported.
Fastfetch is a [neofetch](https://github.com/dylanaraps/neofetch)-like tool for fetching system information and displaying it in a visually appealing way. It is written mainly in C, with a focus on performance and customizability. Currently, it supports Linux, macOS, Windows 7+, Android, FreeBSD, OpenBSD, NetBSD, DragonFly, Haiku, and illumos (SunOS).
* Ubuntu: [`ppa:zhangsongcui3371/fastfetch`](https://launchpad.net/~zhangsongcui3371/+archive/ubuntu/fastfetch) (Ubuntu 22.04 or newer; latest version)
* Debian / Ubuntu: `apt install fastfetch` (Debian 13 or newer; Ubuntu 25.04 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).
You may need `sudo`, `doas`, or `sup` to run these commands.
[See also if fastfetch has been packaged for your favorite Linux distro](#Packaging).
If fastfetch is not packaged for your distro or an outdated version is packaged, [linuxbrew](https://brew.sh/) is a good alternate: `brew install fastfetch`
If fastfetch is not packaged for your distribution or an outdated version is packaged, [linuxbrew](https://brew.sh/) is a good alternative: `brew install fastfetch`
You may also download it directly from [GitHub releases page](https://github.com/fastfetch-cli/fastfetch/releases/latest) and extract the archive.
You may also download the program directly from [the GitHub releases page](https://github.com/fastfetch-cli/fastfetch/releases/latest) in the form of an archive file.
See Wiki: https://github.com/fastfetch-cli/fastfetch/wiki/Building
See the Wiki: https://github.com/fastfetch-cli/fastfetch/wiki/Building
## Usage
* 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`
* Run with default configuration: `fastfetch`
* Run with [all supported modules](https://github.com/fastfetch-cli/fastfetch/wiki/Support+Status#available-modules) to find what interests you: `fastfetch -c all.jsonc`
*View all data that fastfetch detects: `fastfetch -s <module1>[:<module2>][:<module3>] --format json`
* Display help messages: `fastfetch --help`
* Generate config file based on command line arguments: `fastfetch --arg1 --arg2 --gen-config`
* Use: `--gen-config-full` to generate a full config file with all optional options
## Customization
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.
Fastfetch uses JSONC (JSON with comments) for configuration. [See the Wiki for details](https://github.com/fastfetch-cli/fastfetch/wiki/Configuration). There are some premade config files in the [`presets`](presets) directory, including those used for the screenshots above. You can load them using `-c <filename>`. These files can serve as examples of the configuration syntax.
Logos can be heavily customized too; see the [logo documentation](https://github.com/fastfetch-cli/fastfetch/wiki/Logo-options) for more information.
Logos can also be heavily customized; see the [logo documentation](https://github.com/fastfetch-cli/fastfetch/wiki/Logo-options) for more information.
Fastfetch supports a `Command` module that can run arbitrary shell commands. If you copy-paste a config file from an untrusted source, it may contain malicious commands that can harm your system or compromise your privacy. Please always review the config file before using it.
## FAQ
Q: Why do you need a very performant version of neofetch?
> I like putting neofetch in my ~/.bashrc to have a system overview 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 has a greater number of features, though by default it only has a few modules enabled; use `fastfetch -c all` to discover 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 `555 MiB` in the Memory module and `23 G` in the Disk module, whereas fastfetch prints `555.00 MiB` and `22.97 GiB` respectively.
6. Fastfetch is more accurate. For example, [neofetch never actually supports the Wayland protocol](https://github.com/dylanaraps/neofetch/pull/2395).
### Q: Fastfetch shows my local IP address. Does it leak my privacy?
A local IP address (10.x.x.x, 172.x.x.x, 192.168.x.x) has nothing to do with privacy. It only has meaning 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. With fastfetch running on shell startup, 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 does not generate a 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 the [Wiki for details](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 using an IDE with JSON schema support (like VSCode) to edit it.
Alternatively, you can refer to the presets in the [`presets` directory](https://github.com/fastfetch-cli/fastfetch/tree/dev/presets).
The **correct** way to edit the configuration:
This is an example that [changes size prefix from MiB / GiB to MB / GB](https://github.com/fastfetch-cli/fastfetch/discussions/1014). Editor used: [helix](https://github.com/helix-editor/helix)
[Here is the documentation](https://github.com/fastfetch-cli/fastfetch/wiki/Json-Schema). It is generated from the [JSON schema](https://github.com/fastfetch-cli/fastfetch/blob/dev/doc/json_schema.json), but you might not find it very user-friendly.
### Q: How can I customize the module output?
Fastfetch uses `format` to generate output. For example, to make the `GPU` module show only the GPU name (leaving other information undisplayed), you can use:
```jsonc
{
"modules":[
{
"type":"gpu",
"format":"{name}"// See `fastfetch -h gpu-format` for details
}
]
}
```
...which is equivalent to `fastfetch -s gpu --gpu-format '{name}'`
See `fastfetch -h format` for information on basic usage. For module-specific formatting, 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 the [logo documentation](https://github.com/fastfetch-cli/fastfetch/wiki/Logo-options) for details.
If you just want to display the distro name in [FIGlet text](https://github.com/pwaller/pyfiglet):
### Q: My image logo behaves strangely. How can I fix it?
See the troubleshooting section: <https://github.com/fastfetch-cli/fastfetch/wiki/Logo-options#troubleshooting>
### Q: Fastfetch runs in black and white on shell startup. Why?
This issue usually occurs when using fastfetch with `p10k`. There are known incompatibilities between fastfetch and p10k instant prompt.
The p10k documentation clearly states that you should NOT print anything to stdout after `p10k-instant-prompt` is initialized. You should put `fastfetch` before the initialization of `p10k-instant-prompt` (recommended).
You can always use `fastfetch --pipe false` to force fastfetch to run in colorful mode.
### Q: Why do fastfetch and neofetch show different memory usage results?
See [#1096](https://github.com/fastfetch-cli/fastfetch/issues/1096).
### Q: Fastfetch shows fewer dpkg packages than neofetch. Is it a bug?
Neofetch incorrectly counts `rc` packages (packages that have been removed but still have configuration files remaining). See bug: https://github.com/dylanaraps/neofetch/issues/2278
### Q: I use Debian / Ubuntu / Debian-derived distro. My GPU is detected as `XXXX Device XXXX (VGA compatible)`. Is this a bug?
Try upgrading `pci.ids`: Download <https://pci-ids.ucw.cz/v2.2/pci.ids> and overwrite the file `/usr/share/hwdata/pci.ids`. For AMD GPUs, you should also upgrade `amdgpu.ids`: Download <https://gitlab.freedesktop.org/mesa/drm/-/raw/main/data/amdgpu.ids> and overwrite the file `/usr/share/libdrm/amdgpu.ids`
Alternatively, you may try using `fastfetch --gpu-driver-specific`, which will make fastfetch attempt to ask the driver for the GPU name if supported.
### Q: I get the error `Authorization required, but no authorization protocol specified` when running fastfetch as root
"source":"C:/path/to/image.png",// Do NOT use `~` as fastfetch is a native Windows program and doesn't apply cygwin path conversion
"width":<image-width-in-chars>,// Optional
"height":<image-height-in-chars>// Optional
}
}
```
* If you installed fastfetch via scoop or downloaded the binary directly from the GitHub Releases page:
1. Convert your image manually to sixel format using [any online image conversion service](https://www.google.com/search?q=convert+image+to+sixel)
2. In `config.jsonc`:
```jsonc
{
"logo":{
"type":"raw",// DO NOT USE "auto"
"source":"C:/path/to/image.sixel",
"width":<image-width-in-chars>,// Required
"height":<image-height-in-chars>// Required
}
}
```
### 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 the `Command` module to implement custom functionality, 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, please 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 out the bug report template carefully to help developers investigate.
## Donate
If you find Fastfetch useful, please consider donating.
* Current maintainer: [@CarterLi](https://paypal.me/zhangsongcui)
* Original author: [@LinusDierheimer](https://github.com/sponsors/LinusDierheimer)
## Code signing
* Free code signing provided by [SignPath.io](https://about.signpath.io/), certificate by [SignPath Foundation](https://signpath.org/)
* This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it
fastfetch \- a neofetch\-like tool for fetching system information and
displaying them in a pretty way
fastfetch \- a fast and customizable system information tool similar to neofetch
.SH SYNOPSIS
@@ -11,121 +10,213 @@ displaying them in a pretty way
.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.
Fastfetch is a tool for displaying system information in a visually appealing way. Written primarily in C, it focuses on performance and customizability while providing functionality similar to neofetch.
It supports Linux, Android, *BSD, macOS, Haiku, and Windows 7 or newer.
.SH "EXIT STATUS"
On successful execution, fastfetch returns zero. If any error happened,
the exit code will be non\-zero.
Fastfetch returns zero on successful execution. Any errors result in a non-zero exit code.
.SH OPTIONS
.SS "Informative Options"
.TP
.B \-h, \-\-help \fI[command]
Show help output, displaying all available options or help for given command
.B \-h, \-\-help \fI[command]
Display help information for all available options or for a specific command
.TP
.B \-v, \-\-version
Show version of fastfetch
Display the version of fastfetch
.TP
.B \-\-version\-raw
Display the raw version string (major.minor.patch)
.TP
.B \-\-list\-config\-paths
List search paths of config files
List search paths for configuration files
.TP
.B \-\-list\-data\-paths
List search paths of presets and logos
List search paths for presets and logos
.TP
.B \-\-list\-logos
List available logos, they can be loaded with \fI\-\-logo
List available logos that can be loaded with \fI\-\-logo
.TP
.B \-\-list\-modules
List available modules
List all available modules
.TP
.B \-\-list\-presets
List available presets, they can be loaded with \fI\-\-config
List available presets that can be loaded with \fI\-\-config
.TP
.B \-\-list\-features
List the supported features fastfetch was compiled with
List the features that fastfetch was compiled with (mainly for development)
.TP
.B \-\-print\-logos
Print available logos
Display all available logos
.TP
.B \-\-print\-structure
Print the default structure
.SS "Display Options"
Display the default structure
.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.
.B \-\-format \fI<type>
Set the output format. Available options are:
.RS
.IP \(bu 2
\fIdefault\fR: Default human-readable format
.IP \(bu 2
\fIjson\fR: JSON format for machine processing
.RE
.SS "Config Options"
.TP
.B \-c, \-\-config \fI<config>
Use the specified config file or preset. If "none", disable further config
loading. For details about config files, see the CONFIGURATION section
.B \-c, \-\-config \fI<config>
Use the specified config file or preset. Specify \fInone\fR to disable further config loading. See the CONFIGURATION section for details on config files.
.TP
.B \-\-gen\-config \fI [file]
Generate a config file with options specified on the command line.
If \fI file \fR is specified, the configuration will written to the
file, otherwise it will be written to stdout.
.B \-\-gen\-config \fI[path]
Generate a config file with options specified on the command line. If \fIpath\fR is not specified, it defaults to \fB~/.config/fastfetch/config.jsonc\fR. If \fIpath\fR is "\-", the configuration will be written to stdout.
.TP
.B \-\-gen\-config\-force \fI [file]
Same as \fB\-\-gen\-config\fR, but overwrites existing config
.B \-\-gen\-config\-force \fI[path]
Same as \fB\-\-gen\-config\fR, but overwrites any existing file at the destination path.
.TP
.SS "Logo Options"
.TP
To list all options, use \fB \-\-help\fR this will also print all available module options.
.B \-l, \-\-logo \fI<logo>
Set the logo to display. Can be the name of a built-in logo or a path to an image file. Use \fInone\fR to disable the logo.
.TP
.B \-\-logo\-type \fI<type>
Set the type of the logo specified with \fI\-\-logo\fR. Available types include \fIauto\fR, \fIbuiltin\fR, \fIfile\fR, \fIsixel\fR, \fIkitty\fR, and others. See \fB\-\-help logo\-type\fR for details.
.TP
.B \-\-logo\-width \fI<width>
Set the width of the logo in characters (for image logos)
.TP
.B \-\-logo\-height \fI<height>
Set the height of the logo in characters (for image logos)
.TP
.B \-\-logo\-color\-[1\-9] \fI<color>
Override specific colors in the logo
.SS "Display Options"
.TP
.B \-s, \-\-structure \fI<structure>
Set the structure of the fetch (a colon-separated list of module names)
.TP
.B \-\-color \fI<color>
Set the color of keys and title. See \fB\-\-help color\fR for available colors.
.TP
.B \-\-color\-keys \fI<color>
Set the color of keys only
.TP
.B \-\-color\-title \fI<color>
Set the color of the title only
.TP
.B \-\-separator \fI<string>
Set the separator between key and value (default: ": ")
.TP
.B \-\-key\-width \fI<num>
Align the width of keys to \fI<num>\fR characters
.TP
.B \-\-show\-errors
Display errors when they occur (default: false)
.TP
.B \-\-pipe
Disable colors (automatically detected based on whether stdout is a terminal)
To list all available options including module-specific options, use \fB\-\-help\fR.
.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
The structure defines which modules to display and in what order. It consists of module names separated by colons (:).
For example: \fBtitle:separator:os:kernel:uptime\fR
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.
Fastfetch uses JSONC for configuration files. JSONC is JSON with support for comments (// and /* */). Configuration files must have the .jsonc extension.
A JSONC config file is a JSON file that also supports comments with (//). Those
files must have the extension '.jsonc'.
You can generate a default config file using \fB\-\-gen\-config\fR. By default, the config file is saved at \fB~/.config/fastfetch/config.jsonc\fR.
The specified configuration/preset files are searched in the following order:
The configuration/preset files are searched in the following locations (in order):
1. relative to the current working directory
.RS
.IP 1. 4
Relative to the current working directory
.IP 2. 4
Relative to ~/.local/share/fastfetch/presets/
.IP 3. 4
Relative to /usr/share/fastfetch/presets/
.RE
2. relative to ~/.local/share/fastfetch/presets/
For detailed information on logo options, module configuration, and formatting, visit:
nameSection=r"fastfetch \- A fast and feature-rich system information tool similar to neofetch"
# text displayed in the "DESCRIPTION" section
descriptionSection=r"""
Fastfetch is a tool for displaying system information in a visually appealing way. Written primarily in C, it focuses on performance and customizability while providing functionality similar to neofetch.
It supports Linux, Android, FreeBSD, macOS, and Windows 7 or newer.
"""
# text displayed at the beginning of the "OPTIONS" section
optionSection=r"""
Options are parsed in a case-insensitive manner. For example, \fB--logo-type\fR and \fB--LOGO-TYPE\fR are treated identically.
Arguments in square brackets are optional. Optional boolean arguments default to 'true' when specified without a value.
For more detailed information about a specific option, use:
\fBfastfetch -h <option_name_without_dashes>\fR
Any combination of options can be made permanent by generating a configuration file:
\fBfastfetch <options> --gen-config\fR
"""
# text displayed in the "CONFIGURATION"
configurationSection=f"""
.SS Fetch Structure
The structure defines which modules to display and in what order. It consists of module names separated by colons (:).
For example: {startBold}title:separator:os:kernel:uptime{endBold}
To list all available modules, use {startBold}--list-modules{endBold}
.SS Config Files
Fastfetch uses JSONC (JSON with Comments) for configuration files. These files must have the .jsonc extension.
You can generate a default config file using {startBold}--gen-config{endBold}. By default, the config file is saved at {startBold}~/.config/fastfetch/config.jsonc{endBold}.
The configuration/preset files are searched in the following locations (in order):
{startBold}1.{endBold} Relative to the current working directory
{startBold}2.{endBold} Relative to ~/.local/share/fastfetch/presets/
{startBold}3.{endBold} Relative to /usr/share/fastfetch/presets/
For detailed information on logo options, module configuration, and formatting, visit:
// 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
#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
typedefenumAGSReturnCode
{
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;
/// @}
typedefstructAGSContextAGSContext;///< All function calls in AGS require a pointer to a context. This is generated via \ref agsInitialize
/// The rectangle struct used by AGS.
typedefstructAGSRect
{
intoffsetX;///< Offset on X axis
intoffsetY;///< Offset on Y axis
intwidth;///< Width of rectangle
intheight;///< Height of rectangle
}AGSRect;
/// The display info struct used to describe a display enumerated by AGS
typedefstructAGSDisplayInfo
{
charname[256];///< The name of the display
chardisplayDeviceName[32];///< The display device name, i.e. DISPLAY_DEVICE::DeviceName
unsignedintisPrimaryDisplay:1;///< Whether this display is marked as the primary display
unsignedintHDR10:1;///< HDR10 is supported on this display
unsignedintdolbyVision:1;///< Dolby Vision is supported on this display
unsignedintfreesync:1;///< Freesync is supported on this display
unsignedintfreesyncHDR:1;///< Freesync HDR is supported on this display
unsignedinteyefinityInGroup:1;///< The display is part of the Eyefinity group
unsignedinteyefinityPreferredDisplay:1;///< The display is the preferred display in the Eyefinity group for displaying the UI
unsignedinteyefinityInPortraitMode:1;///< The display is in the Eyefinity group but in portrait mode
unsignedintreservedPadding:24;///< Reserved for future use
intmaxResolutionX;///< The maximum supported resolution of the unrotated display
intmaxResolutionY;///< The maximum supported resolution of the unrotated display
floatmaxRefreshRate;///< The maximum supported refresh rate of the display
AGSRectcurrentResolution;///< The current resolution and position in the desktop, ignoring Eyefinity bezel compensation
AGSRectvisibleResolution;///< The visible resolution and position. When Eyefinity bezel compensation is enabled this will
///< be the sub region in the Eyefinity single large surface (SLS)
floatcurrentRefreshRate;///< The current refresh rate
inteyefinityGridCoordX;///< The X coordinate in the Eyefinity grid. -1 if not in an Eyefinity group
inteyefinityGridCoordY;///< The Y coordinate in the Eyefinity grid. -1 if not in an Eyefinity group
doublechromaticityRedX;///< Red display primary X coord
doublechromaticityRedY;///< Red display primary Y coord
doublechromaticityGreenX;///< Green display primary X coord
doublechromaticityGreenY;///< Green display primary Y coord
doublechromaticityBlueX;///< Blue display primary X coord
doublechromaticityBlueY;///< Blue display primary Y coord
doublechromaticityWhitePointX;///< White point X coord
doublechromaticityWhitePointY;///< White point Y coord
doublescreenDiffuseReflectance;///< Percentage expressed between 0 - 1
doublescreenSpecularReflectance;///< Percentage expressed between 0 - 1
doubleminLuminance;///< The minimum luminance of the display in nits
doublemaxLuminance;///< The maximum luminance of the display in nits
doubleavgLuminance;///< The average luminance of the display in nits
intlogicalDisplayIndex;///< The internally used index of this display
intadlAdapterIndex;///< The internally used ADL adapter index
intreserved;///< reserved field
}AGSDisplayInfo;
/// The ASIC family
typedefenumAsicFamily
{
AsicFamily_Unknown,///< Unknown architecture, potentially from another IHV. Check \ref AGSDeviceInfo::vendorId
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
typedefstructAGSDeviceInfo
{
constchar*adapterString;///< The adapter name string
AsicFamilyasicFamily;///< Set to Unknown if not AMD hardware
unsignedintisAPU:1;///< Whether this device is an APU
unsignedintisPrimaryDevice:1;///< Whether this device is marked as the primary device
unsignedintisExternal:1;///< Whether this device is a detachable, external device
unsignedintreservedPadding:29;///< Reserved for future use
intvendorId;///< The vendor id
intdeviceId;///< The device id
intrevisionId;///< The revision id
intnumCUs;///< Number of compute units
intnumWGPs;///< Number of RDNA Work Group Processors. Only valid if ASIC is RDNA onwards.
intnumROPs;///< Number of ROPs
intcoreClock;///< Core clock speed at 100% power in MHz
intmemoryClock;///< Memory clock speed at 100% power in MHz
intmemoryBandwidth;///< Memory bandwidth in MB/s
floatteraFlops;///< Teraflops of GPU. Zero if not GCN onwards. Calculated from iCoreClock * iNumCUs * 64 Pixels/clk * 2 instructions/MAD
unsignedlonglonglocalMemoryInBytes;///< The size of local memory in bytes. 0 for non AMD hardware.
unsignedlonglongsharedMemoryInBytes;///< 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.
intnumDisplays;///< 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.
inteyefinityEnabled;///< Indicates if Eyefinity is active
inteyefinityGridWidth;///< Contains width of the multi-monitor grid that makes up the Eyefinity Single Large Surface.
inteyefinityGridHeight;///< Contains height of the multi-monitor grid that makes up the Eyefinity Single Large Surface.
inteyefinityResolutionX;///< Contains width in pixels of the multi-monitor Single Large Surface.
inteyefinityResolutionY;///< Contains height in pixels of the multi-monitor Single Large Surface.
inteyefinityBezelCompensated;///< Indicates if bezel compensation is used for the current SLS display area. 1 if enabled, and 0 if disabled.
intadlAdapterIndex;///< Internally used index into the ADL list of adapters
intreserved;///< reserved field
}AGSDeviceInfo;
/// \defgroup general General API functions
/// API for initialization, cleanup, HDR display modes and Crossfire GPU count
/// @{
typedefvoid*(__stdcall*AGS_ALLOC_CALLBACK)(size_tallocationSize);///< AGS user defined allocation prototype
typedefvoid(__stdcall*AGS_FREE_CALLBACK)(void*allocationPtr);///< AGS user defined free prototype
/// The configuration options that can be passed in to \ref agsInitialize
typedefstructAGSConfiguration
{
AGS_ALLOC_CALLBACKallocCallback;///< Optional memory allocation callback. If not supplied, malloc() is used
AGS_FREE_CALLBACKfreeCallback;///< Optional memory freeing callback. If not supplied, free() is used
}AGSConfiguration;
/// The top level GPU information returned from \ref agsInitialize
typedefstructAGSGPUInfo
{
constchar*driverVersion;///< The AMD driver package version
constchar*radeonSoftwareVersion;///< The Radeon Software Version
intnumDevices;///< 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.
/// The result returned from \ref agsCheckDriverVersion
typedefenumAGSDriverVersionResult
{
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 version number made using AGS_MAKE_VERSION( AMD_AGS_VERSION_MAJOR, AMD_AGS_VERSION_MINOR, AMD_AGS_VERSION_PATCH ).
///
AMD_AGS_APIintagsGetVersionNumber();
///
/// 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.
Use and Redistribution. You may use and redistribute Intel’s Control API software and the header files for the Intel® Graphics Control Library (collectively, the “Software”), solely for use on Intel platforms, provided the following conditions are met:
* Redistributions must reproduce the above copyright notice and the following terms of use in the Software and in the documentation and/or other materials provided with the distribution.
* Neither the name of Intel nor the names of its suppliers may be used to endorse or promote products derived from this Software without specific prior written permission.
* No reverse engineering, decompilation, or disassembly of Software provided to you in binary form is permitted.
Third Party Software. The Software may contain Third Party Software. “Third Party Software” is third party software, open source software or other Intel software listed in the “third-party-software.txt” or other similarly named text file that is included with the Software. Third Party Software, even if included with the distribution of the Software, may be governed by separate license terms, including without limitation, third party license terms, open source software notices and terms, and/or other Intel software license terms. These separate license terms solely govern your use of the Third Party Software.
Ownership. Title to the Software and all copies remain with Intel or its suppliers.
DISCLAIMER. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED. THIS SOFTWARE IS NOT INTENDED FOR USE IN SYSTEMS OR APPLICATIONS WHERE FAILURE OF THE SOFTWARE MAY CAUSE PERSONAL INJURY OR DEATH AND YOU AGREE THAT YOU ARE FULLY RESPONSIBLE FOR ANY CLAIMS, COSTS, DAMAGES, EXPENSES, AND ATTORNEYS’ FEES ARISING OUT OF ANY SUCH USE, EVEN IF ANY CLAIM ALLEGES THAT INTEL WAS NEGLIGENT REGARDING THE DESIGN OR MANUFACTURE OF THE SOFTWARE.
LIMITATION OF LIABILITY; INDEMNITY. IN NO EVENT WILL INTEL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. YOU AGREE TO INDEMNIFY, DEFEND, AND HOLD INTEL HARMLESS AGAINST ANY CLAIMS, DAMAGES, AND EXPENSES RESULTING FROM YOUR USE OR UNAUTHORIZED USE OF THE SOFTWARE.
No support. Intel may make changes to the Software, at any time without notice, and is not obligated to support, update or provide training for the Software.
Termination. Your right to use the Software is terminated immediately in the event of your breach of this agreement.
Feedback. Should you provide Intel with comments, modifications, corrections, enhancements or other input (“Feedback”) related to the Software Intel will be free to use, disclose, reproduce, license or otherwise distribute or exploit the Feedback in its sole discretion without any obligations or restrictions of any kind, including without limitation, intellectual property rights or licensing obligations.
Compliance with laws. You agree to comply with all applicable laws and regulations governing your use, transfer, import or export (or prohibition thereof) of the Software.
Governing law. All disputes will be governed by the laws of the United States of America and the State of Delaware without reference to conflict of law principles and subject to the exclusive jurisdiction of the state or federal courts sitting in the State of Delaware, and each party agrees that it submits to the personal jurisdiction and venue of those courts and waives any objections. The United Nations Convention on Contracts for the International Sale of Goods (1980) is specifically excluded and will not apply to the Software.
Severability. The parties intend that if a court holds that any provision of this agreement is invalid or unenforceable under applicable law, the court will modify the provision to the minimum extent necessary to make it valid and enforceable or sever and delete the provision from this agreement. Any change to or deletion of a provision of this agreement under this Section will not affect the validity or enforceability of the remainder of this agreement, which will continue in full force and effect.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.