1
0
Fork 0
mirror of https://github.com/romkatv/powerlevel10k.git synced 2024-12-26 00:41:57 +00:00

add more info about the resizing bug and patch

This commit is contained in:
Roman Perepelitsa 2020-07-29 09:45:02 +02:00
parent 598ff99f1b
commit 05ff662568

View file

@ -1591,12 +1591,17 @@ upon terminal shrinking due to the command line wrapping around.
#### Zsh patch #### Zsh patch
The bug described above has been fixed in [this branch]( The bug described above has been partially fixed (only for some terminals) in [this branch](
https://github.com/romkatv/zsh/tree/fix-winchanged). The idea behind the fix is to use `sc` (save https://github.com/romkatv/zsh/tree/fix-winchanged). The idea behind the fix is to use `sc` (save
cursor) terminal capability before printing prompt and `rc` (restore cursor) to move cursor back cursor) terminal capability before printing prompt and `rc` (restore cursor) to move cursor back
to the same position when prompt needs to be refreshed. to the original position when prompt needs to be refreshed.
*Note*: The patch doesn't work on Alacritty. On the plus side, it doesn't make things worse. The patch works only on terminals that reflow saved cursor position together with text when the
terminal window is resized. The patch has no observable effect on terminals that don't reflow text
on resize (both patched and unpatched Zsh behave correctly) and on terminals that reflow text but
not saved cursor position (both patched and unpatched Zsh redraw prompt at the same incorrect
position). In other words, the patch fixes the resizing issue on some terminals while keeping the
behavior unchanged on others.
There are two alternative approaches to fixing the bug that may seem to work at first glance but in There are two alternative approaches to fixing the bug that may seem to work at first glance but in
fact don't: fact don't:
@ -1618,19 +1623,21 @@ There is no ETA for the patch making its way into upstream Zsh. See [discussion]
There are a few mitigation options for this issue. There are a few mitigation options for this issue.
- Apply [the patch](#zsh-patch) and [rebuild Zsh from source]( - Apply [the patch](#zsh-patch) and [rebuild Zsh from source](
https://github.com/zsh-users/zsh/blob/master/INSTALL). It won't help if you are using Alacritty. https://github.com/zsh-users/zsh/blob/master/INSTALL). It won't help if you are using Alacritty,
Kitty or some other terminal that reflows text on resize but doesn't reflow saved cursor position.
On such terminals the patch will have no visible effect.
- Disable text reflowing on window resize in terminal settings. If your terminal doesn't have this - Disable text reflowing on window resize in terminal settings. If your terminal doesn't have this
setting, try a different terminal. setting, try a different terminal.
- Avoid long lines between the start of prompt and cursor. - Avoid long lines between the start of prompt and cursor.
1. Disable ruler with `POWERLEVEL9K_SHOW_RULER=false`. 1. Disable ruler with `POWERLEVEL9K_SHOW_RULER=false`.
1. Disable prompt connection with `POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' '`. 2. Disable prompt connection with `POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' '`.
1. Disable right frame with `POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX=` and 3. Disable right frame with `POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX=''`,
`POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX=` and `POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX=''` and
`POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX=`. `POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX=''`.
1. Remove all elements from `POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS`. Right prompt on the last prompt 4. Set `POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=()`. Right prompt on the last prompt line will cause
line will cause resizing issues only when the cursor is below it. This isn't very common, so resizing issues only when the cursor is below it. This isn't very common, so you might want to
you might want to keep some elements in `POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS` provided that keep some elements in `POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS` provided that none of them are
none of them are succeeded by `newline`. succeeded by `newline`.
### Icons cut off in Konsole ### Icons cut off in Konsole