Maximus5 / ConEmu

Customizable Windows terminal with tabs, splits, quake-style, hotkeys and more
https://conemu.github.io/
BSD 3-Clause "New" or "Revised" License
8.53k stars 572 forks source link

Fullscreen text programs (like vi) inside of WSL prevent ConEmu from detecting window resizes #2382

Open alexnerd123 opened 2 years ago

alexnerd123 commented 2 years ago

Versions

ConEmu build: 210912 x64 OS version: Windows 10 x64 Used shell version: cmd.exe, to open bash (WSL)

Problem description

When conemu has a fullscreen program open (like vi) and I resize the window, conemu doesn't realize it until the fullscreen program has been exited. I can see what ConEmu "thinks" the screen size is in the status bar at the bottom right (in cell counts. I'm not thinking in pixel counts). It doesn't update until I close a fullscreen program (like vi, or screen) (by "fullscreen", I mean it taking over the entire text pane, within the CLI. Nothing GUI at all).

I dont know of any comparable "native windows programs" that run "fullscreen" in cmd.exe. If anyone knows of one, I would be interested to test that to see if the issue has anything to do with WSL

This used to work fine until I upgraded my windows 10 build. I was on 1803, and I upgraded to 1909, and it stopped working. I've upgraded conemu, and the issue persists.

I run much of my stuff in the GNU "Screen" program (my flow is Con Emu -> cmd.exe -> bash -> screen -> my day to day work), and conemu is now reporting out-of-date console sizes to "screen", because "screen" counts as a fullscreen program (much like vi) and is holding ConEmu's window detection "hostage"

Steps to reproduce

  1. Launch ConEmu, with standard cmd.exe
  2. Launch WSL inside of ConEmu's cmd (type "bash")
  3. Launch vi inside of bash (type vi)
  4. Resize the ConEmu window

Actual results

vi doesn't know the window has been resized, and the window size indicated at the bottom right doesn't update, until after I close vi (:q!). Its like vi, being a fullscreen app, is holding conemu "hostage" until its closed.

That doesn't happen on regular cmd.exe -> bash -> vi. In that flow, its updated instantly.

Expected results

vi should know the window size is updated, and conemu should detect the new window size (in cell count) as soon as its updated. vi is just one application that suffers from this (the issue is obviously not vi itself!). The GNU "screen" program suffers badly from this, but vi is a much simpler test case

Additional files

conemu.xml.txt