[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: