mGnomeScreenshot.sh 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #!/bin/bash
  2. E='echo -e'; # -e включить поддержку вывода Escape последовательностей
  3. e='echo -en'; # -n не выводить перевод строки
  4. c="+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+"
  5. trap "R;exit" 2 #
  6. ESC=$( $e "\e")
  7. TPUT(){ $e "\e[${1};${2}H" ;}
  8. CLEAR(){ $e "\ec";}
  9. # 25 возможно это
  10. CIVIS(){ $e "\e[?25l";}
  11. # это цвет текста списка перед курсором при значении 0 в переменной UNMARK(){ $e "\e[0m";}
  12. MARK(){ $e "\e[1;45m";}
  13. # 0 это цвет списка
  14. UNMARK(){ $e "\e[0m";}
  15. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Эти строки задают цвет фона ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  16. R(){ CLEAR ;stty sane;CLEAR;}; # в этом варианте фон прозрачный
  17. HEAD(){ for (( a=2; a<=26; a++ ))
  18. do
  19. TPUT $a 1
  20. $E "\033[1;35m\xE2\x94\x82 \xE2\x94\x82\033[0m";
  21. done
  22. TPUT 3 3
  23. $E "\033[1;36m*** gnome-screenshot ***\033[0m";
  24. TPUT 4 3
  25. $E "\033[90mЗапечатлеть экран, окно или определенную область пользователя\033[0m";
  26. TPUT 5 3
  27. $E "\033[90mи сохранить изображение снимка в файл.\033[0m";
  28. TPUT 6 1
  29. $E "\033[35m+---------------------------------------------------------------------------------------+\033[0m";
  30. TPUT 9 1
  31. $E "\033[35m+- Опции ----------------------------------------------- Options -----------------------+\033[0m";
  32. TPUT 22 1
  33. $E "\033[35m+ Up \xE2\x86\x91 \xE2\x86\x93 Down Select Enter -------------------------------------------------------------+\033[0m";
  34. MARK;TPUT 1 1
  35. $E "$c";UNMARK;}
  36. i=0; CLEAR; CIVIS;NULL=/dev/null
  37. # 32 это расстояние сверху и 48 это расстояние слева
  38. FOOT(){ MARK;TPUT 26 1
  39. $E "$c";UNMARK;}
  40. # это управляет кнопками ввер/хвниз
  41. i=0; CLEAR; CIVIS;NULL=/dev/null
  42. #
  43. ARROW(){ IFS= read -s -n1 key 2>/dev/null >&2
  44. if [[ $key = $ESC ]];then
  45. read -s -n1 key 2>/dev/null >&2;
  46. if [[ $key = \[ ]]; then
  47. read -s -n1 key 2>/dev/null >&2;
  48. if [[ $key = A ]]; then echo up;fi
  49. if [[ $key = B ]];then echo dn;fi
  50. fi
  51. fi
  52. if [[ "$key" == "$($e \\x0A)" ]];then echo enter;fi;}
  53. M0(){ TPUT 7 3; $e " Краткий обзор \033[32mSynopsis \033[0m";}
  54. M1(){ TPUT 8 3; $e " Авторы \033[32mAutor \033[0m";}
  55. #
  56. M2(){ TPUT 10 3; $e " Отправьте захват непосредственно в буфер \033[32m-c --clipboard \033[0m";}
  57. M3(){ TPUT 11 3; $e " Возьмите текущее активное окно вместо всего экрана \033[32m-w --window \033[0m";}
  58. M4(){ TPUT 12 3; $e " Выбрать область захвата экрана вместо всего экрана \033[32m-a --area \033[0m";}
  59. M5(){ TPUT 13 3; $e " Включите оконную границу в скриншоте \033[32m-b --include-border \033[0m";}
  60. M6(){ TPUT 14 3; $e " Удалите оконную границу с скриншота \033[32m-B --remove-border \033[0m";}
  61. M7(){ TPUT 15 3; $e " Включите указатель с скриншотом \033[32m-p --include-pointer \033[0m";}
  62. M8(){ TPUT 16 3; $e " Сделайте скриншот после указанной задержки в секундах \033[32m-d --delay=SECONDS \033[0m";}
  63. M9(){ TPUT 17 3; $e " Добавьте эффект снаружи границы скриншота \033[32m-e --border-effect=EFFECT \033[0m";}
  64. M10(){ TPUT 18 3; $e " Интерактивно установите опции в диалоге \033[32m-i --interactive \033[0m";}
  65. M11(){ TPUT 19 3; $e " Сохранить скриншот прямо в этот файл \033[32m-f --file=FILENAME \033[0m";}
  66. M12(){ TPUT 20 3; $e " X дисплей для использования \033[32m --display=DISPLAY \033[0m";}
  67. M13(){ TPUT 21 3; $e " Показать резюме доступных вариантов \033[32m-? -h --help \033[0m";}
  68. #
  69. M14(){ TPUT 23 3; $e "\033[32m Grannik Git \033[0m";}
  70. M15(){ TPUT 24 3; $e "\033[32m Exit \033[0m";}
  71. LM=15
  72. MENU(){ for each in $(seq 0 $LM);do M${each};done;}
  73. POS(){ if [[ $cur == up ]];then ((i--));fi
  74. if [[ $cur == dn ]];then ((i++));fi
  75. if [[ $i -lt 0 ]];then i=$LM;fi
  76. if [[ $i -gt $LM ]];then i=0;fi;}
  77. REFRESH(){ after=$((i+1)); before=$((i-1))
  78. if [[ $before -lt 0 ]];then before=$LM;fi
  79. if [[ $after -gt $LM ]];then after=0;fi
  80. if [[ $j -lt $i ]];then UNMARK;M$before;else UNMARK;M$after;fi
  81. if [[ $after -eq 0 ]] || [ $before -eq $LM ];then
  82. UNMARK; M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;}
  83. INIT(){ R;HEAD;FOOT;MENU;}
  84. SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;}
  85. # Функция возвращения в меню
  86. ES(){ MARK;$e " ENTER = main menu ";$b;read;INIT;};INIT
  87. while [[ "$O" != " " ]]; do case $i in
  88. # Здесь необходимо следить за двумя перепенными 0) и S=M0 Они должны совпадать между собой и переменной списка M0().
  89. 0) S=M0;SC;if [[ $cur == enter ]];then R;echo " gnome-screenshot [-c] [-w] [-a] [-b] [-B] [-p] [-d SECONDS] [-e EFFECT] [-i] [-f FILENAME] [--display DISPLAY]";ES;fi;;
  90. 1) S=M1;SC;if [[ $cur == enter ]];then R;echo " Эта страница руководства была написана Кристианом Мариллатом: marillat@debian.org
  91. для системы Debian GNU/Linux (но может использоваться другими).
  92. Обновлено Theppitak Karoonboonyanan: thep@linux.thai.net
  93. Tom Feiner: feiner.tom@gmail.com
  94. Cosimo Cecchi: cosimoc@gnome.org
  95. и другими.";ES;fi;;
  96. 2) S=M2;SC;if [[ $cur == enter ]];then R;echo " Отправьте захват непосредственно в буфер.";ES;fi;;
  97. 3) S=M3;SC;if [[ $cur == enter ]];then R;echo -e "
  98. Возьмите текущее активное окно вместо всего экрана. После выполнения данной команды создаётся снимок окна самого терминала:
  99. \033[32m gnome-screenshot -w\033[0m
  100. ";ES;fi;;
  101. 4) S=M4;SC;if [[ $cur == enter ]];then R;echo -e "
  102. Возьмите площадь экрана вместо всего экрана:
  103. \033[32m gnome-screenshot -a\033[0m
  104. ";ES;fi;;
  105. 5) S=M5;SC;if [[ $cur == enter ]];then R;echo -e "
  106. Включите оконную границу в скриншоте. Примечание. Эта опция устарела и оконная граница всегда включена:
  107. \033[32m gnome-screenshot -w -b\033[0m
  108. ";ES;fi;;
  109. 6) S=M6;SC;if [[ $cur == enter ]];then R;echo "
  110. Удалите оконную границу с скриншота. Примечание. Эта опция устарела и оконная граница всегда включена:
  111. \033[32m gnome-screenshot -w -B\033[0m
  112. ";ES;fi;;
  113. 7) S=M7;SC;if [[ $cur == enter ]];then R;echo " Включите указатель с скриншотом.";ES;fi;;
  114. 8) S=M8;SC;if [[ $cur == enter ]];then R;echo -e "
  115. Сделайте скриншот после указанной задержки в секундах:
  116. \033[32m gnome-screenshot -w -d 3\033[0m
  117. ";ES;fi;;
  118. 9) S=M9;SC;if [[ $cur == enter ]];then R;echo "
  119. Добавьте эффект снаружи границы скриншота. ЭФФЕКТ может быть:
  120. 'shadow' (добавление тени)
  121. 'border' (добавлением прямоугольного пространства вокруг снимок экрана)
  122. 'vintage' (слегка обесцветить снимок, подкрасить его и добавить прямоугольное пространство вокруг него)
  123. 'none' (без эффекта).
  124. 'none' По умолчанию
  125. Примечание: Эта опция устарела и считается 'none'
  126. ";ES;fi;;
  127. 10) S=M10;SC;if [[ $cur == enter ]];then R;echo " Интерактивно установите опции в диалоге";ES;fi;;
  128. 11) S=M11;SC;if [[ $cur == enter ]];then R;echo " Сохранить скриншот прямо в этот файл";ES;fi;;
  129. 12) S=M12;SC;if [[ $cur == enter ]];then R;echo " X дисплей для использования";ES;fi;;
  130. 13) S=M13;SC;if [[ $cur == enter ]];then R;echo " Показать резюме доступных вариантов. Кроме того, применяются обычные варианты командной строки GTK+. См. выход -помощь для деталей.";ES;fi;;
  131. 14) S=M14;SC;if [[ $cur == enter ]];then R;cat mGnomeScreenshot.txt;ES;fi;;
  132. #
  133. 15) S=M15;SC;if [[ $cur == enter ]];then R;ls -l;exit 0;fi;;
  134. esac;POS;done