Re: Можно ли как то обезопасить работу при вставке текста в терминальный эмулятор (xterm) или специальной поддержкой от SHELL (bash)?
On 2015-12-20, Oleksandr Gavenko wrote:
> Можно ли как то запретить вставку текста с переносом строки в Xterm? Или
> ограничить текст до первого переноса?
В общем мне подсказали в приват, благодарности Евгению:
$ cat ~/.Xdefaults
urxvt*perl-ext-common: default,confirm-paste
$ man 1 urxvt-confirm-paste
NAME
confirm-paste - ask for confirmation before pasting multiline text
DESCRIPTION
Displays a confirmation dialog when a paste containing at least a full line is detected.
> Команды можно прописать поряд. Итого в ~/.Xdefaults:
>
> *VT100*translations: #override Meta <KeyPress> Insert: exec-formatted("sh -c 'echo xxx | xsel -p; xmessage ok'", SELECT) insert-selection(PRIMARY)
> Но есть сомнения - exec-formatted выполняет команду асинхронно.
> Нужна команда, вставляющая результат выполнения команды, такого не
> обнаружил...
Затратил я вренени немало на мучение с xterm.
Ранее использовал rxvt, потому как в Msys / Cygwin был его порт. Затем
разработчик из Cygwin седелал mintty на базе rxvt.
Когда установил Debian дома то использовал rxvt, но тогда был переход на
UTF-8, чего оригинальный rxvt вроде не умел, потому где то лет 8 пользовал
xterm.
У меня набралось немного настроек, в основном это цвета, а то git
--simplify-by-decoration плюет текст желтым, на белом фоне не разглядишь, стал
оранжевым, т.к. в виджетах Midnight Commander он активно используется и должен
различаться на синем/циановом:
XTerm*background: white
XTerm*foreground: black
XTerm*cursorColor: brown
XTerm*color3: tan
XTerm*color10: MediumSeaGreen
XTerm*color11: orange
XTerm*color14: DarkCyan
! Allow Alt as Meta in Emacs:
XTerm*eightBitInput: false
XTerm*metaSendsEscape: true
XTerm*saveLines: 10000
В Debian несколько вариаций:
rxvt - Rxvt is an 8-bit clean, color xterm replacement that uses
significantly less memory than a conventional xterm, mostly since it
doesn't support toolkit configurability or Tek graphics, but also
since features can be removed at compile-time to reflect your needs.
rxvt-ml - This package contains three versions of rxvt: krxvt and crxvt,
which support Japanese and Chinese characters, and grxvt, which
supports both ELOT-928 (ISO-8859-7 standard) and IBM-437 keyboard
translations for Greek character entry.
rxvt-unicode - is a modern, Unicode-aware color xterm replacement that uses
significantly less memory than a conventional xterm and many
other Unicode supporting terminal emulators.
It supports using multiple fonts at the same time, including
Xft fonts, and client-server technology to reduce memory
consumption when using multiple windows.
rxvt-unicode-256color - This package is configured with 256-color support,
and TERM set to "rxvt-unicode-256color". Any other
systems you log into must have this terminfo entry
installed!
rxvt-unicode-lite - This package contains the small version with only a few
extra features and without Freetype support.
Ничего не понял про rxvt-unicode-256color, потому как почти половину цветов
Emacs "M-x list-colors-display" показал в rxvt-unicode, когда я его TERM
подделал:
$ TERM=rxvt-unicode-256color emacsclient -t
Хотя из за второй неподдерживаемой половины Emacs полураскрашеный...
А итоге остановился rxvt-unicode-256color. Emacs в нем выглядит неотличимо от
GTK версии. В обоих случаях неразличимые цаета и шрифт одинаковый - 7x14, что
есть:
emacs.font: -misc-fixed-medium-r-normal-*-14-*-*-*-c-*-iso10646-1
================================================================
Итого urxvt выглядит интересным, цвета адаптировать не составит труда.
Есть возможность написания плагинов на Perl.
Память xterm и urxvt (256color) ест одинаково.
Это все:
$ ls /usr/share/man/man1/urxvt-*
/usr/share/man/man1/urxvt-background.1.gz
/usr/share/man/man1/urxvt-bell-command.1.gz
/usr/share/man/man1/urxvt-block-graphics-to-ascii.1.gz
/usr/share/man/man1/urxvt-clipboard-osc.1.gz
/usr/share/man/man1/urxvt-confirm-paste.1.gz
/usr/share/man/man1/urxvt-digital-clock.1.gz
/usr/share/man/man1/urxvt-eval.1.gz
/usr/share/man/man1/urxvt-example-refresh-hooks.1.gz
/usr/share/man/man1/urxvt-extensions.1.gz
/usr/share/man/man1/urxvt-keysym-list.1.gz
/usr/share/man/man1/urxvt-kuake.1.gz
/usr/share/man/man1/urxvt-matcher.1.gz
/usr/share/man/man1/urxvt-option-popup.1.gz
/usr/share/man/man1/urxvt-overlay-osc.1.gz
/usr/share/man/man1/urxvt-readline.1.gz
/usr/share/man/man1/urxvt-remote-clipboard.1.gz
/usr/share/man/man1/urxvt-searchable-scrollback.1.gz
/usr/share/man/man1/urxvt-selection.1.gz
/usr/share/man/man1/urxvt-selection-autotransform.1.gz
/usr/share/man/man1/urxvt-selection-pastebin.1.gz
/usr/share/man/man1/urxvt-selection-popup.1.gz
/usr/share/man/man1/urxvt-selection-to-clipboard.1.gz
/usr/share/man/man1/urxvt-tabbed.1.gz
/usr/share/man/man1/urxvt-xim-onthespot.1.gz
можно запихнуть в:
$ cat ~/.Xdefaults
urxvt*perl-ext-common: default,confirm-paste,clipboard-osc,digital-clock
Разве что еще не понял как сделать аналог xterm:
*VT100*translations: #override Meta <KeyPress> /:dabbrev-expand()
Это когда автопродолшение по тексту, который отобразился на скрине (не не в
истории команд Readline!).
Мне кажется это очень удобным, всегда хотел, жаль что узнал о таком позавчера.
--
Best regards!
Reply to: