initial commit

This commit is contained in:
ronny abraham 2025-05-05 16:06:10 +03:00
commit 727c1cbf17
9 changed files with 469 additions and 0 deletions

103
.gitignore vendored Normal file
View file

@ -0,0 +1,103 @@
# Created by https://www.toptal.com/developers/gitignore/api/vim,emacs,osx
# Edit at https://www.toptal.com/developers/gitignore?templates=vim,emacs,osx
### Emacs ###
# -*- mode: gitignore; -*-
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*
# Org-mode
.org-id-locations
*_archive
# flymake-mode
*_flymake.*
# eshell files
/eshell/history
/eshell/lastdir
# elpa packages
/elpa/
# reftex files
*.rel
# AUCTeX auto folder
/auto/
# cask packages
.cask/
dist/
# Flycheck
flycheck_*.el
# server auth directory
/server/
# projectiles files
.projectile
# directory configuration
.dir-locals.el
# network security
/network-security.data
### OSX ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### Vim ###
# Swap
[._]*.s[a-v][a-z]
!*.svg # comment out if you don't need vector files
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
# Session
Session.vim
Sessionx.vim
# Temporary
.netrwhist
# Auto-generated tag files
tags
# Persistent undo
[._]*.un~
# End of https://www.toptal.com/developers/gitignore/api/vim,emacs,osx

0
README.md Normal file
View file

21
bin/install.sh Normal file
View file

@ -0,0 +1,21 @@
#!/bin/bash
target="$HOME/.bashrc"
config_dir="$HOME/.config/prompt-theme"
config_file="$config_dir/config.yaml"
source_line="source $config_dir/bin/prompt-theme.sh"
if ! grep -Fxq "$source_line" "$target"; then
echo "$source_line" >> "$target"
echo "✅ Added prompt-theme to $target"
else
echo " prompt-theme is already sourced in $target"
fi
# copy default config file if none exists
if [[ ! -f "$config_file" ]]; then
cp "$config_dir/share/_config.yaml" "$config_file"
else
echo " Existing config.yaml found at $config_file (unchanged)"
fi

72
bin/prompt-theme.sh Executable file
View file

@ -0,0 +1,72 @@
#!/bin/bash
#config_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
config_dir="$HOME/.config/prompt-theme/"
config_file="$config_dir/config.yaml"
shell_colors="$config_dir/dircolors"
# Accept theme as CLI arg, fallback to config
theme="$1"
# if no parameter given, look for default in config.yaml
# use 'yq' to parse the config.yaml file
# Ensure yq is installed
if ! command -v yq >/dev/null 2>&1; then
echo "⚠️ Warning: 'yq' is not installed. Cannot parse $config_file."
return 0
fi
# If no theme given, attempt to get it from config
if [[ -z "$theme" && -f "$config_file" ]]; then
theme=$(yq '.default' "$config_file")
fi
# Fail silently if no theme could be determined
if [[ -z "$theme" ]]; then
echo "⚠️ Warning: No theme specified and no default set in config file."
return 0
fi
# Determine which dircolors command to use
# give a warning and fail silently if not found
if [[ "$(uname)" == "Darwin" ]]; then
if command -v gdircolors >/dev/null 2>&1; then
dircolors_cmd="gdircolors"
else
echo "❌ Error: gdircolors not found. Please install via 'brew install coreutils'."
return 0
fi
else
if command -v dircolors >/dev/null 2>&1; then
dircolors_cmd="dircolors"
else
echo "❌ Error: dircolors not found. Please install coreutils."
return 0
fi
fi
# Apply dircolors theme or fallback
if [[ -r "$shell_colors/$theme" ]]; then
eval "$($dircolors_cmd -b "$shell_colors/$theme")"
elif [[ -r "$HOME/.dircolors" ]]; then
eval "$($dircolors_cmd -b "$HOME/.dircolors")"
else
echo "⚠️ Warning: No readable dircolors file found for '$theme' or ~/.dircolors. Using default ls colors."
fi
# get prompt from config.yaml if available
if [[ -f "$config_file" ]]; then
prompt=$(yq ".prompts.$theme" "$config_file")
else
prompt=""
fi
# apply prompt or fallback
if [[ -n "$prompt" && "$prompt" != "null" ]]; then
export PS1="$prompt"
else
echo "⚠️ Warning: No prompt found for theme '$theme'. Using fallback."
export PS1='\[\033[01;34m\]\u@\h \[\033[01;32m\]\w\[\033[00m\] \$ '
fi

8
config.yaml Normal file
View file

@ -0,0 +1,8 @@
default: bone
prompts:
default: '\[\033[01;34m\]\u@\h \[\033[01;32m\]\w\[\033[00m\] \$ '
bone: '\[\033[38;5;250m\]\u@\h \[\033[38;5;160m\]\w\[\033[0m\] \$ '
nature: '\[\033[38;5;100m\]\u@\h \[\033[38;5;65m\]\w\[\033[0m\] \$ '
ayu-mirage: '\[\033[38;5;179m\]\u@\h \[\033[38;5;110m\]\w\[\033[0m\] \$ '

103
dircolors/ayu-mirage Normal file
View file

@ -0,0 +1,103 @@
# ayu-mirage dircolors
# Custom dircolors for Ronny
TERM xterm-256color
# Normal text
NORMAL 00
FILE 00
DIR 01;38;5;110
LINK 01;38;5;180
SYMLINK 01;38;5;180
FIFO 38;5;240
SOCK 38;5;243
BLK 38;5;179
CHR 38;5;179
ORPHAN 38;5;124
MISSING 38;5;124
# Executables
EXEC 01;38;5;215
# Archives
.7z 38;5;174
.tar 38;5;174
.tgz 38;5;174
.tbz 38;5;174
.tbz2 38;5;174
.txz 38;5;174
.zip 38;5;174
.rar 38;5;174
.gz 38;5;174
.bz2 38;5;174
.xz 38;5;174
.zst 38;5;174
.lzma 38;5;174
.lzo 38;5;174
.apk 38;5;174
# Images
.jpg 38;5;139
.jpeg 38;5;139
.png 38;5;139
.gif 38;5;139
.bmp 38;5;139
.svg 38;5;139
.webp 38;5;139
.tiff 38;5;139
.xcf 38;5;139
# Audio
.mp3 38;5;109
.wav 38;5;109
.flac 38;5;109
.ogg 38;5;109
.opus 38;5;109
.m4a 38;5;109
# Video
.mp4 38;5;109
.mkv 38;5;109
.mov 38;5;109
.webm 38;5;109
.avi 38;5;109
# Code & Config
.sh 01;38;5;215
.py 01;38;5;151
.js 01;38;5;151
.ts 01;38;5;151
.rs 01;38;5;151
.go 01;38;5;151
.c 01;38;5;151
.cpp 01;38;5;151
.h 01;38;5;151
.hpp 01;38;5;151
.html 01;38;5;109
.css 01;38;5;182
.scss 01;38;5;182
.json 01;38;5;109
.yaml 01;38;5;109
.yml 01;38;5;109
.toml 01;38;5;109
.ini 01;38;5;109
.conf 01;38;5;109
.env 01;38;5;109
.lock 38;5;240
# Docs
.md 38;5;182
.txt 38;5;182
.rst 38;5;182
.pdf 38;5;182
.doc 38;5;182
.docx 38;5;182
.odt 38;5;182
# Backups, logs, junk
*~ 38;5;240
.bak 38;5;240
.old 38;5;240
.log 38;5;240
.swp 38;5;240
.tmp 38;5;240

77
dircolors/bone Normal file
View file

@ -0,0 +1,77 @@
# Configuration for LS_COLORS: Theme = Bone Expanded
TERM xterm-256color
RESET 0
# Directories and Links
DIR 38;5;180 # pale tan bone
LINK 01;38;5;181 # slightly pinkish clay (symbolic links)
SYMLINK 01;38;5;181
ORPHAN 01;38;5;124 # warning red for broken links
# Executables and Permissions
EXEC 01;38;5;144 # muted green-grey ivory
SETUID 37;41
SETGID 30;43
STICKY_OTHER_WRITABLE 36;40
# Devices and Pipes
FIFO 38;5;245 # dull pipe-gray
SOCK 38;5;248 # slightly warmer socket tone
BLK 38;5;146 # chalk
CHR 38;5;146
# Archives
.tar 38;5;137 # old dusted rose
.tgz 38;5;137
.zip 38;5;137
.7z 38;5;137
.rar 38;5;137
.gz 38;5;137
.bz2 38;5;137
.xz 38;5;137
.zst 38;5;137
# Text & Config Files
.txt 38;5;250 # dry bone
.md 38;5;251 # pale parchment
.conf 38;5;145 # old wall paint
.ini 38;5;145
.yaml 38;5;145
.yml 38;5;145
.json 38;5;145
.env 38;5;145
# Source Code
.py 38;5;180 # clean structure
.js 38;5;182 # ash-ivory green
.ts 38;5;182
.sh 38;5;143 # antique olive
.bash 38;5;143
.html 38;5;181 # soft clay
.css 38;5;180 # bone-yellow
.scss 38;5;180
.java 38;5;145 # structural beige
.cpp 38;5;145
.c 38;5;145
.go 38;5;109 # dry plant green
.rs 38;5;95 # deep ochre
# Media Files
.jpg 38;5;139 # warm desaturated photo
.jpeg 38;5;139
.png 38;5;139
.svg 38;5;139
.gif 38;5;139
.mp4 38;5;174 # soft highlight red
.webm 38;5;174
.mp3 38;5;146 # polished bone
.wav 38;5;146
.ogg 38;5;146
.flac 38;5;146
# Backup & Temp
*~ 38;5;245
.bak 38;5;245
.swp 38;5;245
.tmp 38;5;245
.old 38;5;245

77
dircolors/nature Normal file
View file

@ -0,0 +1,77 @@
# Configuration for LS_COLORS: Theme = Nature Expanded
TERM xterm-256color
RESET 0
# Directories and Links
DIR 38;5;114 # leafy green
LINK 01;38;5;180 # bark/twig brown (symbolic/hard links)
SYMLINK 01;38;5;180
ORPHAN 01;38;5;124 # decayed red-brown for broken links
# Executables and Permissions
EXEC 01;38;5;142 # mossy yellow-green
SETUID 37;41
SETGID 30;43
STICKY_OTHER_WRITABLE 36;40
# Devices and Pipes
FIFO 38;5;95 # earth pipe muted red clay
SOCK 38;5;101 # underground stone blue
BLK 01;38;5;137 # light bark
CHR 01;38;5;137
# Archives
.tar 38;5;131 # dusty red-brown
.tgz 38;5;131
.zip 38;5;131
.7z 38;5;131
.rar 38;5;131
.gz 38;5;131
.bz2 38;5;131
.xz 38;5;131
.zst 38;5;131
# Text & Config Files
.txt 38;5;106 # fresh leaf
.md 38;5;108 # stem green
.conf 38;5;109 # spring leaf
.ini 38;5;109
.yaml 38;5;109
.yml 38;5;109
.json 38;5;109
.env 38;5;109
# Source Code
.py 38;5;113 # python ivy
.js 38;5;150 # soft moss
.ts 38;5;150
.sh 38;5;142 # shell ferns
.bash 38;5;142
.html 38;5;180 # warm bark
.css 38;5;179 # golden straw
.scss 38;5;179
.java 38;5;108 # jungle trunk
.cpp 38;5;108
.c 38;5;108
.go 38;5;107 # damp forest floor
.rs 38;5;94 # rich soil
# Media Files
.jpg 38;5;138 # treebark
.jpeg 38;5;138
.png 38;5;138
.svg 38;5;138
.gif 38;5;138
.mp4 38;5;173 # sunset orange
.webm 38;5;173
.mp3 38;5;109 # melodic green
.wav 38;5;109
.ogg 38;5;109
.flac 38;5;109
# Backup & Temp
*~ 38;5;240
.bak 38;5;240
.swp 38;5;240
.tmp 38;5;240
.old 38;5;240

8
share/_config_yaml Normal file
View file

@ -0,0 +1,8 @@
default: ayu-mirage
prompts:
default: '\[\033[01;34m\]\u@\h \[\033[01;32m\]\w\[\033[00m\] \$ '
bone: '\[\033[38;5;250m\]\u@\h \[\033[38;5;160m\]\w\[\033[0m\] \$ '
nature: '\[\033[38;5;100m\]\u@\h \[\033[38;5;65m\]\w\[\033[0m\] \$ '
ayu-mirage: '\[\033[38;5;179m\]\u@\h \[\033[38;5;110m\]\w\[\033[0m\] \$ '