diff options
Diffstat (limited to 'presets/examples/25.jsonc')
| -rw-r--r-- | presets/examples/25.jsonc | 316 |
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 +*/ |