Files
ps1-craft/.context.json
2026-01-24 15:34:23 +00:00

506 lines
13 KiB
JSON

{
"project": {
"name": "Bashrc Dotfiles",
"purpose": "Global and per-user bash prompt + banner with seasonal palettes and time/season emoji accents.",
"repo_root": "/home/steffen/Bashrc",
"default_branch": "main",
"release_state": "main is production-ready"
},
"branches": {
"main": {
"notes": [
"Shared PS1 module in dotfiles/ps1/ps1.sh is source of truth for both Linux and macOS installers.",
"README documents 4seasons branch, seasonal ranges, static/dynamic choice.",
"README example image uses images/bash-pallete.png."
]
},
"dev": {
"notes": [
"Development branch; currently in sync with main."
]
}
},
"files": {
"ps1_shared": "dotfiles/ps1/ps1.sh",
"linux_installer": "dotfiles/install/install-linux-global.sh",
"macos_installer": "dotfiles/install/install-macos-user.sh",
"global_installer_wrapper": "dotfiles/install/install-global-ps1.sh",
"readme": "README.md",
"palette_image": "images/bash-pallete.png"
},
"install_behavior": {
"linux": {
"script": "dotfiles/install/install-linux-global.sh",
"scope": "global (all users)",
"installs": [
"/etc/profile.d/ps1.sh",
"/etc/profile.d/banner.sh"
],
"sources_from": "/etc/bash.bashrc",
"prompts": [
"PS1 only / Banner only / Both",
"PS1 mode: Single season / Dynamic / Contest / Holidays / Custom (if PS1 selected)",
"Season pick (if single season)",
"Contest layout selection (if contest/holidays)",
"Style preset selection (if contest)",
"Holiday selection (if holidays)",
"Custom style selection (if custom)",
"Enable git capsule for all themes (if PS1 selected)"
],
"season_config_file": "/etc/ps1-season",
"style_config_file": "/etc/ps1-style",
"banner_punchline_file": "/etc/ps1-punchline"
},
"macos": {
"script": "dotfiles/install/install-macos-user.sh",
"scope": "per-user",
"installs": [
"~/.config/ps1/ps1.sh"
],
"sources_from": [
"~/.bashrc",
"~/.bash_profile"
],
"prompts": [
"PS1 mode: Single season / Dynamic / Contest / Holidays / Custom",
"Season pick (if single season)",
"Contest layout selection (if contest/holidays)",
"Style preset selection (if contest)",
"Holiday selection (if holidays)",
"Custom style selection (if custom)",
"Enable git capsule for all themes"
],
"season_config_file": "~/.config/ps1/season",
"style_config_file": "~/.config/ps1/style"
},
"global_installer_wrapper": {
"script": "dotfiles/install/install-global-ps1.sh",
"behavior": "Copies shared PS1 module to /etc/profile.d/ps1.sh and updates /etc/bash.bashrc."
}
},
"season_rules": {
"timezone": "Europe/Oslo",
"dynamic_ranges": {
"spring": "March-May",
"summer": "June-August",
"autumn": "September-mid November (before Nov 15)",
"winter": "mid November-February"
},
"config": {
"mode_env": "PS1_SEASON_MODE=dynamic|static",
"season_env": "PS1_SEASON=winter|spring|summer|autumn",
"config_file_keys": [
"PS1_SEASON_MODE",
"PS1_SEASON"
]
}
},
"palettes": {
"winter": {
"Z1_BG": 59,
"Z2_BG": 61,
"Z3_BG": 63,
"Z4_BG": 38,
"Z5_BG": 37,
"Z1_FG": 255,
"Z2_FG": 255,
"PATH_FG": 152,
"FRAME": 60
},
"spring": {
"Z1_BG": 68,
"Z2_BG": 70,
"Z3_BG": 72,
"Z4_BG": 121,
"Z5_BG": 120,
"Z1_FG": 255,
"Z2_FG": 22,
"PATH_FG": 28,
"FRAME": 65
},
"summer": {
"Z1_BG": 141,
"Z2_BG": 142,
"Z3_BG": 143,
"Z4_BG": 214,
"Z5_BG": 208,
"Z1_FG": 255,
"Z2_FG": 0,
"PATH_FG": 0,
"FRAME": 130
},
"autumn": {
"Z1_BG": 93,
"Z2_BG": 95,
"Z3_BG": 97,
"Z4_BG": 166,
"Z5_BG": 136,
"Z1_FG": 255,
"Z2_FG": 255,
"PATH_FG": 223,
"FRAME": 95
}
},
"styles": {
"default": "aurora",
"available": [
{
"id": "aurora",
"name": "Aurora",
"description": "Powerline blocks with seasonal palette, two-line calm layout.",
"layout": "two-line, segmented blocks",
"preview": "[date time user] > [@host /path]"
},
{
"id": "neon",
"name": "Neon",
"description": "Magenta/cyan cyber blocks, high contrast, two-line.",
"layout": "two-line, neon blocks",
"preview": "[user time] > [@host /path]"
},
{
"id": "forge",
"name": "Forge",
"description": "Warm copper blocks, heavy frame, assertive.",
"layout": "two-line, bold blocks",
"preview": "[date time user] > [@host /path]"
},
{
"id": "circuit",
"name": "Circuit",
"description": "Green scanline rail, minimal chrome, compact.",
"layout": "two-line, rail style",
"preview": "[user time] - @host /path"
},
{
"id": "mono",
"name": "Mono",
"description": "Clean monochrome, fast read, low noise.",
"layout": "two-line, minimal",
"preview": "[date time user] @host /path"
},
{
"id": "git",
"name": "Git",
"description": "Minimal blocks with git capsule when in repo.",
"layout": "two-line, git capsule on line 2",
"preview": "[date time user] @host - /path (git)"
},
{
"id": "hawolex",
"name": "Hawolex",
"description": "Winter neon with tech icons, contest layout.",
"layout": "two-line, contest layout",
"preview": "[date time user] @host - /path"
},
{
"id": "radar",
"name": "Radar",
"description": "Green scanline HUD with a clean, low-noise read.",
"layout": "two-line, minimal HUD",
"preview": "[user time] @host /path"
},
{
"id": "synthwave",
"name": "Synthwave",
"description": "Pink/cyan/orange glow blocks, aggressive contrast.",
"layout": "two-line, three blocks",
"preview": "[date time user] | @host | /path"
},
{
"id": "noir",
"name": "Noir",
"description": "Near-black minimal with a sharp path accent.",
"layout": "two-line, minimal",
"preview": "[date time user] @host /path"
},
{
"id": "topo",
"name": "Topo",
"description": "Elevation-style path with multi-tone segments.",
"layout": "two-line, path emphasis",
"preview": "[date time user] @host /path"
},
{
"id": "glitch",
"name": "Glitch",
"description": "Jitter separators and neon contrast.",
"layout": "two-line, glitch separators",
"preview": "[date time user] ~ @host /path"
},
{
"id": "arcticfire",
"name": "ArcticFire",
"description": "Icy blues on the left, ember orange on the right.",
"layout": "two-line, three blocks",
"preview": "[date time user] | @host | /path"
},
{
"id": "acidlime",
"name": "AcidLime",
"description": "Black background with electric green signal.",
"layout": "two-line, minimal",
"preview": "[date time user] @host /path"
}
],
"config": {
"env": "PS1_STYLE=aurora|neon|forge|circuit|mono|git|hawolex|radar|synthwave|noir|topo|glitch|arcticfire|acidlime; PS1_STYLE_PACK=standard|contest|holiday|custom; PS1_CONTEST_LAYOUT=day-time-user|user-time|time-user|day-time; PS1_HOLIDAY=christmas|easter|halloween|valentine|thanksgiving|newyear; PS1_GIT=0|1",
"config_file_keys": [
"PS1_STYLE",
"PS1_STYLE_PACK",
"PS1_CONTEST_LAYOUT",
"PS1_HOLIDAY",
"PS1_GIT"
]
}
},
"emoji_rules": {
"fixed_times": {
"lunch": "11:00-11:29 => 🥪",
"dinner": "16:00-16:59 => 🍲"
},
"rotation": "Daily rotation by day-of-year with season offsets.",
"seasonal_accents": {
"spring": {
"sunrise": [
"🌷",
"🌱",
"🐣",
"🌤"
],
"coffee": "☕",
"work": [
"🌿",
"🪴",
"🐝",
"🌼"
],
"evening": "🌤",
"night": "🌙"
},
"summer": {
"sunrise": [
"🌞",
"🏖️",
"🌅",
"🌤"
],
"coffee": "🧃",
"work": [
"🏄",
"🏖️",
"🚤",
"🌴"
],
"evening": "🌇",
"night": "🌙"
},
"autumn": {
"sunrise": [
"🍁",
"🍂",
"🌫️",
"🌦️"
],
"coffee": "☕",
"work": [
"🍂",
"🍄",
"🎃",
"🪵"
],
"evening": "🌆",
"night": "🌙"
},
"winter": {
"sunrise": [
"🏔️",
"🌨️",
"❄️",
"🌌"
],
"coffee": "☕",
"work": [
"🎿",
"⛷️",
"🏂",
"🧊"
],
"evening": "🌆",
"night": "🌙"
}
},
"contest_accents": {
"sunrise": [
"⚡️",
"🛰️",
"🧬",
"🧠"
],
"work": [
"🛠️",
"💾",
"🧪",
"🧩"
],
"coffee": "☕",
"evening": "🎛️",
"night": "🕶️"
},
"holiday_accents": {
"christmas": {
"sunrise": [
"🎄",
"🎅",
"❄️",
"⛄"
],
"work": [
"🎁",
"🧤",
"🧣",
"🦌"
],
"coffee": "☕",
"evening": "🌟",
"night": "🕯️"
},
"easter": {
"sunrise": [
"🐣",
"🥚",
"🌷",
"🌤"
],
"work": [
"🐰",
"🌼",
"🧺",
"🍫"
],
"coffee": "☕",
"evening": "🌅",
"night": "🌙"
},
"halloween": {
"sunrise": [
"🎃",
"🦇",
"🌕",
"🕸️"
],
"work": [
"👻",
"💀",
"🕯️",
"🧪"
],
"coffee": "☕",
"evening": "🌆",
"night": "🕷️"
},
"valentine": {
"sunrise": [
"💖",
"🌹",
"💘",
"💕"
],
"work": [
"💌",
"🍫",
"🕊️",
"💗"
],
"coffee": "☕",
"evening": "🌆",
"night": "🌙"
},
"thanksgiving": {
"sunrise": [
"🦃",
"🍁",
"🥧",
"🍂"
],
"work": [
"🍽️",
"🌾",
"🧺",
"🥖"
],
"coffee": "☕",
"evening": "🌆",
"night": "🌙"
},
"newyear": {
"sunrise": [
"🎆",
"🥂",
"🎇",
"✨"
],
"work": [
"🗓️",
"⏳",
"🚀",
"✨"
],
"coffee": "☕",
"evening": "🌆",
"night": "🌙"
}
},
"style_accents": {
"hawolex": {
"sunrise": [
"💻",
"🚗",
"🔊",
"🎮"
],
"work": [
"🎧",
"🕹️",
"📟",
"🧩"
],
"coffee": "☕",
"evening": "🌆",
"night": "🌙"
}
},
"time_slots": {
"sunrise": "05:00-08:59",
"coffee": "09:00-10:59",
"work": "11:30-15:59",
"evening": "17:00-22:59",
"night": "23:00-04:59"
}
},
"prompt_structure": {
"zone1": "date time user",
"zone2": "host path",
"seasonal_segments": "date | time | user | host+path (subtle seasonal gradient)",
"line2": "status arrow + emoji",
"emoji_padding": "Two spaces after the emoji before the cursor",
"path_shortening": "Keeps /home/user or /Users/user visible and shortens middle if deep.",
"nerd_font_caps": "Always enabled unless PS1_FORCE_ASCII=1"
},
"overrides": {
"force_nerd_font": "PS1_FORCE_NF=1",
"force_ascii": "PS1_FORCE_ASCII=1",
"disable_prompt_env": "DISABLE_GLOBAL_PS1=1",
"disable_prompt_file": "~/.config/ps1/disable"
},
"notes": [
"On Linux, installer affects all users by writing to /etc/profile.d and sourcing from /etc/bash.bashrc.",
"On macOS, installer is per-user and sources from .bashrc/.bash_profile.",
"Seasonal palettes and contest pack are now documented directly in main.",
"README uses images/bash-pallete.png.",
"Git capsule prefers __git_ps1 and falls back to git symbolic-ref/short hash when git-prompt is unavailable or returns empty.",
"Hawolex git capsule enables when PS1_GIT resolves to a truthy value (1/yes/true/on).",
"Custom pack adds bold styles (radar, synthwave, noir, topo, glitch, arcticfire, acidlime)."
]
}