mXterm.sh 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. #!/bin/bash
  2. source "sXterm.sh"
  3. # это цвет текста списка перед курсором при значении 0 в переменной UNMARK(){ $e "\e[0m";}
  4. MARK(){ $e "\e[1;100m";}
  5. #
  6. HEAD()
  7. {
  8. for (( a=2; a<=34; a++ ))
  9. do
  10. TPUT $a 1
  11. $E "\e[100;30m│\e[0m \e[100;30m│\e[0m";
  12. done
  13. }
  14. FOOT()
  15. {
  16. MARK;
  17. TPUT 1 1;$E "\e[0m\e[100;30m┌────────────────────────────────────────────────────────────────────────────────┐\033[0m";
  18. TPUT 3 3;$E "\e[0m\e[1;36m *** xterm ***\e[0m Terminal emulator for X";
  19. TPUT 4 1;$E "\e[0m\e[100;30m├\e[0m\e[1;30m────────────────────────────────────────────────────────────────────────────────\e[0m\e[100;30m┤\e[0m";
  20. TPUT 12 1;$E "\e[0m\e[100;30m├\e[0m\e[1;30m─ Опции ────────────────────────────────────── Options ─────────────────────────\e[0m\e[100;30m┤\e[0m";
  21. TPUT 16 1;$E "\e[0m\e[100;30m├\e[0m\e[1;30m────────────────────────────────────────────────────────────────────────────────\e[0m\e[100;30m┤\e[0m";
  22. TPUT 30 1;$E "\e[0m\e[100;30m├\e[0m\e[1;30m─ Up \xE2\x86\x91 \xE2\x86\x93 Down Select Enter ─────────────────────────────────────────────────────\e[0m\e[100;30m┤\e[0m";
  23. TPUT 35 1;$E "\e[0m\e[100;30m└────────────────────────────────────────────────────────────────────────────────┘\e[0m";
  24. UNMARK;
  25. }
  26. #
  27. M0(){ TPUT 5 3; $e " Установка \e[32m Install \e[0m";}
  28. M1(){ TPUT 6 3; $e " Kраткий обзор \e[32m Synopsis \e[0m";}
  29. M2(){ TPUT 7 3; $e " Oписание \e[32m Description \e[0m";}
  30. M3(){ TPUT 8 3; $e " Смотрите также \e[36m See Also \e[0m";}
  31. M4(){ TPUT 9 3; $e " Авторы \e[32m Authors \e[0m";}
  32. M5(){ TPUT 10 3; $e " Другие особенности \e[32m Other Features \e[0m";}
  33. M6(){ TPUT 11 3; $e " Эмуляции \e[36m Emulations \e[0m";}
  34. #
  35. M7(){ TPUT 13 3; $e " Опции \e[36m Options \e[0m";}
  36. M8(){ TPUT 14 3; $e " Старые опции \e[36m Old Options \e[0m";}
  37. M9(){ TPUT 15 3; $e " Опции набора инструментов X \e[36m X Toolkit Options \e[0m";}
  38. #
  39. M10(){ TPUT 17 3; $e " Ресурсы \e[36m Resources \e[0m";}
  40. M11(){ TPUT 18 3; $e " Использование указателей \e[36m Pointer Usage \e[0m";}
  41. M12(){ TPUT 19 3; $e " Выделить/вставить \e[36m Select/Paste \e[0m";}
  42. M13(){ TPUT 20 3; $e " Меню \e[36m Menus \e[0m";}
  43. M14(){ TPUT 21 3; $e " Безопасность \e[36m Security \e[0m";}
  44. M15(){ TPUT 22 3; $e " Классы персонажей \e[36m Character Classes \e[0m";}
  45. M16(){ TPUT 23 3; $e " Привязки клавиш \e[36m Key Bindings \e[0m";}
  46. M17(){ TPUT 24 3; $e " Последовательности управления и клавиатура \e[36m Control Sequences and Keyboard \e[0m";}
  47. M18(){ TPUT 25 3; $e " Окружающая среда \e[36m Environment \e[0m";}
  48. M19(){ TPUT 26 3; $e " Оконные свойства \e[36m Window Properties \e[0m";}
  49. M20(){ TPUT 27 3; $e " Файлы \e[36m Files \e[0m";}
  50. M21(){ TPUT 28 3; $e " Сообщения об ошибках \e[36m Error Messages \e[0m";}
  51. M22(){ TPUT 29 3; $e " Баги \e[36m Bags \e[0m";}
  52. #
  53. M23(){ TPUT 31 3; $e " Сайты \e[36m Websites \e[0m";}
  54. M24(){ TPUT 32 3; $e " \e[36m Grannik Git \e[0m";}
  55. M25(){ TPUT 33 3; $e " \e[32m Exit \e[0m";}
  56. LM=25
  57. MENU(){ for each in $(seq 0 $LM);do M${each};done;}
  58. POS(){ if [[ $cur == up ]];then ((i--));fi
  59. if [[ $cur == dn ]];then ((i++));fi
  60. if [[ $i -lt 0 ]];then i=$LM;fi
  61. if [[ $i -gt $LM ]];then i=0;fi;}
  62. REFRESH(){ after=$((i+1)); before=$((i-1))
  63. if [[ $before -lt 0 ]];then before=$LM;fi
  64. if [[ $after -gt $LM ]];then after=0;fi
  65. if [[ $j -lt $i ]];then UNMARK;M$before;else UNMARK;M$after;fi
  66. if [[ $after -eq 0 ]] || [ $before -eq $LM ];then
  67. UNMARK; M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;}
  68. INIT(){ R;HEAD;FOOT;MENU;}
  69. SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;}
  70. # Функция возвращения в меню
  71. ES(){ MARK;$e " ENTER = main menu ";$b;read;INIT;};INIT
  72. while [[ "$O" != " " ]]; do case $i in
  73. 0) S=M0;SC; if [[ $cur == enter ]];then R;echo -e "
  74. \e[32m sudo apt install -y xterm\e[0m
  75. #
  76. \e[32m sudo apt-get install -y xterm\e[0m
  77. #
  78. \e[32m \e[0m
  79. ";ES;fi;;
  80. 1) S=M1;SC; if [[ $cur == enter ]];then R;echo -e "\e[32m xterm [-toolkitoption ...] [-option ...] [shell]\e[0m";ES;fi;;
  81. 2) S=M2;SC; if [[ $cur == enter ]];then R;echo "
  82. Программа xterm представляет собой эмулятор терминала для системы X Window.
  83. Он обеспечивает DEC VT102/VT220 и некоторые функции терминалов более высокого уровня,
  84. такие как VT320/VT420/VT520 (VTxxx).
  85. Он также обеспечивает эмуляцию Tektronix 4014 для программ,
  86. которые не могут напрямую использовать оконную систему.
  87. Если основная операционная система поддерживает возможности изменения размера
  88. терминала (например, сигнал SIGWINCH в системах, производных от 4.3BSD),
  89. xterm будет использовать средства для уведомления программы,
  90. работающие в окне всякий раз, когда изменяется его размер.
  91. Каждый терминал VTxxx и Tektronix 4014 имеет собственное окно,
  92. так что вы можете редактировать текст в одном
  93. и одновременно просматривать графику в другом.
  94. Cохраняйте правильное соотношение сторон (высота/ширина),
  95. графика Tektronix будет ограничена самой большой коробкой с 4014s
  96. ";ES;fi;;
  97. 3) S=M3;SC; if [[ $cur == enter ]];then R;./kXtermSeeAlso.sh;ES;fi;;
  98. 4) S=M4;SC; if [[ $cur == enter ]];then R;echo "
  99. Слишком много людей.
  100. В Консорциум X внесли свой вклад:
  101. Лоретта Гуарино Рид (DEC-UEG-WSL), Джоэл МакКормак (DEC-UEG-WSL), Терри Вайсман (DEC-UEG-WSL),
  102. Эдвард Мой (Беркли), Ральф Р. Свик (MIT-Athena), Марк Вандевурде (MIT-Athena),
  103. Боб Макнамара (DEC-MAD), Джим Геттис (MIT-Athena), Боб Шайфлер (MIT X Consortium),
  104. Дуг Минк (SAO), Стив Питшке (Stellar), Рон Ньюман (MIT-Athena), Джим Фултон (MIT X Consortium),
  105. Дэйв Сериски (HP), Джонатан Каменс (MIT-Athena).
  106. Начиная с XFree86, было гораздо больше идентифицируемых участников. Файл THANKS в xterms.
  107. ";ES;fi;;
  108. 5) S=M5;SC; if [[ $cur == enter ]];then R;echo "
  109. Xterm автоматически выделяет текстовый курсор, когда указатель входит в окно (выбрано),
  110. и снимает его выделение, когда указатель покидает окно (не выбрано).
  111. Если окно находится в фокусе, то текстовый курсор выделяется независимо от того,
  112. где находится указатель.
  113. В режиме VTxxx есть управляющие последовательности для активации и деактивации
  114. альтернативного экранного буфера, который имеет тот же размер, что и область отображения окна.
  115. При активации текущий экран сохраняется и заменяется альтернативным экраном.
  116. Сохранение строк, прокручиваемых за пределы верхней части окна, отключено до тех пор,
  117. пока не нормальный экран восстанавливается.
  118. Обычное описание терминала для xterm позволяет визуальному редактору vi
  119. переключаться на альтернативный экран для редактирования и
  120. восстановить экран при выходе.
  121. Пункт всплывающего меню упрощает переключение между обычным
  122. и альтернативным экранами для вырезания и вставки.
  123. Как в режиме VTxxx, так и в режиме Tektronix существуют escape-последовательности
  124. для изменения имени окон. Кроме того, в режиме VTxxx xterm реализует окно
  125. последовательности управления манипулированием из dtterm,
  126. такие как изменение размера окна, установка его положения на экране.
  127. Xterm позволяет приложениям на основе символов получать события мыши
  128. (в настоящее время события нажатия и отпускания кнопки, а также события движения кнопки)
  129. в качестве управления клавиатурой последовательности.
  130. Подробнее см. в разделе Последовательности управления Xterm.
  131. ";ES;fi;;
  132. 6) S=M6;SC;if [[ $cur == enter ]];then R;./lXtermEmulations.sh;ES;fi;;
  133. 7) S=M7;SC;if [[ $cur == enter ]];then R;./kXtermOptionsA.sh;ES;fi;;
  134. 8) S=M8;SC;if [[ $cur == enter ]];then R;./lXtermOptionsOld.sh;ES;fi;;
  135. 9) S=M9;SC;if [[ $cur == enter ]];then R;./lXtermOptionsXToolkit.sh;ES;fi;;
  136. 10) S=M10;SC;if [[ $cur == enter ]];then R;./kXtermResources.sh;ES;fi;;
  137. 11) S=M11;SC;if [[ $cur == enter ]];then R;./lXtermPointerUsage.sh;ES;fi;;
  138. 12) S=M12;SC;if [[ $cur == enter ]];then R;./lXtermSelectPaste.sh;ES;fi;;
  139. 13) S=M13;SC;if [[ $cur == enter ]];then R;./lXtermMenus.sh;ES;fi;;
  140. 14) S=M14;SC;if [[ $cur == enter ]];then R;./lXtermSecurity.sh;ES;fi;;
  141. 15) S=M15;SC;if [[ $cur == enter ]];then R;./lXtermCharacterClasses.sh;ES;fi;;
  142. 16) S=M16;SC;if [[ $cur == enter ]];then R;./kXtermKeyBindingsA.sh;ES;fi;;
  143. 17) S=M17;SC;if [[ $cur == enter ]];then R;./lXtermCtrlSequencesKeyboard.sh;ES;fi;;
  144. 18) S=M18;SC;if [[ $cur == enter ]];then R;./lXtermEnvironment.sh;ES;fi;;
  145. 19) S=M19;SC;if [[ $cur == enter ]];then R;./lXtermWindowProperties.sh;ES;fi;;
  146. 20) S=M20;SC;if [[ $cur == enter ]];then R;./kXtermFiles.sh;ES;fi;;
  147. 21) S=M21;SC;if [[ $cur == enter ]];then R;./lXtermErrorMessages.sh;ES;fi;;
  148. 22) S=M22;SC;if [[ $cur == enter ]];then R;echo "
  149. Большие пасты не работают на некоторых системах.
  150. Это не ошибка в xterm; это ошибка в драйвере псевдотерминала этих систем.
  151. Xterm отправляет большие вставки в pty только с той скоростью,
  152. с которой pty примет данные,
  153. но некоторые драйверы pty не возвращают достаточно информации,
  154. чтобы узнать, успешна ли запись.
  155. При подключении к методу ввода xterm может зависнуть,
  156. если сервер XIM приостановлен или убит.
  157. Многие параметры невозможно сбросить после запуска xterm.
  158. Эту программу еще нужно переписать.
  159. Он должен быть разделен на очень модульные разделы,
  160. при этом различные эмуляторы будут совершенно отдельными виджетами,
  161. которые не знают друг о друге.
  162. В идеале вы хотели бы иметь возможность выбирать виджеты эмулятора
  163. и вставлять их в один виджет управления.
  164. Должно быть диалоговое окно, позволяющее ввести имя файла Tek COPY.
  165. ";ES;fi;;
  166. 23) S=M23;SC;if [[ $cur == enter ]];then R;echo -e "
  167. Настройка Xterm
  168. https://linuxcookbook.ru/articles/nastroyka-xterm
  169. #
  170. Wiki Archlinux.org Xterm
  171. https://wiki.archlinux.org/title/Xterm_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
  172. #
  173. Zenway
  174. https://zenway.ru/forum/viewtopic.php?id=621
  175. #
  176. Конфиг:Xresources
  177. http://linuxoid.in/%D0%9A%D0%BE%D0%BD%D1%84%D0%B8%D0%B3:Xresources
  178. #
  179. описание всех команд xterm на сайте:
  180. http://www.xfree86.org/4.0.1/xterm.1.html
  181. #
  182. ";ES;fi;;
  183. 24) S=M24;SC;if [[ $cur == enter ]];then R;echo -e "
  184. Программа mXterm - описание терминала xterm.
  185. Terminal emulator for X
  186. Fr 17 Jun 2022
  187. s - source file источник
  188. m - menu file меню
  189. n - simple menu file простое меню
  190. l - bash list file лист
  191. t - text file текстовый файл
  192. k - next menu file cледующее меню
  193. Asciinema:
  194. \e[36m https://asciinema.org/a/lyWZaQq3i0rGFCYlpFMAjWHaW\e[0m
  195. Codeberg
  196. \e[36m https://codeberg.org/Grannik/mXterm\e[0m
  197. ";ES;fi;;
  198. 25) S=M25;SC;if [[ $cur == enter ]];then R;clear;ls -l;exit 0;fi;;
  199. esac;POS;done