1 Commits
master ... dev

Author SHA1 Message Date
2aa689724c XCHG tab to space 2025-06-22 08:52:40 +02:00
2 changed files with 37 additions and 80 deletions

View File

@@ -1,43 +0,0 @@
# Installation of zsh (z-shell) with oh-my-zsh in Arch Linux
## Preparation
You would like to install the package manager `yay` instead of `pacman` first:
#### Yay installation
```
sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
```
You can find support at https://github.com/Jguer/yay
#### Installation
```
yay oh-my-zsh
```
#### Configuration
Copy the file `smd.zsh-theme` of this repository to the `themes` directory, like
```
sudo wget -P /usr/share/oh-my-zsh/themes https://git.kuschel.at/public/smd.zsh-theme/releases/download/1.0/smd.zsh-theme
```
Then copy the zsh template `zshrc` to your home directory
```
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
```
Now you have to edit this file with e.g. `nano -cl ~/.zshrc`
an` replace the line with ZSH_THEME to:
```
ZSH_THEME="smd"
```
In addition, I like to replace the HIST_STAMPS to:
```
HIST_STAMPS="yyyy-mm-dd"
```
-- eof --

View File

@@ -1,5 +1,5 @@
# smd.zsh-theme, based on smt.zsh-theme, based on dogenpunk by Matthew Nelson. # smd.zsh-theme by Thomas Kuschel, based on smt.zsh-theme, based on dogenpunk by Matthew Nelson.
REPORTTIME=3
MODE_INDICATOR="%{$fg_bold[red]%}%{$reset_color%}%{$fg[red]%}%{$reset_color%}" MODE_INDICATOR="%{$fg_bold[red]%}%{$reset_color%}%{$fg[red]%}%{$reset_color%}"
local return_status="%{$fg[red]%}%(?..%?⏎)%{$reset_color%} " local return_status="%{$fg[red]%}%(?..%?⏎)%{$reset_color%} "
@@ -21,7 +21,7 @@ ZSH_THEME_GIT_PROMPT_SHA_BEFORE="➤ %{$fg_bold[yellow]%}"
ZSH_THEME_GIT_PROMPT_SHA_AFTER="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_SHA_AFTER="%{$reset_color%}"
function prompt_char() { function prompt_char() {
command git branch &>/dev/null && echo "%{$fg[green]%}±%{$reset_color%}" || echo "%{$fg[cyan]%}◯%{$reset_color%}" command git branch &>/dev/null && echo "%{$fg[green]%}±%{$reset_color%}" || echo "%{$fg[cyan]%}◯%{$reset_color%}"
} }
# Colors vary depending on time lapsed. # Colors vary depending on time lapsed.
@@ -33,48 +33,48 @@ ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%{$fg[cyan]%}"
# Determine the time since last commit. If branch is clean, # Determine the time since last commit. If branch is clean,
# use a neutral color, otherwise colors will vary according to time. # use a neutral color, otherwise colors will vary according to time.
function git_time_since_commit() { function git_time_since_commit() {
local COLOR MINUTES HOURS DAYS SUB_HOURS SUB_MINUTES local COLOR MINUTES HOURS DAYS SUB_HOURS SUB_MINUTES
local last_commit seconds_since_last_commit local last_commit now seconds_since_last_commit
# Only proceed if there is actually a commit # Only proceed if there is actually a commit
if ! last_commit=$(command git -c log.showSignature=false log --pretty=format:'%at' -1 2>/dev/null); then if ! last_commit=$(command git -c log.showSignature=false log --pretty=format:'%at' -1 2>/dev/null); then
echo "[$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL~%{$reset_color%}]" echo "[$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL~%{$reset_color%}]"
return return
fi fi
# Totals # Totals
seconds_since_last_commit=$(( $(date +%s) - last_commit )) now=$(date +%s)
MINUTES=$(( seconds_since_last_commit / 60 )) seconds_since_last_commit=$(( now - last_commit ))
HOURS=$(( MINUTES / 60 )) MINUTES=$(( seconds_since_last_commit / 60 ))
HOURS=$(( MINUTES / 60 ))
# Sub-hours and sub-minutes # Sub-hours and sub-minutes
DAYS=$(( HOURS / 24 )) DAYS=$(( HOURS / 24 ))
SUB_HOURS=$(( HOURS % 24 )) SUB_HOURS=$(( HOURS % 24 ))
SUB_MINUTES=$(( MINUTES % 60 )) SUB_MINUTES=$(( MINUTES % 60 ))
if [[ -z "$(command git status -s 2>/dev/null)" ]]; then if [[ -z "$(command git status -s 2>/dev/null)" ]]; then
COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL"
else else
if [[ "$MINUTES" -gt 30 ]]; then if [[ "$MINUTES" -gt 30 ]]; then
COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG" COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG"
elif [[ "$MINUTES" -gt 10 ]]; then elif [[ "$MINUTES" -gt 10 ]]; then
COLOR="$ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM" COLOR="$ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM"
else else
COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT" COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT"
fi fi
fi fi
if [[ "$HOURS" -gt 24 ]]; then if [[ "$HOURS" -gt 24 ]]; then
echo "[${COLOR}${DAYS}d${SUB_HOURS}h${SUB_MINUTES}m%{$reset_color%}]" echo "[${COLOR}${DAYS}d${SUB_HOURS}h${SUB_MINUTES}m%{$reset_color%}]"
elif [[ "$MINUTES" -gt 60 ]]; then elif [[ "$MINUTES" -gt 60 ]]; then
echo "[${COLOR}${HOURS}h${SUB_MINUTES}m%{$reset_color%}]" echo "[${COLOR}${HOURS}h${SUB_MINUTES}m%{$reset_color%}]"
else else
echo "[${COLOR}${MINUTES}m%{$reset_color%}]" echo "[${COLOR}${MINUTES}m%{$reset_color%}]"
fi fi
} }
PROMPT=' PROMPT='
%{$fg[cyan]%}%m%{$reset_color%} 福 %{$fg[cyan]%}%~ %{$reset_color%}$(git_prompt_short_sha)$(git_prompt_info) %{$fg[cyan]%}%m%{$reset_color%} 福 %{$fg[cyan]%}%~ %{$reset_color%}$(git_prompt_short_sha)$(git_prompt_info)
%{$fg[red]%}%!%{$reset_color%} $(prompt_char) ' %{$fg[red]%}%!%{$reset_color%} $(prompt_char) '
RPROMPT='${return_status}$(git_time_since_commit)$(git_prompt_status)%{$reset_color%}' RPROMPT='${return_status}$(git_time_since_commit)$(git_prompt_status)%{$reset_color%}'