summaryrefslogtreecommitdiffstats
path: root/presets/examples/25.jsonc
diff options
context:
space:
mode:
authorsumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
committersumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
commit76424950e373d3b04ac3dd13019151bfba3e8423 (patch)
tree4c3cfdbda039e592b9186be3e28f8d7cfd439e8a /presets/examples/25.jsonc
Add the files
Diffstat (limited to 'presets/examples/25.jsonc')
-rw-r--r--presets/examples/25.jsonc316
1 files changed, 316 insertions, 0 deletions
diff --git a/presets/examples/25.jsonc b/presets/examples/25.jsonc
new file mode 100644
index 0000000..ddb3fdf
--- /dev/null
+++ b/presets/examples/25.jsonc
@@ -0,0 +1,316 @@
+// Based on #1576
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+ "display": {
+ "color": {
+ "keys": "blue"
+ },
+ "separator": "",
+ // Constants are reusable strings referenced by {$1}, {$2}, etc.
+ // These contain ANSI escape codes for cursor positioning
+ "constants": [
+ "──────────────────────────────────────────────", // {$1} - horizontal line for inner borders
+ "\u001b[47D", // {$2} - move cursor left 47 columns
+ "\u001b[47C", // {$3} - move cursor right 47 columns
+ "\u001b[46C", // {$4} - move cursor right 46 columns
+ "══════════════════════════════════════════════" // {$5} - horizontal line for outer borders
+ ],
+ "brightColor": false
+ },
+ "modules": [
+ {
+ "type": "version",
+ "key": "╔═══════════════╦═{$5}╗\u001b[41D",
+ "format": "\u001b[1m{#keys} {1} - {2} "
+ },
+ {
+ "type": "os",
+ // Key format breakdown for OS module:
+ // "║ {icon} \u001b[s{sysname}\u001b[u\u001b[10C│{$3}║{$2}"
+ //
+ // ║ - Left border of key block
+ // {icon} - OS icon (defined internally by fastfetch)
+ // \u001b[s - ANSI escape: save cursor position (ESC[s)
+ // {sysname} - Format variable: system name (e.g., "Linux", "Darwin")
+ // \u001b[u - ANSI escape: restore cursor to saved position (ESC[u)
+ // Necessary because the length of `{sysname}` differs between different platforms
+ // \u001b[10C - ANSI escape: move cursor right 10 columns (ESC[10C)
+ // │ - Right border of key block (always 10 columns from left border)
+ // {$3} - Reference to constants[2]: move cursor right 47 columns
+ // ║ - Right border of value block
+ // {$2} - Reference to constants[1]: move cursor left 47 columns
+ //
+ // This creates a fixed-width layout where the key block is exactly 10 columns wide,
+ // regardless of the actual content length. The cursor manipulation ensures proper
+ // alignment for the table-like structure.
+ "key": "║ {icon} \u001b[s{sysname}\u001b[u\u001b[10C║{$3}║{$2}"
+ },
+ {
+ "type": "datetime",
+ "key": "║ {icon} Fetched ║{$3}║{$2}",
+ "format": "{year}-{month-pretty}-{day-pretty} {hour-pretty}:{minute-pretty}:{second-pretty} {timezone-name}"
+ },
+ {
+ "type": "locale",
+ "key": "║ {icon} Locale ║{$3}║{$2}"
+ },
+
+ // Hardware section with cyan color theme
+ {
+ "type": "custom",
+ "key": "║{#cyan}┌──────────────┬{$1}┐{#keys}║\u001b[37D",
+ "format": "{#bright_cyan} Hardware "
+ },
+ {
+ "type": "chassis",
+ // Similar structure but with cyan color formatting:
+ // │{#cyan}│ - Left border with cyan color
+ // {icon} - Chassis icon
+ // Chassis - Fixed label text
+ // │{$4}│{#keys}║{$2} - Positioning and borders for value area
+ "key": "║{#cyan}│ {icon} Chassis │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "memory",
+ "key": "║{#cyan}│ {icon} RAM │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "swap",
+ "key": "║{#cyan}│ {icon} SWAP │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "cpu",
+ "key": "║{#cyan}│ {icon} CPU │{$4}│{#keys}║{$2}",
+ "showPeCoreCount": true
+ },
+ {
+ "type": "gpu",
+ "key": "║{#cyan}│ {icon} GPU │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "disk",
+ "key": "║{#cyan}│ {icon} Disk │{$4}│{#keys}║{$2}",
+ "format": "{size-used} \/ {size-total} ({size-percentage}) - {filesystem}",
+ },
+ {
+ "type": "battery",
+ "key": "║{#cyan}│ {icon} Battery │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "custom",
+ "key": "║{#cyan}└──────────────┴{$1}┘{#keys}║",
+ "format": ""
+ },
+
+ // Desktop section with green color theme
+ {
+ "type": "custom",
+ "key": "║{#green}┌──────────────┬{$1}┐{#keys}║\u001b[37D",
+ "format": "{#bright_green} Desktop "
+ },
+ {
+ "type": "de",
+ "key": "║{#green}│ {icon} Desktop │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "wm",
+ "key": "║{#green}│ {icon} Session │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "display",
+ "key": "║{#green}│ {icon} Display │{$4}│{#keys}║{$2}",
+ "compactType": "original-with-refresh-rate"
+ },
+ {
+ "type": "gpu",
+ "key": "║{#green}│ {icon} G-Driver │{$4}│{#keys}║{$2}",
+ "format": "{driver}"
+ },
+ {
+ "type": "custom",
+ "key": "║{#green}└──────────────┴{$1}┘{#keys}║",
+ "format": ""
+ },
+
+ // Terminal section with yellow color theme
+ {
+ "type": "custom",
+ "key": "║{#yellow}┌──────────────┬{$1}┐{#keys}║\u001b[37D",
+ "format": "{#bright_yellow} Terminal "
+ },
+ {
+ "type": "shell",
+ "key": "║{#yellow}│ {icon} Shell │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "terminal",
+ "key": "║{#yellow}│ {icon} Terminal │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "terminalfont",
+ "key": "║{#yellow}│ {icon} Term Font │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "terminaltheme",
+ "key": "║{#yellow}│ {icon} Colors │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "packages",
+ "key": "║{#yellow}│ {icon} Packages │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "custom",
+ "key": "║{#yellow}└──────────────┴{$1}┘{#keys}║",
+ "format": ""
+ },
+
+ // Development section with red color theme
+ {
+ "type": "custom",
+ "key": "║{#red}┌──────────────┬{$1}┐{#keys}║\u001b[39D",
+ "format": "{#bright_red} Development "
+ },
+ {
+ "type": "command",
+ "keyIcon": "", // Custom icon override
+ "key": "║{#red}│ {icon} Rust │{$4}│{#keys}║{$2}",
+ "text": "rustc --version",
+ "format": "rustc {~6,13}" // Print 6th to 13th characters (version number)
+ },
+ {
+ "type": "command",
+ "condition": {
+ "!system": "Windows" // Posix version
+ },
+ "keyIcon": "",
+ "key": "║{#red}│ {icon} Clang │{$4}│{#keys}║{$2}",
+ "text": "clang --version | sed -n 's/.*version \\([0-9][0-9.]*\\).*/\\1/p'",
+ "format": "clang {}"
+ },
+ {
+ "type": "command",
+ "condition": {
+ "system": "Windows" // Windows version
+ },
+ "keyIcon": "",
+ "key": "║{#red}│ {icon} Clang │{$4}│{#keys}║{$2}",
+ "text": "clang --version | findstr version", // Finds the line with "version"
+ "format": "clang {~-6}" // Prints the last 6 characters (version number)
+ },
+ {
+ "type": "command",
+ "keyIcon": "",
+ "key": "║{#red}│ {icon} NodeJS │{$4}│{#keys}║{$2}",
+ "text": "node --version",
+ "format": "node {~1}" // {~1} removes first character (v)
+ },
+ {
+ "type": "command",
+ "keyIcon": "",
+ "key": "║{#red}│ {icon} Go │{$4}│{#keys}║{$2}",
+ "text": "go version | cut -d' ' -f3",
+ "format": "go {~2}" // {~2} removes first 2 characters (go)
+ },
+ {
+ "type": "command",
+ "keyIcon": "",
+ "key": "║{#red}│ {icon} Zig │{$4}│{#keys}║{$2}",
+ "text": "zig version",
+ "format": "zig {}"
+ },
+ {
+ "type": "editor",
+ "key": "║{#red}│ {icon} Editor │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "command",
+ "keyIcon": "󰊢",
+ "key": "║{#red}│ {icon} Git │{$4}│{#keys}║{$2}",
+ "text": "git version",
+ "format": "git {~12}"
+ },
+ {
+ "type": "font",
+ "key": "║{#red}│ {icon} Interface │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "custom",
+ "key": "║{#red}└──────────────┴{$1}┘{#keys}║",
+ "format": ""
+ },
+
+ // Uptime section with magenta color theme
+ {
+ "type": "custom",
+ "key": "║{#magenta}┌──────────────┬{$1}┐{#keys}║\u001b[36D",
+ "format": "{#bright_magenta} Uptime "
+ },
+ {
+ "type": "uptime",
+ "key": "║{#magenta}│ {icon} Uptime │{$4}│{#keys}║{$2}"
+ },
+ {
+ "type": "users",
+ "myselfOnly": true, // Only show current user
+ "keyIcon": "",
+ "key": "║{#magenta}│ {icon} Login │{$4}│{#keys}║{$2}"
+ },
+ {
+ "condition": { // Conditional module: only show on non-macOS
+ "!system": "macOS"
+ },
+ "type": "disk",
+ "keyIcon": "",
+ "key": "║{#magenta}│ {icon} OS Age │{$4}│{#keys}║{$2}",
+ "folders": "/", // Check root filesystem
+ "format": "{create-time:10} [{days} days]" // Show creation time and age in days
+ },
+ {
+ "condition": { // Conditional module: only show on macOS
+ "system": "macOS"
+ },
+ "type": "disk",
+ "keyIcon": "",
+ "key": "║{#magenta}│ {icon} OS Age │{$4}│{#keys}║{$2}",
+ "folders": "/System/Volumes/VM", // Work around for APFS on macOS
+ "format": "{create-time:10} [{days} days]"
+ },
+ {
+ "type": "custom",
+ "key": "║{#magenta}└──────────────┴{$1}┘{#keys}║",
+ "format": ""
+ },
+ {
+ "type": "custom",
+ "key": "╚═════════════════{$5}╝", // Bottom border of the entire layout
+ "format": ""
+ },
+
+ // End with color palette and line break
+ "break", // Add a blank line
+ "colors" // Display color palette
+ ]
+}
+
+/*
+Key Format Structure Explanation:
+
+The key format uses a combination of:
+1. Unicode box drawing characters (│ ┌ ┐ └ ┘ ┬ ┴) for borders
+2. ANSI escape codes for cursor positioning (\u001b[...)
+3. Format variables ({icon}, {sysname}, etc.)
+4. Constant references ({$1}, {$2}, etc.)
+5. Color formatting ({#color})
+
+ANSI Escape Codes Used:
+- \u001b[s - Save cursor position (ESC[s)
+- \u001b[u - Restore cursor position (ESC[u)
+- \u001b[nC - Move cursor right n columns (ESC[nC)
+- \u001b[nD - Move cursor left n columns (ESC[nD)
+
+This creates a table-like layout with fixed column widths and proper alignment,
+regardless of the actual content length in each field.
+
+For more ANSI escape code reference, see:
+https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797#cursor-controls
+*/