511 lines
14 KiB
JSON
511 lines
14 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 seasonal ranges and style packs.",
|
|
"README example image uses images/bash-pallete.png."
|
|
]
|
|
}
|
|
},
|
|
"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",
|
|
"library": "libary.md",
|
|
"palette_image": "images/bash-pallete.png",
|
|
"theme_images_dir": "images/themes"
|
|
},
|
|
"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)",
|
|
"Layout order selection (seasonal/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)",
|
|
"Layout order selection (seasonal/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": "hawolexv2",
|
|
"name": "HawolexV2",
|
|
"description": "Winter neon with multi-segment gradient.",
|
|
"layout": "two-line, segmented gradient",
|
|
"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|hawolexv2|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).",
|
|
"Library includes emoji usage blocks per theme (sets, fixed times, time slots, rotation)."
|
|
]
|
|
}
|