Ticket #4443 (new defect)
TIOCSWINSZ ioctl loses extended pixel sizes (ws_xpixel, ws_ypixel) even when the underlying shell supports it
Reported by: | arcivanov | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | Future Releases |
Component: | mc-tty | Version: | master |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Branch state: | no branch | Votes for changeset: |
Description
$ mc --version
GNU Midnight Commander 4.8.28
Built with GLib 2.73.2
Built with S-Lang 2.3.2 with terminfo database
With builtin Editor
With subshell support as default
With support for background operations
With mouse support on xterm and Linux console
With internationalization support
With multiple codepages support
With ext2fs attributes support
Virtual File Systems:
cpiofs, tarfs, sfs, extfs, ftpfs, fish
Data types:
char: 8; int: 32; long: 64; void *: 64; size_t: 64; off_t: 64;
$ bash --version
GNU bash, version 5.2.15(1)-release (x86_64-redhat-linux-gnu)
Test script:
#!/usr/bin/env python3 import ctypes import termios import fcntl from ctypes import Structure, c_ushort class WinSize(Structure): _fields_ = [("ws_row", c_ushort), ("ws_col", c_ushort), ("ws_xpixel", c_ushort), ("ws_ypixel", c_ushort) ] sz = WinSize() fcntl.ioctl(0, termios.TIOCGWINSZ, sz) print(sz.ws_row, sz.ws_col, sz.ws_xpixel, sz.ws_ypixel)
Running the above script with Python 3.10.9 with MC I get:
44 206 0 0
Exiting MC to the undelying shell I get:
44 206 1651 752
Change History
comment:2 Changed 23 months ago by arcivanov
Forgot to say that this is running in Konsole 22.12.2, KDE Framework 5.102.0, Qt 5.15.8
comment:3 Changed 22 months ago by andrew_b
Neither SLang nor NCurses doesn't use ws_xpixel and ws_ypixel at all.
What we should do with size in pixels inside TUI program inside a terminal emulator?
Some related info can be found in https://bugzilla.gnome.org/show_bug.cgi?id=782576.
comment:4 Changed 22 months ago by arcivanov
notcurses, xterm, konsole, kitty support it.
The use case is related to raster graphics and animations in console, e.g. kitty.
The question here is whether the output of mc_tty should be consistent with that of the underlying console (konsole in my case).
My discovery of this issue was when I launched the app via mc and it didn't work, whereas without mc it did.
https://sw.kovidgoyal.net/kitty/graphics-protocol/#getting-the-window-size