mKittyConfTabBar.sh 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. #!/bin/bash
  2. source "sKitty.sh"
  3. HEAD(){ for (( a=2; a<=28; 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+- Панель вкладок ---------------------------- Tab bar --------------------------+\033[0m";
  10. TPUT 26 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 29 1
  17. $E "$c";UNMARK;}
  18. # это управляет кнопками ввер/хвниз
  19. i=0; CLEAR; CIVIS;NULL=/dev/null
  20. #
  21. M0(){ TPUT 5 3; $e " На каком краю показывать панель вкладок \e[32m tab_bar_edge \033[0m";}
  22. M1(){ TPUT 6 3; $e " Поле слева и справа от панели вкладок \e[32m tab_bar_margin_width \033[0m";}
  23. M2(){ TPUT 7 3; $e " Поле над и под панелью вкладок \e[32m tab_bar_margin_height \033[0m";}
  24. M3(){ TPUT 8 3; $e " Стиль панели вкладок \e[32m tab_bar_style \033[0m";}
  25. M4(){ TPUT 9 3; $e " Горизонтальное выравнивание панели вкладок \e[32m tab_bar_align \033[0m";}
  26. M5(){ TPUT 10 3; $e " Минимальное количество вкладок \e[32m tab_bar_min_tabs \033[0m";}
  27. M6(){ TPUT 11 3; $e " Алгоритм, при переключении на вкладку \e[32m tab_switch_strategy \033[0m";}
  28. M7(){ TPUT 12 3; $e " Kак вкладка исчезает в фоновом режиме \e[32m tab_fade \033[0m";}
  29. M8(){ TPUT 13 3; $e " Разделитель между вкладками на панели \e[32m tab_separator \033[0m";}
  30. M9(){ TPUT 14 3; $e " Стиль разделителя Powerline между вкладками\e[32m tab_powerline_style \033[0m";}
  31. M10(){ TPUT 15 3; $e " Некоторый текст или символ Юникода \e[32m tab_activity_symbol none \033[0m";}
  32. M11(){ TPUT 16 3; $e " Шаблон для отображения заголовка вкладки \e[32m tab_title_template \033[0m";}
  33. M12(){ TPUT 17 3; $e " Шаблон для активных вкладок, если не указан\e[32m active_tab_title_template \033[0m";}
  34. M13(){ TPUT 18 3; $e " Цвет указателя активного окна \e[32m active_tab_foreground \033[0m";}
  35. M14(){ TPUT 19 3; $e " Цвет фона активного окна \e[32m active_tab_background \033[0m";}
  36. M15(){ TPUT 20 3; $e " Шрифт активного окна \e[32m active_tab_font_style \033[0m";}
  37. M16(){ TPUT 21 3; $e " Цвет указателя не активного окна \e[32m inactive_tab_foreground \033[0m";}
  38. M17(){ TPUT 22 3; $e " Цвет фона не активного окна \e[32m inactive_tab_background \033[0m";}
  39. M18(){ TPUT 23 3; $e " Цвета и стили панели вкладок \e[32m inactive_tab_font_style \033[0m";}
  40. M19(){ TPUT 24 3; $e " Цвет фона для панели вкладок \e[32m tab_bar_background \033[0m";}
  41. M20(){ TPUT 25 3; $e " Цвет области поля панели вкладок \e[32m tab_bar_margin_color \033[0m";}
  42. #
  43. M21(){ TPUT 27 3; $e " \e[90mExit \033[0m";}
  44. LM=21
  45. MENU(){ for each in $(seq 0 $LM);do M${each};done;}
  46. POS(){ if [[ $cur == up ]];then ((i--));fi
  47. if [[ $cur == dn ]];then ((i++));fi
  48. if [[ $i -lt 0 ]];then i=$LM;fi
  49. if [[ $i -gt $LM ]];then i=0;fi;}
  50. REFRESH(){ after=$((i+1)); before=$((i-1))
  51. if [[ $before -lt 0 ]];then before=$LM;fi
  52. if [[ $after -gt $LM ]];then after=0;fi
  53. if [[ $j -lt $i ]];then UNMARK;M$before;else UNMARK;M$after;fi
  54. if [[ $after -eq 0 ]] || [ $before -eq $LM ];then
  55. UNMARK; M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;}
  56. INIT(){ R;HEAD;FOOT;MENU;}
  57. SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;}
  58. # Функция возвращения в меню
  59. ES(){ MARK;$e " ENTER = main menu ";$b;read;INIT;};INIT
  60. while [[ "$O" != " " ]]; do case $i in
  61. 0) S=M0;SC; if [[ $cur == enter ]];then R;echo -e "
  62. На каком краю показывать панель вкладок, сверху или снизу:
  63. \e[32m tab_bar_edge\e[36m top\e[0m
  64. \e[32m \e[36m bottom\e[0m
  65. ";ES;fi;;
  66. 1) S=M1;SC; if [[ $cur == enter ]];then R;echo -e "
  67. Поле слева и справа от панели вкладок (в пунктах):
  68. \e[32m tab_bar_margin_width 0.0\e[0m
  69. ";ES;fi;;
  70. 2) S=M2;SC; if [[ $cur == enter ]];then R;echo -e "
  71. Поле над и под панелью вкладок (в пунктах).
  72. Первое число — это поле между краем окна ОС и панелью вкладок,
  73. а второе число — это поле между панелью вкладок и содержимым текущей вкладки.
  74. \e[32m tab_bar_margin_height 0.0 0.0\e[0m
  75. ";ES;fi;;
  76. 3) S=M3;SC; if [[ $cur == enter ]];then R;echo -e "
  77. Стиль панели вкладок может быть одним из следующих:
  78. \e[36m fade\e[0m тускнеть
  79. Края каждой вкладки становятся цветом фона (см. tab_fade)
  80. \e[36m slant\e[0m наклонный
  81. Вкладки выглядят как вкладки в физическом файле
  82. \e[36m separator\e[0m разделитель
  83. Вкладки разделены настраиваемым разделителем (см. tab_separator)
  84. \e[36m powerline\e[0m линия электропередачи
  85. Вкладки показаны сплошной линией с «причудливыми» разделителями.
  86. (см. tab_powerline_style)
  87. \e[36m custom\e[0m обычай
  88. Пользовательская функция Python, называемая draw_tab, загружается из файла.
  89. tab_bar.py в каталоге конфигурации kitty.
  90. Для примеров того, как написать такую функцию,
  91. см. функции с именем draw_tab_with_* в исходный код kityy:
  92. kitty/tab_bar.py.
  93. Смотрите также это обсуждение:
  94. https://github.com/kovidgoyal/kitty/discussions/4447
  95. для примеров от пользователей kitty.
  96. \e[36m hidden\e[0m скрытый
  97. Панель вкладок скрыта. Если вы используете это, вы можете создать сопоставление
  98. для: https://sw.kovidgoyal.net/kitty/actions/#select-tab действие,
  99. которое представляет вам список вкладок и позволяет легко переход на вкладку.
  100. \e[32m tab_bar_style fade\e[0m";ES;fi;;
  101. 4) S=M4;SC; if [[ $cur == enter ]];then R;echo -e "
  102. Горизонтальное выравнивание панели вкладок может быть одним из следующих:
  103. \e[32m tab_bar_align\e[36m left\e[0m слева
  104. \e[36m center\e[0m по центру
  105. \e[36m right \e[0m справа
  106. ";ES;fi;;
  107. 5) S=M5;SC; if [[ $cur == enter ]];then R;echo -e "
  108. Минимальное количество вкладок,
  109. которое должно существовать до отображения панели вкладок
  110. \e[32m tab_bar_min_tabs 2\e[0m";ES;fi;;
  111. 6) S=M6;SC; if [[ $cur == enter ]];then R;echo -e "
  112. Алгоритм, используемый при переключении на вкладку, когда текущая вкладка закрыта
  113. По умолчанию предыдущий переключится на последнюю использованную вкладку.
  114. Значение left переключит на вкладку слева от закрытой вкладки.
  115. Значение right переключит на вкладку справа от закрытой вкладки.
  116. Значение last переключит на крайнюю правую вкладку.
  117. \e[32m tab_switch_strategy previous\e[0m";ES;fi;;
  118. 7) S=M7;SC; if [[ $cur == enter ]];then R;echo -e "
  119. Управляйте тем, как каждая вкладка исчезает в фоновом режиме при использовании
  120. затухания для tab_bar_style.
  121. Каждое число представляет собой альфа-канал (от нуля до единицы),
  122. который определяет степень перехода соответствующей ячейки в фон,
  123. при этом ноль означает отсутствие затухания, а единица — полное затухание.
  124. Вы можете изменить количество используемых ячеек, добавляя/удаляя записи.
  125. к этому списку:
  126. \e[32m tab_fade 0.25 0.5 0.75 1\e[0m";ES;fi;;
  127. 8) S=M8;SC; if [[ $cur == enter ]];then R;echo -e "
  128. Разделитель между вкладками на панели вкладок
  129. при использовании разделителя в качестве tab_bar_style
  130. \e[32m tab_separator \" ┇\"\e[0m";ES;fi;;
  131. 9) S=M9;SC; if [[ $cur == enter ]];then R;echo -e "
  132. Стиль разделителя Powerline между вкладками на панели вкладок
  133. при использовании Powerline в качестве tab_bar_style
  134. может быть одним из следующих:
  135. angled угловой
  136. slanted наклонный
  137. round круглый
  138. \e[32m tab_powerline_style angled\e[0m";ES;fi;;
  139. 10) S=M10;SC;if [[ $cur == enter ]];then R;echo -e "
  140. Некоторый текст или символ Юникода для отображения на вкладке,
  141. если окно на вкладке, не имеющее фокуса, имеет некоторую активность.
  142. Если вы хотите использовать начальные или конечные пробелы, заключите
  143. текст в кавычки. См. tab_title_template, как это отображается.
  144. \e[32m tab_activity_symbol none\e[0m";ES;fi;;
  145. 11) S=M11;SC;if [[ $cur == enter ]];then R;echo -e "
  146. Шаблон для отображения заголовка вкладки.
  147. По умолчанию просто отображает заголовок с дополнительными символами для звонка
  148. и активности. Если вы также хотите включить индекс вкладок, используйте
  149. что-то вроде: {index}: {title}.
  150. Полезно, если у вас есть ярлыки, сопоставленные с goto_tab N.
  151. Если вы предпочитаете видеть индекс в виде надстрочного индекса,
  152. используйте {sup.index}.
  153. Кроме того, вы можете использовать {layout_name} для имени текущего макета,
  154. {num_windows} для количества окон на вкладке и {num_window_groups}
  155. для количества групп окон (не считая оверлейных окон) на вкладке.
  156. Обратите внимание, что форматирование выполняется механизмом форматирования
  157. строк Python, поэтому вы можете использовать, например, {layout_name[:2].upper()}
  158. чтобы отобразить только первые две буквы имени макета в верхнем регистре.
  159. Если вы хотите стилизовать текст, вы можете использовать директивы стиля,
  160. например:
  161. {fmt.fg.red} красный
  162. {fmt.fg.tab} нормальный
  163. {fmt.bg._00FF00} зеленый
  164. bg{fmt.bg.tab} Аналогично для полужирного и курсивного:
  165. {fmt.bold} жирный
  166. {fmt.nobold} обычный
  167. {fmt.italic} курсив
  168. {fmt.noitalic}.
  169. Обратите внимание, что для обратной совместимости, если {bell_symbol} или
  170. {activity_symbol} отсутствуют в шаблоне, они добавлены к нему.
  171. \e[32m tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}"\e[0m";ES;fi;;
  172. 12) S=M12;SC;if [[ $cur == enter ]];then R;echo -e "
  173. Шаблон для активных вкладок, если он не указан,
  174. возвращается к tab_title_template:
  175. \e[32m active_tab_title_template none\e[0m";ES;fi;;
  176. 13) S=M13;SC;if [[ $cur == enter ]];then R;echo -e "
  177. Цвет указателя активного окна:
  178. \e[32m active_tab_foreground #000\e[0m";ES;fi;;
  179. 14) S=M14;SC;if [[ $cur == enter ]];then R;echo -e "\e[32m active_tab_background #ff4500\e[0m";ES;fi;;
  180. 15) S=M15;SC;if [[ $cur == enter ]];then R;echo -e "\e[32m active_tab_font_style bold-italic\e[0m";ES;fi;;
  181. 16) S=M16;SC;if [[ $cur == enter ]];then R;echo -e "\e[32m inactive_tab_foreground #444\e[0m";ES;fi;;
  182. 17) S=M17;SC;if [[ $cur == enter ]];then R;echo -e "\e[32m inactive_tab_background #999\e[0m";ES;fi;;
  183. 18) S=M18;SC;if [[ $cur == enter ]];then R;echo -e "\e[32m inactive_tab_font_style normal\e[0m";ES;fi;;
  184. 19) S=M19;SC;if [[ $cur == enter ]];then R;echo -e "
  185. Цвет фона для панели вкладок. По умолчанию используется цвет фона терминала:
  186. \e[32m tab_bar_background none\e[0m";ES;fi;;
  187. 20) S=M20;SC;if [[ $cur == enter ]];then R;echo -e "
  188. Цвет области поля панели вкладок. По умолчанию используется терминал:
  189. \e[32m tab_bar_margin_color none\e[0m
  190. ";ES;fi;;
  191. #
  192. 21) S=M21;SC;if [[ $cur == enter ]];then R;exit 0;fi;;
  193. esac;POS;done