summaryrefslogtreecommitdiff
path: root/zsh/.zsh/functions
diff options
context:
space:
mode:
authorUrbain Vaes <urbain@vaes.uk>2016-06-03 11:34:07 +0100
committerUrbain Vaes <urbain@vaes.uk>2016-06-03 11:34:07 +0100
commitef803f14c11fd15d55fb6dfd2a146f5a11171eb1 (patch)
treea1128d95b929316bb5be295aa6444e79b9b395ae /zsh/.zsh/functions
parent058d7d81ca772d5efd826d2ae74d3dc15a6ec18f (diff)
Clean function for colorschemes
Diffstat (limited to 'zsh/.zsh/functions')
-rw-r--r--zsh/.zsh/functions43
1 files changed, 10 insertions, 33 deletions
diff --git a/zsh/.zsh/functions b/zsh/.zsh/functions
index 5d629c7..5ea454f 100644
--- a/zsh/.zsh/functions
+++ b/zsh/.zsh/functions
@@ -1,47 +1,30 @@
#!/bin/zsh
-if [[ -z ${ZSH_COLORS} ]]; then
- ZSH_COLORS=${HOME}/.local/share/zsh/colors.zsh
-fi
+[[ -z ${ZSH_COLORS} ]] && ZSH_COLORS=${HOME}/.local/share/zsh/colors.zsh
+[[ -f ${ZSH_COLORS} ]] && source ${ZSH_COLORS}
-if [[ -d ${HOME}/.Xresources ]]; then
- colorschemes=$(echo ${HOME}/.Xresources/**/*.xresources | sed "s#${HOME}/.Xresources/##g" | sed 's#base16/base16-##g' | \
- sed 's/[^ ]\+\.256\.[^ ]\+//g' | sed 's/.xresources//g' | sed 's/[ ]\+/ /g' )
-fi
+colorschemes=$(echo ${HOME}/.Xresources/* | sed "s#${HOME}/.Xresources/##g")
function colo {
- # Xresource file
- if [[ ! -z $1 ]]; then
- XRESOURCE=$1
- else
- XRESOURCE=$(echo ${colorschemes} | sed 's/ /\n/g' | sed '/^[ ]*$/d' | fzf)
- [[ -z ${XRESOURCE} ]] && return
- fi
- if [[ -f ${HOME}/.Xresources/${XRESOURCE}.xresources ]]; then
- XRESOURCE_FILE=${HOME}/.Xresources/${XRESOURCE}.xresources
- elif [[ -f ${HOME}/.Xresources/base16/base16-${XRESOURCE}.256.xresources ]]; then
- XRESOURCE_FILE=${HOME}/.Xresources/base16/base16-${XRESOURCE}.256.xresources
- else
- echo "Invalid colorscheme!"
- return
- fi
+ XRESOURCE=$1
+ XRESOURCE_FILE=${HOME}/.Xresources/${XRESOURCE}
# Change colors for current session
/usr/bin/cpp ${XRESOURCE_FILE} | tr -d ' \t' | sed -n \
-e 's/.*background:/\x1b]11;/p' \
-e 's/.*foreground:/\x1b]10;/p' \
+ -e 's/.*borderColor:/\x1b]708;/p' \
-e 's/.*color\([0-9][^:]*\):/\x1b]4;\1;/p' | tr \\n \\a
- # Ensure border color is the same as background
- bg=$(/usr/bin/cpp ${XRESOURCE_FILE} | grep "background" | sed 's/[^ ]\+[ ]\+\([^ ]\+\)$/\1/')
- echo "\x1b]708;${bg}" | tr \\n \\a
+ # Change color for future sessions
+ xrdb ${XRESOURCE_FILE}
# Change default environment variable for future sessions
mkdir -p $(dirname ${ZSH_COLORS})
- COLORSCHEME=$(echo $(basename ${XRESOURCE_FILE}) | sed 's/\([^.]\+\)\..\+$/\1/g')
- BACKGROUND=$(echo ${XRESOURCE_FILE} | sed 's/^.\+\(dark\|light\).\+$/\1/')
+ COLORSCHEME=$(echo ${XRESOURCE} | sed 's/\([^.]\+\)\..\+$/\1/g')
+ BACKGROUND=$(echo ${XRESOURCE} | sed 's/^.\+\(dark\|light\)/\1/')
echo "export COLORSCHEME=${COLORSCHEME}" > ${ZSH_COLORS}
echo "export BACKGROUND=${BACKGROUND}" >> ${ZSH_COLORS}
@@ -49,11 +32,5 @@ function colo {
source ${ZSH_COLORS}
}
-# Source colors
-if [[ -f ${ZSH_COLORS} ]]; then
- source ${ZSH_COLORS}
- colo ${XRESOURCE}
-fi
-
# Completion for colorschemes (-M -> Case insensitive)
compctl -k "(${colorschemes})" -M 'm:{a-z}={A-Z}' colo