[sisyphus] А давно у нас mc разучился...
Alexei V. Mezin
alexei-mezin на rambler.ru
Вт Дек 10 01:50:53 MSK 2013
10.12.2013 01:24, Dmitry V. Levin пишет:
> Если не приходит SIGWINCH, значит, konsole не выполняет
> (или неправильно выполняет) TIOCSWINSZ.
>
> Косвенным подтверждением является неизменность вывода команды
> $ stty -a |grep rows
> до и после resize.
Запускаю konsole через меню/кнопку на панели/Win-R. Ресайз в ней глючит,
тестовая программа не показывает прихода SIGWINCH и mc глючит. Но!
В одной консоли
[alexei на bigbear ~]$ stty -a |grep rows
speed 38400 baud; rows 54; columns 162; line = 0;
[alexei на bigbear ~]$ stty -a |grep rows
speed 38400 baud; rows 45; columns 140; line = 0;
[alexei на bigbear ~]$ mc
[alexei на bigbear ~]$ stty -a |grep rows
speed 38400 baud; rows 45; columns 140; line = 0;
[alexei на bigbear ~]$ stty -a |grep rows
speed 38400 baud; rows 45; columns 140; line = 0;
То есть сначала работало, после запуска mc сломалось. В том же окне
другая вкладка:
alexei на bigbear ~]$ stty -a |grep rows
speed 38400 baud; rows 51; columns 172; line = 0;
[alexei на bigbear ~]$ stty -a |grep rows
speed 38400 baud; rows 55; columns 185; line = 0;
[alexei на bigbear ~]$ mc
[alexei на bigbear ~]$ stty -a |grep rows
speed 38400 baud; rows 58; columns 192; line = 0;
[alexei на bigbear ~]$ stty -a |grep rows
speed 38400 baud; rows 50; columns 159; line = 0;
То есть stty все изменение размеров видит! Но mc в ней глючит.
Кстати, тот же mc глючит очень странно. При увеличении размеров окна mc
не увеличивается, но после C-l строка меню и подсказки (самая верхняя и
самая нижняя) вырастают на всю ширину, а панели так и остаются в старых
размерах. При уменьшении размеров окна перерисовка mc вообще разрушается.
Если через Win-R запустить xterm, а из него konsole, то все работает.
>
> Можете попробовать поотлаживать, например,
> $ strace -feioctl -o'|grep TIOCSWINSZ' konsole
Запуск из konsole:
[alexei на bigbear ~]$ strace -feioctl -o'|grep TIOCSWINSZ' konsole
8501 ioctl(9, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, {ws_row=0,
ws_col=0, ws_xpixel=0, ws_ypixel=0}) = 0
8501 ioctl(9, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, {ws_row=53,
ws_col=155, ws_xpixel=0, ws_ypixel=0}) = 0
8503 ioctl(0, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, 0x7fff135a3dc0) = 0
8503 ioctl(0, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, 0x7fff135a3d50) = 0
8501 ioctl(9, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, 0x7fffafa65e90) = 0
8501 ioctl(9, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, 0x7fffafa65e90) = 0
8501 ioctl(9, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, 0x7fffafa65e10) = 0
8503 ioctl(0, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, 0x7fff135a3d50) = 0
8567 ioctl(6, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, 0x7fffa0159410) = 0
8567 ioctl(0, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, 0x7fff49eda4b0) = 0
8567 ioctl(0, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, 0x7fff49eda440) = 0
8567 ioctl(0, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ <unfinished ...>
8501 ioctl(9, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, 0x7fffafa65e90) = 0
8501 ioctl(9, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, 0x7fffafa65e90) = 0
8501 ioctl(9, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, 0x7fffafa65e90) = 0
8501 ioctl(9, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, 0x7fffafa65e90) = 0
8501 ioctl(9, SNDRV_TIMER_IOCTL_STATUS or TIOCSWINSZ, 0x7fffafa65e90) = 0
Событие происходит на каждый реальный ресайз окна, но внутри этого окна
SIGWINCH не ловится, и mc не работает.
Подробная информация о списке рассылки Sisyphus