[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
fg via keybind modifies tty settings
From: |
David Moberg |
Subject: |
fg via keybind modifies tty settings |
Date: |
Sat, 21 Sep 2024 01:23:23 +0200 |
Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -g -O2 -fno-omit-frame-pointer
-mno-omit-leaf-frame-pointer -flto=auto -ffat-lto-objects
-fstack-protector-strong -fstack-clash-protection -Wformat
-Werror=format-security -fcf-protection -Wall
uname output: Linux Tugge 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC
Fri Aug 30 12:02:04 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Machine Type: x86_64-pc-linux-gnu
Bash Version: 5.2
Patch Level: 21
Release Status: release
Description:
When a process/job is suspended, foregrounded via ctrl-a as a
keybinding for fg, and then
suspended again, the tty will be in a surprising state where no
input is seen (-echo)
Repeat-By:
| bind -x '"\C-a":"fg"' # bind C-A to perform fg
vim #
<ctrl-z> # Terminal still works
stty -a > working.txt # store tty settings
<ctrl-a> # Put vim in foreground again
:q # Quit vim
vim # Start a new vim session (*)
<ctrl-z> # Terminal is broken
stty -a > broken.txt # store tty settings
#type text and no echo
Dumping the tty configuration before and after the broken state
reveals this diff after the
second vim command above (*) has been executed:
```console
$ diff working.txt broken.txt
4c4
< werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
---
> werase = ^W; lnext = <undef>; discard = <undef>; min = 1; time =
0;
6c6
< -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl
ixon -ixoff
---
> -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr
-icrnl ixon -ixoff
9c9
< isig icanon iexten echo echoe echok -echonl -noflsh -xcase
-tostop -echoprt
---
> isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase
-tostop -echoprt
```
The tty can get back into working state by running `stty sane`.
By redoing the <start vim> <ctrl-z> <ctrl-a> <quit vim> <stty sane>
it can be seen that the
terminal will only be broken after every second invocation.
Similar issue(?) in fish that has been resolved:
https://github.com/fish-shell/fish-shell/issues/2114
I have experienced the same weirdness with other applications than
vim, for example python3.
I have experienced the issue several terminals: Wezterm, xfce-4
terminal.
- fg via keybind modifies tty settings,
David Moberg <=