summaryrefslogtreecommitdiff
path: root/internal/wizard.zsh
diff options
context:
space:
mode:
authorromkatv <roman.perepelitsa@gmail.com>2019-09-03 14:55:41 +0300
committerromkatv <roman.perepelitsa@gmail.com>2019-09-03 14:55:41 +0300
commit684203221fc73ea836d486a68a55e6e475bae7e9 (patch)
tree54b3f367b05343381f065dd88b7c3b6f4f9d8cf9 /internal/wizard.zsh
parenta30b5963a89967e0496936f5d7f53c3d1f16b523 (diff)
wizard: offer to install Meslo NF on Termux
Diffstat (limited to 'internal/wizard.zsh')
-rwxr-xr-xinternal/wizard.zsh110
1 files changed, 98 insertions, 12 deletions
diff --git a/internal/wizard.zsh b/internal/wizard.zsh
index 04518555..afef036d 100755
--- a/internal/wizard.zsh
+++ b/internal/wizard.zsh
@@ -35,6 +35,7 @@ typeset -gri force
source $__p9k_root_dir/internal/configure.zsh || return
+typeset -r font_base_url='https://github.com/romkatv/dotfiles-public/raw/master/.local/share/fonts/NerdFonts'
typeset -ri wizard_columns=$((COLUMNS < 80 ? COLUMNS : 80))
typeset -ri prompt_indent=2
@@ -177,7 +178,11 @@ function clear() {
}
function quit() {
- clear
+ if [[ $1 == '-c' ]]; then
+ print -P ""
+ else
+ clear
+ fi
if (( force )); then
print -P "Powerlevel10k configuration wizard has been aborted. To run it again, type:"
print -P ""
@@ -199,19 +204,93 @@ function quit() {
exit 1
}
-function ask_diamond() {
- while true; do
- clear
- if (( force )); then
- flowing -c This is %4FPowerlevel10k configuration wizard%f. \
- It will ask you a few questions and configure your prompt.
+local -i greeting_printed=0
+
+function print_greeting() {
+ (( greeting_printed )) && return
+ if (( force )); then
+ flowing -c This is %4FPowerlevel10k configuration wizard%f. \
+ It will ask you a few questions and configure your prompt.
+ else
+ flowing -c This is %4FPowerlevel10k configuration wizard%f. \
+ You are seeing it because you haven\'t defined any \
+ Powerlevel10k configuration options. It will ask \
+ you a few questions and configure your prompt.
+ fi
+ print -P ""
+}
+
+function can_install_font() {
+ [[ $P9K_SSH == 0 ]] || return
+ if [[ "$(uname)" == Linux && "$(uname -o)" == Android ]]; then
+ (( $+commands[termux-reload-settings] )) || return
+ (( $+commands[curl] )) || return
+ [[ ! -f ~/.termux/font.ttf ]] || return
+ if [[ -f ~/.termux ]]; then
+ [[ -d ~/.termux && -w ~/.termux ]] || return
else
- flowing -c This is %4FPowerlevel10k configuration wizard%f. \
- You are seeing it because you haven\'t defined any \
- Powerlevel10k configuration options. It will ask \
- you a few questions and configure your prompt.
+ [[ -w ~ ]] || return
+ fi
+ return
+ fi
+ return 1
+}
+
+function run_command() {
+ print -nP -- "$1 ..."
+ shift
+ local err && err="$("$@" 2>&1)" || {
+ print -P " %1FERROR%f"
+ print -P ""
+ print -P "%BCommand:%b" "${(@q)*}"
+ if [[ -n $err ]]; then
+ print -P ""
+ print -r -- $err
fi
+ quit -c
+ }
+ print -P " %2FOK%f"
+}
+
+function install_font() {
+ clear
+ mkdir -p ~/.termux || quit -c
+ run_command "Downloading %2FMesloLGS NF Regular.ttf%f" \
+ curl -fsSL -o ~/.termux/font.ttf "$font_base_url/MesloLGS%20NF%20Regular.ttf"
+ run_command "Reloading Termux settings" termux-reload-settings
+}
+
+function ask_font() {
+ can_install_font || return 0
+ while true; do
+ clear
+ print_greeting
+ flowing -c "%BInstall %b%2FMeslo Nerd Font%f%B?%b"
+ print -P ""
+ print -P ""
+ print -P "%B(y) Yes (recommended).%b"
print -P ""
+ print -P "%B(n) No. Use the current font.%b"
+ print -P ""
+ print -P "(q) Quit and do nothing."
+ print -P ""
+
+ local key=
+ read -k key${(%):-"?%BChoice [ynq]: %b"} || quit
+ case $key in
+ q) quit;;
+ y) install_font; break;;
+ n) break;;
+ esac
+ done
+ greeting_printed=1
+}
+
+function ask_diamond() {
+ while true; do
+ local extra=
+ clear
+ print_greeting
flowing -c "%BDoes this look like a %b%2Fdiamond%f%B (rotated square)?%b"
flowing -c "reference: $(href https://graphemica.com/%E2%97%86)"
print -P ""
@@ -221,17 +300,23 @@ function ask_diamond() {
print -P ""
print -P "%B(n) No.%b"
print -P ""
+ if can_install_font; then
+ extra+=r
+ print -P "(r) Restart from the beginning."
+ fi
print -P "(q) Quit and do nothing."
print -P ""
local key=
- read -k key${(%):-"?%BChoice [ynq]: %b"} || quit
+ read -k key${(%):-"?%BChoice [yn${extra}q]: %b"} || quit
case $key in
q) quit;;
+ r) [[ $extra == *r* ]] && { greeting_printed=1; return 1 };;
y) cap_diamond=1; break;;
n) cap_diamond=0; break;;
esac
done
+ greeting_printed=1
}
function ask_lock() {
@@ -1225,6 +1310,7 @@ while true; do
local -a prefixes=('' '')
local -a options=()
+ ask_font || continue
ask_diamond || continue
if [[ $AWESOME_GLYPHS_LOADED == 1 ]]; then
POWERLEVEL9K_MODE=awesome-mapped-fontconfig