My scripts for startup, dmenu, and the command line
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

206 wiersze
4.6 KiB

  1. #!/bin/sh
  2. browser_cmd="brave-browser"
  3. browser_new_cmd="brave-browser --new-window"
  4. launch() {
  5. app=$(printf "Notes
  6. Files
  7. Editor
  8. Terminal
  9. Multiplexer
  10. LBRY
  11. Chat
  12. Music
  13. Browser
  14. Email
  15. Processes" | tr -d '\t' |
  16. dmenu -i -p "Launcher")
  17. case $app in
  18. Notes) st -e vim "+cd ~/Notes/text" "+CtrlP";;
  19. Files) st -e nnn;;
  20. Editor) st -e vim;;
  21. Terminal) st;;
  22. Multiplexer) st -e tmux $*;;
  23. LBRY) lbry;;
  24. Chat) element-desktop;;
  25. Music) st -e ncmpcpp;;
  26. Browser) $browser_cmd;;
  27. Email) $browser_cmd mail.protonmail.com/login;;
  28. Processes) st -e htop;;
  29. esac
  30. }
  31. action() {
  32. action=$(printf "Play Music
  33. Pause Music
  34. Toggle Music
  35. Go page
  36. Command
  37. Command to clipboard
  38. Search github
  39. Search ddg
  40. Search godoc
  41. Open page
  42. Select VPN
  43. Disable VPN
  44. Enable VPN
  45. VPN Status
  46. Rebind Keys
  47. Disable Bar
  48. Man
  49. Enable Bar" | tr -d '\t' |
  50. dmenu -i -p "Actions")
  51. case $action in
  52. 'Play Music') mpc play ;;
  53. 'Pause Music') mpc pause ;;
  54. 'Toggle Music') mpc toggle ;;
  55. 'Rebind Keys') setup-xbindkeys;;
  56. 'Disable Bar') tmux set -g status off;;
  57. 'Enable Bar') tmux set -g status on;;
  58. 'Search github') github;;
  59. 'Search godoc') godoc;;
  60. 'Search ddg') ddg;;
  61. 'Open page') pages pager "$(printf "1\n2\n3\n" | dmenu -p 'page')";;
  62. 'Command') cmd;;
  63. 'Command to clipboard') cmd_clip;;
  64. 'Man') st -e man "$(printf "" | dmenu -p 'man')";;
  65. 'Go page') num=$(go_page); pages pager $num;;
  66. esac
  67. }
  68. screenshot() {
  69. method=$(printf "clipboard
  70. file
  71. both" |
  72. dmenu -i -p "Screenshot")
  73. if [ $method = "file" ]; then
  74. scrot --note "-f 'LiterationSans Nerd Font Book/11' -x 10 -y 20 -c 255,0,0,255 -t 'Hi'"\
  75. -s ~/Pictures/screenshots/screenshot-%Y-%m-%d_$wx$h.png
  76. fi
  77. if [ $method = "clipboard" ]; then
  78. scrot --note "-f 'LiterationSans Nerd Font Book/11' -x 10 -y 20 -c 255,0,0,255 -t 'Hi'"\
  79. -s ~/Pictures/screenshots/screenshot-%Y-%m-%d_$wx$h.png\
  80. -e "xclip $f; rm $f"
  81. fi
  82. if [ $method = "both" ]; then
  83. scrot --note "-f 'LiterationSans Nerd Font Book/11' -x 10 -y 20 -c 255,0,0,255 -t 'Hi'"\
  84. -s ~/Pictures/screenshots/screenshot-%Y-%m-%d_$wx$h.png\
  85. -e "xclip $f;"
  86. fi
  87. }
  88. search_type() {
  89. search_string="$(printf "New window\nBookmarks\nHistory" | dmenu -p "$1")"
  90. search_mode='tab'
  91. case "$search_string" in
  92. 'New window') search_mode='window'; search_string=$(printf '' | dmenu -p "new $1");;
  93. 'Bookmarks');;
  94. 'History') ;;
  95. # *) printf "Invalid argument";;
  96. esac
  97. printf "$search_string|$search_mode"
  98. }
  99. brave_search() {
  100. search_prefix="$1"
  101. search_info="$(search_type "$2")"
  102. search_string=$(printf "$search_info" | cut -d'|' -f1)
  103. search_mode=$(printf "$search_info" | cut -d'|' -f2)
  104. if [ -z "$search_string" ]; then exit; fi
  105. new_string=$(rawurlencode "$search_string")
  106. search="$search_prefix$new_string"
  107. case "$search_mode" in
  108. tab) $browser_cmd "$search";;
  109. window) $browser_new_cmd "$search";;
  110. esac
  111. }
  112. rawurlencode() {
  113. #Takes the first argument and encodes it
  114. search_string="$1"
  115. string_length=$(expr length "$search_string")
  116. char=''; new_string='';
  117. i=1
  118. while [ $i -le $string_length ]
  119. do
  120. char=$(expr substr "$search_string" $i 1)
  121. # new_string="$new_string$(rawurlencode "$char")"
  122. case "$char" in
  123. [-_.~a-zA-Z0-9] ) new_string="$new_string$char";;
  124. * ) new_string="$new_string%$(printf '%%%02x' "'$char")";;
  125. esac
  126. i=$(expr $i + 1)
  127. done
  128. printf "$new_string"
  129. }
  130. ddg() {
  131. brave_search "https://duckduckgo.com/?q=" "ddg"
  132. }
  133. github() {
  134. brave_search "https://github.com/search?q=" "github"
  135. }
  136. godoc() {
  137. brave_search "https://golang.org/pkg/" "godoc"
  138. }
  139. manual() {
  140. search=$(printf '' | dmenu -p 'manual')
  141. result=$(man "$search")
  142. printf "$result" | enscript -p - | ps2pdf - | zathura -
  143. }
  144. goinfo() {
  145. #Maybe this can also show recent searches
  146. search=$(printf "Window\nNotify" | dmenu -p 'goinfo')
  147. case $search in
  148. Window) search=$(printf '' | dmenu -p 'goinfo'); result=$(go doc "$search"); infowindow "$result"; exit;;
  149. Notify) search=$(printf '' | dmenu -p 'goinfo'); result=$(go doc "$search"); notify-send -u low -t 0 "Go documentation" "$result"; exit;;
  150. esac
  151. result=$(go doc "$search"); notify-send -u low -t 0 "Go documentation" "$result";
  152. }
  153. go_page() {
  154. name=$(printf "1\n2\n3\n4" | dmenu -p "page name")
  155. go doc "$(printf "" | dmenu -p 'go doc search')" > /tmp/pages-$name
  156. printf "$name"
  157. }
  158. infowindow() {
  159. printf "$1" | enscript -p - | ps2pdf - | zathura -
  160. }
  161. cmd() {
  162. sh -c "$(printf '' | dmenu -i -p 'cmd')"
  163. }
  164. cmd_clip() {
  165. value=$(cmd)
  166. show_value="$(expr substr "$value" 1 200)\n..."
  167. notify-send -u low -t 2000 "Items cliped" "$show_value"
  168. printf "%s" "$value" | xclip -selection clipboard
  169. }
  170. case $1 in
  171. launch) launch;;
  172. action) action;;
  173. cmd) action;;
  174. cmd_clip) cmd_clip;;
  175. ddg) ddg;;
  176. github) github;;
  177. godoc) godoc;;
  178. goinfo) goinfo;;
  179. manual) manual;;
  180. *) printf "Invalid argument";;
  181. esac