mKittyConfWindow.sh 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. #!/bin/bash
  2. source "sKitty.sh"
  3. HEAD(){ for (( a=2; a<=31; a++ ))
  4. do
  5. TPUT $a 1
  6. $E "\033[1;35m\xE2\x94\x82 \xE2\x94\x82\033[0m";
  7. done
  8. TPUT 3 1
  9. $E "\033[0m\033[35m+- Макет окна ------------------------------- Window layout ---------------------+\033[0m";
  10. TPUT 29 1
  11. $E "\033[0m\033[35m+--- Up \xE2\x86\x91 \xE2\x86\x93 Down Select Enter ---------------------------------------------------+\033[0m";
  12. MARK;TPUT 1 1
  13. $E "$c";UNMARK;}
  14. i=0; CLEAR; CIVIS;NULL=/dev/null
  15. # 32 это расстояние сверху и 48 это расстояние слева
  16. FOOT(){ MARK;TPUT 32 1
  17. $E "$c";UNMARK;}
  18. # это управляет кнопками ввер/хвниз
  19. i=0; CLEAR; CIVIS;NULL=/dev/null
  20. #
  21. M0(){ TPUT 5 3; $e " Размер окна \e[32m remember_window_size \033[0m";}
  22. M1(){ TPUT 6 3; $e " Ширина окна \e[32m initial_window_width \033[0m";}
  23. M2(){ TPUT 7 3; $e " Высота окна \e[32m initial_window_height \033[0m";}
  24. M3(){ TPUT 8 3; $e " Включенные макеты окон \e[32m enabled_layouts * \033[0m";}
  25. M4(){ TPUT 9 3; $e " Размер шага в единицах ширины/высоты \e[32m window_resize_step_ \033[0m";}
  26. M5(){ TPUT 10 3; $e " Ширина границ окна \e[32m window_border_width \033[0m";}
  27. M6(){ TPUT 11 3; $e " Нарисуйте только минимально границы \e[32m draw_minimal_borders \033[0m";}
  28. M7(){ TPUT 12 3; $e " Поле окна (пустая область за границей) \e[32m window_margin_width \033[0m";}
  29. M8(){ TPUT 13 3; $e " используемое, когда видно одно окно \e[32m single_window_margin_width \033[0m";}
  30. M9(){ TPUT 14 3; $e " пустая область меж текстом и границей окна\e[32m window_padding_width \033[0m";}
  31. M10(){ TPUT 15 3; $e " размер окна не является кратным ячейки \e[32m placement_strategy \033[0m";}
  32. M11(){ TPUT 16 3; $e " Цвет бордюра активного окна \e[32m active_border_color \033[0m";}
  33. M12(){ TPUT 17 3; $e " Цвет бордюра неактивного окна \e[32m inactive_border_color \033[0m";}
  34. M13(){ TPUT 18 3; $e " Цвет границы неактивных окон, звонок \e[32m bell_border_color \033[0m";}
  35. M14(){ TPUT 19 3; $e " Затемнить текст в неактивных окнах \e[32m inactive_text_alpha \033[0m";}
  36. M15(){ TPUT 20 3; $e " Путь к изображению логотипа \e[32m window_logo_path \033[0m";}
  37. M16(){ TPUT 21 3; $e " Где разместить логотип окна в окне \e[32m window_logo_position \033[0m";}
  38. M17(){ TPUT 22 3; $e " Величина, логотип должен слиться с фоном \e[32m window_logo_alpha \033[0m";}
  39. M18(){ TPUT 23 3; $e " Время ожидания перед перерисовкой экрана \e[32m resize_debounce_time \033[0m";}
  40. M19(){ TPUT 24 3; $e " Выберите, время изменения размера \e[32m resize_draw_strategy \033[0m";}
  41. M20(){ TPUT 25 3; $e " Изменяйте размер окна ОС с шагом \e[32m resize_in_steps \033[0m";}
  42. M21(){ TPUT 26 3; $e " Список символов, визуального выбора окна \e[32m visual_window_select_characters \033[0m";}
  43. M22(){ TPUT 27 3; $e " Запрашивать подтверждение при закрытии \e[32m confirm_os_window_close -1 \033[0m";}
  44. M23(){ TPUT 28 3; $e " Измените размер рендеринга каждой ячейки \e[32m \033[0m";}
  45. #
  46. M24(){ TPUT 30 3; $e " \e[90mExit \033[0m";}
  47. LM=24
  48. MENU(){ for each in $(seq 0 $LM);do M${each};done;}
  49. POS(){ if [[ $cur == up ]];then ((i--));fi
  50. if [[ $cur == dn ]];then ((i++));fi
  51. if [[ $i -lt 0 ]];then i=$LM;fi
  52. if [[ $i -gt $LM ]];then i=0;fi;}
  53. REFRESH(){ after=$((i+1)); before=$((i-1))
  54. if [[ $before -lt 0 ]];then before=$LM;fi
  55. if [[ $after -gt $LM ]];then after=0;fi
  56. if [[ $j -lt $i ]];then UNMARK;M$before;else UNMARK;M$after;fi
  57. if [[ $after -eq 0 ]] || [ $before -eq $LM ];then
  58. UNMARK; M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;}
  59. INIT(){ R;HEAD;FOOT;MENU;}
  60. SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;}
  61. # Функция возвращения в меню
  62. ES(){ MARK;$e " ENTER = main menu ";$b;read;INIT;};INIT
  63. while [[ "$O" != " " ]]; do case $i in
  64. 0) S=M0;SC; if [[ $cur == enter ]];then R;echo -e "
  65. Если включено, размер окна будет запоминаться, так что новые экземпляры kitty
  66. будут иметь тот же размер, что и предыдущий экземпляр. Если отключено, окно
  67. изначально будет иметь размер, настроенный с помощью initial_window_width/height
  68. в пикселях. Вы можете использовать суффикс «c» для значений ширины/высоты, чтобы
  69. они интерпретировались как количество ячеек, а не пикселей.
  70. \e[32m remember_window_size yes\e[0m
  71. ";ES;fi;;
  72. 1) S=M1;SC; if [[ $cur == enter ]];then R;echo -e "\e[32m initial_window_width 640\e[0m";ES;fi;;
  73. 2) S=M2;SC; if [[ $cur == enter ]];then R;echo -e "\e[32m initial_window_height 400\e[0m";ES;fi;;
  74. 3) S=M3;SC; if [[ $cur == enter ]];then R;echo -e "
  75. Включенные макеты окон. Разделенный запятыми список имен макетов
  76. Специальное значение all означает все раскладки.
  77. Первый из перечисленных макетов будет использоваться в качестве
  78. начального макета.
  79. Конфигурация по умолчанию — все макеты в алфавитном порядке.
  80. Список доступных макетов см. на странице:
  81. https://sw.kovidgoyal.net/kitty/overview/#layouts.
  82. \e[32m enabled_layouts *\e[0m
  83. ";ES;fi;;
  84. 4) S=M4;SC; if [[ $cur == enter ]];then R;echo -e "
  85. Размер шага (в единицах ширины/высоты ячейки), используемый при
  86. изменении размера окон котенка в макете с помощью клавиатуры
  87. \e[32m start_resizing_window\e[0m
  88. Значение ячеек используется для изменения размера по горизонтали,
  89. а значение строк — для изменения размера по вертикали.
  90. \e[32m window_resize_step_cells 2\e[0m
  91. \e[32m window_resize_step_lines 2\e[0m
  92. ";ES;fi;;
  93. 5) S=M5;SC; if [[ $cur == enter ]];then R;echo -e "
  94. Ширина границ окна. Может быть либо в пикселях (px), либо в pts (pt).
  95. Значения в пунктах будут округлены до ближайшего числа пикселей
  96. в зависимости от разрешения экрана. Если не указано, предполагается,
  97. что единицей измерения являются pts.
  98. Обратите внимание, что границы отображаются только тогда,
  99. когда видно более одного окна.
  100. Они предназначены для разделения нескольких окон.
  101. \e[32m window_border_width 0.5pt\e[0m
  102. ";ES;fi;;
  103. 6) S=M6;SC; if [[ $cur == enter ]];then R;echo -e "
  104. Нарисуйте только минимально необходимые границы.
  105. Это означает, что рисуются только минимально необходимые границы для неактивных
  106. окон. Это только границы, отделяющие неактивное окно от соседнего.
  107. Обратите внимание, что установка ненулевого поля окна отменяет это и заставляет
  108. рисовать все границы.
  109. \e[32m draw_minimal_borders yes\e[0m
  110. ";ES;fi;;
  111. 7) S=M7;SC; if [[ $cur == enter ]];then R;echo -e "
  112. Поле окна (в пунктах) (пустая область за границей).
  113. Одно значение устанавливает все четыре стороны.
  114. Два значения задают вертикальную и горизонтальную стороны.
  115. Три значения задают сверху, по горизонтали и снизу.
  116. Четыре значения устанавливаются:
  117. \e[36mtop \e[0m сверху
  118. \e[36mbottom\e[0m снизу
  119. \e[36mright \e[0m справа
  120. \e[36mleft \e[0m слева
  121. \e[32m window_margin_\e[36mwidth 0\e[0m
  122. ";ES;fi;;
  123. 8) S=M8;SC; if [[ $cur == enter ]];then R;echo -e "
  124. Поле окна (в пунктах), используемое, когда видно только одно окно.
  125. Отрицательные значения приведут к тому, что вместо этого будет использоваться
  126. значение window_margin_width.
  127. Одно значение устанавливает все четыре стороны.
  128. Два значения задают вертикальную и горизонтальную стороны.
  129. Три значения задают сверху, по горизонтали и снизу.
  130. Четыре значения:
  131. \e[36mtop \e[0m сверху
  132. \e[36mbottom\e[0m снизу
  133. \e[36mright \e[0m справа
  134. \e[32m single_window_margin_\e[36mwidth -1\e[0m
  135. ";ES;fi;;
  136. 9) S=M9;SC; if [[ $cur == enter ]];then R;echo -e "
  137. Отступ окна (в пунктах) (пустая область между текстом и границей окна).
  138. Одно значение устанавливает все четыре стороны.
  139. Два значения задают вертикальную и горизонтальную стороны.
  140. Три значения задают сверху, по горизонтали и снизу.
  141. Четыре значения устанавливаются сверху, справа, снизу и слева.
  142. \e[32m window_padding_width 0\e[0m";ES;fi;;
  143. 10) S=M10;SC;if [[ $cur == enter ]];then R;echo -e "
  144. Когда размер окна не является точным кратным размеру ячейки, область ячейки окна
  145. терминала будет иметь дополнительные отступы по бокам.
  146. С помощью этой опции вы можете контролировать, как распределяется это заполнение
  147. Использование значения center означает,
  148. что область ячейки будет размещена по центру. Значение top-left означает,
  149. что заполнение будет только на нижнем и правом краях.
  150. \e[32m placement_strategy center\e[0m";ES;fi;;
  151. 11) S=M11;SC;if [[ $cur == enter ]];then R;echo -e "
  152. \e[32m active_border_color #ffffff\e[0m
  153. Цвет границы активного окна. Установите для этого параметра значение none,
  154. чтобы не рисовать границы вокруг активного окна:
  155. \e[32m active_border_color none\e[0m
  156. ";ES;fi;;
  157. 12) S=M12;SC;if [[ $cur == enter ]];then R;echo -e "\e[32m inactive_border_color #cccccc\e[0m";ES;fi;;
  158. 13) S=M13;SC;if [[ $cur == enter ]];then R;echo -e "
  159. Цвет границы неактивных окон, в которых произошел звонок
  160. \e[32m bell_border_color #ff5a00\e[0m
  161. ";ES;fi;;
  162. 14) S=M14;SC;if [[ $cur == enter ]];then R;echo -e "
  163. Затемнить текст в неактивных окнах на указанную величину (число от нуля до
  164. единицы, при этом ноль означает полное исчезновение)
  165. hide_window_decorations no Скрыть окно украшения
  166. (заголовок и границы окна) с yes.
  167. В macOS заголовок только для скрытия можно использовать только для скрытия
  168. заголовка. Работает ли это и какой именно эффект это имеет, зависит от
  169. оконного менеджера/операционной системы.
  170. Обратите внимание, что последствия изменения этого параметра при перезагрузке
  171. конфигурации не определены.
  172. \e[32m inactive_text_alpha 1.0\e[0m
  173. ";ES;fi;;
  174. 15) S=M15;SC;if [[ $cur == enter ]];then R;echo -e "
  175. Путь к изображению логотипа. Должен быть в формате PNG.
  176. Относительные пути интерпретируются относительно каталога конфигурации kitty.
  177. Логотип отображается в углу каждого окна kitty.
  178. Положение контролируется window_logo_position.
  179. Отдельные окна можно настроить так, чтобы они имели разные логотипы либо
  180. с помощью функции запуска, либо с помощью средства дистанционного управления.
  181. \e[32m window_logo_path none\e[0m
  182. ";ES;fi;;
  183. 16) S=M16;SC;if [[ $cur == enter ]];then R;echo -e "
  184. Где разместить логотип окна в окне. Значение может быть одним из:
  185. \e[32m window_logo_position \e[36mbottom-right\e[0m снизу-справа
  186. \e[36m top-left \e[0m сверху-слева
  187. \e[36m top \e[0m сверху
  188. \e[36m top-right \e[0m сверху-справа
  189. \e[36m left \e[0m слева
  190. \e[36m center \e[0m по центру
  191. \e[36m right \e[0m справа
  192. \e[36m bottom-left \e[0m снизу-слева
  193. \e[36m bottom \e[0m снизу
  194. ";ES;fi;;
  195. 17) S=M17;SC;if [[ $cur == enter ]];then R;echo -e "
  196. Величина, на которую логотип должен слиться с фоном.
  197. При этом ноль полностью блеклый, а один полностью непрозрачный.
  198. \e[32m window_logo_alpha 0.5\e[0m
  199. ";ES;fi;;
  200. 18) S=M18;SC;if [[ $cur == enter ]];then R;echo -e "
  201. Время ожидания (в секундах) перед перерисовкой экрана при получении события
  202. изменения размера. На таких платформах, как macOS, где операционная система
  203. отправляет события, соответствующие началу и концу изменения размера,
  204. этот номер игнорируется.
  205. \e[32m resize_debounce_time 0.1\e[0m
  206. ";ES;fi;;
  207. 19) S=M19;SC;if [[ $cur == enter ]];then R;echo -e "
  208. Выберите, как kitty рисует окно во время изменения размера.
  209. Значение static означает отрисовку текущего содержимого окна, в основном без
  210. изменений.
  211. Значение scale означает отрисовку содержимого текущего окна в масштабе.
  212. Значение Blank означает рисование пустого окна.
  213. Значение size означает отображение размера окна в ячейках.
  214. \e[32m resize_draw_strategy static\e[0m
  215. ";ES;fi;;
  216. 20) S=M20;SC;if [[ $cur == enter ]];then R;echo -e "
  217. Изменяйте размер окна ОС с шагом, равным размеру ячеек, вместо обычной точности
  218. в пикселях. В сочетании с initial_window_width и initial_window_height в
  219. количестве ячеек этот параметр можно использовать для сохранения минимально
  220. возможных полей при изменении размера окна ОС.
  221. Обратите внимание, что в настоящее время это не работает на Wayland.
  222. \e[32m resize_in_steps no\e[0m";ES;fi;;
  223. 21) S=M21;SC;if [[ $cur == enter ]];then R;echo -e "
  224. Список символов, используемых для визуального выбора окна (например, для выбора
  225. окна для фокусировки с помощью focus_visible_window). Значение должно быть рядом
  226. уникальные числа или алфавиты, без учета регистра, из набора [0-9A-Z].
  227. Укажите свои предпочтения в виде строки символов.
  228. \e[32m visual_window_select_characters\e[36m 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ\e[0m";ES;fi;;
  229. 22) S=M22;SC;if [[ $cur == enter ]];then R;echo -e "
  230. Запрашивать подтверждение при закрытии окна ОС или вкладки с не менее чем этим
  231. количеством кошачьих окон диспетчером окон (например, нажатием кнопки закрытия
  232. окна или нажатием ярлыка операционной системы, чтобы закрыть окна) или действием
  233. close_tab. Нулевое значение отключает подтверждение. Это подтверждение также
  234. относится к запросы на выход из всего приложения,все окна ОС через действие quit.
  235. Однако отрицательные значения преобразуются в положительные с помощью:
  236. https://sw.kovidgoyal.net/kitty/shell-integration/
  237. включено, использование отрицательных значений означает, что окна, находящиеся в
  238. приглашении оболочки, не учитываются, а учитываются только окна, в которых в
  239. данный момент выполняется какая-либо команда.
  240. Обратите внимание, что если вы хотите подтверждение при закрытии отдельных окон,
  241. вы можете сопоставить действие:
  242. https://sw.kovidgoyal.net/kitty/actions/#close-window-with-confirmation.
  243. \e[32m \e[0m";ES;fi;;
  244. 23) S=M23;SC;if [[ $cur == enter ]];then R;echo -e "
  245. Измените размер рендеринга каждой ячейки персонажа.
  246. Вы можете использовать либо числа, которые интерпретируются как пиксели,
  247. либо проценты (число, за которым следует %), которые интерпретируются как
  248. проценты от неизмененных значений.
  249. Вы можете использовать отрицательные пиксели или проценты менее 100%,
  250. чтобы уменьшить размеры (но это может вызвать артефакты рендеринга).
  251. ";ES;fi;;
  252. 24) S=M24;SC;if [[ $cur == enter ]];then R;exit 0;fi;;
  253. esac;POS;done